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 ();