Mercurial > octave
comparison libgui/src/m-editor/octave-qscintilla.cc @ 31619:ad014fc78bd6
use individual local gui_settings objects
Previously, we created a single gui_settings object (derived from
QSettings) and accessed it from the resource_manager object. That
design is not necessary and is not the way QSettings was designed to
be used. Instead of managing a single object, we should be using
individual QSettings objects where needed. Each individual QSettings
object manages thread-safe access to a single global collection of
settings. The Qt docs say that operations on QSettings are not thread
safe, but that means that you can't create a QSettings object in one
thread and use it in another without some locking. I'm not sure
whether we were doing that correctly, but with this change it no
longer matters. Each QSettings object does perform locking when
reading or writing the underlying global data.
* resource-manager.h, resource-manager.cc
(resource_manager::m_settings): Delete data member.
(resource_manager::get_settings): Delete.
* annotation-dialog.cc, QTerminal.cc, QTerminal.h, command-widget.cc,
command-widget.h, community-news.cc, dialog.cc,
documentation-bookmarks.cc, documentation-bookmarks.h,
documentation-dock-widget.cc, documentation-dock-widget.h,
documentation.cc, documentation.h, dw-main-window.cc,
dw-main-window.h, external-editor-interface.cc, files-dock-widget.cc,
files-dock-widget.h, find-files-dialog.cc, history-dock-widget.cc,
history-dock-widget.h, file-editor-interface.h, file-editor-tab.cc,
file-editor-tab.h, file-editor.cc, file-editor.h, find-dialog.cc,
octave-qscintilla.cc, main-window.cc, main-window.h, news-reader.cc,
octave-dock-widget.cc, octave-dock-widget.h, qt-interpreter-events.cc,
qt-interpreter-events.h, release-notes.cc, resource-manager.cc,
resource-manager.h, set-path-dialog.cc, settings-dialog.cc,
settings-dialog.h, shortcut-manager.cc, shortcut-manager.h,
terminal-dock-widget.cc, terminal-dock-widget.h, variable-editor.cc,
variable-editor.h, welcome-wizard.cc, workspace-model.cc,
workspace-model.h, workspace-view.cc: Use local gui_settings objects
instead of accessing a pointer to a single gui_settings object owned
by the resource_manager object.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 02 Dec 2022 14:23:53 -0500 |
parents | 38b954c0c0c1 |
children | 431f80aba37a |
comparison
equal
deleted
inserted
replaced
31618:cd833a9baaa7 | 31619:ad014fc78bd6 |
---|---|
52 #include <Qsci/qscilexerdiff.h> | 52 #include <Qsci/qscilexerdiff.h> |
53 #include <Qsci/qscilexerperl.h> | 53 #include <Qsci/qscilexerperl.h> |
54 | 54 |
55 #include "file-editor-tab.h" | 55 #include "file-editor-tab.h" |
56 #include "gui-preferences-ed.h" | 56 #include "gui-preferences-ed.h" |
57 #include "gui-settings.h" | |
57 // FIXME: hardwired marker numbers? | 58 // FIXME: hardwired marker numbers? |
58 #include "marker.h" | 59 #include "marker.h" |
59 #include "octave-qobject.h" | 60 #include "octave-qobject.h" |
60 #include "octave-qscintilla.h" | 61 #include "octave-qscintilla.h" |
61 #include "shortcut-manager.h" | 62 #include "shortcut-manager.h" |
428 case SCLEX_OCTAVE: | 429 case SCLEX_OCTAVE: |
429 #else | 430 #else |
430 case SCLEX_MATLAB: | 431 case SCLEX_MATLAB: |
431 #endif | 432 #endif |
432 { | 433 { |
433 resource_manager& rmgr = m_octave_qobj.get_resource_manager (); | 434 gui_settings settings; |
434 gui_settings *settings = rmgr.get_settings (); | 435 |
435 int comment_string; | 436 int comment_string; |
436 | 437 |
437 if (comment) | 438 if (comment) |
438 { | 439 { |
439 // The commenting string is requested | 440 // The commenting string is requested |
440 if (settings->contains (ed_comment_str.key)) | 441 if (settings.contains (ed_comment_str.key)) |
441 // new version (radio buttons) | 442 // new version (radio buttons) |
442 comment_string = settings->value (ed_comment_str).toInt (); | 443 comment_string = settings.value (ed_comment_str).toInt (); |
443 else | 444 else |
444 // old version (combo box) | 445 // old version (combo box) |
445 comment_string = settings->value (ed_comment_str_old.key, | 446 comment_string = settings.value (ed_comment_str_old.key, |
446 ed_comment_str.def).toInt (); | 447 ed_comment_str.def).toInt (); |
447 | 448 |
448 return (QStringList (ed_comment_strings.at (comment_string))); | 449 return (QStringList (ed_comment_strings.at (comment_string))); |
449 } | 450 } |
450 else | 451 else |
451 { | 452 { |
452 QStringList c_str; | 453 QStringList c_str; |
453 | 454 |
454 // The possible uncommenting string(s) are requested | 455 // The possible uncommenting string(s) are requested |
455 comment_string = settings->value (ed_uncomment_str).toInt (); | 456 comment_string = settings.value (ed_uncomment_str).toInt (); |
456 | 457 |
457 for (int i = 0; i < ed_comment_strings_count; i++) | 458 for (int i = 0; i < ed_comment_strings_count; i++) |
458 { | 459 { |
459 if (1 << i & comment_string) | 460 if (1 << i & comment_string) |
460 c_str.append (ed_comment_strings.at (i)); | 461 c_str.append (ed_comment_strings.at (i)); |
906 | 907 |
907 Fhistory (interp, ovl (opt, path)); | 908 Fhistory (interp, ovl (opt, path)); |
908 }); | 909 }); |
909 | 910 |
910 // Disable opening a file at a breakpoint in case keyboard () is used | 911 // Disable opening a file at a breakpoint in case keyboard () is used |
911 gui_settings *settings = rmgr.get_settings (); | 912 gui_settings settings; |
912 bool show_dbg_file = settings->value (ed_show_dbg_file).toBool (); | 913 |
913 settings->setValue (ed_show_dbg_file.key, false); | 914 bool show_dbg_file = settings.value (ed_show_dbg_file).toBool (); |
915 settings.setValue (ed_show_dbg_file.key, false); | |
914 | 916 |
915 // Let the interpreter execute the tmp file | 917 // Let the interpreter execute the tmp file |
916 emit interpreter_event | 918 emit interpreter_event |
917 ([=] (interpreter& interp) | 919 ([=] (interpreter& interp) |
918 { | 920 { |
1033 // TODO: Use line nr. (int argument) of possible error for removing | 1035 // TODO: Use line nr. (int argument) of possible error for removing |
1034 // lines from history that were never executed. For this, | 1036 // lines from history that were never executed. For this, |
1035 // possible lines from commands at a debug prompt must be | 1037 // possible lines from commands at a debug prompt must be |
1036 // taken into consideration. | 1038 // taken into consideration. |
1037 resource_manager& rmgr = m_octave_qobj.get_resource_manager (); | 1039 resource_manager& rmgr = m_octave_qobj.get_resource_manager (); |
1038 gui_settings *settings = rmgr.get_settings (); | 1040 gui_settings settings; |
1039 settings->setValue (ed_show_dbg_file.key, show_dbg_file); | 1041 |
1042 settings.setValue (ed_show_dbg_file.key, show_dbg_file); | |
1043 | |
1040 rmgr.remove_tmp_file (tmp_file); | 1044 rmgr.remove_tmp_file (tmp_file); |
1041 rmgr.remove_tmp_file (tmp_hist); | 1045 rmgr.remove_tmp_file (tmp_hist); |
1042 | 1046 |
1043 emit interpreter_event | 1047 emit interpreter_event |
1044 ([=] (interpreter& interp) | 1048 ([=] (interpreter& interp) |