Mercurial > octave-nkf
diff libgui/src/main-window.cc @ 15402:7f423c6111c6
refactor GUI event handling to use new event_queue class
* octave-link.h, octave-link.cc (event_queue): Delete.
(gui_event_queue): New event_queue variable. Change all uses of
event_queue to user gui_event_queue instead.
(octave_link::handle_event): Delete.
(octave_link::post_event, octave_link::do_post_event): Provide methods
that work directly with member functions pointers and data.
* octave-event.h, octave-event.cc, octave-event-observer.h: Delete.
Delete all uses.
* libgui/src/module.mk (noinst_HEADERS): Delete octave-event.h and
octave-event-observer.h from the list.
(src_libgui_src_la_SOURCES): Delete octave-event.cc from the list.
* workspace-view.h, history-dockwidget.h, main-window.h:
Don't include octave-link.h.
* history-dockwidget.cc (history_dock_widget::handle_event): Delete.
(history_dock_widget::handle_event): New function adapted from
handle_event.
(history_dock_widget::request_history_model_update): Update for new
event callback mechanism.
* history-dockwidget.h: Update decls.
* file-editor-tab.cc (file_editor_tab::handle_event): Delete.
(file_editor_tab::run_file_callback,
file_editor_tab::add_breakpoint_callback,
file_editor_tab::remove_breakpoint_callback,
file_editor_tab::remove_all_breakpoints_callback):
New functions adapted from handle_event and corresponding octave_event
classes.
(file_editor_tab::request_add_breakpoint,
file_editor_tab::request_remove_breakpoint,
file_editor_tab::remove_all_breakpoints, file_editor_tab::run_file):
Update for new event callback mechanism.
* file-editor-tab.h: Update decls.
(file_editor_tab::bp_info): New nested struct.
* main-window.cc (main_window::handle_event): Delete.
(main_window::save_workspace_callback,
main_window::load_workspace_callback,
main_window::clear_workspace_callback,
main_window::clear_history_callback,
main_window::change_directory_callback,
main_window::debug_continue_callback,
main_window::debug_step_into_callback,
main_window::debug_step_over_callback,
main_window::debug_step_out_callback,
main_window::debug_quit_callback, main_window::exit_callback):
New functions.
(main_window::handle_save_workspace_request,
main_window::handle_load_workspace_request,
main_window::handle_clear_workspace_request,
main_window::handle_clear_history_request,
main_window::change_current_working_directory,
main_window::set_current_working_directory,
main_window::debug_continue, main_window::debug_step_into,
main_window::debug_step_over, main_window::debug_step_out,
main_window::debug_quit):
Update for new event callback mechanism.
* main-window.h: Update decls.
* workspace-model.cc (workspace_model::handle_event): Delete.
(workspace_model::update_workspace_callback): New function.
(workspace_model::request_update_workspace): Update for new event
callback mechanism.
* workspace-model.h: Update decls.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 17 Sep 2012 23:07:22 -0400 |
parents | 24b5348d38e7 |
children | f52a62a6db3a 8ae34ffe5c1b |
line wrap: on
line diff
--- a/libgui/src/main-window.cc Mon Sep 17 22:38:53 2012 -0400 +++ b/libgui/src/main-window.cc Mon Sep 17 23:07:22 2012 -0400 @@ -37,12 +37,21 @@ #include <QMessageBox> #include <QIcon> +#include "file-editor.h" #include "main-window.h" -#include "file-editor.h" +#include "octave-link.h" #include "settings-dialog.h" +#include "debug.h" +#include "load-save.h" +#include "toplev.h" +#include "variables.h" + +#include "cmd-hist.h" +#include "oct-env.h" + main_window::main_window (QWidget *p) - : QMainWindow (p), octave_event_observer () + : QMainWindow (p) { // We have to set up all our windows, before we finally launch octave. construct (); @@ -54,23 +63,6 @@ } void -main_window::handle_event (octave_event *e, bool accept) -{ - if (accept) - { - if (dynamic_cast<octave_clear_history_event*> (e)) - { - // After clearing the history, we need to reset the model. - _history_dock_widget->reset_model (); - } - } - else - { - // octave_event::perform failed to process event. - } -} - -void main_window::new_file () { _file_editor->request_new_file (); @@ -104,10 +96,8 @@ QFileDialog::getSaveFileName (this, tr ("Save Workspace"), resource_manager::get_home_path ()); if (!selectedFile.isEmpty ()) - { - octave_link::post_event (new octave_save_workspace_event - (*this, selectedFile.toStdString ())); - } + octave_link::post_event (this, &main_window::save_workspace_callback, + selectedFile.toStdString ()); } void @@ -117,22 +107,20 @@ QFileDialog::getOpenFileName (this, tr ("Load Workspace"), resource_manager::get_home_path ()); if (!selectedFile.isEmpty ()) - { - octave_link::post_event (new octave_load_workspace_event - (*this, selectedFile.toStdString ())); - } + octave_link::post_event (this, &main_window::load_workspace_callback, + selectedFile.toStdString ()); } void main_window::handle_clear_workspace_request () { - octave_link::post_event (new octave_clear_workspace_event (*this)); + octave_link::post_event (this, &main_window::clear_workspace_callback); } void main_window::handle_clear_history_request() { - octave_link::post_event (new octave_clear_history_event (*this)); + octave_link::post_event (this, &main_window::clear_history_callback); } void @@ -232,17 +220,15 @@ QFileDialog::getExistingDirectory(this, tr ("Set working direcotry")); if (!selectedDirectory.isEmpty ()) - { - octave_link::post_event (new octave_change_directory_event - (*this, selectedDirectory.toStdString ())); - } + octave_link::post_event (this, &main_window::change_directory_callback, + selectedDirectory.toStdString ()); } void main_window::set_current_working_directory (const QString& directory) { - octave_link::post_event (new octave_change_directory_event - (*this, directory.toStdString ())); + octave_link::post_event (this, &main_window::change_directory_callback, + directory.toStdString ()); } void @@ -360,31 +346,31 @@ void main_window::debug_continue () { - octave_link::post_event (new octave_debug_continue_event (*this)); + octave_link::post_event (this, &main_window::debug_continue_callback); } void main_window::debug_step_into () { - octave_link::post_event (new octave_debug_step_into_event (*this)); + octave_link::post_event (this, &main_window::debug_step_into_callback); } void main_window::debug_step_over () { - octave_link::post_event (new octave_debug_step_over_event (*this)); + octave_link::post_event (this, &main_window::debug_step_over_callback); } void main_window::debug_step_out () { - octave_link::post_event (new octave_debug_step_out_event (*this)); + octave_link::post_event (this, &main_window::debug_step_out_callback); } void main_window::debug_quit () { - octave_link::post_event (new octave_debug_quit_event (*this)); + octave_link::post_event (this, &main_window::debug_quit_callback); } void @@ -414,7 +400,7 @@ main_window::closeEvent (QCloseEvent *e) { e->ignore (); - octave_link::post_event (new octave_exit_event (*this)); + octave_link::post_event (this, &main_window::exit_callback); } void @@ -895,3 +881,70 @@ SLOT (handle_quit_debug_mode ())); } +void +main_window::save_workspace_callback (const std::string& file) +{ + save_workspace (file); +} + +void +main_window::load_workspace_callback (const std::string& file) +{ + load_workspace (file); +} + +void +main_window::clear_workspace_callback (void) +{ + clear_current_scope (); +} + +void +main_window::clear_history_callback (void) +{ + command_history::clear (); + + _history_dock_widget->reset_model (); +} + +void +main_window::change_directory_callback (const std::string& directory) +{ + octave_env::chdir (directory); +} + +void +main_window::debug_continue_callback (void) +{ + debug_continue (); +} + +void +main_window::debug_step_into_callback (void) +{ + debug_step ("in"); +} + +void +main_window::debug_step_over_callback (void) +{ + debug_step (); +} + +void +main_window::debug_step_out_callback (void) +{ + debug_step ("out"); +} + +void +main_window::debug_quit_callback (void) +{ + debug_quit (); +} + +void +main_window::exit_callback (void) +{ + clean_up_and_exit (0); +}