Mercurial > octave
annotate libgui/src/qt-interpreter-events.cc @ 29503:3bfec185c9e2
experimental command window widget with server loop
This changeset provides a new experimental proof-of-concept
cross-platform command window. It is intended to demonstrate how
communication between the GUI command window and the Octave
interpreter can work when the GUI is completely responsible for user
input instead of having the interpreter wait for input inside
readline.
This initial implementation uses a simple text box for input and a
separate text edit area for output. This design is not intended to be
the final arrangement, but was easy to implement for demonstration
purposes. These changes also make it possible to run the command-line
version of Octave in a similar client-server mode with a function
gathering input in one thread and the Octave intepreter running in
another.
The new command window is not intended to provide a general-purpose
terminal window. So running something like "system ('emacs')" will not
bring up an instance of Emacs running in the command window. This
also means that it will no longer be possible to use an external
output pager such as "less" in the command window. OTOH, it is also
no longer necessary to fork and exec a separate process on some Unixy
systems when Octave starts solely to give up the controlling terminal
so that "less" will function properly.
With the new terminal window, it is now possible to start Octave in
command line mode and later open the GUI desktop window and then
return to the command line when the GUI window is closed.
Some things that need to be finished:
* Merge the input and output windows so that command input and
output are interleaved as they are in a normal command window.
* Provide real readline command editing in the GUI command window and at
the client-server CLI prompt. We can use the readline callback
interface for the GUI and the normal readline interface for the
CLI. With this design, the command widget and the CLI front end
hold a copy of the command history. They do not need to
communicate with the interpreter to navigate the command history.
* Create interpreter_event messages for handling user input so that
the interpreter can ask the GUI to gather user input for functions
like "input".
* Consider passing results back to the command widget as
octave_value objects and allowing the command widget to format and
display them instead of passing formatted text from the
interpreter to the command widget.
* Provide an output pager feature for the GUI command window? Maybe
this feature is not necessary since we have scroll bars in the GUI
and we can also have the GUI ask the user whether to display
output if it is large.
ChangeLog:
* options-usage.h (usage_string, octave_print_verbose_usage_and_exit):
Include --experimental-terminal-widget in list of options.
(EXPERIMENTAL_TERMINAL_WIDGET_OPTION): New macro.
(long_opts): Include "experimental-terminal-widget" in the list.
* octave.h, octave.cc (cmdline_options::cmdline_options):
Handle EXPERIMENTAL_TERMINAL_WIDGET_OPTION.
(cmdline_options::m_experimental_terminal_widget): New data member.
(application::experimental_terminal_widget,
cmdline_options::experimental_terminal_widget
interpreter::experimental_terminal_widget): New functions.
* main.in.cc (fork_and_exec): New static variable.
(main): Don't fork and exec if argv includes
--experimental-terminal-widget.
* interpreter-qobject.h, interpreter-qobject.cc
(interpreter_qobject::pause, interpreter_qobject::stop,
interpreter_qobject::resume): New functions.
(interpreter_qobject::execute): Don't set prompt strings here if using
the new terminal widget. If using the new terminal widget, call
interpreter::shutdown and emit the shutdown_finished signal after
interpreter::execute returns.
(interpreter_qobject::shutdown): Don't do anything if using the new
terminal widget.
* main-window.h, main-window.cc (main_window::handle_octave_ready):
Set interpreter prompt strings here if using the new terminal widget.
(main_window::close_gui_signal): New signal.
(main_window::closeEvent): If using new terminal widget and shutdown
is confirmed, simply emit close_gui_signal.
(main_window::construct_octave_qt_link): If using new terminal widget,
connect qt_interpreter_events::interpreter_output_signal to the
terminal_dock_widget::interpreter_output slot and the
qt_interpreter_events::update_prompt_signal to the
terminal_dock_widget::update_prompt slot.
* octave-qobject.h, octave-qobject.cc
(base_qobject::interpreter_pause, base_qobject::interpreter_stop,
base_qobject::interpreter_resume): New functions.
(base_qobject::base_qobject): If using new terminal widget:
Don't connect interpreter_qobject::execution_finished signal to
octave_qobject::handle_interpreter_execution_finished slot
Don't connect octave_qobject::request_interpreter_shutdown signal to
the interpreter_qobject::shutdown slot.
Do connect the qt_interpreter_events::start_gui_signal signal to the
octave_qobject::start_gui slot and simply reload settings and call
qt_application::setQuitOnLastWindowClosed. There is no need to create
the main window here.
(base_qobject::exec): If using new terminal widget, wait for main
thread to finish after qt_application::exec returns.
(base_qojbect::experimental_terminal_widget,
base_qobject::gui_running): New functions.
(base_qojbect::start_gui, base_qojbect::close_gui,
base_qojbect::interpreter_pause, base_qojbect::interpreter_stop,
base_qojbect::interpreter_resume): New slots.
(base_qojbect::handle_interpreter_execution_finished): Do nothing if
using new terminal widget.
* qt-application.cc (qt_application::start_gui_p): Return dummy value
if using new terminal widget.
* qt-interpreter-events.h, qt-interpreter-events.cc
(qt_interpreter_events::start_gui, qt_interpreter_events::close_gui,
qt_interpreter_events::interpreter_output,
qt_interpreter_events::display_exception,
qt_interpreter_events::update_prompt): New functions.
(qt_interpreter_events::start_gui_signal,
qt_interpreter_events::close_gui_signal,
qt_interpreter_events::update_prompt_signal,
qt_interpreter_events::interpreter_output_signal): New signals.
* command-widget.h, command-widget.cc: New files.
* libgui/src/module.mk: Update.
* terminal-dock-widget.h, terminal-dock-widget.cc
(terminal_dock_widget::m_experimental_terminal_widget):
New data member.
(terminal_dock_widget::terminal_dock_widget): Optionally create and
use new terminal widget. If using new terminal widget, connect
command_widget::interpreter_event signals to
terminal_dock_widget::interpreter_event signals.
(terminal_dock_widget::interpreter_output,
terminal_dock_widget::update_prompt): New slots.
(terminal_dock_widget::update_prompt_signal,
terminal_dock_widget::interpreter_output_signal): New signals.
* event-manager.h, event-manager.cc (Fdesktop): New function.
(interpreter_events::start_gui, interpreter_events::close_gui,
interpreter_events::update_prompt): New virtual functions.
(interpreter_events::confirm_shutdown): Return true.
(event_manager::start_gui, event_manager::close_gui,
event_manager::update_prompt): New functions.
* interpreter.h, interpreter.cc (interpreter::initialize): If using
new terminal widget, only display startup message if not initially
starting GUI.
(class cli_input_reader): New class.
(interpreter::experimental_terminal_widget,
interpreter::get_line_and_eval): New functions.
(interpreter::execute): If using new terminal widget, start GUI or
command line reader and then enter server loop.
* pt-eval.cc (tree_evaluator::server_loop): Reset parser at top of loop.
also catch exit exception.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 25 Mar 2021 23:06:40 -0400 |
parents | 7854d5752dd2 |
children | 3d34b70b5a49 |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 //////////////////////////////////////////////////////////////////////// |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 // |
29358
0a5b15007766
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
29000
diff
changeset
|
3 // Copyright (C) 2011-2021 The Octave Project Developers |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
4 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 // See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 // distribution or <https://octave.org/copyright/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
7 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
8 // This file is part of Octave. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
9 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
10 // Octave is free software: you can redistribute it and/or modify it |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
11 // under the terms of the GNU General Public License as published by |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
12 // the Free Software Foundation, either version 3 of the License, or |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
13 // (at your option) any later version. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
14 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
15 // Octave is distributed in the hope that it will be useful, but |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
16 // WITHOUT ANY WARRANTY; without even the implied warranty of |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
18 // GNU General Public License for more details. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
19 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
20 // You should have received a copy of the GNU General Public License |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
21 // along with Octave; see the file COPYING. If not, see |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
22 // <https://www.gnu.org/licenses/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 //////////////////////////////////////////////////////////////////////// |
16415
70032fc70bee
move octave-link and octave-event-listener classes to libinterp
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
25 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21717
diff
changeset
|
26 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21203
diff
changeset
|
27 # include "config.h" |
16415
70032fc70bee
move octave-link and octave-event-listener classes to libinterp
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
28 #endif |
70032fc70bee
move octave-link and octave-event-listener classes to libinterp
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
29 |
29503
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
30 #include <iostream> |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
31 #include <sstream> |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
32 |
17884
766ad9be2966
Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents:
17824
diff
changeset
|
33 #include <QDialog> |
766ad9be2966
Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents:
17824
diff
changeset
|
34 #include <QDir> |
27600
bb9aecedc167
use single QVariant object for return values in qt_interpreter_events class
John W. Eaton <jwe@octave.org>
parents:
27599
diff
changeset
|
35 #include <QIcon> |
24641
7d177be54c37
pass variable value to variable editor in addition to variable name
John W. Eaton <jwe@octave.org>
parents:
24632
diff
changeset
|
36 #include <QMetaType> |
21158
65827e9cccb8
Gui support for enhancement of dbstop.
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21148
diff
changeset
|
37 #include <QPushButton> |
24641
7d177be54c37
pass variable value to variable editor in addition to variable name
John W. Eaton <jwe@octave.org>
parents:
24632
diff
changeset
|
38 #include <QStringList> |
16431
5982d469f79b
use signal for setting, appending to, and clearing history widget
John W. Eaton <jwe@octave.org>
parents:
16426
diff
changeset
|
39 |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27409
diff
changeset
|
40 #include "dialog.h" |
27601
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
41 #include "gui-preferences-ed.h" |
27588
f0e3f3e28a8e
move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents:
27553
diff
changeset
|
42 #include "octave-qobject.h" |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27409
diff
changeset
|
43 #include "qt-interpreter-events.h" |
28566
20ee8aa92897
avoid QList deprecated function warnings
John W. Eaton <jwe@octave.org>
parents:
28118
diff
changeset
|
44 #include "qt-utils.h" |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27409
diff
changeset
|
45 |
28118
f2789cae04f3
Don't use "codecForLocale" to get encoding for locale charset.
Markus Mützel <markus.muetzel@gmx.de>
parents:
27929
diff
changeset
|
46 #include "localcharset-wrapper.h" |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
47 #include "oct-env.h" |
16431
5982d469f79b
use signal for setting, appending to, and clearing history widget
John W. Eaton <jwe@octave.org>
parents:
16426
diff
changeset
|
48 #include "str-vec.h" |
22089
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
49 |
c2c668b3051b
use classes for octave application and interpreter
John W. Eaton <jwe@octave.org>
parents:
22022
diff
changeset
|
50 #include "builtin-defun-decls.h" |
16547
3cd80afc3509
improve debugging with the GUI
John W. Eaton <jwe@octave.org>
parents:
16528
diff
changeset
|
51 #include "error.h" |
23438
d24d01273bd0
eliminate load-path singleton
John W. Eaton <jwe@octave.org>
parents:
23220
diff
changeset
|
52 #include "interpreter-private.h" |
16635
25e418d23a4b
fix running files from file browser's context menu
Torsten <ttl@justmail.de>
parents:
16581
diff
changeset
|
53 #include "load-path.h" |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27409
diff
changeset
|
54 #include "oct-map.h" |
25557
bb779fc2d0db
do not attempt to open a file when debugging a command line fct (bug #54231)
Torsten <mttl@mailbox.org>
parents:
25407
diff
changeset
|
55 #include "octave.h" |
27412
da1f59fe04b3
try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents:
27409
diff
changeset
|
56 #include "ov.h" |
26117
a6df420457ac
use symbol_info_list instead of symbol_scope to pass workspace info to gui
John W. Eaton <jwe@octave.org>
parents:
25948
diff
changeset
|
57 #include "syminfo.h" |
16635
25e418d23a4b
fix running files from file browser's context menu
Torsten <ttl@justmail.de>
parents:
16581
diff
changeset
|
58 #include "utils.h" |
16468
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16443
diff
changeset
|
59 |
24645
f61502510d08
restore ability to select variables for editing from workspace widget
John W. Eaton <jwe@octave.org>
parents:
24641
diff
changeset
|
60 Q_DECLARE_METATYPE (octave_value) |
26117
a6df420457ac
use symbol_info_list instead of symbol_scope to pass workspace info to gui
John W. Eaton <jwe@octave.org>
parents:
25948
diff
changeset
|
61 Q_DECLARE_METATYPE (octave::symbol_info_list) |
27302
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27284
diff
changeset
|
62 Q_DECLARE_METATYPE (octave::fcn_callback) |
5f170ea12fa1
use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents:
27284
diff
changeset
|
63 Q_DECLARE_METATYPE (octave::meth_callback) |
17884
766ad9be2966
Prompt for non-existent new file when using edit.m from GUI (bug #40450)
Torsten <ttl@justmail.de>
parents:
17824
diff
changeset
|
64 |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
65 namespace octave |
24641
7d177be54c37
pass variable value to variable editor in addition to variable name
John W. Eaton <jwe@octave.org>
parents:
24632
diff
changeset
|
66 { |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
67 static QStringList |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
68 make_qstring_list (const std::list<std::string>& lst) |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
69 { |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
70 QStringList retval; |
16512
7f2395651a1c
dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents:
16502
diff
changeset
|
71 |
27550
b8f51d2dba6d
* qt-interpreter-events.cc: Use range-based for loop where possible.
John W. Eaton <jwe@octave.org>
parents:
27549
diff
changeset
|
72 for (const auto& s : lst) |
b8f51d2dba6d
* qt-interpreter-events.cc: Use range-based for loop where possible.
John W. Eaton <jwe@octave.org>
parents:
27549
diff
changeset
|
73 retval.append (QString::fromStdString (s)); |
16512
7f2395651a1c
dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents:
16502
diff
changeset
|
74 |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
75 return retval; |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
76 } |
16512
7f2395651a1c
dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents:
16502
diff
changeset
|
77 |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
78 static QStringList |
27263
99aa1bcb8848
rename octave_link and octave_link_events classes, move inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
27261
diff
changeset
|
79 make_filter_list (const event_manager::filter_list& lst) |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
80 { |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
81 QStringList retval; |
16579
7f8db1942dc0
Add Qt link uigetfile dialog implementation.
John Donoghue <john.donoghue@ieee.org>
parents:
16570
diff
changeset
|
82 |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
83 // We have pairs of data, first being the list of extensions |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
84 // exta;exb;extc etc second the name to use as filter name |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
85 // (optional). Qt wants a list of filters in the format of |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
86 // 'FilterName (space separated exts)'. |
16579
7f8db1942dc0
Add Qt link uigetfile dialog implementation.
John Donoghue <john.donoghue@ieee.org>
parents:
16570
diff
changeset
|
87 |
27550
b8f51d2dba6d
* qt-interpreter-events.cc: Use range-based for loop where possible.
John W. Eaton <jwe@octave.org>
parents:
27549
diff
changeset
|
88 for (const auto& ext_name : lst) |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
89 { |
27550
b8f51d2dba6d
* qt-interpreter-events.cc: Use range-based for loop where possible.
John W. Eaton <jwe@octave.org>
parents:
27549
diff
changeset
|
90 QString ext = QString::fromStdString (ext_name.first); |
b8f51d2dba6d
* qt-interpreter-events.cc: Use range-based for loop where possible.
John W. Eaton <jwe@octave.org>
parents:
27549
diff
changeset
|
91 QString name = QString::fromStdString (ext_name.second); |
16579
7f8db1942dc0
Add Qt link uigetfile dialog implementation.
John Donoghue <john.donoghue@ieee.org>
parents:
16570
diff
changeset
|
92 |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27849
diff
changeset
|
93 // Strip out extensions from name and replace ';' with spaces in list. |
16580
adc150db1809
style fixes for uigetfile changes
John W. Eaton <jwe@octave.org>
parents:
16579
diff
changeset
|
94 |
27914
a044e50c8dcb
Streamline QRegExp instances in libgu.
Rik <rik@octave.org>
parents:
27849
diff
changeset
|
95 name.replace (QRegExp (R"(\(.*\))"), ""); |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
96 ext.replace (";", " "); |
16579
7f8db1942dc0
Add Qt link uigetfile dialog implementation.
John Donoghue <john.donoghue@ieee.org>
parents:
16570
diff
changeset
|
97 |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
98 if (name.isEmpty ()) |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
99 { |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
100 // No name field. Build one from the extensions. |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
101 name = ext.toUpper () + " Files"; |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
102 } |
16579
7f8db1942dc0
Add Qt link uigetfile dialog implementation.
John Donoghue <john.donoghue@ieee.org>
parents:
16570
diff
changeset
|
103 |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
104 retval.append (name + " (" + ext + ')'); |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
105 } |
16579
7f8db1942dc0
Add Qt link uigetfile dialog implementation.
John Donoghue <john.donoghue@ieee.org>
parents:
16570
diff
changeset
|
106 |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
107 return retval; |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
108 } |
16512
7f2395651a1c
dialog boxes with Qt widgets
Daniel J Sebald <daniel.sebald@ieee.org>, John W. Eaton <jwe@octave.org>
parents:
16502
diff
changeset
|
109 |
27588
f0e3f3e28a8e
move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents:
27553
diff
changeset
|
110 qt_interpreter_events::qt_interpreter_events (base_qobject& oct_qobj) |
27620
45bb5bbaf291
don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents:
27611
diff
changeset
|
111 : interpreter_events (), m_octave_qobj (oct_qobj), |
27643
337132e66ec2
eliminate need for global access to resource manager in uiwidget objects
John W. Eaton <jwe@octave.org>
parents:
27629
diff
changeset
|
112 m_uiwidget_creator (oct_qobj), m_result (), m_mutex (), |
337132e66ec2
eliminate need for global access to resource manager in uiwidget objects
John W. Eaton <jwe@octave.org>
parents:
27629
diff
changeset
|
113 m_waitcondition () |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
114 { |
27551
564bba235594
move some dialog slot functions from octave-qobject.cc to dialog.cc
John W. Eaton <jwe@octave.org>
parents:
27550
diff
changeset
|
115 qRegisterMetaType<QIntList> ("QIntList"); |
564bba235594
move some dialog slot functions from octave-qobject.cc to dialog.cc
John W. Eaton <jwe@octave.org>
parents:
27550
diff
changeset
|
116 qRegisterMetaType<QFloatList> ("QFloatList"); |
564bba235594
move some dialog slot functions from octave-qobject.cc to dialog.cc
John W. Eaton <jwe@octave.org>
parents:
27550
diff
changeset
|
117 |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
118 qRegisterMetaType<octave_value> ("octave_value"); |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
119 qRegisterMetaType<symbol_info_list> ("symbol_info_list"); |
20091
89d843d6de14
Add mutex lock to shutdown confirmation for proper thread timing (bug #44751).
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
19970
diff
changeset
|
120 |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
121 qRegisterMetaType<fcn_callback> ("fcn_callback"); |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
122 qRegisterMetaType<meth_callback> ("meth_callback"); |
27588
f0e3f3e28a8e
move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents:
27553
diff
changeset
|
123 |
f0e3f3e28a8e
move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents:
27553
diff
changeset
|
124 connect (this, SIGNAL (confirm_shutdown_signal (void)), |
f0e3f3e28a8e
move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents:
27553
diff
changeset
|
125 this, SLOT (confirm_shutdown_octave (void))); |
27599
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
126 |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
127 connect (this, SIGNAL (get_named_icon_signal (const QString&)), |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
128 this, SLOT (get_named_icon_slot (const QString&))); |
27601
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
129 |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
130 connect (this, |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
131 SIGNAL (gui_preference_signal (const QString&, const QString&)), |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
132 this, |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
133 SLOT (gui_preference_slot (const QString&, const QString&))); |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
134 } |
16579
7f8db1942dc0
Add Qt link uigetfile dialog implementation.
John Donoghue <john.donoghue@ieee.org>
parents:
16570
diff
changeset
|
135 |
29503
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
136 void qt_interpreter_events::start_gui (bool gui_app) |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
137 { |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
138 if (m_octave_qobj.experimental_terminal_widget ()) |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
139 emit start_gui_signal (gui_app); |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
140 } |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
141 |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
142 void qt_interpreter_events::close_gui (void) |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
143 { |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
144 if (m_octave_qobj.experimental_terminal_widget ()) |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
145 emit close_gui_signal (); |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
146 } |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
147 |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
148 std::list<std::string> |
27284
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
149 qt_interpreter_events::file_dialog (const filter_list& filter, |
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
150 const std::string& title, |
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
151 const std::string& filename, |
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
152 const std::string& dirname, |
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
153 const std::string& multimode) |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
154 { |
27552 | 155 QStringList lst |
27553
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
156 = m_uiwidget_creator.file_dialog (make_filter_list (filter), |
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
157 QString::fromStdString (title), |
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
158 QString::fromStdString (filename), |
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
159 QString::fromStdString (dirname), |
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
160 QString::fromStdString (multimode)); |
27552 | 161 |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
162 std::list<std::string> retval; |
20091
89d843d6de14
Add mutex lock to shutdown confirmation for proper thread timing (bug #44751).
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
19970
diff
changeset
|
163 |
27552 | 164 for (const auto& s : lst) |
27550
b8f51d2dba6d
* qt-interpreter-events.cc: Use range-based for loop where possible.
John W. Eaton <jwe@octave.org>
parents:
27549
diff
changeset
|
165 retval.push_back (s.toStdString ()); |
16579
7f8db1942dc0
Add Qt link uigetfile dialog implementation.
John Donoghue <john.donoghue@ieee.org>
parents:
16570
diff
changeset
|
166 |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
167 return retval; |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
168 } |
16579
7f8db1942dc0
Add Qt link uigetfile dialog implementation.
John Donoghue <john.donoghue@ieee.org>
parents:
16570
diff
changeset
|
169 |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
170 std::list<std::string> |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
171 qt_interpreter_events::input_dialog (const std::list<std::string>& prompt, |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
172 const std::string& title, |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
173 const std::list<float>& nr, |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
174 const std::list<float>& nc, |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
175 const std::list<std::string>& defaults) |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
176 { |
27552 | 177 QStringList lst |
27553
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
178 = m_uiwidget_creator.input_dialog (make_qstring_list (prompt), |
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
179 QString::fromStdString (title), |
28566
20ee8aa92897
avoid QList deprecated function warnings
John W. Eaton <jwe@octave.org>
parents:
28118
diff
changeset
|
180 std_list_to_qt_list<float> (nr), |
20ee8aa92897
avoid QList deprecated function warnings
John W. Eaton <jwe@octave.org>
parents:
28118
diff
changeset
|
181 std_list_to_qt_list<float> (nc), |
27553
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
182 make_qstring_list (defaults)); |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
183 std::list<std::string> retval; |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
184 |
27552 | 185 for (const auto& s : lst) |
27550
b8f51d2dba6d
* qt-interpreter-events.cc: Use range-based for loop where possible.
John W. Eaton <jwe@octave.org>
parents:
27549
diff
changeset
|
186 retval.push_back (s.toStdString ()); |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
187 |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
188 return retval; |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
189 } |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
190 |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
191 std::pair<std::list<int>, int> |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
192 qt_interpreter_events::list_dialog (const std::list<std::string>& list, |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
193 const std::string& mode, |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
194 int width, int height, |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
195 const std::list<int>& initial, |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
196 const std::string& name, |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
197 const std::list<std::string>& prompt, |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
198 const std::string& ok_string, |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
199 const std::string& cancel_string) |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
200 { |
27552 | 201 QPair<QIntList, int> result |
27553
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
202 = m_uiwidget_creator.list_dialog (make_qstring_list (list), |
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
203 QString::fromStdString (mode), |
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
204 width, height, |
28566
20ee8aa92897
avoid QList deprecated function warnings
John W. Eaton <jwe@octave.org>
parents:
28118
diff
changeset
|
205 std_list_to_qt_list<int> (initial), |
27553
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
206 QString::fromStdString (name), |
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
207 make_qstring_list (prompt), |
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
208 QString::fromStdString (ok_string), |
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
209 QString::fromStdString (cancel_string)); |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
210 |
28566
20ee8aa92897
avoid QList deprecated function warnings
John W. Eaton <jwe@octave.org>
parents:
28118
diff
changeset
|
211 QIntList& lst = result.first; |
20ee8aa92897
avoid QList deprecated function warnings
John W. Eaton <jwe@octave.org>
parents:
28118
diff
changeset
|
212 return std::pair<std::list<int>, int> (std::list<int> (lst.begin (), |
20ee8aa92897
avoid QList deprecated function warnings
John W. Eaton <jwe@octave.org>
parents:
28118
diff
changeset
|
213 lst.end ()), |
27552 | 214 result.second); |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
215 } |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
216 |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
217 std::string |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
218 qt_interpreter_events::question_dialog (const std::string& msg, |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
219 const std::string& title, |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
220 const std::string& btn1, |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
221 const std::string& btn2, |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
222 const std::string& btn3, |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
223 const std::string& btndef) |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
224 { |
27552 | 225 QString icon = "quest"; |
226 QStringList buttons; | |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
227 QStringList role; |
27552 | 228 |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
229 // Must use ResetRole which is left-aligned for all OS and WM. |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
230 role << "ResetRole" << "ResetRole" << "ResetRole"; |
27552 | 231 |
232 buttons << QString::fromStdString (btn1); | |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
233 if (btn2 == "") |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
234 role.removeAt (0); |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
235 else |
27552 | 236 buttons << QString::fromStdString (btn2); |
237 buttons << QString::fromStdString (btn3); | |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
238 |
27552 | 239 QString answer |
27553
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
240 = m_uiwidget_creator.message_dialog (QString::fromStdString (msg), |
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
241 QString::fromStdString (title), |
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
242 icon, buttons, |
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
243 QString::fromStdString (btndef), |
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
244 role); |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
245 |
27552 | 246 return answer.toStdString (); |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
247 } |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
248 |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
249 void qt_interpreter_events::update_path_dialog (void) |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
250 { |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
251 emit update_path_dialog_signal (); |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
252 } |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
253 |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
254 void qt_interpreter_events::show_preferences (void) |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
255 { |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
256 emit show_preferences_signal (); |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
257 } |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
258 |
27602
ba317c535adb
define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents:
27601
diff
changeset
|
259 void qt_interpreter_events::apply_preferences (void) |
ba317c535adb
define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents:
27601
diff
changeset
|
260 { |
ba317c535adb
define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents:
27601
diff
changeset
|
261 emit apply_new_settings (); |
ba317c535adb
define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents:
27601
diff
changeset
|
262 } |
ba317c535adb
define new __event_manager_apply_preferences__ function
John W. Eaton <jwe@octave.org>
parents:
27601
diff
changeset
|
263 |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
264 void qt_interpreter_events::show_doc (const std::string& file) |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
265 { |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
266 emit show_doc_signal (QString::fromStdString (file)); |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
267 } |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
268 |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
269 bool qt_interpreter_events::edit_file (const std::string& file) |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
270 { |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
271 emit edit_file_signal (QString::fromStdString (file)); |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
272 |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
273 return true; |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
274 } |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
275 |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
276 void qt_interpreter_events::edit_variable (const std::string& expr, |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
277 const octave_value& val) |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
278 { |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
279 emit edit_variable_signal (QString::fromStdString (expr), val); |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
280 } |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
281 |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
282 bool qt_interpreter_events::confirm_shutdown (void) |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
283 { |
27589
12cfa32dc29e
use QMutexLocker to manage locks in qt_interpreter_events methods
John W. Eaton <jwe@octave.org>
parents:
27588
diff
changeset
|
284 QMutexLocker autolock (&m_mutex); |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
285 |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
286 emit confirm_shutdown_signal (); |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
287 |
27588
f0e3f3e28a8e
move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents:
27553
diff
changeset
|
288 // Wait for result. |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
289 wait (); |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
290 |
27600
bb9aecedc167
use single QVariant object for return values in qt_interpreter_events class
John W. Eaton <jwe@octave.org>
parents:
27599
diff
changeset
|
291 return m_result.toBool (); |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
292 } |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
293 |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
294 bool qt_interpreter_events::prompt_new_edit_file (const std::string& file) |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
295 { |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
296 resource_manager& rmgr = m_octave_qobj.get_resource_manager (); |
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
297 gui_settings *settings = rmgr.get_settings (); |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
298 |
27849
28d7ec92bae6
replace prefs literals by symbolic constant in main window
Torsten Lilge <ttl-octave@mailbox.org>
parents:
27669
diff
changeset
|
299 if (! settings || settings->value (ed_create_new_file).toBool ()) |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
300 return true; |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
301 |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
302 std::string abs_fname = sys::env::make_absolute (file); |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
303 |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
304 QStringList btn; |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
305 QStringList role; |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
306 role << "YesRole" << "RejectRole"; |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
307 btn << tr ("Create") << tr ("Cancel"); |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
308 |
27553
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
309 QString answer = m_uiwidget_creator.message_dialog |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
310 (tr ("File\n%1\ndoes not exist. Do you want to create it?"). |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
311 arg (QString::fromStdString (abs_fname)), |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
312 tr ("Octave Editor"), "quest", btn, tr ("Create"), role); |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
313 |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
314 return (answer == tr ("Create")); |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
315 } |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
316 |
27264
378d3c91f85b
style fixes for event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27263
diff
changeset
|
317 // Prompt to allow file to be run by setting cwd (or if |
27552 | 318 // addpath_option==true, alternatively setting the path). |
27264
378d3c91f85b
style fixes for event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27263
diff
changeset
|
319 |
378d3c91f85b
style fixes for event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27263
diff
changeset
|
320 int |
27284
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
321 qt_interpreter_events::debug_cd_or_addpath_error (const std::string& file, |
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
322 const std::string& dir, |
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
323 bool addpath_option) |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
324 { |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
325 int retval = -1; |
16565
e4b94abfeb96
use generic dialog for cd or addpath question
John W. Eaton <jwe@octave.org>
parents:
16551
diff
changeset
|
326 |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
327 QString qdir = QString::fromStdString (dir); |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
328 QString qfile = QString::fromStdString (file); |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
329 QString msg |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
330 = (addpath_option |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
331 ? tr ("The file %1 does not exist in the load path. To run or debug the function you are editing, you must either change to the directory %2 or add that directory to the load path.").arg (qfile).arg (qdir) |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
332 : tr ("The file %1 is shadowed by a file with the same name in the load path. To run or debug the function you are editing, change to the directory %2.").arg (qfile).arg (qdir)); |
16565
e4b94abfeb96
use generic dialog for cd or addpath question
John W. Eaton <jwe@octave.org>
parents:
16551
diff
changeset
|
333 |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
334 QString title = tr ("Change Directory or Add Directory to Load Path"); |
16565
e4b94abfeb96
use generic dialog for cd or addpath question
John W. Eaton <jwe@octave.org>
parents:
16551
diff
changeset
|
335 |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
336 QString cd_txt = tr ("&Change Directory"); |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
337 QString addpath_txt = tr ("&Add Directory to Load Path"); |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
338 QString cancel_txt = tr ("Cancel"); |
16547
3cd80afc3509
improve debugging with the GUI
John W. Eaton <jwe@octave.org>
parents:
16528
diff
changeset
|
339 |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
340 QStringList btn; |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
341 QStringList role; |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
342 btn << cd_txt; |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
343 role << "YesRole"; |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
344 if (addpath_option) |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
345 { |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
346 btn << addpath_txt; |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
347 role << "AcceptRole"; |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
348 } |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
349 btn << cancel_txt; |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
350 role << "RejectRole"; |
21311
718332a58d35
Fix left mouse button in editor margin bug from cset 65827e9cccb8
Lachlan Andrew <lachlanbis@gmail.com>
parents:
21310
diff
changeset
|
351 |
27552 | 352 QString result |
27553
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
353 = m_uiwidget_creator.message_dialog (msg, title, "quest", btn, |
9b72eb111b7e
eliminate global uiwidget_creator variable
John W. Eaton <jwe@octave.org>
parents:
27552
diff
changeset
|
354 cancel_txt, role); |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
355 |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
356 if (result == cd_txt) |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
357 retval = 1; |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
358 else if (result == addpath_txt) |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
359 retval = 2; |
16565
e4b94abfeb96
use generic dialog for cd or addpath question
John W. Eaton <jwe@octave.org>
parents:
16551
diff
changeset
|
360 |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
361 return retval; |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
362 } |
16547
3cd80afc3509
improve debugging with the GUI
John W. Eaton <jwe@octave.org>
parents:
16528
diff
changeset
|
363 |
27599
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
364 uint8NDArray qt_interpreter_events::get_named_icon (const std::string& name) |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
365 { |
27599
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
366 QMutexLocker autolock (&m_mutex); |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
367 |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
368 emit get_named_icon_signal (QString::fromStdString (name)); |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
369 |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
370 // Wait for result. |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
371 wait (); |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
372 |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
373 uint8NDArray empty_img; |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
374 |
27600
bb9aecedc167
use single QVariant object for return values in qt_interpreter_events class
John W. Eaton <jwe@octave.org>
parents:
27599
diff
changeset
|
375 QIcon icon = m_result.value<QIcon> (); |
bb9aecedc167
use single QVariant object for return values in qt_interpreter_events class
John W. Eaton <jwe@octave.org>
parents:
27599
diff
changeset
|
376 |
bb9aecedc167
use single QVariant object for return values in qt_interpreter_events class
John W. Eaton <jwe@octave.org>
parents:
27599
diff
changeset
|
377 if (icon.isNull ()) |
27599
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
378 return empty_img; |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
379 |
27600
bb9aecedc167
use single QVariant object for return values in qt_interpreter_events class
John W. Eaton <jwe@octave.org>
parents:
27599
diff
changeset
|
380 QImage img = icon.pixmap (QSize (32, 32)).toImage (); |
27599
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
381 |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
382 if (img.format () != QImage::Format_ARGB32_Premultiplied) |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
383 return empty_img; |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
384 |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
385 dim_vector dims (img.height (), img.width (), 4); |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
386 |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
387 uint8NDArray retval (dims, 0); |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
388 |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
389 uint8_t *bits = img.bits (); |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
390 |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
391 for (int i = 0; i < img.height (); i++) |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
392 { |
27599
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
393 for (int j = 0; j < img.width (); j++) |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
394 { |
27599
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
395 retval(i,j,2) = bits[0]; |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
396 retval(i,j,1) = bits[1]; |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
397 retval(i,j,0) = bits[2]; |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
398 retval(i,j,3) = bits[3]; |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
399 |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
400 bits += 4; |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
401 } |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
402 } |
27599
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
403 |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
404 return retval; |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
405 } |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
406 |
27599
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
407 void qt_interpreter_events::get_named_icon_slot (const QString& name) |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
408 { |
27603
bf6b192428a0
* qt-interpreter-events.cc: Use QMutexLocker objects where possible.
John W. Eaton <jwe@octave.org>
parents:
27602
diff
changeset
|
409 QMutexLocker autolock (&m_mutex); |
27599
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
410 |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
411 resource_manager& rmgr = m_octave_qobj.get_resource_manager (); |
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
412 m_result = QVariant::fromValue (rmgr.icon (name)); |
27599
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
413 |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
414 wake_all (); |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
415 } |
ada24a1979c0
improve thread safety of qt_interpreter_events::get_named_icon
John W. Eaton <jwe@octave.org>
parents:
27589
diff
changeset
|
416 |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
417 std::string |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
418 qt_interpreter_events::gui_preference (const std::string& key, |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
419 const std::string& value) |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
420 { |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
421 QString pref_value; |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
422 |
27589
12cfa32dc29e
use QMutexLocker to manage locks in qt_interpreter_events methods
John W. Eaton <jwe@octave.org>
parents:
27588
diff
changeset
|
423 QMutexLocker autolock (&m_mutex); |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
424 |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
425 // Emit the signal for changing or getting a preference |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
426 emit gui_preference_signal (QString::fromStdString (key), |
27601
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
427 QString::fromStdString (value)); |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
428 |
27589
12cfa32dc29e
use QMutexLocker to manage locks in qt_interpreter_events methods
John W. Eaton <jwe@octave.org>
parents:
27588
diff
changeset
|
429 // Wait for response (pref_value). |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
430 wait (); |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
431 |
27601
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
432 QString pref = m_result.toString (); |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
433 |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
434 return pref.toStdString (); |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
435 } |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
436 |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
437 bool qt_interpreter_events::copy_image_to_clipboard (const std::string& file) |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
438 { |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
439 emit copy_image_to_clipboard_signal (QString::fromStdString (file), true); |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
440 |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
441 return true; |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
442 } |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
443 |
27669
271b5cd640d7
Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27643
diff
changeset
|
444 void qt_interpreter_events::focus_window (const std::string win_name) |
271b5cd640d7
Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27643
diff
changeset
|
445 { |
271b5cd640d7
Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27643
diff
changeset
|
446 emit focus_window_signal (QString::fromStdString (win_name)); |
271b5cd640d7
Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27643
diff
changeset
|
447 } |
271b5cd640d7
Add functions to show GUI windows (bug #57213)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27643
diff
changeset
|
448 |
27442
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
449 void qt_interpreter_events::execute_command_in_terminal |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
450 (const std::string& command) |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
451 { |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
452 emit execute_command_in_terminal_signal (QString::fromStdString (command)); |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
453 } |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
454 |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
455 void qt_interpreter_events::register_doc (const std::string& file) |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
456 { |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
457 emit register_doc_signal (QString::fromStdString (file)); |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
458 } |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
459 |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
460 void qt_interpreter_events::unregister_doc (const std::string& file) |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
461 { |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
462 emit unregister_doc_signal (QString::fromStdString (file)); |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
463 } |
6e4519df0be2
group functions by category in interpreter_events and event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27412
diff
changeset
|
464 |
29503
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
465 void qt_interpreter_events::interpreter_output (const std::string& msg) |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
466 { |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
467 if (m_octave_qobj.experimental_terminal_widget () |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
468 && m_octave_qobj.gui_running ()) |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
469 emit interpreter_output_signal (QString::fromStdString (msg)); |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
470 else |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
471 { |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
472 // FIXME: is this the correct thing to do? |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
473 std::cout << msg; |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
474 } |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
475 } |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
476 |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
477 void qt_interpreter_events::display_exception (const execution_exception& ee, |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
478 bool beep) |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
479 { |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
480 if (m_octave_qobj.experimental_terminal_widget () |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
481 && m_octave_qobj.gui_running ()) |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
482 { |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
483 std::ostringstream buf; |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
484 ee.display (buf); |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
485 emit interpreter_output_signal (QString::fromStdString (buf.str ())); |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
486 } |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
487 else |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
488 { |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
489 if (beep) |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
490 std::cerr << "\a"; |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
491 |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
492 ee.display (std::cerr); |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
493 } |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
494 } |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
495 |
29057
450920c987b8
update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29001
diff
changeset
|
496 void qt_interpreter_events::gui_status_update (const std::string& feature, |
450920c987b8
update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29001
diff
changeset
|
497 const std::string& status) |
450920c987b8
update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29001
diff
changeset
|
498 { |
450920c987b8
update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29001
diff
changeset
|
499 emit gui_status_update_signal (QString::fromStdString (feature), |
450920c987b8
update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29001
diff
changeset
|
500 QString::fromStdString (status)); |
450920c987b8
update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29001
diff
changeset
|
501 } |
450920c987b8
update profiler status in gui from interpreter
Torsten Lilge <ttl-octave@mailbox.org>
parents:
29001
diff
changeset
|
502 |
28788
aba2c4eadb83
add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28566
diff
changeset
|
503 void qt_interpreter_events::update_gui_lexer (void) |
aba2c4eadb83
add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28566
diff
changeset
|
504 { |
aba2c4eadb83
add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28566
diff
changeset
|
505 emit update_gui_lexer_signal (true); |
aba2c4eadb83
add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28566
diff
changeset
|
506 } |
aba2c4eadb83
add functions of loaded packages to auto-completion list (bug #56207)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28566
diff
changeset
|
507 |
27409
a0d49e55acae
rename change_directory to directory_changed in event manager
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
508 void qt_interpreter_events::directory_changed (const std::string& dir) |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
509 { |
27409
a0d49e55acae
rename change_directory to directory_changed in event manager
John W. Eaton <jwe@octave.org>
parents:
27396
diff
changeset
|
510 emit directory_changed_signal (QString::fromStdString (dir)); |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
511 } |
16437
919796a440c6
use signal for changing directory
John W. Eaton <jwe@octave.org>
parents:
16432
diff
changeset
|
512 |
27284
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
513 void qt_interpreter_events::file_remove (const std::string& old_name, |
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
514 const std::string& new_name) |
25742
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25678
diff
changeset
|
515 { |
27589
12cfa32dc29e
use QMutexLocker to manage locks in qt_interpreter_events methods
John W. Eaton <jwe@octave.org>
parents:
27588
diff
changeset
|
516 QMutexLocker autolock (&m_mutex); |
25742
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25678
diff
changeset
|
517 |
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25678
diff
changeset
|
518 // Emit the signal for the editor for closing the file if it is open |
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25678
diff
changeset
|
519 emit file_remove_signal (QString::fromStdString (old_name), |
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25678
diff
changeset
|
520 QString::fromStdString (new_name)); |
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25678
diff
changeset
|
521 |
27589
12cfa32dc29e
use QMutexLocker to manage locks in qt_interpreter_events methods
John W. Eaton <jwe@octave.org>
parents:
27588
diff
changeset
|
522 // Wait for file removal to complete before continuing. |
25742
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25678
diff
changeset
|
523 wait (); |
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25678
diff
changeset
|
524 } |
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25678
diff
changeset
|
525 |
27284
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
526 void qt_interpreter_events::file_renamed (bool load_new) |
25742
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25678
diff
changeset
|
527 { |
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25678
diff
changeset
|
528 emit file_renamed_signal (load_new); |
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25678
diff
changeset
|
529 } |
d3c6de326bae
close/reload editor tab when file is (re)moved in gui terminal (bug #43922)
Torsten <mttl@mailbox.org>
parents:
25678
diff
changeset
|
530 |
27284
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
531 void qt_interpreter_events::set_workspace (bool top_level, bool debug, |
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
532 const symbol_info_list& syminfo, |
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
533 bool update_variable_editor) |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
534 { |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
535 if (! top_level && ! debug) |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
536 return; |
19904
793230bb81d4
don't update workspace viewer unless at top level (bug #44156)
John W. Eaton <jwe@octave.org>
parents:
19714
diff
changeset
|
537 |
26117
a6df420457ac
use symbol_info_list instead of symbol_scope to pass workspace info to gui
John W. Eaton <jwe@octave.org>
parents:
25948
diff
changeset
|
538 emit set_workspace_signal (top_level, debug, syminfo); |
23927
e3a36f84d01d
provide variable-editor widget for the GUI
Michael Barnes <mjbcode@runbox.com>
parents:
23807
diff
changeset
|
539 |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
540 if (update_variable_editor) |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
541 emit refresh_variable_editor_signal (); |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
542 } |
16468
0f143f68078d
use signal/slot for updating workspace instead of using event listener
John W. Eaton <jwe@octave.org>
parents:
16443
diff
changeset
|
543 |
27284
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
544 void qt_interpreter_events::clear_workspace (void) |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
545 { |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
546 emit clear_workspace_signal (); |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
547 } |
16415
70032fc70bee
move octave-link and octave-event-listener classes to libinterp
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
548 |
29503
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
549 void qt_interpreter_events::update_prompt (const std::string& prompt) |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
550 { |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
551 emit update_prompt_signal (QString::fromStdString (prompt)); |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
552 } |
3bfec185c9e2
experimental command window widget with server loop
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
553 |
27284
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
554 void qt_interpreter_events::set_history (const string_vector& hist) |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
555 { |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
556 QStringList qt_hist; |
16431
5982d469f79b
use signal for setting, appending to, and clearing history widget
John W. Eaton <jwe@octave.org>
parents:
16426
diff
changeset
|
557 |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
558 for (octave_idx_type i = 0; i < hist.numel (); i++) |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
559 qt_hist.append (QString::fromStdString (hist[i])); |
16431
5982d469f79b
use signal for setting, appending to, and clearing history widget
John W. Eaton <jwe@octave.org>
parents:
16426
diff
changeset
|
560 |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
561 emit set_history_signal (qt_hist); |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
562 } |
16415
70032fc70bee
move octave-link and octave-event-listener classes to libinterp
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
563 |
27284
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
564 void qt_interpreter_events::append_history (const std::string& hist_entry) |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
565 { |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
566 emit append_history_signal (QString::fromStdString (hist_entry)); |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
567 } |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
568 |
27284
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
569 void qt_interpreter_events::clear_history (void) |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
570 { |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
571 emit clear_history_signal (); |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
572 } |
16431
5982d469f79b
use signal for setting, appending to, and clearing history widget
John W. Eaton <jwe@octave.org>
parents:
16426
diff
changeset
|
573 |
27284
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
574 void qt_interpreter_events::pre_input_event (void) |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
575 { } |
16415
70032fc70bee
move octave-link and octave-event-listener classes to libinterp
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
576 |
27284
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
577 void qt_interpreter_events::post_input_event (void) |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
578 { } |
16415
70032fc70bee
move octave-link and octave-event-listener classes to libinterp
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
579 |
27392
820a87b87c01
clean up use of interpreter in qt_interpreter_events::enter_debugger_event
John W. Eaton <jwe@octave.org>
parents:
27311
diff
changeset
|
580 void qt_interpreter_events::enter_debugger_event (const std::string& /*fcn_name*/, |
820a87b87c01
clean up use of interpreter in qt_interpreter_events::enter_debugger_event
John W. Eaton <jwe@octave.org>
parents:
27311
diff
changeset
|
581 const std::string& fcn_file_name, |
27284
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
582 int line) |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
583 { |
27392
820a87b87c01
clean up use of interpreter in qt_interpreter_events::enter_debugger_event
John W. Eaton <jwe@octave.org>
parents:
27311
diff
changeset
|
584 if (fcn_file_name.empty ()) |
25557
bb779fc2d0db
do not attempt to open a file when debugging a command line fct (bug #54231)
Torsten <mttl@mailbox.org>
parents:
25407
diff
changeset
|
585 return; |
bb779fc2d0db
do not attempt to open a file when debugging a command line fct (bug #54231)
Torsten <mttl@mailbox.org>
parents:
25407
diff
changeset
|
586 |
27392
820a87b87c01
clean up use of interpreter in qt_interpreter_events::enter_debugger_event
John W. Eaton <jwe@octave.org>
parents:
27311
diff
changeset
|
587 insert_debugger_pointer (fcn_file_name, line); |
16415
70032fc70bee
move octave-link and octave-event-listener classes to libinterp
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
588 |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
589 emit enter_debugger_signal (); |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
590 } |
16438
a971d8bdaadc
use signals instead of event queue for entering/leaving debug mode
John W. Eaton <jwe@octave.org>
parents:
16437
diff
changeset
|
591 |
27264
378d3c91f85b
style fixes for event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27263
diff
changeset
|
592 void |
27284
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
593 qt_interpreter_events::execute_in_debugger_event (const std::string& file, |
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
594 int line) |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
595 { |
27284
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
596 delete_debugger_pointer (file, line); |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
597 } |
16415
70032fc70bee
move octave-link and octave-event-listener classes to libinterp
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
598 |
27284
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
599 void qt_interpreter_events::exit_debugger_event (void) |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
600 { |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
601 emit exit_debugger_signal (); |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
602 } |
16415
70032fc70bee
move octave-link and octave-event-listener classes to libinterp
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
603 |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
604 // Display (if @insert true) or remove the appropriate symbol for a breakpoint |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
605 // in @file at @line with condition @cond. |
27284
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
606 void qt_interpreter_events::update_breakpoint (bool insert, |
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
607 const std::string& file, |
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
608 int line, |
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
609 const std::string& cond) |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
610 { |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
611 emit update_breakpoint_marker_signal (insert, QString::fromStdString (file), |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
612 line, QString::fromStdString (cond)); |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
613 } |
16438
a971d8bdaadc
use signals instead of event queue for entering/leaving debug mode
John W. Eaton <jwe@octave.org>
parents:
16437
diff
changeset
|
614 |
27264
378d3c91f85b
style fixes for event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27263
diff
changeset
|
615 void |
27284
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
616 qt_interpreter_events::insert_debugger_pointer (const std::string& file, |
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
617 int line) |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
618 { |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
619 emit insert_debugger_pointer_signal (QString::fromStdString (file), line); |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
620 } |
17010
c50ee84842a9
Add preferences and prefdir functions
John Donoghue <john.donoghue@ieee.org>
parents:
16658
diff
changeset
|
621 |
27264
378d3c91f85b
style fixes for event_manager classes
John W. Eaton <jwe@octave.org>
parents:
27263
diff
changeset
|
622 void |
27284
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
623 qt_interpreter_events::delete_debugger_pointer (const std::string& file, |
1a8762e5662b
remove "do_" prefix from interpreter_events class methods
John W. Eaton <jwe@octave.org>
parents:
27276
diff
changeset
|
624 int line) |
24718
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
625 { |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
626 emit delete_debugger_pointer_signal (QString::fromStdString (file), line); |
ea1c88bd4430
move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
24645
diff
changeset
|
627 } |
27588
f0e3f3e28a8e
move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents:
27553
diff
changeset
|
628 |
f0e3f3e28a8e
move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents:
27553
diff
changeset
|
629 void |
f0e3f3e28a8e
move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents:
27553
diff
changeset
|
630 qt_interpreter_events::confirm_shutdown_octave (void) |
f0e3f3e28a8e
move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents:
27553
diff
changeset
|
631 { |
27603
bf6b192428a0
* qt-interpreter-events.cc: Use QMutexLocker objects where possible.
John W. Eaton <jwe@octave.org>
parents:
27602
diff
changeset
|
632 QMutexLocker autolock (&m_mutex); |
27588
f0e3f3e28a8e
move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents:
27553
diff
changeset
|
633 |
27600
bb9aecedc167
use single QVariant object for return values in qt_interpreter_events class
John W. Eaton <jwe@octave.org>
parents:
27599
diff
changeset
|
634 m_result = m_octave_qobj.confirm_shutdown (); |
27588
f0e3f3e28a8e
move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents:
27553
diff
changeset
|
635 |
f0e3f3e28a8e
move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents:
27553
diff
changeset
|
636 wake_all (); |
f0e3f3e28a8e
move qt_interpreter_events object from interpreter_qobject to octave_qobject
John W. Eaton <jwe@octave.org>
parents:
27553
diff
changeset
|
637 } |
27601
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
638 |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
639 // If VALUE is empty, return current value of preference named by KEY. |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
640 // |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
641 // If VALUE is not empty, set preference named by KEY to VALUE return |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
642 // previous value. |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
643 // |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
644 // FIXME: should we have separate get and set functions? With only |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
645 // one, we don't allow a preference value to be set to the empty |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
646 // string. |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
647 |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
648 void |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
649 qt_interpreter_events::gui_preference_slot (const QString& key, |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
650 const QString& value) |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
651 { |
27603
bf6b192428a0
* qt-interpreter-events.cc: Use QMutexLocker objects where possible.
John W. Eaton <jwe@octave.org>
parents:
27602
diff
changeset
|
652 QMutexLocker autolock (&m_mutex); |
27601
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
653 |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
654 resource_manager& rmgr = m_octave_qobj.get_resource_manager (); |
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
655 gui_settings *settings = rmgr.get_settings (); |
27601
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
656 |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
657 QString read_value = settings->value (key).toString (); |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
658 |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
659 // Some preferences need extra handling |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
660 QString adjusted_value = gui_preference_adjust (key, value); |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
661 |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
662 if (! adjusted_value.isEmpty () && (read_value != adjusted_value)) |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
663 { |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
664 // Change settings only for new, non-empty values |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
665 settings->setValue (key, QVariant (adjusted_value)); |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
666 |
29000
8a05763823d1
avoid possible infinite loop when default encoding is changed (bug #59331)
Torsten Lilge <ttl-octave@mailbox.org>
parents:
28566
diff
changeset
|
667 emit settings_changed (settings, true); // true: changed by worker |
27601
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
668 } |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
669 |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
670 m_result = read_value; |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
671 |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
672 wake_all (); |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
673 } |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
674 |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
675 QString |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
676 qt_interpreter_events::gui_preference_adjust (const QString& key, |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
677 const QString& value) |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
678 { |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
679 // Immediately return if no new value is given. |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
680 |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
681 if (value.isEmpty ()) |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
682 return value; |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
683 |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
684 QString adjusted_value = value; |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
685 |
27929
265b386f8b20
maint: Use two spaces between sentences in code comments.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
686 // Not all encodings are available. Encodings are uppercase and do |
27601
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
687 // not use CPxxx but IBMxxx or WINDOWS-xxx. |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
688 |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
689 if (key == ed_default_enc.key) |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
690 { |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
691 adjusted_value = adjusted_value.toUpper (); |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
692 |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
693 QStringList codecs; |
27629
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
694 resource_manager& rmgr = m_octave_qobj.get_resource_manager (); |
8b6e928e0705
in GUI objects, store reference to base_qobject instead of resource_manager
John W. Eaton <jwe@octave.org>
parents:
27620
diff
changeset
|
695 rmgr.get_codecs (&codecs); |
27601
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
696 |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
697 QRegExp re ("^CP(\\d+)$"); |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
698 |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
699 if (adjusted_value == "SYSTEM") |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
700 adjusted_value = |
28118
f2789cae04f3
Don't use "codecForLocale" to get encoding for locale charset.
Markus Mützel <markus.muetzel@gmx.de>
parents:
27929
diff
changeset
|
701 QString ("SYSTEM (") + |
f2789cae04f3
Don't use "codecForLocale" to get encoding for locale charset.
Markus Mützel <markus.muetzel@gmx.de>
parents:
27929
diff
changeset
|
702 QString (octave_locale_charset_wrapper ()).toUpper () + |
f2789cae04f3
Don't use "codecForLocale" to get encoding for locale charset.
Markus Mützel <markus.muetzel@gmx.de>
parents:
27929
diff
changeset
|
703 QString (")"); |
27601
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
704 else if (re.indexIn (adjusted_value) > -1) |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
705 { |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
706 if (codecs.contains ("IBM" + re.cap (1))) |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
707 adjusted_value = "IBM" + re.cap (1); |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
708 else if (codecs.contains ("WINDOWS-" + re.cap (1))) |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
709 adjusted_value = "WINDOWS-" + re.cap (1); |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
710 else |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
711 adjusted_value.clear (); |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
712 } |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
713 else if (! codecs.contains (adjusted_value)) |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
714 adjusted_value.clear (); |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
715 } |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
716 |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
717 return adjusted_value; |
7a748f7545c9
improve thread safety of qt_interpreter_events::gui_preference
John W. Eaton <jwe@octave.org>
parents:
27600
diff
changeset
|
718 } |
17029
359c5ca795cd
Display doc info pages using documentation browser when in GUI mode (Bug #39451)
John Donoghue <john.donoghue@ieee.org>
parents:
17010
diff
changeset
|
719 } |