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/");
 }