bool MainWindow::openFile (const File& file) { createProjectContentCompIfNeeded(); if (file.hasFileExtension (Project::projectFileExtension)) { ScopedPointer<Project> newDoc (new Project (file)); Result result (newDoc->loadFrom (file, true)); if (result.wasOk() && closeCurrentProject()) { setProject (newDoc); newDoc.release()->setChangedFlag (false); jassert (getProjectContentComponent() != nullptr); getProjectContentComponent()->reloadLastOpenDocuments(); if (Project* p = getProject()) p->updateDeprecatedProjectSettingsInteractively(); return true; } } else if (file.exists()) { return getProjectContentComponent()->showEditorForFile (file, true); } return false; }
void MainWindow::setProject (Project* newProject) { createProjectContentCompIfNeeded(); getProjectContentComponent()->setProject (newProject); currentProject = newProject; getProjectContentComponent()->updateMainWindowTitle(); IntrojucerApp::getCommandManager().commandStatusChanged(); }
void MainWindow::createProjectContentCompIfNeeded() { if (getProjectContentComponent() == nullptr) { clearContentComponent(); setContentOwned (new ProjectContentComponent(), false); jassert (getProjectContentComponent() != nullptr); } }
void MainWindow::activeWindowStatusChanged() { DocumentWindow::activeWindowStatusChanged(); if (getProjectContentComponent() != nullptr) getProjectContentComponent()->updateMissingFileStatuses(); OpenDocumentManager::getInstance()->reloadModifiedFiles(); }
bool MainWindow::closeProject (Project* project) { jassert (project == currentProject && project != nullptr); if (project == nullptr) return true; project->getStoredProperties().setValue (getProjectWindowPosName(), getWindowStateAsString()); if (ProjectContentComponent* const pcc = getProjectContentComponent()) { pcc->saveTreeViewState(); pcc->saveOpenDocumentList(); pcc->hideEditor(); } if (! ProjucerApplication::getApp().openDocumentManager.closeAllDocumentsUsingProject (*project, true)) return false; FileBasedDocument::SaveResult r = project->saveIfNeededAndUserAgrees(); if (r == FileBasedDocument::savedOk) { setProject (nullptr); return true; } return false; }
void GroupTreeViewItem::showDocument() { ProjectContentComponent* pcc = getProjectContentComponent(); if (pcc != nullptr) pcc->setEditorComponent (new GroupInformationComponent (item), nullptr); }
void MainWindow::activeWindowStatusChanged() { DocumentWindow::activeWindowStatusChanged(); if (ProjectContentComponent* const pcc = getProjectContentComponent()) pcc->updateMissingFileStatuses(); ProjucerApplication::getApp().openDocumentManager.reloadModifiedFiles(); if (Project* p = getProject()) { if (p->hasProjectBeenModified()) { const int r = AlertWindow::showOkCancelBox (AlertWindow::QuestionIcon, TRANS ("The .jucer file has been modified since the last save."), TRANS ("Do you want to keep the current project or re-load from disk?"), TRANS ("Keep"), TRANS ("Re-load from disk")); if (r == 0) { File projectFile = p->getFile(); setProject (nullptr); openFile (projectFile); } else if (r == 1) { ProjucerApplication::getApp().getCommandManager().invokeDirectly (CommandIDs::saveProject, true); } } } }
void MainWindow::activeWindowStatusChanged() { DocumentWindow::activeWindowStatusChanged(); if (ProjectContentComponent* const pcc = getProjectContentComponent()) pcc->updateMissingFileStatuses(); IntrojucerApp::getApp().openDocumentManager.reloadModifiedFiles(); }
void PlainTextFileTreeViewItem::showDocument() { #if 0 const File f (getFile()); if (f.exists()) if (ProjectContentComponent* pcc = getProjectContentComponent()) pcc->showEditorForFile (f, false); #endif }
void MainWindow::setProject (Project* newProject) { getProjectContentComponent()->setProject (newProject); currentProject = newProject; commandManager->commandStatusChanged(); // (mustn't do this when the project is 0, because that'll happen on shutdown, // which will erase the list of recent projects) if (newProject != nullptr) static_cast<JucerApplication*> (JUCEApplication::getInstance())->updateRecentProjectList(); }
void MainWindow::activeWindowStatusChanged() { DocumentWindow::activeWindowStatusChanged(); if (auto* pcc = getProjectContentComponent()) pcc->updateMissingFileStatuses(); ProjucerApplication::getApp().openDocumentManager.reloadModifiedFiles(); if (auto* p = getProject()) { if (p->hasProjectBeenModified()) { Component::SafePointer<Component> safePointer (this); MessageManager::callAsync ([=] () { if (safePointer == nullptr) return; // bail out if the window has been deleted auto result = AlertWindow::showOkCancelBox (AlertWindow::QuestionIcon, TRANS ("The .jucer file has been modified since the last save."), TRANS ("Do you want to keep the current project or re-load from disk?"), TRANS ("Keep"), TRANS ("Re-load from disk")); if (safePointer == nullptr) return; if (result == 0) { if (auto* project = getProject()) { auto oldTemporaryDirectory = project->getTemporaryDirectory(); auto projectFile = project->getFile(); setProject (nullptr); openFile (projectFile); if (oldTemporaryDirectory != File()) if (auto* newProject = getProject()) newProject->setTemporaryDirectory (oldTemporaryDirectory); } } else { ProjucerApplication::getApp().getCommandManager().invokeDirectly (CommandIDs::saveProject, true); } }); } } }
void MainWindow::setProject (Project* newProject) { createProjectContentCompIfNeeded(); getProjectContentComponent()->setProject (newProject); currentProject = newProject; if (currentProject != nullptr) projectNameValue.referTo (currentProject->getProjectNameValue()); else projectNameValue.referTo (Value()); ProjucerApplication::getCommandManager().commandStatusChanged(); }
void MainWindow::setProject (Project* newProject) { createProjectContentCompIfNeeded(); getProjectContentComponent()->setProject (newProject); currentProject = newProject; if (currentProject != nullptr) setName (currentProject->getProjectFilenameRoot() + " - Projucer"); else setName ("Projucer"); ProjucerApplication::getCommandManager().commandStatusChanged(); }
//============================================================================== MainWindow::MainWindow() : DocumentWindow (ProjucerApplication::getApp().getApplicationName(), ProjucerApplication::getApp().lookAndFeel.getCurrentColourScheme() .getUIColour (LookAndFeel_V4::ColourScheme::UIColour::windowBackground), DocumentWindow::allButtons, false) { setUsingNativeTitleBar (true); #if ! JUCE_MAC setMenuBar (ProjucerApplication::getApp().getMenuModel()); #endif createProjectContentCompIfNeeded(); setResizable (true, false); centreWithSize (800, 600); ApplicationCommandManager& commandManager = ProjucerApplication::getCommandManager(); // Register all the app commands.. commandManager.registerAllCommandsForTarget (this); commandManager.registerAllCommandsForTarget (getProjectContentComponent()); // update key mappings.. { commandManager.getKeyMappings()->resetToDefaultMappings(); ScopedPointer<XmlElement> keys (getGlobalProperties().getXmlValue ("keyMappings")); if (keys != nullptr) commandManager.getKeyMappings()->restoreFromXml (*keys); addKeyListener (commandManager.getKeyMappings()); } // don't want the window to take focus when the title-bar is clicked.. setWantsKeyboardFocus (false); getLookAndFeel().setColour (ColourSelector::backgroundColourId, Colours::transparentBlack); projectNameValue.addListener (this); setResizeLimits (600, 500, 32000, 32000); }
void MainWindow::setProject (Project* newProject) { createProjectContentCompIfNeeded(); getProjectContentComponent()->setProject (newProject); currentProject.reset (newProject); if (currentProject != nullptr) projectNameValue.referTo (currentProject->getProjectValue (Ids::name)); else projectNameValue.referTo (Value()); if (newProject != nullptr) { if (auto* peer = getPeer()) peer->setRepresentedFile (newProject->getFile()); } ProjucerApplication::getCommandManager().commandStatusChanged(); }
bool MainWindow::openFile (const File& file) { if (file.hasFileExtension (Project::projectFileExtension)) { ScopedPointer <Project> newDoc (new Project (file)); if (newDoc->loadFrom (file, true) && closeCurrentProject()) { setProject (newDoc.release()); return true; } } else if (file.exists()) { return getProjectContentComponent()->showEditorForFile (file); } return false; }