Ejemplo n.º 1
0
void UIContext::onRemoveDocument(doc::Document* doc)
{
  if (doc == m_lastSelectedDoc)
    m_lastSelectedDoc = nullptr;

  // We don't destroy views in batch mode.
  if (isUIAvailable()) {
    Workspace* workspace = App::instance()->getMainWindow()->getWorkspace();
    DocumentViews docViews;

    // Collect all views related to the document.
    for (WorkspaceView* view : *workspace) {
      if (DocumentView* docView = dynamic_cast<DocumentView*>(view)) {
        if (docView->getDocument() == doc) {
          docViews.push_back(docView);
        }
      }
    }

    for (DocumentView* docView : docViews) {
      workspace->removeView(docView);
      delete docView;
    }
  }
}
Ejemplo n.º 2
0
DocumentViews UIContext::getAllDocumentViews(doc::Document* document) const
{
  Workspace* workspace = App::instance()->workspace();
  DocumentViews docViews;

  for (WorkspaceView* view : *workspace) {
    if (DocumentView* docView = dynamic_cast<DocumentView*>(view)) {
      if (docView->document() == document) {
        docViews.push_back(docView);
      }
    }
  }

  return docViews;
}
Ejemplo n.º 3
0
void UIContext::onRemoveDocument(doc::Document* doc)
{
  Context::onRemoveDocument(doc);

  Workspace* workspace = App::instance()->getMainWindow()->getWorkspace();
  DocumentViews docViews;

  // Collect all views related to the document.
  for (Workspace::iterator it=workspace->begin(); it != workspace->end(); ++it) {
    WorkspaceView* view = *it;
    if (DocumentView* docView = dynamic_cast<DocumentView*>(view)) {
      if (docView->getDocument() == doc) {
        docViews.push_back(docView);
      }
    }
  }

  for (DocumentViews::iterator it=docViews.begin(); it != docViews.end(); ++it) {
    DocumentView* docView = *it;
    workspace->removeView(docView);
    delete docView;
  }
}