Exemplo n.º 1
0
void MainWindow::onTabsContainerDoubleClicked(Tabs* tabs)
{
  WorkspacePanel* mainPanel = m_workspace->mainPanel();
  WorkspaceView* oldActiveView = mainPanel->activeView();
  app::Document* oldDoc = static_cast<app::Document*>(UIContext::instance()->activeDocument());

  Command* command = Commands::instance()->byId(CommandId::NewFile());
  UIContext::instance()->executeCommand(command);

  app::Document* newDoc = static_cast<app::Document*>(UIContext::instance()->activeDocument());
  if (newDoc != oldDoc) {
    WorkspacePanel* doubleClickedPanel =
      static_cast<WorkspaceTabs*>(tabs)->panel();

    // TODO move this code to workspace?
    // Put the new sprite in the double-clicked tabs control
    if (doubleClickedPanel != mainPanel) {
      WorkspaceView* newView = m_workspace->activeView();
      m_workspace->removeView(newView);
      m_workspace->addViewToPanel(doubleClickedPanel, newView, false, -1);

      // Re-activate the old view in the main panel
      mainPanel->setActiveView(oldActiveView);
      doubleClickedPanel->setActiveView(newView);
    }
  }
}
Exemplo n.º 2
0
void Workspace::removeView(WorkspaceView* view)
{
  base::remove_from_container(m_views, view);

  WorkspacePanel* panel = getViewPanel(view);
  ASSERT(panel);
  if (panel)
    panel->removeView(view);
}
Exemplo n.º 3
0
void Workspace::removeView(WorkspaceView* view)
{
  ASSERT(view);
  base::remove_from_container(m_views, view);

  WorkspacePanel* panel = getViewPanel(view);
  ASSERT(panel);
  if (panel)
    panel->removeView(view);

  view->onAfterRemoveView(this);
}
Exemplo n.º 4
0
tlp::View *TulipViewsManager::addView(const std::string &viewName, tlp::Graph *graph, const DataSet &dataSet, bool show) {
  tlp::Workspace *workspace = tlpWorkspace();
  tlp::View *view = NULL;

  if (workspace) {
    workspace->graphModel()->addGraph(graph);
    view = PluginLister::instance()->getPluginObject<View>(viewName,NULL);
    view->setupUi();
    view->setGraph(graph);
    view->setState(dataSet);
    workspace->addPanel(view);
  }
  else {

    graph->addListener(this);

    model->addGraph(graph);

    view = PluginLister::instance()->getPluginObject<View>(viewName,NULL);
    view->setupUi();
    view->setGraph(graph);
    view->setState(dataSet);

    WorkspacePanel *panel = new WorkspacePanel(view);
    panel->setGraphsModel(model);
    panel->viewGraphSet(graph);

    connect(view,SIGNAL(drawNeeded()),view,SLOT(draw()));

    openedViews.push_back(view);
    viewToPanel[view] = panel;

    setViewVisible(view, show);
    view->draw();
    QApplication::processEvents();



  }

  connect(view, SIGNAL(destroyed(QObject *)), this, SLOT(viewDestroyed(QObject*)));

  return view;
}
Exemplo n.º 5
0
bool Workspace::dropViewAt(const gfx::Point& pos, WorkspaceView* view)
{
  WorkspaceTabs* tabs = getTabsAt(pos);
  WorkspacePanel* panel = getPanelAt(pos);

  if (panel) {
    // Create new panel
    return panel->dropViewAt(pos, getViewPanel(view), view);
  }
  else if (tabs && tabs != getViewPanel(view)->tabs()) {
    // Dock tab in other tabs
    WorkspacePanel* dropPanel = tabs->panel();
    ASSERT(dropPanel);

    int pos = tabs->getDropTabIndex();

    removeView(view);
    addViewToPanel(dropPanel, view, true, pos);
    return true;
  }
  else
    return false;
}
Exemplo n.º 6
0
DropViewAtResult Workspace::dropViewAt(const gfx::Point& pos, WorkspaceView* view, bool clone)
{
  WorkspaceTabs* tabs = getTabsAt(pos);
  WorkspacePanel* panel = getPanelAt(pos);

  if (panel) {
    // Create new panel
    return panel->dropViewAt(pos, getViewPanel(view), view, clone);
  }
  else if (tabs && tabs != getViewPanel(view)->tabs()) {
    // Dock tab in other tabs
    WorkspacePanel* dropPanel = tabs->panel();
    ASSERT(dropPanel);

    int pos = tabs->getDropTabIndex();
    DropViewAtResult result;

    WorkspaceView* originalView = view;
    if (clone) {
      view = view->cloneWorkspaceView();
      result = DropViewAtResult::CLONED_VIEW;
    }
    else {
      removeView(view);
      result = DropViewAtResult::MOVED_TO_OTHER_PANEL;
    }

    addViewToPanel(dropPanel, view, true, pos);

    if (result == DropViewAtResult::CLONED_VIEW)
      view->onClonedFrom(originalView);

    return result;
  }
  else
    return DropViewAtResult::NOTHING;
}