void MultiDocumentPanel::updateOrder()
{
    const Array <Component*> oldList (components);

    if (mode == FloatingWindows)
    {
        components.clear();

        for (int i = 0; i < getNumChildComponents(); ++i)
        {
            MultiDocumentPanelWindow* const dw = dynamic_cast <MultiDocumentPanelWindow*> (getChildComponent (i));

            if (dw != nullptr)
                components.add (dw->getContentComponent());
        }
    }
    else
    {
        if (tabComponent != nullptr)
        {
            Component* const current = tabComponent->getCurrentContentComponent();

            if (current != nullptr)
            {
                components.removeValue (current);
                components.add (current);
            }
        }
    }

    if (components != oldList)
        activeDocumentChanged();
}
Exemplo n.º 2
0
bool SessionManager::open(const QString& name_){
	if(_docMgr.closeAllIfPossible()){
		_currentSession = name_;
		SessionSettings s;
		QList<QStringList> views;
		s.load(_currentSession, views);
		if(views.size() == 1){
			//open in the active view
			//to be sure another won't be activated for nothing
			_docMgr.blockSignals(true);
			_docMgr.open(views[0]);
			_docMgr.blockSignals(false);
		}else{
			for(int i = 0; i < views.size(); i++){
				_docMgr.blockSignals(true);
				_docMgr.open(views[i], i);
				_docMgr.blockSignals(false);
			}
		}
		//update main window
		emit activeDocumentChanged(_docMgr.getActiveDocument());
		return true;
	}else{
		error();
		return false;
	}
}
void MultiDocumentPanel::updateOrder()
{
    auto oldList = components;

    if (mode == FloatingWindows)
    {
        components.clear();

        for (auto* child : getChildren())
            if (auto* dw = dynamic_cast<MultiDocumentPanelWindow*> (child))
                components.add (dw->getContentComponent());
    }
    else
    {
        if (tabComponent != nullptr)
        {
            if (auto* current = tabComponent->getCurrentContentComponent())
            {
                components.removeFirstMatchingValue (current);
                components.add (current);
            }
        }
    }

    if (components != oldList)
        activeDocumentChanged();
}
Exemplo n.º 4
0
void DocumentManager::setActiveDocument(IDocument *document)
{
  if (document != m_activeDocument)
  {
    m_activeDocument = document;
    emit (activeDocumentChanged(m_activeDocument));
  }
}
Exemplo n.º 5
0
void DocumentManager::on_activeDocumentChange(IDocument &document)
{
  if (&document != m_activeDocument)
  {
    m_activeDocument = &document;
    emit(activeDocumentChanged(this->m_activeDocument));
  }

}
void FileManager::activateDocument(Document* document) {
    qDebug() << "FileManager::activateDocument(Document* document)";
//    filename = cleanPath(filename);
//    if(!m_documentMap.contains(filename))
//        return false;
    m_activeDocument = document;//m_documentMap.value(filename);
    emit activeDocumentChanged(m_activeDocument);
//    return true;
}
Exemplo n.º 7
0
void DocumentManager::closeAll()
{
  for (IDocument *d : m_documents)
  {
    emit(closing(d));
    delete d;
  }
  m_documents.clear();
  m_activeDocument = NULL;
  emit (activeDocumentChanged(NULL));
}
void TourDuMondeDocumentController::setDocument(ITourDuMondeDocument *doc)
{
    m_document.reset(doc);
    if (m_document)
    {
        connect(m_document.get(), &ITourDuMondeDocument::nameChanged, this, &ITourDuMondeDocumentController::activeDocumentNameChanged);
    }

    emit activeDocumentChanged(m_document.get());
    emit activeDocumentNameChanged(activeDocumentName());
}
Exemplo n.º 9
0
void DocumentManager::requestFocus(IDocument *document)
{
  if (document != NULL)
  {
    int i = m_documents.indexOf(document);
    if (i >= 0)
    {
      m_activeDocument = m_documents[i];
      emit (activeDocumentChanged(m_activeDocument));
    }
  }
}
Exemplo n.º 10
0
void FileManager::closeDocument(Document* document) {
    emit aboutToCloseDocument(document);
    m_documentMap.remove(document->documentInfo()->absoluteFilePath());
   m_documents.removeAll(document);
//     m_documents.removeOne(document);
    if(m_activeDocument == document) {
        m_activeDocument = 0;
        emit activeDocumentChanged(m_activeDocument);
    }
    Q_ASSERT(!m_documents.contains(document));
    delete document;
}
Exemplo n.º 11
0
void DocumentManager::addDocument( IDocument *document)
{

  if(!m_documents.contains(document))
  {
    m_documents.append(document);

    this->m_activeDocument = document;


    emit(added(document));
    emit(activeDocumentChanged(document));
  }
}
Exemplo n.º 12
0
MainWindow::~MainWindow()
{
  // Save recent file entries
  //actionOpenRecent_->saveEntries(KGlobal::config()->group("Recent Files"));
  
  // deselect
  activeDocument_ = 0L;
  activeDocumentChanged(-1);
  
  for (int i = 0; i < documents_.size(); ++i)
    delete documents_[i].second;

  for (int i = 0; i < 4; ++i) {
    delete renderWidget_[i];
    delete glContext_[i];
  }
}
Exemplo n.º 13
0
void DocumentManager::closeDocument( IDocument *document)
{
  if (document != NULL)
  {
    int i = m_documents.indexOf(document);

    if (i >= 0)
    {
      m_documents.removeAt(i);
      emit (closing(document));

      if (this->m_activeDocument == document)
      {
        this->m_activeDocument = m_documents.count() == 0 ? NULL :
                                                            i == 0 ? m_documents[0] :
                                                            m_documents[i-1];
        emit(activeDocumentChanged(this->m_activeDocument));
      }
      delete document;
    }
  }

}
Exemplo n.º 14
0
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
  activeDocument_ = 0L;
  newcnt_ = 1;
  
  // set up the main window
  init();
  initGui();
  initActions();
  initMenus();
  initToolBars();
  initConnections();

  Config *cfg = Application::self()->config();
  QByteArray state = cfg->state();
  QByteArray geometry = cfg->geometry();
  if (!state.isEmpty())
    restoreState(state);
  if (!geometry.isEmpty())
    restoreGeometry(geometry);
  
  // to make sure that there is no open models.
  activeDocumentChanged(-1);
  
  emit actionEnabled(false);

  // parse cmd line args
  QStringList args = qApp->arguments();
  for (int i = 1; i < args.size(); ++i) {
    const QString &arg = args[i];
    if (!arg.startsWith("-"))
      openFile(arg);
  }
  
  setStatusMessage(tr("Ready..."));
}
bool MultiDocumentPanel::closeDocument (Component* component,
                                        const bool checkItsOkToCloseFirst)
{
    if (components.contains (component))
    {
        if (checkItsOkToCloseFirst && ! tryToCloseDocument (component))
            return false;

        component->removeComponentListener (this);

        const bool shouldDelete = MultiDocHelpers::shouldDeleteComp (component);
        component->getProperties().remove ("mdiDocumentDelete_");
        component->getProperties().remove ("mdiDocumentBkg_");

        if (mode == FloatingWindows)
        {
            for (int i = getNumChildComponents(); --i >= 0;)
            {
                MultiDocumentPanelWindow* const dw = dynamic_cast <MultiDocumentPanelWindow*> (getChildComponent (i));

                if (dw != nullptr && dw->getContentComponent() == component)
                {
                    ScopedPointer<MultiDocumentPanelWindow> (dw)->clearContentComponent();
                    break;
                }
            }

            if (shouldDelete)
                delete component;

            components.removeValue (component);

            if (isFullscreenWhenOneDocument() && components.size() == 1)
            {
                for (int i = getNumChildComponents(); --i >= 0;)
                {
                    ScopedPointer<MultiDocumentPanelWindow> dw (dynamic_cast <MultiDocumentPanelWindow*> (getChildComponent (i)));

                    if (dw != nullptr)
                        dw->clearContentComponent();
                }

                addAndMakeVisible (components.getFirst());
            }
        }
        else
        {
            jassert (components.indexOf (component) >= 0);

            if (tabComponent != nullptr)
            {
                for (int i = tabComponent->getNumTabs(); --i >= 0;)
                    if (tabComponent->getTabContentComponent (i) == component)
                        tabComponent->removeTab (i);
            }
            else
            {
                removeChildComponent (component);
            }

            if (shouldDelete)
                delete component;

            if (tabComponent != nullptr && tabComponent->getNumTabs() <= numDocsBeforeTabsUsed)
                tabComponent = nullptr;

            components.removeValue (component);

            if (components.size() > 0 && tabComponent == nullptr)
                addAndMakeVisible (components.getFirst());
        }

        resized();
        activeDocumentChanged();
    }
    else
    {
        jassertfalse;
    }

    return true;
}
bool MultiDocumentPanel::addDocument (Component* const component,
                                      const Colour& docColour,
                                      const bool deleteWhenRemoved)
{
    // If you try passing a full DocumentWindow or ResizableWindow in here, you'll end up
    // with a frame-within-a-frame! Just pass in the bare content component.
    jassert (dynamic_cast <ResizableWindow*> (component) == nullptr);

    if (component == nullptr || (maximumNumDocuments > 0 && components.size() >= maximumNumDocuments))
        return false;

    components.add (component);
    component->getProperties().set ("mdiDocumentDelete_", deleteWhenRemoved);
    component->getProperties().set ("mdiDocumentBkg_", (int) docColour.getARGB());
    component->addComponentListener (this);

    if (mode == FloatingWindows)
    {
        if (isFullscreenWhenOneDocument())
        {
            if (components.size() == 1)
            {
                addAndMakeVisible (component);
            }
            else
            {
                if (components.size() == 2)
                    addWindow (components.getFirst());

                addWindow (component);
            }
        }
        else
        {
           addWindow (component);
        }
    }
    else
    {
        if (tabComponent == nullptr && components.size() > numDocsBeforeTabsUsed)
        {
            addAndMakeVisible (tabComponent = new MDITabbedComponentInternal());

            Array <Component*> temp (components);

            for (int i = 0; i < temp.size(); ++i)
                tabComponent->addTab (temp[i]->getName(), docColour, temp[i], false);

            resized();
        }
        else
        {
            if (tabComponent != nullptr)
                tabComponent->addTab (component->getName(), docColour, component, false);
            else
                addAndMakeVisible (component);
        }

        setActiveDocument (component);
    }

    resized();
    activeDocumentChanged();
    return true;
}