Mercurial > octave
comparison libgui/src/main-window.cc @ 26117:a6df420457ac
use symbol_info_list instead of symbol_scope to pass workspace info to gui
* syminfo.h (symbol_info_list::varval): New function.
* octave-link.h, octave-link.cc (octave_link::set_workspace,
octave_link::do_set_workspace): Pass symbol_info object instead of
symbol_scope.
* octave-qt-link.h, octave-qt-link.cc (octave_link::do_set_workspace):
Likewise. Change all uses. Register symbol_info_list instead of
symbol_scope as a Qt meta type.
* workspace-model.h, workspace-model.cc: Store symbol_info_list object
instead of symbol_scope.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 16 Nov 2018 19:35:39 -0500 |
parents | 2db7e4e5d67f |
children | 2355f66cf91d |
comparison
equal
deleted
inserted
replaced
26116:e67016aee030 | 26117:a6df420457ac |
---|---|
63 #include "cmd-edit.h" | 63 #include "cmd-edit.h" |
64 #include "oct-env.h" | 64 #include "oct-env.h" |
65 #include "url-transfer.h" | 65 #include "url-transfer.h" |
66 | 66 |
67 #include "builtin-defun-decls.h" | 67 #include "builtin-defun-decls.h" |
68 #include "call-stack.h" | |
68 #include "defaults.h" | 69 #include "defaults.h" |
69 #include "defun.h" | 70 #include "defun.h" |
70 #include "interpreter-private.h" | 71 #include "interpreter-private.h" |
71 #include "interpreter.h" | 72 #include "interpreter.h" |
72 #include "oct-map.h" | 73 #include "oct-map.h" |
73 #include "octave.h" | 74 #include "octave.h" |
74 #include "parse.h" | 75 #include "parse.h" |
76 #include "syminfo.h" | |
75 #include "symscope.h" | 77 #include "symscope.h" |
76 #include "utils.h" | 78 #include "utils.h" |
77 #include "version.h" | 79 #include "version.h" |
78 | 80 |
79 static octave::file_editor_interface * | 81 static octave::file_editor_interface * |
415 nullptr, nullptr, QFileDialog::Option (opts)); | 417 nullptr, nullptr, QFileDialog::Option (opts)); |
416 | 418 |
417 if (! file.isEmpty ()) | 419 if (! file.isEmpty ()) |
418 { | 420 { |
419 octave_cmd_builtin *cmd | 421 octave_cmd_builtin *cmd |
420 = new octave_cmd_builtin (&Fload, ovl (file.toStdString ()), | 422 = new octave_cmd_builtin (&Fload, ovl (file.toStdString ()), |
421 octave_cmd_builtin::CMD_UPD_WORKSPACE); | 423 octave_cmd_builtin::CMD_UPD_WORKSPACE); |
422 queue_cmd (cmd); | 424 queue_cmd (cmd); |
423 } | 425 } |
424 } | 426 } |
425 | 427 |
426 void main_window::handle_open_any_request (const QString& file_arg) | 428 void main_window::handle_open_any_request (const QString& file_arg) |
430 file_arg.toStdString ()); | 432 file_arg.toStdString ()); |
431 } | 433 } |
432 | 434 |
433 void main_window::handle_clear_workspace_request (void) | 435 void main_window::handle_clear_workspace_request (void) |
434 { | 436 { |
435 octave_cmd_builtin *cmd | 437 octave_cmd_builtin *cmd = new octave_cmd_builtin (&Fclear, ovl ()); |
436 = new octave_cmd_builtin (&Fclear, ovl ()); | 438 |
437 queue_cmd (cmd); | 439 queue_cmd (cmd); |
438 } | 440 } |
439 | 441 |
440 void main_window::handle_clear_command_window_request (void) | 442 void main_window::handle_clear_command_window_request (void) |
441 { | 443 { |
1819 } | 1821 } |
1820 | 1822 |
1821 void main_window::construct_octave_qt_link (void) | 1823 void main_window::construct_octave_qt_link (void) |
1822 { | 1824 { |
1823 connect (m_octave_qt_link, | 1825 connect (m_octave_qt_link, |
1824 SIGNAL (set_workspace_signal (bool, bool, | 1826 SIGNAL (set_workspace_signal (bool, bool, const symbol_info_list&)), |
1825 const symbol_scope&)), | |
1826 m_workspace_model, | 1827 m_workspace_model, |
1827 SLOT (set_workspace (bool, bool, const symbol_scope&))); | 1828 SLOT (set_workspace (bool, bool, const symbol_info_list&))); |
1828 | 1829 |
1829 connect (m_octave_qt_link, SIGNAL (clear_workspace_signal (void)), | 1830 connect (m_octave_qt_link, SIGNAL (clear_workspace_signal (void)), |
1830 m_workspace_model, SLOT (clear_workspace (void))); | 1831 m_workspace_model, SLOT (clear_workspace (void))); |
1831 | 1832 |
1832 connect (m_octave_qt_link, SIGNAL (change_directory_signal (QString)), | 1833 connect (m_octave_qt_link, SIGNAL (change_directory_signal (QString)), |
2437 | 2438 |
2438 if (scope) | 2439 if (scope) |
2439 { | 2440 { |
2440 scope.rename (names.first, names.second); | 2441 scope.rename (names.first, names.second); |
2441 | 2442 |
2442 octave_link::set_workspace (true, scope); | 2443 call_stack& cs |
2444 = __get_call_stack__ ("main_window::rename_variable_callback"); | |
2445 | |
2446 octave_link::set_workspace (true, cs.get_symbol_info ()); | |
2443 } | 2447 } |
2444 | 2448 |
2445 // FIXME: if this action fails, do we need a way to display that info | 2449 // FIXME: if this action fails, do we need a way to display that info |
2446 // in the GUI? | 2450 // in the GUI? |
2447 } | 2451 } |
2481 // INTERPRETER THREAD | 2485 // INTERPRETER THREAD |
2482 | 2486 |
2483 octave::feval ("open", ovl (file)); | 2487 octave::feval ("open", ovl (file)); |
2484 | 2488 |
2485 // Update the workspace since open.m may have loaded new variables. | 2489 // Update the workspace since open.m may have loaded new variables. |
2486 symbol_scope scope | 2490 call_stack& cs |
2487 = __get_current_scope__ ("main_window::open_any_callback"); | 2491 = __get_call_stack__ ("main_window::open_any_callback"); |
2488 | 2492 |
2489 if (scope) | 2493 octave_link::set_workspace (true, cs.get_symbol_info ()); |
2490 octave_link::set_workspace (true, scope); | |
2491 } | 2494 } |
2492 | 2495 |
2493 void main_window::clear_history_callback (void) | 2496 void main_window::clear_history_callback (void) |
2494 { | 2497 { |
2495 // INTERPRETER THREAD | 2498 // INTERPRETER THREAD |
2502 | 2505 |
2503 void main_window::refresh_workspace_callback (void) | 2506 void main_window::refresh_workspace_callback (void) |
2504 { | 2507 { |
2505 // INTERPRETER THREAD | 2508 // INTERPRETER THREAD |
2506 | 2509 |
2507 symbol_scope scope | 2510 call_stack& cs |
2508 = __get_current_scope__ ("main_window::force_refresh_workspace"); | 2511 = __get_call_stack__ ("main_window::force_refresh_workspace"); |
2509 | 2512 |
2510 if (scope) | 2513 octave_link::set_workspace (true, cs.get_symbol_info (), false); |
2511 octave_link::set_workspace (true, scope, false); | |
2512 } | 2514 } |
2513 | 2515 |
2514 bool main_window::focus_console_after_command (void) | 2516 bool main_window::focus_console_after_command (void) |
2515 { | 2517 { |
2516 QSettings *settings = resource_manager::get_settings (); | 2518 QSettings *settings = resource_manager::get_settings (); |