comparison gui/src/MainWindow.cpp @ 13541:b48ac9ad8de0

Highly improved separation of model and view classes.
author Jacob Dawid <jacob.dawid@googlemail.com>
date Tue, 26 Jul 2011 23:04:52 +0200
parents 0dbf8681cd08
children 5b168bbd6044
comparison
equal deleted inserted replaced
13540:0dbf8681cd08 13541:b48ac9ad8de0
24 #include <QFileDialog> 24 #include <QFileDialog>
25 #include "MainWindow.h" 25 #include "MainWindow.h"
26 #include "FileEditorMdiSubWindow.h" 26 #include "FileEditorMdiSubWindow.h"
27 #include "ImageViewerMdiSubWindow.h" 27 #include "ImageViewerMdiSubWindow.h"
28 #include "SettingsDialog.h" 28 #include "SettingsDialog.h"
29 #include "OctaveCallbackThread.h"
30 #include "cmd-edit.h" 29 #include "cmd-edit.h"
31 30
32 #define VERSION_STRING "Octave GUI (0.6.0)" 31 #define VERSION_STRING "Octave GUI (0.6.0)"
33 32
34 MainWindow::MainWindow (QWidget * parent):QMainWindow (parent), 33 MainWindow::MainWindow (QWidget * parent):QMainWindow (parent)
35 m_isRunning (true)
36 { 34 {
37 construct (); 35 construct ();
38 establishOctaveLink (); 36 OctaveLink::instance ()->launchOctave();
39 } 37 }
40 38
41 MainWindow::~MainWindow () 39 MainWindow::~MainWindow ()
42 { 40 {
43 } 41 }
149 } 147 }
150 148
151 void 149 void
152 MainWindow::closeEvent (QCloseEvent * closeEvent) 150 MainWindow::closeEvent (QCloseEvent * closeEvent)
153 { 151 {
154 m_isRunning = false;
155 reportStatusMessage (tr ("Saving data and shutting down.")); 152 reportStatusMessage (tr ("Saving data and shutting down."));
156 writeSettings (); 153 writeSettings ();
157 154
158 m_octaveCallbackThread->terminate (); 155 OctaveLink::instance ()->terminateOctave();
159 m_octaveCallbackThread->wait ();
160
161 m_octaveMainThread->terminate ();
162 QMainWindow::closeEvent (closeEvent); 156 QMainWindow::closeEvent (closeEvent);
163 } 157 }
164 158
165 void 159 void
166 MainWindow::readSettings () 160 MainWindow::readSettings ()
203 197
204 // Setup essential MDI Windows. 198 // Setup essential MDI Windows.
205 m_octaveTerminal = new OctaveTerminal (this); 199 m_octaveTerminal = new OctaveTerminal (this);
206 m_documentationWidget = new BrowserWidget (this); 200 m_documentationWidget = new BrowserWidget (this);
207 m_ircWidget = new IRCWidget (this); 201 m_ircWidget = new IRCWidget (this);
202
203 m_octaveTerminal->openTerminal ();
208 204
209 m_documentationWidgetSubWindow = 205 m_documentationWidgetSubWindow =
210 m_centralMdiArea->addSubWindow (m_documentationWidget, 206 m_centralMdiArea->addSubWindow (m_documentationWidget,
211 Qt::WindowTitleHint | Qt:: 207 Qt::WindowTitleHint | Qt::
212 WindowMinMaxButtonsHint); 208 WindowMinMaxButtonsHint);
302 298
303 readSettings (); 299 readSettings ();
304 openWebPage ("http://www.gnu.org/software/octave/doc/interpreter/"); 300 openWebPage ("http://www.gnu.org/software/octave/doc/interpreter/");
305 } 301 }
306 302
307 void
308 MainWindow::establishOctaveLink ()
309 {
310 m_octaveTerminal->openTerminal ();
311
312 m_octaveMainThread = new OctaveMainThread (this);
313 m_octaveMainThread->start ();
314
315 m_octaveCallbackThread = new OctaveCallbackThread (this, this);
316 connect (m_octaveMainThread, SIGNAL(ready()), m_octaveCallbackThread, SLOT(start()));
317 reportStatusMessage (tr ("Established link to Octave."));
318 }