Mercurial > hg > octave-nkf
diff libgui/src/octave-qt-link.cc @ 16415:70032fc70bee
move octave-link and octave-event-listener classes to libinterp
* libinterp/interp-core/octave-event-listener.h: Rename from
libgui/src/octave-adapter/octave-event-listener.h.
* libinterp/interp-core/octave-link.cc: Rename from
libgui/src/octave-adapter/octave-link.cc.
* libinterp/interp-core/octave-link.h: Rename from
libgui/src/octave-adapter/octave-link.h.
* octave-link.h, octave-link.cc: (octave_link::connect):
New function.
(octave_link::instance_ok): Don't create octave_link instance.
(octave_link::launch_octave, octave_link::do_launch_octave): Delete.
(octave_link::pre_input_event): Rename from
octave_link::pre_input_event_hook_fcn. Change all callers.
(octave_link::post_input_event): Rename from
octave_link::post_input_event_hook_fcn. Change all callers.
(octave_link::enter_debugger_event): Rename from
octave_link::enter_debugger_event_hook_fcn. Change all callers.
(octave_link::exit_debugger_event): Rename from
octave_link::exit_debugger_event_hook_fcn. Change all callers.
(octave_link::update_breakpoint): Rename from
octave_link::update_breakpoint_hook_fcn. Change all callers.
(octave_link::do_pre_input_event): Rename from
octave_link::do_pre_input_event_hook_fcn. Change all callers.
(octave_link::do_post_input_event): Rename from
octave_link::do_post_input_event_hook_fcn. Change all callers.
(octave_link::do_enter_debugger_event): Rename from
octave_link::do_enter_debugger_event_hook_fcn. Change all callers.
(octave_link::do_exit_debugger_event): Rename from
octave_link::do_exit_debugger_event_hook_fcn. Change all callers.
(octave_link::do_update_breakpoint): Rename from
octave_link::do_update_breakpoint_hook_fcn. Change all callers.
(octave_link::do_update_workspace, octave_link::do_update_history,
octave_link::do_insert_debugger_pointer,
octave_link::do_delete_debugger_pointer,
octave_link::do_pre_input_event, octave_link::do_post_input_event,
octave_link::do_enter_debugger_event,
octave_link::do_exit_debugger_event,
octave_link::do_update_breakpoint,
octave_link::do_edit_file): Now pure virtual functions.
(octave_link::main_thread): Delete.
* libinterp/interp-core/module.mk (INTERP_CORE_INC): Include
interp-core/octave-event-listener.h and interp-core/octave-link.h in
the list.
(INTERP_CORE_SRC): Include interp-core/octave-link.cc in the list.
* octave-qt-link.h, octave-qt-link.cc: New files.
* main-window.cc (main_window::construct): Call octave_link::connect
and octave_link::register_event_listener after everything else is
initialized.
(main_window::main_window): Don't call octave_link::launch_octave.
* libgui/src/octave-main-thread.h: Rename from
libgui/src/octave-adapter/octave-main-thread.h.
* libgui/src/module.mk (octave_gui_MOC): Update for new location of
octave-main-thread.cc.
(noinst_HEADERS): Update for new locations of
octave-event-listener.h, octave-link.h, and octave-main-thread.h.
Include src/octave-qt-link.h in the list.
(src_libgui_src_la_SOURCES): Update for new locations of
octave-link.cc and octave-main-thread.cc.
Include src/octave-qt-link.cc in the list.
(src_libgui_src_la_CPPFLAGS): Delete -I$(srcdir)/src/octave-adapter
from the list.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 03 Apr 2013 18:11:55 -0400 |
parents | |
children | 16bfbf9136d3 |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/libgui/src/octave-qt-link.cc @@ -0,0 +1,215 @@ +/* + +Copyright (C) 2013 John W. Eaton +Copyright (C) 2011-2012 Jacob Dawid +Copyright (C) 2011-2012 John P. Swensen + +This file is part of Octave. + +Octave is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 3 of the License, or (at your +option) any later version. + +Octave is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with Octave; see the file COPYING. If not, see +<http://www.gnu.org/licenses/>. + +*/ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "cmd-edit.h" +#include "oct-env.h" +#include "oct-mutex.h" +#include "singleton-cleanup.h" +#include "symtab.h" +#include "toplev.h" + +#include "octave-qt-link.h" + +octave_qt_link::octave_qt_link (void) + : octave_link (), main_thread (new octave_main_thread) +{ + // Start the first one. + main_thread->start (); +} + +void +octave_qt_link::do_update_workspace (void) +{ + if (event_listener) + { + event_listener->update_workspace (); + + do_process_events (); + } +} + +void +octave_qt_link::do_update_history (void) +{ + if (event_listener) + { + event_listener->update_history (); + + do_process_events (); + } +} + +void +octave_qt_link::do_insert_debugger_pointer (const octave_value_list& args) +{ + if (event_listener) + { + if (args.length () == 1) + { + octave_scalar_map m = args(0).scalar_map_value (); + + if (! error_state) + { + octave_value ov_file = m.getfield ("file"); + octave_value ov_line = m.getfield ("line"); + + std::string file = ov_file.string_value (); + int line = ov_line.int_value (); + + if (! error_state) + { + event_listener->insert_debugger_pointer (file, line); + + do_process_events (); + } + else + ::error ("invalid struct in debug pointer callback"); + } + else + ::error ("expecting struct in debug pointer callback"); + } + else + ::error ("invalid call to debug pointer callback"); + } +} + +void +octave_qt_link::do_delete_debugger_pointer (const octave_value_list& args) +{ + if (event_listener) + { + if (args.length () == 1) + { + octave_scalar_map m = args(0).scalar_map_value (); + + if (! error_state) + { + octave_value ov_file = m.getfield ("file"); + octave_value ov_line = m.getfield ("line"); + + std::string file = ov_file.string_value (); + int line = ov_line.int_value (); + + if (! error_state) + { + event_listener->delete_debugger_pointer (file, line); + + do_process_events (); + } + else + ::error ("invalid struct in debug pointer callback"); + } + else + ::error ("expecting struct in debug pointer callback"); + } + else + ::error ("invalid call to debug pointer callback"); + } +} + +void +octave_qt_link::do_pre_input_event (void) +{ + do_update_workspace (); +} + +void +octave_qt_link::do_post_input_event (void) +{ + do_update_history (); +} + +void +octave_qt_link::do_enter_debugger_event (const octave_value_list& args) +{ + do_insert_debugger_pointer (args); +} + +void +octave_qt_link::do_exit_debugger_event (const octave_value_list& args) +{ + do_delete_debugger_pointer (args); +} + +void +octave_qt_link::do_update_breakpoint (bool insert, + const octave_value_list& args) +{ + if (event_listener) + { + if (args.length () == 1) + { + octave_scalar_map m = args(0).scalar_map_value (); + + if (! error_state) + { + octave_value ov_file = m.getfield ("file"); + octave_value ov_line = m.getfield ("line"); + + std::string file = ov_file.string_value (); + int line = ov_line.int_value (); + + if (! error_state) + { + event_listener->update_dbstop_marker (insert, file, line); + + do_process_events (); + } + else + ::error ("invalid struct in dbstop marker callback"); + } + else + ::error ("expecting struct in dbstop marker callback"); + } + else + ::error ("invalid call to dbstop marker callback"); + } +} + +void +octave_qt_link::do_edit_file (const octave_value_list& args) +{ + if (event_listener) + { + if (args.length () == 1) + { + std::string file = args(0).string_value (); + + if (! error_state) + { + event_listener->edit_file (file); + do_process_events (); + + } + else + ::error ("expecting file name in edit file callback"); + } + else + ::error ("invalid call to edit file callback"); + } +}