Mercurial > octave-nkf
diff gui/src/MainWindow.cpp @ 14599:97cb9286919c gui
Cleaned up code.
* .hgsub: Removed IRC Widget.
* gui.pro: Removed dependency on IRC Widget and removed files.
* class FileEditorMdiSubWindow: Renamed to FileEditor. File editor windows are now independent windows, thus removed the extra close button.
* MainWindow: Removed MDI Area and replaced it with the terminal instead.
* BrowserWidget: Removed browser widget.
* SettingsDialog: Rearranged settings for the editor, removed tab for shortcuts.
* OctaveCallbackThread: Raised update intervals from 0,5s to 1s.
* OctaveLink: Replaced signals names for triggering updates on the symbol table.
* WorkspaceView: Adjusted connect statements to fit the new signal names.
author | Jacob Dawid <jacob.dawid@googlemail.com> |
---|---|
date | Mon, 07 May 2012 00:53:54 +0200 |
parents | fa52c6e84ae0 |
children | 772ce0204b3f |
line wrap: on
line diff
--- a/gui/src/MainWindow.cpp Mon Apr 30 19:38:24 2012 -0700 +++ b/gui/src/MainWindow.cpp Mon May 07 00:53:54 2012 +0200 @@ -23,13 +23,14 @@ #include <QFileDialog> #include <QMessageBox> #include "MainWindow.h" -#include "FileEditorMdiSubWindow.h" +#include "FileEditor.h" #include "SettingsDialog.h" #define VERSION_STRING "Octave GUI (0.8.8)" MainWindow::MainWindow (QWidget * parent):QMainWindow (parent) { + // We have to set up all our windows, before we finally launch octave. construct (); OctaveLink::instance ()->launchOctave(); } @@ -39,33 +40,23 @@ } void -MainWindow::handleOpenFileRequest (QString fileName) +MainWindow::openExistingFile (QString fileName) { - reportStatusMessage (tr ("Opening file.")); - QPixmap pixmap; - if (pixmap.load (fileName)) - { -// ImageViewerMdiSubWindow *subWindow = new ImageViewerMdiSubWindow(pixmap, this); -// subWindow->setAttribute(Qt::WA_DeleteOnClose); -// m_centralMdiArea->addSubWindow(subWindow); -// subWindow->setWindowTitle(fileName); - } - else - { - openEditorFile(fileName); - } + reportStatusMessage (tr ("Opening file..")); + newEditorWindow(fileName); } void -MainWindow::openEditor () +MainWindow::newFile () { - openEditorFile(QString()); + newEditorWindow(QString()); } + void -MainWindow::openEditorFile (QString fileName) +MainWindow::newEditorWindow (QString fileName) { - FileEditorMdiSubWindow *subWindow = new FileEditorMdiSubWindow (m_centralMdiArea); - subWindow->setAttribute (Qt::WA_DeleteOnClose); + FileEditor *fileEditor = new FileEditor (); + fileEditor->setAttribute (Qt::WA_DeleteOnClose); // check whether lexer is already prepared and prepare it if not if ( m_lexer == NULL ) { @@ -97,12 +88,12 @@ } m_lexerAPI->prepare(); // prepare API info ... this make take some time } - subWindow->initEditor(m_terminalView, m_lexer, this); // init necessary informations for editor + fileEditor->initEditor(m_terminalView, m_lexer, this); // init necessary informations for editor if ( fileName.isEmpty() ) - subWindow->newFile (); + fileEditor->newFile (); else - subWindow->loadFile (fileName); + fileEditor->loadFile (fileName); } @@ -113,29 +104,6 @@ } void -MainWindow::openWebPage (QString url) -{ - m_documentationWidget->load (QUrl (url)); -} - -void -MainWindow::openChat () -{ - if (!m_ircWidget) - { - m_ircWidget = new QIRCWidget (); - m_ircWidget->setWindowTitle ("Chat"); - m_ircWidget->connectToServer ("irc.freenode.net", "Octave-GUI-User", "#octave"); - } - - if (!m_ircWidget->isVisible ()) - { - m_ircWidget->setVisible (true); - m_ircWidget->raise (); - } -} - -void MainWindow::handleSaveWorkspaceRequest () { QString selectedFile = @@ -170,12 +138,6 @@ } void -MainWindow::alignMdiWindows () -{ - m_centralMdiArea->tileSubWindows (); -} - -void MainWindow::openBugTrackerPage () { QDesktopServices::openUrl (QUrl ("http://savannah.gnu.org/bugs/?group=octave")); @@ -241,20 +203,13 @@ } void -MainWindow::showAboutQt () -{ - QMessageBox::aboutQt (this); -} - -void MainWindow::closeEvent (QCloseEvent * closeEvent) { reportStatusMessage (tr ("Saving data and shutting down.")); writeSettings (); m_closeApplication = true; // inform editor window that whole application is closed OctaveLink::instance ()->terminateOctave(); - m_centralMdiArea->closeAllSubWindows(); // send close events to subwindows - // (editor files can be saved!) + QMainWindow::closeEvent (closeEvent); } @@ -264,7 +219,6 @@ QSettings *settings = ResourceManager::instance ()->settings (); restoreGeometry (settings->value ("MainWindow/geometry").toByteArray ()); restoreState (settings->value ("MainWindow/windowState").toByteArray ()); - m_centralMdiArea->restoreGeometry (settings->value ("MdiArea/geometry").toByteArray ()); emit settingsChanged (); } @@ -274,22 +228,15 @@ QSettings *settings = ResourceManager::instance ()->settings (); settings->setValue ("MainWindow/geometry", saveGeometry ()); settings->setValue ("MainWindow/windowState", saveState ()); - settings->setValue ("MdiArea/geometry", m_centralMdiArea->saveGeometry ()); } void MainWindow::construct () { + // TODO: Check this. m_closeApplication = false; // flag for editor files when closed setWindowIcon (ResourceManager::instance ()->icon (ResourceManager::Octave)); - m_ircWidget = 0; - - // Initialize MDI area. - m_centralMdiArea = new QMdiArea (this); - m_centralMdiArea->setObjectName ("CentralMdiArea"); - m_centralMdiArea->setViewMode (QMdiArea::TabbedView); - // Setup dockable widgets and the status bar. m_workspaceView = new WorkspaceView (this); m_workspaceView->setStatusTip (tr ("View the variables in the active workspace.")); @@ -299,33 +246,9 @@ m_filesDockWidget->setStatusTip (tr ("Browse your files.")); m_statusBar = new QStatusBar (this); - // Documentation subwindow. - m_documentationWidget = new BrowserWidget (this); - m_documentationWidgetSubWindow = new NonClosableMdiSubWindow (this); - m_documentationWidgetSubWindow->setWidget (m_documentationWidget); - m_centralMdiArea->addSubWindow (m_documentationWidgetSubWindow, Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint); - - m_documentationWidgetSubWindow->setObjectName ("DocumentationWidgetSubWindow"); - m_documentationWidgetSubWindow->setWindowTitle (tr ("Documentation")); - m_documentationWidgetSubWindow - ->setWindowIcon (ResourceManager::instance ()->icon (ResourceManager::Documentation)); - m_documentationWidgetSubWindow->setFocusProxy (m_documentationWidget); - m_documentationWidgetSubWindow->setStatusTip (tr ("Browse the Octave documentation for help.")); - m_documentationWidgetSubWindow->setMinimumSize (300, 300); - // Octave Terminal subwindow. m_terminalView = new QTerminal(this); - m_terminalViewSubWindow = new NonClosableMdiSubWindow (this); - m_terminalViewSubWindow->setWidget (m_terminalView); - m_centralMdiArea->addSubWindow (m_terminalViewSubWindow, Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint); - - m_terminalViewSubWindow->setObjectName ("OctaveTerminalSubWindow"); - m_terminalViewSubWindow->setWindowTitle (tr ("Terminal")); - m_terminalViewSubWindow - ->setWindowIcon (ResourceManager::instance ()->icon (ResourceManager::Terminal)); - m_terminalViewSubWindow->setFocusProxy (m_terminalView); - m_terminalViewSubWindow->setStatusTip (tr ("Enter your commands into the Octave terminal.")); - m_terminalViewSubWindow->setMinimumSize (300, 300); + setCentralWidget (m_terminalView); m_lexer = NULL; // initialise the empty lexer for the edtiors @@ -336,8 +259,6 @@ QMenu *interfaceMenu = menuBar ()->addMenu (tr ("Interface")); - QAction *alignWindowsAction = interfaceMenu->addAction (tr ("Align Windows")); - interfaceMenu->addSeparator (); QAction *showWorkspaceAction = interfaceMenu->addAction (tr ("Workspace")); showWorkspaceAction->setCheckable (true); @@ -357,25 +278,19 @@ QAction *clearWorkspaceAction = workspaceMenu->addAction (tr ("Clear")); QMenu *communityMenu = menuBar ()->addMenu (tr ("Community")); - QAction *openChatAction = communityMenu->addAction (tr ("Chat")); - communityMenu->addSeparator(); QAction *reportBugAction = communityMenu->addAction (tr ("Report Bug")); QAction *agoraAction = communityMenu->addAction (tr ("Agora")); QAction *octaveForgeAction = communityMenu->addAction (tr ("Octave Forge")); communityMenu->addSeparator (); QAction *aboutOctaveAction = communityMenu->addAction (tr ("About Octave")); - QAction *aboutQt = communityMenu->addAction (tr ("About Qt")); connect (settingsAction, SIGNAL (triggered ()), this, SLOT (processSettingsDialogRequest ())); connect (exitAction, SIGNAL (triggered ()), this, SLOT (close ())); - connect (alignWindowsAction, SIGNAL (triggered ()), this, SLOT (alignMdiWindows ())); - connect (openEditorAction, SIGNAL (triggered ()), this, SLOT (openEditor ())); - connect (openChatAction, SIGNAL (triggered ()), this, SLOT (openChat ())); + connect (openEditorAction, SIGNAL (triggered ()), this, SLOT (newFile ())); connect (reportBugAction, SIGNAL (triggered ()), this, SLOT (openBugTrackerPage ())); connect (agoraAction, SIGNAL (triggered ()), this, SLOT (openAgoraPage ())); connect (octaveForgeAction, SIGNAL (triggered ()), this, SLOT (openOctaveForgePage ())); connect (aboutOctaveAction, SIGNAL (triggered ()), this, SLOT (showAboutOctave ())); - connect (aboutQt, SIGNAL (triggered ()), this, SLOT (showAboutQt ())); connect (showWorkspaceAction, SIGNAL (toggled (bool)), m_workspaceView, SLOT (setShown (bool))); connect (m_workspaceView, SIGNAL (activeChanged (bool)), showWorkspaceAction, SLOT (setChecked (bool))); @@ -388,7 +303,7 @@ //connect (this, SIGNAL (settingsChanged ()), m_historyDockWidget, SLOT (noticeSettings ())); connect (this, SIGNAL (settingsChanged ()), m_filesDockWidget, SLOT (noticeSettings ())); - connect (m_filesDockWidget, SIGNAL (openFile (QString)), this, SLOT (handleOpenFileRequest (QString))); + connect (m_filesDockWidget, SIGNAL (openFile (QString)), this, SLOT (openExistingFile (QString))); connect (m_historyDockWidget, SIGNAL (information (QString)), this, SLOT (reportStatusMessage (QString))); connect (m_historyDockWidget, SIGNAL (commandDoubleClicked (QString)), this, SLOT (handleCommandDoubleClicked (QString))); connect (saveWorkspaceAction, SIGNAL (triggered ()), this, SLOT (handleSaveWorkspaceRequest ())); @@ -397,7 +312,6 @@ setWindowTitle (QString (VERSION_STRING)); - setCentralWidget (m_centralMdiArea); addDockWidget (Qt::LeftDockWidgetArea, m_workspaceView); addDockWidget (Qt::LeftDockWidgetArea, m_historyDockWidget); addDockWidget (Qt::RightDockWidgetArea, m_filesDockWidget); @@ -405,6 +319,5 @@ readSettings (); updateTerminalFont(); - openWebPage ("http://www.gnu.org/software/octave/doc/interpreter/"); }