Mercurial > hg > octave-lyh
diff gui/src/backend/OctaveLink.cpp @ 14664:664f54233c98 gui
Extracted model code from the WorkspaceView and rearranged it in a new model class.
* WorkspaceModel.cpp/.h (new class): Model class for the workspace.
* WorkspaceView.cpp/.h: Replaced QTreeWidget with QTreeView and removed model code.
* OctaveLink.cpp/.h: Removed symbol table semaphore and methods to access the copy of the symbol table, removed copying the symbol table.
* src.pro: Added new files to Qt project.
author | Jacob Dawid <jacob.dawid@googlemail.com> |
---|---|
date | Sun, 20 May 2012 22:05:49 +0200 |
parents | eeddf586cf0f |
children | 6a6733a55982 |
line wrap: on
line diff
--- a/gui/src/backend/OctaveLink.cpp +++ b/gui/src/backend/OctaveLink.cpp @@ -21,75 +21,19 @@ OctaveLink::OctaveLink ():QObject () { - m_symbolTableSemaphore = new QSemaphore (1); m_historyModel = new QStringListModel (this); + m_workspaceModel = new WorkspaceModel (this); + + m_workspaceModel->insertTopLevelItem(0, new TreeItem ("Local")); + m_workspaceModel->insertTopLevelItem(1, new TreeItem ("Global")); + m_workspaceModel->insertTopLevelItem(2, new TreeItem ("Persistent")); + m_workspaceModel->insertTopLevelItem(3, new TreeItem ("Hidden")); } OctaveLink::~OctaveLink () { } -QString -OctaveLink::octaveValueAsQString (OctaveValue octaveValue) -{ - // Convert single qouted string. - if (octaveValue.is_sq_string ()) - { - return QString ("\'%1\'").arg (octaveValue.string_value ().c_str ()); - - // Convert double qouted string. - } - else if (octaveValue.is_dq_string ()) - { - return QString ("\"%1\"").arg (octaveValue.string_value ().c_str ()); - - // Convert real scalar. - } - else if (octaveValue.is_real_scalar ()) - { - return QString ("%1").arg (octaveValue.scalar_value ()); - - // Convert complex scalar. - } - else if (octaveValue.is_complex_scalar ()) - { - return QString ("%1 + %2i").arg (octaveValue.scalar_value ()). - arg (octaveValue.complex_value ().imag ()); - - // Convert range. - } - else if (octaveValue.is_range ()) - { - return QString ("%1 : %2 : %3").arg (octaveValue.range_value (). - base ()).arg (octaveValue. - range_value (). - inc ()). - arg (octaveValue.range_value ().limit ()); - - // Convert real matrix. - } - else if (octaveValue.is_real_matrix ()) - { - return QString ("%1x%2 matrix") - .arg (octaveValue.matrix_value ().rows ()) - .arg (octaveValue.matrix_value ().cols ()); - - // Convert complex matrix. - } - else if (octaveValue.is_complex_matrix ()) - { - return QString ("%1x%2 complex matrix") - .arg (octaveValue.matrix_value ().rows ()) - .arg (octaveValue.matrix_value ().cols ()); - - // If everything else does not fit, we could not recognize the type. - } - else - { - return QString ("<Type not recognized>"); - } -} - void OctaveLink::launchOctave () { @@ -98,7 +42,7 @@ m_octaveCallbackThread = new OctaveCallbackThread (this); // Launch the second as soon as the first ist ready. - connect (m_octaveMainThread, SIGNAL(ready()), m_octaveCallbackThread, SLOT(start())); + connect (m_octaveMainThread, SIGNAL (ready ()), m_octaveCallbackThread, SLOT (start ())); // Start the first one. m_octaveMainThread->start (); @@ -107,27 +51,13 @@ void OctaveLink::terminateOctave () { - m_octaveCallbackThread->halt(); + m_octaveCallbackThread->halt (); m_octaveCallbackThread->wait (); m_octaveMainThread->terminate (); //m_octaveMainThread->wait(); } -QList < SymbolRecord > OctaveLink::symbolTable () -{ - m_symbolTableBuffer.clear (); - std::list < SymbolRecord > allVariables = symbol_table::all_variables (); - std::list < SymbolRecord >::iterator iterator; - for (iterator = allVariables.begin (); iterator != allVariables.end (); - iterator++) - { - SymbolRecord s = iterator->dup (symbol_table::global_scope ()); - m_symbolTableBuffer.append (s); - } - return m_symbolTableBuffer; -} - void OctaveLink::triggerUpdateHistoryModel () { @@ -146,8 +76,20 @@ } } +void +OctaveLink::triggerUpdateSymbolTable () +{ + m_workspaceModel->updateFromSymbolTable(); +} + QStringListModel * OctaveLink::historyModel () { return m_historyModel; } + +WorkspaceModel * +OctaveLink::workspaceModel () +{ + return m_workspaceModel; +}