diff libgui/src/history-dockwidget.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 352349219529
line wrap: on
line diff
--- a/libgui/src/history-dockwidget.cc
+++ b/libgui/src/history-dockwidget.cc
@@ -26,75 +26,21 @@
 
 #include <QVBoxLayout>
 
-#include "cmd-hist.h"
-
 #include "error.h"
 
+#include "cmd-hist.h"
+
 #include "history-dockwidget.h"
+#include "octave-link.h"
 
 history_dock_widget::history_dock_widget (QWidget * p)
-  : QDockWidget (p), octave_event_observer ()
+  : QDockWidget (p)
 {
   setObjectName ("HistoryDockWidget");
   construct ();
 }
 
 void
-history_dock_widget::handle_event (octave_event *e, bool accept)
-{
-  static bool scroll_window = false;
-
-  if (accept)
-    {
-      if (dynamic_cast <octave_update_history_event*> (e))
-        {
-          // Determine the client's (our) history length and the one of the server.
-          int clientHistoryLength = _history_model->rowCount ();
-          int serverHistoryLength = command_history::length ();
-
-          // If were behind the server, iterate through all new entries and add
-          // them to our history.
-          if (clientHistoryLength < serverHistoryLength)
-            {
-              int elts_to_add = serverHistoryLength - clientHistoryLength;
-
-              _history_model->insertRows (clientHistoryLength, elts_to_add);
-
-              for (int i = clientHistoryLength; i < serverHistoryLength; i++)
-                {
-                  std::string entry = command_history::get_entry (i);
-
-                  _history_model->setData (_history_model->index (i),
-                                           QString::fromStdString (entry));
-                }
-
-              // FIXME -- does this behavior make sense?  Calling
-              // _history_list_view->scrollToBottom () here doesn't seem to
-              // have any effect.  Instead, we need to request that action
-              // and wait until the next event occurs in which no items
-              // are added to the history list.
-
-              scroll_window = true;
-            }
-          else if (scroll_window)
-            {
-              scroll_window = false;
-
-              _history_list_view->scrollToBottom ();
-            }
-        }
-
-      // Post a new update event in a given time. This prevents flooding the
-      // event queue.
-      _update_history_model_timer.start ();
-    }
-  else
-    {
-      // octave_event::perform failed to handle event.
-    }
-}
-
-void
 history_dock_widget::construct ()
 {
   _history_model = new QStringListModel ();
@@ -161,7 +107,7 @@
 void
 history_dock_widget::request_history_model_update ()
 {
-  octave_link::post_event (new octave_update_history_event (*this));
+  octave_link::post_event (this, &history_dock_widget::update_history_callback);
 }
 
 void
@@ -176,3 +122,48 @@
   emit active_changed (false);
   QDockWidget::closeEvent (e);
 }
+
+void
+history_dock_widget::update_history_callback (void)
+{
+  static bool scroll_window = false;
+
+  // Determine the client's (our) history length and the one of the server.
+  int clientHistoryLength = _history_model->rowCount ();
+  int serverHistoryLength = command_history::length ();
+
+  // If were behind the server, iterate through all new entries and add
+  // them to our history.
+  if (clientHistoryLength < serverHistoryLength)
+    {
+      int elts_to_add = serverHistoryLength - clientHistoryLength;
+
+      _history_model->insertRows (clientHistoryLength, elts_to_add);
+
+      for (int i = clientHistoryLength; i < serverHistoryLength; i++)
+        {
+          std::string entry = command_history::get_entry (i);
+
+          _history_model->setData (_history_model->index (i),
+                                   QString::fromStdString (entry));
+        }
+
+      // FIXME -- does this behavior make sense?  Calling
+      // _history_list_view->scrollToBottom () here doesn't seem to
+      // have any effect.  Instead, we need to request that action
+      // and wait until the next event occurs in which no items
+      // are added to the history list.
+
+      scroll_window = true;
+    }
+  else if (scroll_window)
+    {
+      scroll_window = false;
+
+      _history_list_view->scrollToBottom ();
+    }
+
+  // Post a new update event in a given time. This prevents flooding the
+  // event queue.
+  _update_history_model_timer.start ();
+}