Permalink
Browse files

Add reloadOnStartup flag

  • Loading branch information...
1 parent 4d85302 commit 7a263209fc541bdd87b2e6f1dc5f9a05d76fa043 jsiegle committed Jan 28, 2014
Showing with 44 additions and 2 deletions.
  1. +21 −1 Source/MainWindow.cpp
  2. +5 −0 Source/MainWindow.h
  3. +16 −0 Source/UI/UIComponent.cpp
  4. +2 −1 Source/UI/UIComponent.h
View
22 Source/MainWindow.cpp
@@ -35,7 +35,7 @@ MainWindow::MainWindow()
setResizable(true, // isResizable
false); // useBottomCornerRisizer -- doesn't work very well
-
+ shouldReloadOnStartup = false;
// Create ProcessorGraph and AudioComponent, and connect them.
// Callbacks will be set by the play button in the control panel
@@ -70,6 +70,17 @@ MainWindow::MainWindow()
// Constraining the window's size doesn't seem to work:
setResizeLimits(300, 200, 10000, 10000);
+ if (shouldReloadOnStartup)
+ {
+ File executable = File::getSpecialLocation(File::currentExecutableFile);
+ File executableDirectory = executable.getParentDirectory();
+ File file = executableDirectory.getChildFile("lastConfig.xml");
+
+ ui->getEditorViewport()->loadState(file);
+ }
+
+
+
}
MainWindow::~MainWindow()
@@ -87,6 +98,12 @@ MainWindow::~MainWindow()
UIComponent* ui = (UIComponent*) getContentComponent();
ui->disableDataViewport();
+ File executable = File::getSpecialLocation(File::currentExecutableFile);
+ File executableDirectory = executable.getParentDirectory();
+ File file = executableDirectory.getChildFile("lastConfig.xml");
+
+ ui->getEditorViewport()->saveState(file);
+
setMenuBar(0);
#if JUCE_MAC
@@ -121,6 +138,7 @@ void MainWindow::saveWindowBounds()
XmlElement* xml = new XmlElement("MAINWINDOW");
xml->setAttribute("version", JUCEApplication::getInstance()->getApplicationVersion());
+ xml->setAttribute("shouldReloadOnStartup", shouldReloadOnStartup);
XmlElement* bounds = new XmlElement("BOUNDS");
bounds->setAttribute("x",getScreenX());
@@ -183,6 +201,8 @@ void MainWindow::loadWindowBounds()
String description;
+ shouldReloadOnStartup = xml->getBoolAttribute("shouldReloadOnStartup", false);
+
forEachXmlChildElement(*xml, e)
{
View
5 Source/MainWindow.h
@@ -59,6 +59,9 @@ class MainWindow : public DocumentWindow
commands. */
ApplicationCommandManager commandManager;
+ /** Determines whether the last used configuration reloads upon startup. */
+ bool shouldReloadOnStartup;
+
private:
/** Saves the MainWindow's boundaries into the file "windowState.xml", located in the directory
@@ -75,6 +78,8 @@ class MainWindow : public DocumentWindow
/** A pointer to the application's ProcessorGraph (owned by the MainWindow). */
ScopedPointer<ProcessorGraph> processorGraph;
+
+
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(MainWindow)
};
View
16 Source/UI/UIComponent.cpp
@@ -300,6 +300,8 @@ PopupMenu UIComponent::getMenuForIndex(int menuIndex, const String& menuName)
{
menu.addCommandItem(commandManager, openConfiguration);
menu.addCommandItem(commandManager, saveConfiguration);
+ menu.addSeparator();
+ menu.addCommandItem(commandManager, reloadOnStartup);
#if !JUCE_MAC
menu.addSeparator();
@@ -356,6 +358,7 @@ void UIComponent::getAllCommands(Array <CommandID>& commands)
{
const CommandID ids[] = {openConfiguration,
saveConfiguration,
+ reloadOnStartup,
undo,
redo,
copySignalChain,
@@ -388,7 +391,12 @@ void UIComponent::getCommandInfo(CommandID commandID, ApplicationCommandInfo& re
case saveConfiguration:
result.setInfo("Save configuration", "Save the current processor graph.", "General", 0);
result.addDefaultKeypress('S', ModifierKeys::commandModifier);
+ break;
+
+ case reloadOnStartup:
+ result.setInfo("Reload on startup", "Load the last used configuration on startup.", "General", 0);
result.setActive(!acquisitionStarted);
+ result.setTicked(mainWindow->shouldReloadOnStartup);
break;
case undo:
@@ -499,6 +507,14 @@ bool UIComponent::perform(const InvocationInfo& info)
break;
}
+
+ case reloadOnStartup:
+ {
+ mainWindow->shouldReloadOnStartup = !mainWindow->shouldReloadOnStartup;
+
+ }
+ break;
+
case clearSignalChain:
{
getEditorViewport()->clearSignalChain();
View
3 Source/UI/UIComponent.h
@@ -206,7 +206,8 @@ class UIComponent : public Component,
toggleSignalChain = 0x2009,
toggleFileInfo = 0x2010,
showHelp = 0x2011,
- resizeWindow = 0x2012
+ resizeWindow = 0x2012,
+ reloadOnStartup = 0x2013
};
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(UIComponent);

0 comments on commit 7a26320

Please sign in to comment.