annotate libgui/src/resource-manager.cc @ 31615:40b151abbb9b

don't attempt to restore settings from old qt-settings config file We changed the default settings file name in 2019. It's time to let the old name go. * resource-manager.cc (resource_manager::resource_manager): Don't attempt to copy settings from old qt-settings file used by Octave prior to March 2019.
author John W. Eaton <jwe@octave.org>
date Fri, 02 Dec 2022 10:07:32 -0500
parents 59c9da7c43d6
children 726d2628752c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 //
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 30398
diff changeset
3 // Copyright (C) 2011-2022 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 ////////////////////////////////////////////////////////////////////////
13539
a4b5cad8f7c6 Added command line parser class.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13537
diff changeset
25
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21568
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"
15159
098546e95a5e allow location of default settings file to be configurable
John W. Eaton <jwe@octave.org>
parents: 15081
diff changeset
28 #endif
098546e95a5e allow location of default settings file to be configurable
John W. Eaton <jwe@octave.org>
parents: 15081
diff changeset
29
30788
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
30 #include <unistd.h>
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
31
28836
d0a64e67749e avoid deprecated qSort function
John W. Eaton <jwe@octave.org>
parents: 28777
diff changeset
32 #include <algorithm>
28447
7de12a40e87b resource-manager.cc: Include missing header (bug #54334).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28422
diff changeset
33 #include <array>
15159
098546e95a5e allow location of default settings file to be configurable
John W. Eaton <jwe@octave.org>
parents: 15081
diff changeset
34 #include <string>
098546e95a5e allow location of default settings file to be configurable
John W. Eaton <jwe@octave.org>
parents: 15081
diff changeset
35
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27276
diff changeset
36 #include <QDir>
13570
7828e1bf5b0d Default settings are now loaded it there is no user-defined settings.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13551
diff changeset
37 #include <QFile>
28777
0d6795d0373d improved detection of standard fixed witdh font (bug #59128)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28118
diff changeset
38 #include <QFontComboBox>
0d6795d0373d improved detection of standard fixed witdh font (bug #59128)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28118
diff changeset
39 #include <QFontDatabase>
17790
86c6ae5f969e Use GNU style coding conventions for code in libgui/
Rik <rik@octave.org>
parents: 17744
diff changeset
40 #include <QLibraryInfo>
17943
efe3e288a20c check the creation of settings object for success before starting the gui
Torsten <ttl@justmail.de>
parents: 17938
diff changeset
41 #include <QMessageBox>
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27276
diff changeset
42 #include <QNetworkProxy>
30877
2bb539746697 consider env variables for location of temp files (bug #62215)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30810
diff changeset
43 #include <QStandardPaths>
27841
f68c7c56e5f2 add missing include (bug #57420)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27805
diff changeset
44
20774
5c5e085a1ae6 allow selecting an encoding when saving a file (bug #45688)
Torsten <ttl@justmail.de>
parents: 20428
diff changeset
45 #include <QTextCodec>
14845
9a355dfc7701 Fixed bug with GUI not starting the first time.
Jacob Dawid <jacob.dawid@gmail.com>
parents: 14804
diff changeset
46
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27276
diff changeset
47 #include "QTerminal.h"
29511
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
48 #include "gui-preferences-cs.h"
27560
3fcc650de22f split gui-preferences.h into one file per widget
John W. Eaton <jwe@octave.org>
parents: 27556
diff changeset
49 #include "gui-preferences-ed.h"
3fcc650de22f split gui-preferences.h into one file per widget
John W. Eaton <jwe@octave.org>
parents: 27556
diff changeset
50 #include "gui-preferences-global.h"
27620
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
51 #include "octave-qobject.h"
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27276
diff changeset
52 #include "resource-manager.h"
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27276
diff changeset
53 #include "variable-editor.h"
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27276
diff changeset
54 #include "workspace-model.h"
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27276
diff changeset
55
15159
098546e95a5e allow location of default settings file to be configurable
John W. Eaton <jwe@octave.org>
parents: 15081
diff changeset
56 #include "file-ops.h"
28118
f2789cae04f3 Don't use "codecForLocale" to get encoding for locale charset.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27957
diff changeset
57 #include "localcharset-wrapper.h"
15159
098546e95a5e allow location of default settings file to be configurable
John W. Eaton <jwe@octave.org>
parents: 15081
diff changeset
58 #include "oct-env.h"
098546e95a5e allow location of default settings file to be configurable
John W. Eaton <jwe@octave.org>
parents: 15081
diff changeset
59
25460
627d6bde9b8d solve installation info initialization problem differently
John W. Eaton <jwe@octave.org>
parents: 25440
diff changeset
60 #include "defaults.h"
27412
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27276
diff changeset
61 #include "error.h"
da1f59fe04b3 try to use consitent ordering for include files in libgui sources
John W. Eaton <jwe@octave.org>
parents: 27276
diff changeset
62 #include "help.h"
13537
a43ecce77eec Introduced a central ResourceManager class.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
63
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
64 namespace octave
16593
e13051d7a472 allow GUI window layout to be restored
John W. Eaton <jwe@octave.org>
parents: 16379
diff changeset
65 {
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
66 resource_manager::resource_manager (void)
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
67 : m_settings_directory (), m_settings_file (), m_settings (nullptr),
30777
439eb9bd4c04 icon fallback concept without QIcon::fallbackSearchPaths (bug #62106)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30775
diff changeset
68 m_default_settings (nullptr), m_temporary_files (), m_icon_fallbacks ()
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
69 {
31614
59c9da7c43d6 set Qt organization, application, and version in main program
John W. Eaton <jwe@octave.org>
parents: 31609
diff changeset
70 // Location, name, and format of settings file determined by
59c9da7c43d6 set Qt organization, application, and version in main program
John W. Eaton <jwe@octave.org>
parents: 31609
diff changeset
71 // settings in qt_application class construtor.
59c9da7c43d6 set Qt organization, application, and version in main program
John W. Eaton <jwe@octave.org>
parents: 31609
diff changeset
72
59c9da7c43d6 set Qt organization, application, and version in main program
John W. Eaton <jwe@octave.org>
parents: 31609
diff changeset
73 m_default_settings = new gui_settings ();
26955
9e2f69c1a05d use standard location on each platform for gui preferences file (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26866
diff changeset
74
9e2f69c1a05d use standard location on each platform for gui preferences file (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26866
diff changeset
75 m_settings_file = m_default_settings->fileName ();
9e2f69c1a05d use standard location on each platform for gui preferences file (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26866
diff changeset
76
9e2f69c1a05d use standard location on each platform for gui preferences file (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26866
diff changeset
77 QFileInfo sfile (m_settings_file);
9e2f69c1a05d use standard location on each platform for gui preferences file (bug #55855)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26866
diff changeset
78 m_settings_directory = sfile.absolutePath ();
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
79 }
15164
bc801a44bb1f follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents: 15161
diff changeset
80
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
81 resource_manager::~resource_manager (void)
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
82 {
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
83 delete m_settings;
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
84 delete m_default_settings;
27556
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
85
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
86 for (int i = m_temporary_files.count () - 1; i >=0; i--)
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
87 remove_tmp_file (m_temporary_files.at (i));
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
88 }
15164
bc801a44bb1f follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents: 15161
diff changeset
89
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
90 QString resource_manager::get_gui_translation_dir (void)
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
91 {
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
92 // get environment variable for the locale dir (e.g. from run-octave)
25336
389757b7b6af eliminate redundant octave:: namespace tags
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
93 std::string dldir = sys::env::getenv ("OCTAVE_LOCALE_DIR");
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
94 if (dldir.empty ())
25460
627d6bde9b8d solve installation info initialization problem differently
John W. Eaton <jwe@octave.org>
parents: 25440
diff changeset
95 dldir = config::oct_locale_dir (); // env-var empty, load the default location
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
96 return QString::fromStdString (dldir);
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
97 }
15972
22ab4fe661d7 gui: selectable language in settings dialog
Torsten <ttl@justmail.de>
parents: 15927
diff changeset
98
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
99 void resource_manager::config_translators (QTranslator *qt_tr,
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
100 QTranslator *qsci_tr,
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
101 QTranslator *gui_tr)
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
102 {
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
103 bool loaded;
16863
c82b3614eace try harder to load the qt translation files at start up
Torsten <ttl@justmail.de>
parents: 16858
diff changeset
104
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
105 QString qt_trans_dir
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
106 = QLibraryInfo::location (QLibraryInfo::TranslationsPath);
17930
ffdbb82a0c78 allow welcome wizard dialog to be canceled
John W. Eaton <jwe@octave.org>
parents: 17790
diff changeset
107
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
108 QString language = "SYSTEM"; // take system language per default
18020
5d42ffc6850a load translators before welcome wizard and take system language as default
Torsten <ttl@justmail.de>
parents: 18004
diff changeset
109
27649
91d43a00620d eliminate static instance variable from octave_qobject class
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
110 // FIXME: can we somehow ensure that the settings object will always
91d43a00620d eliminate static instance variable from octave_qobject class
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
111 // be initialize and valid?
16863
c82b3614eace try harder to load the qt translation files at start up
Torsten <ttl@justmail.de>
parents: 16858
diff changeset
112
27649
91d43a00620d eliminate static instance variable from octave_qobject class
John W. Eaton <jwe@octave.org>
parents: 27620
diff changeset
113 if (m_settings)
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
114 {
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
115 // get the locale from the settings if already available
27805
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27676
diff changeset
116 language = m_settings->value (global_language.key,
dccc551aa83b replace literal strings by symbolic constants for global preferences
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27676
diff changeset
117 global_language.def).toString ();
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
118 }
17930
ffdbb82a0c78 allow welcome wizard dialog to be canceled
John W. Eaton <jwe@octave.org>
parents: 17790
diff changeset
119
26866
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
120 // load the translations depending on the settings
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
121 if (language == "SYSTEM")
26866
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
122 {
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
123 // get the system locale and pass it to the translators for loading
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
124 // the suitable translation files
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
125 QLocale sys_locale = QLocale::system ();
18020
5d42ffc6850a load translators before welcome wizard and take system language as default
Torsten <ttl@justmail.de>
parents: 18004
diff changeset
126
26866
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
127 qt_tr->load (sys_locale, "qt", "_", qt_trans_dir);
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
128 qsci_tr->load (sys_locale, "qscintilla", "_", qt_trans_dir);
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
129 gui_tr->load (sys_locale, "", "", get_gui_translation_dir ());
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
130 }
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
131 else
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
132 {
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
133 // load the translation files depending on the given locale name
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
134 loaded = qt_tr->load ("qt_" + language, qt_trans_dir);
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
135 if (! loaded) // try lower case
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
136 qt_tr->load ("qt_" + language.toLower (), qt_trans_dir);
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23927
diff changeset
137
26866
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
138 loaded = qsci_tr->load ("qscintilla_" + language, qt_trans_dir);
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
139 if (! loaded) // try lower case
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
140 qsci_tr->load ("qscintilla_" + language.toLower (), qt_trans_dir);
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23927
diff changeset
141
26866
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
142 gui_tr->load (language, get_gui_translation_dir ());
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
143 }
65e5526ad987 improve system locale detection for loading gui translations (bug #41072)
Torsten <mttl@mailbox.org>
parents: 26842
diff changeset
144
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
145 }
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
146
30772
36dc11ee220d reorganize GUIs icons
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30564
diff changeset
147 void resource_manager::config_icon_theme (void)
36dc11ee220d reorganize GUIs icons
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30564
diff changeset
148 {
30788
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
149 m_icon_fallbacks.clear ();
30772
36dc11ee220d reorganize GUIs icons
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30564
diff changeset
150
30788
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
151 int theme = global_icon_theme_index.def.toInt ();
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
152
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
153 if (m_settings)
30772
36dc11ee220d reorganize GUIs icons
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30564
diff changeset
154 {
30788
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
155 // check for new and old setting and use old if required
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
156 if (! m_settings->contains (global_icon_theme_index.key))
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
157 {
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
158 // new pref does not exist
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
159 if (m_settings->value (global_icon_theme).toBool ())
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
160 theme = ICON_THEME_SYSTEM;
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
161 else
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
162 theme = ICON_THEME_OCTAVE;
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
163 m_settings->setValue (global_icon_theme_index.key, theme); // add new
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
164 m_settings->remove (global_icon_theme.key); // remove deprecated key
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
165 }
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
166 else
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
167 {
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
168 // get new settings
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
169 theme = m_settings->value (global_icon_theme_index).toInt ();
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
170 }
30772
36dc11ee220d reorganize GUIs icons
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30564
diff changeset
171 }
36dc11ee220d reorganize GUIs icons
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30564
diff changeset
172
30788
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
173 QIcon::setThemeName (global_all_icon_themes.at (theme));
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
174
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
175 // set the required fallback search paths
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
176 switch (theme)
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
177 {
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
178 case ICON_THEME_SYSTEM:
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
179 m_icon_fallbacks << global_icon_paths.at (ICON_THEME_OCTAVE);
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
180 m_icon_fallbacks << global_icon_paths.at (ICON_THEME_TANGO);
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
181 break;
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
182 case ICON_THEME_TANGO:
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
183 m_icon_fallbacks << global_icon_paths.at (ICON_THEME_OCTAVE);
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
184 break;
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
185 case ICON_THEME_OCTAVE:
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
186 m_icon_fallbacks << global_icon_paths.at (ICON_THEME_TANGO);
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
187 break;
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
188 }
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
189
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
190 m_icon_fallbacks << global_icon_paths.at (ICON_THEME_CURSORS);
30772
36dc11ee220d reorganize GUIs icons
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30564
diff changeset
191 }
36dc11ee220d reorganize GUIs icons
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30564
diff changeset
192
27620
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
193 gui_settings * resource_manager::get_settings (void) const
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
194 {
31601
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
195 if (! m_settings)
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
196 {
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
197 QString msg (QT_TR_NOOP ("Octave has lost its settings.\n"
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
198 "This should not happen.\n\n"
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
199 "Please report this bug.\n\n"
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
200 "Octave GUI must be closed now."));
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
201
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
202 QMessageBox::critical (nullptr,
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
203 QString (QT_TR_NOOP ("Octave Critical Error")),
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
204 msg);
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
205 exit (1);
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
206 }
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
207
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
208 return m_settings;
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
209 }
13537
a43ecce77eec Introduced a central ResourceManager class.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
210
27620
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
211 gui_settings * resource_manager::get_default_settings (void) const
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
212 {
31609
c2a0e546aab1 * resource-manager.cc: Fix copy/paste error from previous change.
John W. Eaton <jwe@octave.org>
parents: 31601
diff changeset
213 if (! m_default_settings)
31601
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
214 {
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
215 QString msg (QT_TR_NOOP ("Octave has lost its default settings.\n"
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
216 "This should not happen.\n"
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
217 "Please report this bug.\n\n"
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
218 "Octave GUI must be closed now."));
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
219
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
220 QMessageBox::critical (nullptr,
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
221 QString (QT_TR_NOOP ("Octave Critical Error")),
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
222 msg);
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
223 exit (1);
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
224 }
132547cc1ab2 don't return invalid settings pointer from resource manager (bug #63437)
John W. Eaton <jwe@octave.org>
parents: 30882
diff changeset
225
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
226 return m_default_settings;
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
227 }
13539
a4b5cad8f7c6 Added command line parser class.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13537
diff changeset
228
27620
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
229 QString resource_manager::get_settings_directory (void)
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
230 {
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
231 return m_settings_directory;
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
232 }
17515
c8c0dff02538 gui: welcome wizard with new message text
Torsten <ttl@justmail.de>
parents: 17421
diff changeset
233
27620
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
234 QString resource_manager::get_settings_file (void)
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
235 {
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
236 return m_settings_file;
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
237 }
17515
c8c0dff02538 gui: welcome wizard with new message text
Torsten <ttl@justmail.de>
parents: 17421
diff changeset
238
27620
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
239 QString resource_manager::get_default_font_family (void)
26008
38a881b8fbec do not use courier new as default font (bug #54086)
Torsten <mttl@mailbox.org>
parents: 25821
diff changeset
240 {
28777
0d6795d0373d improved detection of standard fixed witdh font (bug #59128)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28118
diff changeset
241 QString default_family;
0d6795d0373d improved detection of standard fixed witdh font (bug #59128)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28118
diff changeset
242
28768
bffd48bb4b8c fix indentation of cset b075aa252ca7
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28767
diff changeset
243 // Get all available fixed width fonts via a font combobox
bffd48bb4b8c fix indentation of cset b075aa252ca7
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28767
diff changeset
244 QFontComboBox font_combo_box;
bffd48bb4b8c fix indentation of cset b075aa252ca7
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28767
diff changeset
245 font_combo_box.setFontFilters (QFontComboBox::MonospacedFonts);
bffd48bb4b8c fix indentation of cset b075aa252ca7
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28767
diff changeset
246 QStringList fonts;
28777
0d6795d0373d improved detection of standard fixed witdh font (bug #59128)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28118
diff changeset
247
28768
bffd48bb4b8c fix indentation of cset b075aa252ca7
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28767
diff changeset
248 for (int index = 0; index < font_combo_box.count(); index++)
bffd48bb4b8c fix indentation of cset b075aa252ca7
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28767
diff changeset
249 fonts << font_combo_box.itemText(index);
28777
0d6795d0373d improved detection of standard fixed witdh font (bug #59128)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28118
diff changeset
250
29522
82aaf001abee make detection of default fixed font for gui more robust
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29511
diff changeset
251 #if defined (Q_OS_MAC)
82aaf001abee make detection of default fixed font for gui more robust
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29511
diff changeset
252 // Use hard coded default on macOS, since selection of fixed width
82aaf001abee make detection of default fixed font for gui more robust
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29511
diff changeset
253 // default font is unreliable (see bug #59128).
28768
bffd48bb4b8c fix indentation of cset b075aa252ca7
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28767
diff changeset
254 // Test for macOS default fixed width font
bffd48bb4b8c fix indentation of cset b075aa252ca7
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28767
diff changeset
255 if (fonts.contains (global_mono_font.def.toString ()))
bffd48bb4b8c fix indentation of cset b075aa252ca7
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28767
diff changeset
256 default_family = global_mono_font.def.toString ();
26008
38a881b8fbec do not use courier new as default font (bug #54086)
Torsten <mttl@mailbox.org>
parents: 25821
diff changeset
257 #endif
38a881b8fbec do not use courier new as default font (bug #54086)
Torsten <mttl@mailbox.org>
parents: 25821
diff changeset
258
28768
bffd48bb4b8c fix indentation of cset b075aa252ca7
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28767
diff changeset
259 // If default font is still empty (on all other platforms or
bffd48bb4b8c fix indentation of cset b075aa252ca7
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28767
diff changeset
260 // if macOS default font is not available): use QFontDatabase
bffd48bb4b8c fix indentation of cset b075aa252ca7
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28767
diff changeset
261 if (default_family.isEmpty ())
bffd48bb4b8c fix indentation of cset b075aa252ca7
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28767
diff changeset
262 {
bffd48bb4b8c fix indentation of cset b075aa252ca7
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28767
diff changeset
263 // Get the system's default monospaced font
bffd48bb4b8c fix indentation of cset b075aa252ca7
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28767
diff changeset
264 QFont fixed_font = QFontDatabase::systemFont (QFontDatabase::FixedFont);
bffd48bb4b8c fix indentation of cset b075aa252ca7
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28767
diff changeset
265 default_family = fixed_font.defaultFamily ();
29522
82aaf001abee make detection of default fixed font for gui more robust
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29511
diff changeset
266
82aaf001abee make detection of default fixed font for gui more robust
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29511
diff changeset
267 // Since this might be unreliable, test all available fixed width fonts
82aaf001abee make detection of default fixed font for gui more robust
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29511
diff changeset
268 if (! fonts.contains (default_family))
82aaf001abee make detection of default fixed font for gui more robust
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29511
diff changeset
269 {
82aaf001abee make detection of default fixed font for gui more robust
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29511
diff changeset
270 // Font returned by QFontDatabase is not in fixed fonts list.
82aaf001abee make detection of default fixed font for gui more robust
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29511
diff changeset
271 // Fallback: take first from this list
82aaf001abee make detection of default fixed font for gui more robust
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29511
diff changeset
272 default_family = fonts[0];
82aaf001abee make detection of default fixed font for gui more robust
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29511
diff changeset
273 }
28768
bffd48bb4b8c fix indentation of cset b075aa252ca7
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28767
diff changeset
274 }
28777
0d6795d0373d improved detection of standard fixed witdh font (bug #59128)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28118
diff changeset
275
0d6795d0373d improved detection of standard fixed witdh font (bug #59128)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28118
diff changeset
276 // Test env variable which has preference
26008
38a881b8fbec do not use courier new as default font (bug #54086)
Torsten <mttl@mailbox.org>
parents: 25821
diff changeset
277 std::string env_default_family = sys::env::getenv ("OCTAVE_DEFAULT_FONT");
38a881b8fbec do not use courier new as default font (bug #54086)
Torsten <mttl@mailbox.org>
parents: 25821
diff changeset
278 if (! env_default_family.empty ())
38a881b8fbec do not use courier new as default font (bug #54086)
Torsten <mttl@mailbox.org>
parents: 25821
diff changeset
279 default_family = QString::fromStdString (env_default_family);
38a881b8fbec do not use courier new as default font (bug #54086)
Torsten <mttl@mailbox.org>
parents: 25821
diff changeset
280
38a881b8fbec do not use courier new as default font (bug #54086)
Torsten <mttl@mailbox.org>
parents: 25821
diff changeset
281 return default_family;
38a881b8fbec do not use courier new as default font (bug #54086)
Torsten <mttl@mailbox.org>
parents: 25821
diff changeset
282 }
38a881b8fbec do not use courier new as default font (bug #54086)
Torsten <mttl@mailbox.org>
parents: 25821
diff changeset
283
29162
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
284 QStringList resource_manager::get_default_font (void)
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
285 {
27620
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
286 QString default_family = get_default_font_family ();
26008
38a881b8fbec do not use courier new as default font (bug #54086)
Torsten <mttl@mailbox.org>
parents: 25821
diff changeset
287
29270
6570a35920c4 improve detection of systems font size at first startup (bug #59829)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29162
diff changeset
288 // determine the fefault font size of the system
6570a35920c4 improve detection of systems font size at first startup (bug #59829)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29162
diff changeset
289 // FIXME: QApplication::font () does not return the monospace font,
6570a35920c4 improve detection of systems font size at first startup (bug #59829)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29162
diff changeset
290 // but the size should be probably near to the monospace font
6570a35920c4 improve detection of systems font size at first startup (bug #59829)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29162
diff changeset
291 QFont font = QApplication::font ();
6570a35920c4 improve detection of systems font size at first startup (bug #59829)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29162
diff changeset
292
29162
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
293 int font_size = font.pointSize ();
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
294 if (font_size == -1)
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
295 font_size = static_cast <int> (std::floor(font.pointSizeF ()));
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
296
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
297 // check for valid font size, otherwise take default 10
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
298 QString default_font_size = "10";
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
299 if (font_size > 0)
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
300 default_font_size = QString::number (font_size);
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
301
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
302 std::string env_default_font_size
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
303 = sys::env::getenv ("OCTAVE_DEFAULT_FONT_SIZE");
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
304
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
305 if (! env_default_font_size.empty ())
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
306 default_font_size = QString::fromStdString (env_default_font_size);
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
307
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
308 QStringList result;
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
309 result << default_family;
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
310 result << default_font_size;
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
311 return result;
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
312 }
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
313
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
314 void resource_manager::reload_settings (void)
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
315 {
29511
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
316 // Declare some empty options, which may be set at first startup for
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
317 // writing them into the newly created settings file
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
318 QString custom_editor;
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
319 QStringList def_font;
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
320
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
321 // Check whether the settings file does not yet exist
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
322 if (! QFile::exists (m_settings_file))
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
323 {
29511
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
324 // Get the default font (for terminal)
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
325 def_font = get_default_font ();
18004
b001d9e9fd17 add systems default monospace font for terminal and editor to default settings
Torsten <ttl@justmail.de>
parents: 17943
diff changeset
326
29511
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
327 // Get a custom editor defined as env variable
25821
bd473c0cc34b allow default font, size, and external editor to be set from environment
John W. Eaton <jwe@octave.org>
parents: 25702
diff changeset
328 std::string env_default_editor
bd473c0cc34b allow default font, size, and external editor to be set from environment
John W. Eaton <jwe@octave.org>
parents: 25702
diff changeset
329 = sys::env::getenv ("OCTAVE_DEFAULT_EDITOR");
bd473c0cc34b allow default font, size, and external editor to be set from environment
John W. Eaton <jwe@octave.org>
parents: 25702
diff changeset
330
bd473c0cc34b allow default font, size, and external editor to be set from environment
John W. Eaton <jwe@octave.org>
parents: 25702
diff changeset
331 if (! env_default_editor.empty ())
bd473c0cc34b allow default font, size, and external editor to be set from environment
John W. Eaton <jwe@octave.org>
parents: 25702
diff changeset
332 custom_editor = QString::fromStdString (env_default_editor);
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
333 }
15164
bc801a44bb1f follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents: 15161
diff changeset
334
27620
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
335 set_settings (m_settings_file);
26008
38a881b8fbec do not use courier new as default font (bug #54086)
Torsten <mttl@mailbox.org>
parents: 25821
diff changeset
336
29511
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
337 // Write some settings that were dynamically determined at first startup
26008
38a881b8fbec do not use courier new as default font (bug #54086)
Torsten <mttl@mailbox.org>
parents: 25821
diff changeset
338 if (m_settings)
29511
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
339 {
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
340 // Custom editor
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
341 if (! custom_editor.isEmpty ())
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
342 m_settings->setValue (global_custom_editor.key, custom_editor);
29162
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
343
29511
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
344 // Default monospace font for the terminal
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
345 if (def_font.count () > 1)
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
346 {
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
347 m_settings->setValue (cs_font.key, def_font[0]);
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
348 m_settings->setValue (cs_font_size.key, def_font[1].toInt ());
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
349 }
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
350
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
351 // Write the default monospace font into the settings for later use by
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
352 // console and editor as fallbacks of their font preferences.
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
353 m_settings->setValue (global_mono_font.key, get_default_font_family ());
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
354 }
29162
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
355 }
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
356
29498
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
357 #if defined (HAVE_QSCINTILLA)
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
358 int resource_manager::get_valid_lexer_styles (QsciLexer *lexer, int *styles)
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
359 {
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
360 int max_style = 0;
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
361 int actual_style = 0;
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
362 while (actual_style < ed_max_style_number && max_style < ed_max_lexer_styles)
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
363 {
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
364 if ((lexer->description (actual_style)) != "") // valid style
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
365 styles[max_style++] = actual_style;
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
366 actual_style++;
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
367 }
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
368 return max_style;
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
369 }
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
370 #endif
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
371
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
372 QFont resource_manager::copy_font_attributes (const QFont& attr,
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
373 const QFont& base) const
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
374 {
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
375 QFont dest (base);
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
376
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
377 dest.setBold (attr.bold ());
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
378 dest.setItalic (attr.italic ());
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
379 dest.setUnderline (attr.underline ());
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
380
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
381 return dest;
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
382 }
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
383
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
384 #if defined (HAVE_QSCINTILLA)
29162
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
385 void resource_manager::read_lexer_settings (QsciLexer *lexer,
29524
730cac3d6d5a allow reloading default colors and styles in the preferences dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29522
diff changeset
386 gui_settings *settings,
730cac3d6d5a allow reloading default colors and styles in the preferences dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29522
diff changeset
387 int mode, int def)
29162
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
388 {
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
389 // Test whether the settings for lexer is already contained in the
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
390 // given gui settings file. If yes, load them, if not copy them from the
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
391 // default settings file.
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
392 // This is useful when a new language support is implemented and the
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
393 // existing settings file is used (which is of course the common case).
29498
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
394 int m = mode;
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
395 if (m > 1)
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
396 m = 1;
29162
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
397
29498
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
398 QString group ("Scintilla" + settings_color_modes_ext[m]);
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
399
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
400 settings->beginGroup (group);
29162
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
401 settings->beginGroup (lexer->language ());
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
402
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
403 QStringList lexer_keys = settings->allKeys ();
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
404
29498
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
405 settings->endGroup ();
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
406 settings->endGroup ();
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
407
29524
730cac3d6d5a allow reloading default colors and styles in the preferences dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29522
diff changeset
408 if (def == settings_reload_default_colors_flag || lexer_keys.count () == 0)
29162
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
409 {
29524
730cac3d6d5a allow reloading default colors and styles in the preferences dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29522
diff changeset
410 // We have to reload the default values or no Lexer keys found:
29498
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
411 // If mode == 0, take all settings except font from default lexer
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
412 // If Mode == 1, take all settings except font from default lexer
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
413 // and convert the color by inverting the lightness
29162
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
414
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
415 // Get the default font
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
416 QStringList def_font = get_default_font ();
29498
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
417 QFont df (def_font[0], def_font[1].toInt ());
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
418 QFont dfa = copy_font_attributes (lexer->defaultFont (), df);
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
419 lexer->setDefaultFont (dfa);
26008
38a881b8fbec do not use courier new as default font (bug #54086)
Torsten <mttl@mailbox.org>
parents: 25821
diff changeset
420
29498
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
421 QColor c, p;
29162
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
422
29498
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
423 int styles[ed_max_lexer_styles]; // array for saving valid styles
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
424 int max_style = get_valid_lexer_styles (lexer, styles);
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
425
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
426 for (int i = 0; i < max_style; i++)
29162
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
427 {
29498
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
428 c = settings->get_color_value (QVariant (lexer->color (styles[i])), m);
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
429 lexer->setColor (c, styles[i]);
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
430 p = settings->get_color_value (QVariant (lexer->paper (styles[i])), m);
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
431 lexer->setPaper (p, styles[i]);
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
432 dfa = copy_font_attributes (lexer->font (styles[i]), df);
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
433 lexer->setFont (dfa, styles[i]);
29162
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
434 }
29498
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
435 // Set defaults last for not changing the defaults of the styles
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
436 lexer->setDefaultColor (lexer->color (styles[0]));
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
437 lexer->setDefaultPaper (lexer->paper (styles[0]));
29162
bb6bb306b8a6 copy lexer settings from default settings file for new languages
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29158
diff changeset
438
29524
730cac3d6d5a allow reloading default colors and styles in the preferences dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29522
diff changeset
439 // Write settings if not just reload the default values
730cac3d6d5a allow reloading default colors and styles in the preferences dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29522
diff changeset
440 if (def != settings_reload_default_colors_flag)
730cac3d6d5a allow reloading default colors and styles in the preferences dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29522
diff changeset
441 {
29608
dc171e0452cf libgui: Avoid dangling reference with QString::toStdString.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29524
diff changeset
442 const std::string group_str = group.toStdString ();
dc171e0452cf libgui: Avoid dangling reference with QString::toStdString.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29524
diff changeset
443 lexer->writeSettings (*settings, group_str.c_str ());
29524
730cac3d6d5a allow reloading default colors and styles in the preferences dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29522
diff changeset
444 settings->sync ();
730cac3d6d5a allow reloading default colors and styles in the preferences dialog
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29522
diff changeset
445 }
29498
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
446 }
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
447 else
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
448 {
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
449 // Found lexer keys, read the settings
29608
dc171e0452cf libgui: Avoid dangling reference with QString::toStdString.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29524
diff changeset
450 const std::string group_str = group.toStdString ();
29642
0562777c015f Fix error in dc171e0452cf (bug #60556).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29608
diff changeset
451 lexer->readSettings (*settings, group_str.c_str ());
29498
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
452 }
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
453 }
29498
5384bb4efc51 rearrange default lexer settings and add second color mode to gui editor
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29359
diff changeset
454 #endif
14804
a565c560e654 Replaced a lot of terminal interaction with events: Clearing, loading and saving workspace, running a file. Default location for saving a new file is now the current working directory. Fixed bad settings with a fresh installation of the GUI by providing a file with default settings and installing it when appropriate.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 14712
diff changeset
455
27620
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
456 void resource_manager::set_settings (const QString& file)
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
457 {
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
458 delete m_settings;
27611
0495b64288f7 use new gui_settings class instead of using QSettings directly
John W. Eaton <jwe@octave.org>
parents: 27583
diff changeset
459 m_settings = new gui_settings (file, QSettings::IniFormat);
17943
efe3e288a20c check the creation of settings object for success before starting the gui
Torsten <ttl@justmail.de>
parents: 17938
diff changeset
460
29511
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
461 if (m_settings->status () == QSettings::NoError)
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
462 {
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
463 // Test usability (force file to be really created)
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
464 m_settings->setValue ("dummy", 0);
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
465 m_settings->sync ();
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
466 }
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
467
26369
0249ba4c9589 Fix static analyzer detected V668 issues (bug #55347).
Andreas Weber <octave@josoansi.de>
parents: 26291
diff changeset
468 if (! (QFile::exists (m_settings->fileName ())
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
469 && m_settings->isWritable ()
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
470 && m_settings->status () == QSettings::NoError))
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
471 {
27276
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27272
diff changeset
472 QString msg
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27272
diff changeset
473 = QString (QT_TR_NOOP ("The settings file\n%1\n"
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27272
diff changeset
474 "does not exist and can not be created.\n"
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27272
diff changeset
475 "Make sure you have read and write permissions to\n%2\n\n"
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27272
diff changeset
476 "Octave GUI must be closed now."));
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27272
diff changeset
477
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27272
diff changeset
478 QMessageBox::critical (nullptr,
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27272
diff changeset
479 QString (QT_TR_NOOP ("Octave Critical Error")),
27620
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
480 msg.arg (get_settings_file ()).arg (get_settings_directory ()));
27276
7455523fdf01 style fixes: avoid breaking lines immediately after '('
John W. Eaton <jwe@octave.org>
parents: 27272
diff changeset
481
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
482 exit (1);
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
483 }
29511
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
484 else
2a4980872234 remove default-qt-settings
Torsten Lilge <ttl-octave@mailbox.org>
parents: 29498
diff changeset
485 m_settings->remove ("dummy"); // Remove test entry
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
486 }
15164
bc801a44bb1f follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents: 15161
diff changeset
487
27620
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
488 bool resource_manager::update_settings_key (const QString& old_key,
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
489 const QString& new_key)
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
490 {
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
491 if (m_settings->contains (old_key))
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
492 {
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
493 QVariant preference = m_settings->value (old_key);
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
494 m_settings->setValue (new_key, preference);
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
495 m_settings->remove (old_key);
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
496 return true;
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
497 }
24282
a669809df612 update wrong setting keys accidentally introduced into the settings file
Torsten <mttl@mailbox.org>
parents: 23219
diff changeset
498
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
499 return false;
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
500 }
24282
a669809df612 update wrong setting keys accidentally introduced into the settings file
Torsten <mttl@mailbox.org>
parents: 23219
diff changeset
501
27620
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
502 bool resource_manager::is_first_run (void) const
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
503 {
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
504 return ! QFile::exists (m_settings_file);
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
505 }
13668
421afeae929b Added a settings wizard that appears at first startup of Octave GUI.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13665
diff changeset
506
27620
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
507 void resource_manager::update_network_settings (void)
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
508 {
28418
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
509 if (! m_settings)
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
510 return;
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
511
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
512 QNetworkProxy proxy;
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
513
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
514 // Assume no proxy and empty proxy data
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
515 QNetworkProxy::ProxyType proxy_type = QNetworkProxy::NoProxy;
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
516 QString scheme;
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
517 QString host;
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
518 int port = 0;
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
519 QString user;
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
520 QString pass;
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
521 QUrl proxy_url = QUrl ();
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
522
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
523 if (m_settings->value (global_use_proxy.key, global_use_proxy.def).toBool ())
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
524 {
28418
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
525 // Use a proxy, collect all required information
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
526 QString proxy_type_string
30398
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 29642
diff changeset
527 = m_settings->value (global_proxy_type.key, global_proxy_type.def).toString ();
17930
ffdbb82a0c78 allow welcome wizard dialog to be canceled
John W. Eaton <jwe@octave.org>
parents: 17790
diff changeset
528
28418
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
529 // The proxy type for the Qt proxy settings
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
530 if (proxy_type_string == "Socks5Proxy")
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
531 proxy_type = QNetworkProxy::Socks5Proxy;
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
532 else if (proxy_type_string == "HttpProxy")
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
533 proxy_type = QNetworkProxy::HttpProxy;
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
534
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
535 // The proxy data from the settings
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
536 if (proxy_type_string == "HttpProxy"
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
537 || proxy_type_string == "Socks5Proxy")
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
538 {
28418
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
539 host = m_settings->value (global_proxy_host.key,
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
540 global_proxy_host.def).toString ();
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
541 port = m_settings->value (global_proxy_port.key,
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
542 global_proxy_port.def).toInt ();
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
543 user = m_settings->value (global_proxy_user.key,
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
544 global_proxy_user.def).toString ();
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
545 pass = m_settings->value (global_proxy_pass.key,
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
546 global_proxy_pass.def).toString ();
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
547 if (proxy_type_string == "HttpProxy")
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
548 scheme = "http";
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
549 else if (proxy_type_string == "Socks5Proxy")
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
550 scheme = "socks5";
15164
bc801a44bb1f follow Octave pattern for resource_manager singleton
John W. Eaton <jwe@octave.org>
parents: 15161
diff changeset
551
28418
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
552 QUrl env_var_url = QUrl ();
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
553 proxy_url.setScheme (scheme);
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
554 proxy_url.setHost (host);
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
555 proxy_url.setPort (port);
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
556 if (! user.isEmpty ())
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
557 proxy_url.setUserName (user);
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
558 if (! pass.isEmpty ())
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
559 proxy_url.setPassword (pass);
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
560 }
17930
ffdbb82a0c78 allow welcome wizard dialog to be canceled
John W. Eaton <jwe@octave.org>
parents: 17790
diff changeset
561
28422
02a5da73a157 Use std::array rather than std::vector in patch for (bug #54334).
Rik <rik@octave.org>
parents: 28421
diff changeset
562 // The proxy data from environment variables
28418
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
563 if (proxy_type_string == global_proxy_all_types.at (2))
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
564 {
28422
02a5da73a157 Use std::array rather than std::vector in patch for (bug #54334).
Rik <rik@octave.org>
parents: 28421
diff changeset
565 const std::array<std::string, 6> env_vars =
30398
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 29642
diff changeset
566 {
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 29642
diff changeset
567 "ALL_PROXY", "all_proxy",
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 29642
diff changeset
568 "HTTP_PROXY", "http_proxy",
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 29642
diff changeset
569 "HTTPS_PROXY", "https_proxy"
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 29642
diff changeset
570 };
28418
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
571
28421
c648cca864db Use Octave functions to get and set environment variables (bug #54334).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28418
diff changeset
572 unsigned int count = 0;
28422
02a5da73a157 Use std::array rather than std::vector in patch for (bug #54334).
Rik <rik@octave.org>
parents: 28421
diff changeset
573 while (! proxy_url.isValid () && count < env_vars.size ())
28418
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
574 {
28421
c648cca864db Use Octave functions to get and set environment variables (bug #54334).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28418
diff changeset
575 proxy_url = QUrl (QString::fromStdString
c648cca864db Use Octave functions to get and set environment variables (bug #54334).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28418
diff changeset
576 (sys::env::getenv (env_vars[count])));
28418
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
577 count++;
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
578 }
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
579
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
580 if (proxy_url.isValid ())
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
581 {
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
582 // Found an entry, get the data from the string
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
583 scheme = proxy_url.scheme ();
17930
ffdbb82a0c78 allow welcome wizard dialog to be canceled
John W. Eaton <jwe@octave.org>
parents: 17790
diff changeset
584
28418
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
585 if (scheme.contains ("socks", Qt::CaseInsensitive))
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
586 proxy_type = QNetworkProxy::Socks5Proxy;
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
587 else
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
588 proxy_type = QNetworkProxy::HttpProxy;
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
589
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
590 host = proxy_url.host ();
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
591 port = proxy_url.port ();
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
592 user = proxy_url.userName ();
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
593 pass = proxy_url.password ();
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
594 }
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
595 }
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
596 }
17930
ffdbb82a0c78 allow welcome wizard dialog to be canceled
John W. Eaton <jwe@octave.org>
parents: 17790
diff changeset
597
28421
c648cca864db Use Octave functions to get and set environment variables (bug #54334).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28418
diff changeset
598 // Set proxy for Qt framework
c648cca864db Use Octave functions to get and set environment variables (bug #54334).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28418
diff changeset
599 proxy.setType (proxy_type);
c648cca864db Use Octave functions to get and set environment variables (bug #54334).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28418
diff changeset
600 proxy.setHostName (host);
c648cca864db Use Octave functions to get and set environment variables (bug #54334).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28418
diff changeset
601 proxy.setPort (port);
c648cca864db Use Octave functions to get and set environment variables (bug #54334).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28418
diff changeset
602 proxy.setUser (user);
c648cca864db Use Octave functions to get and set environment variables (bug #54334).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28418
diff changeset
603 proxy.setPassword (pass);
28418
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
604
28421
c648cca864db Use Octave functions to get and set environment variables (bug #54334).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28418
diff changeset
605 QNetworkProxy::setApplicationProxy (proxy);
28418
e2e615821ef5 also use environment varaibles for network proxy settings (bug #54334)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 28300
diff changeset
606
28421
c648cca864db Use Octave functions to get and set environment variables (bug #54334).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28418
diff changeset
607 // Set proxy for curl library if not based on environment variables
c648cca864db Use Octave functions to get and set environment variables (bug #54334).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28418
diff changeset
608 std::string proxy_url_str = proxy_url.toString().toStdString ();
c648cca864db Use Octave functions to get and set environment variables (bug #54334).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28418
diff changeset
609 sys::env::putenv ("http_proxy", proxy_url_str);
c648cca864db Use Octave functions to get and set environment variables (bug #54334).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28418
diff changeset
610 sys::env::putenv ("HTTP_PROXY", proxy_url_str);
c648cca864db Use Octave functions to get and set environment variables (bug #54334).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28418
diff changeset
611 sys::env::putenv ("https_proxy", proxy_url_str);
c648cca864db Use Octave functions to get and set environment variables (bug #54334).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28418
diff changeset
612 sys::env::putenv ("HTTPS_PROXY", proxy_url_str);
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
613 }
13613
8728061cd0ec Icons are now maintained by the ResourceManager.
Jacob Dawid <jacob.dawid@googlemail.com>
parents: 13609
diff changeset
614
30810
b7058556854b allow to specify a fallback icon for icon selection in the gui
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30788
diff changeset
615 QIcon resource_manager::icon (const QString& icon_name, bool octave_only,
b7058556854b allow to specify a fallback icon for icon selection in the gui
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30788
diff changeset
616 const QString& icon_alt_name)
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
617 {
30788
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
618 if (octave_only)
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
619 return QIcon (global_icon_paths.at (ICON_THEME_OCTAVE) + icon_name + ".png");
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
620
30777
439eb9bd4c04 icon fallback concept without QIcon::fallbackSearchPaths (bug #62106)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30775
diff changeset
621 if (QIcon::hasThemeIcon (icon_name))
439eb9bd4c04 icon fallback concept without QIcon::fallbackSearchPaths (bug #62106)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30775
diff changeset
622 return QIcon (QIcon::fromTheme (icon_name));
30810
b7058556854b allow to specify a fallback icon for icon selection in the gui
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30788
diff changeset
623 else if ((! icon_alt_name.isEmpty ()) && QIcon::hasThemeIcon (icon_alt_name))
b7058556854b allow to specify a fallback icon for icon selection in the gui
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30788
diff changeset
624 return QIcon (QIcon::fromTheme (icon_alt_name));
30777
439eb9bd4c04 icon fallback concept without QIcon::fallbackSearchPaths (bug #62106)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30775
diff changeset
625
439eb9bd4c04 icon fallback concept without QIcon::fallbackSearchPaths (bug #62106)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30775
diff changeset
626 for (int i = 0; i < m_icon_fallbacks.length (); i++ )
439eb9bd4c04 icon fallback concept without QIcon::fallbackSearchPaths (bug #62106)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30775
diff changeset
627 {
439eb9bd4c04 icon fallback concept without QIcon::fallbackSearchPaths (bug #62106)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30775
diff changeset
628 QString icon_file (m_icon_fallbacks.at (i) + icon_name + ".png");
439eb9bd4c04 icon fallback concept without QIcon::fallbackSearchPaths (bug #62106)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30775
diff changeset
629 if (QFile (icon_file).exists ())
439eb9bd4c04 icon fallback concept without QIcon::fallbackSearchPaths (bug #62106)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30775
diff changeset
630 return QIcon (icon_file);
439eb9bd4c04 icon fallback concept without QIcon::fallbackSearchPaths (bug #62106)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30775
diff changeset
631 }
439eb9bd4c04 icon fallback concept without QIcon::fallbackSearchPaths (bug #62106)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30775
diff changeset
632
30788
c11d34f72b3c provide different icon sets for the GUI
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30777
diff changeset
633 //QIcon::setThemeName (current_theme);
30777
439eb9bd4c04 icon fallback concept without QIcon::fallbackSearchPaths (bug #62106)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30775
diff changeset
634 return QIcon ();
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
635 }
20774
5c5e085a1ae6 allow selecting an encoding when saving a file (bug #45688)
Torsten <ttl@justmail.de>
parents: 20428
diff changeset
636
25700
ba8227df92ae synchronize gui editor encoding when changing __mfile_encdoing__ (bug #54310)
Torsten <mttl@mailbox.org>
parents: 25460
diff changeset
637 // get a list of all available encodings
27620
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
638 void resource_manager::get_codecs (QStringList *codecs)
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
639 {
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
640 // get the codec name for each mib
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
641 QList<int> all_mibs = QTextCodec::availableMibs ();
27676
ea7d36e9f197 use standard C++ range-based for loops instead of Qt foreach macro
John W. Eaton <jwe@octave.org>
parents: 27672
diff changeset
642 for (auto mib : all_mibs)
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
643 {
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
644 QTextCodec *c = QTextCodec::codecForMib (mib);
25700
ba8227df92ae synchronize gui editor encoding when changing __mfile_encdoing__ (bug #54310)
Torsten <mttl@mailbox.org>
parents: 25460
diff changeset
645 codecs->append (c->name ().toUpper ());
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
646 }
26291
f73bcf1d0b5a make SYSTEM alias for locale encoding if not suported on windows (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26226
diff changeset
647
27272
9de4741a896e Do not ignore user preferences for locale encoding on non-Windows platforms.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27271
diff changeset
648 // Append SYSTEM
28118
f2789cae04f3 Don't use "codecForLocale" to get encoding for locale charset.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27957
diff changeset
649 codecs->append (QString ("SYSTEM (") +
f2789cae04f3 Don't use "codecForLocale" to get encoding for locale charset.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27957
diff changeset
650 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: 27957
diff changeset
651 QString (")"));
26291
f73bcf1d0b5a make SYSTEM alias for locale encoding if not suported on windows (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26226
diff changeset
652
f73bcf1d0b5a make SYSTEM alias for locale encoding if not suported on windows (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26226
diff changeset
653 // Clean up and sort list of codecs
25700
ba8227df92ae synchronize gui editor encoding when changing __mfile_encdoing__ (bug #54310)
Torsten <mttl@mailbox.org>
parents: 25460
diff changeset
654 codecs->removeDuplicates ();
28836
d0a64e67749e avoid deprecated qSort function
John W. Eaton <jwe@octave.org>
parents: 28777
diff changeset
655 std::sort (codecs->begin (), codecs->end ());
25700
ba8227df92ae synchronize gui editor encoding when changing __mfile_encdoing__ (bug #54310)
Torsten <mttl@mailbox.org>
parents: 25460
diff changeset
656 }
ba8227df92ae synchronize gui editor encoding when changing __mfile_encdoing__ (bug #54310)
Torsten <mttl@mailbox.org>
parents: 25460
diff changeset
657
ba8227df92ae synchronize gui editor encoding when changing __mfile_encdoing__ (bug #54310)
Torsten <mttl@mailbox.org>
parents: 25460
diff changeset
658 // initialize a given combo box with available text encodings
27620
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
659 void resource_manager::combo_encoding (QComboBox *combo,
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
660 const QString& current)
25700
ba8227df92ae synchronize gui editor encoding when changing __mfile_encdoing__ (bug #54310)
Torsten <mttl@mailbox.org>
parents: 25460
diff changeset
661 {
ba8227df92ae synchronize gui editor encoding when changing __mfile_encdoing__ (bug #54310)
Torsten <mttl@mailbox.org>
parents: 25460
diff changeset
662 QStringList all_codecs;
27620
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
663 get_codecs (&all_codecs);
20774
5c5e085a1ae6 allow selecting an encoding when saving a file (bug #45688)
Torsten <ttl@justmail.de>
parents: 20428
diff changeset
664
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
665 // get the value from the settings file if no current encoding is given
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
666 QString enc = current;
26186
b23954fd0ea6 fix encoding combo box for not supported default encoding (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26172
diff changeset
667
27929
265b386f8b20 maint: Use two spaces between sentences in code comments.
Rik <rik@octave.org>
parents: 27923
diff changeset
668 // Check for valid codec for the default. If this fails, "SYSTEM" (i.e.
28118
f2789cae04f3 Don't use "codecForLocale" to get encoding for locale charset.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27957
diff changeset
669 // locale_charset) will be chosen.
27929
265b386f8b20 maint: Use two spaces between sentences in code comments.
Rik <rik@octave.org>
parents: 27923
diff changeset
670 // FIXME: The default is "SYSTEM" on all platforms. So can this fallback
27272
9de4741a896e Do not ignore user preferences for locale encoding on non-Windows platforms.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27271
diff changeset
671 // logic be removed completely?
26186
b23954fd0ea6 fix encoding combo box for not supported default encoding (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26172
diff changeset
672 bool default_exists = false;
29055
8f07c47242b8 Show correct system encoding in drop-down list in editor settings.
Markus Mützel <markus.muetzel@gmx.de>
parents: 28836
diff changeset
673 bool show_system = false;
8f07c47242b8 Show correct system encoding in drop-down list in editor settings.
Markus Mützel <markus.muetzel@gmx.de>
parents: 28836
diff changeset
674 if (ed_default_enc.def.toString ().startsWith ("SYSTEM"))
8f07c47242b8 Show correct system encoding in drop-down list in editor settings.
Markus Mützel <markus.muetzel@gmx.de>
parents: 28836
diff changeset
675 show_system = true;
8f07c47242b8 Show correct system encoding in drop-down list in editor settings.
Markus Mützel <markus.muetzel@gmx.de>
parents: 28836
diff changeset
676 else if (QTextCodec::codecForName (ed_default_enc.def.toString ().toLatin1 ()))
26186
b23954fd0ea6 fix encoding combo box for not supported default encoding (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26172
diff changeset
677 default_exists = true;
b23954fd0ea6 fix encoding combo box for not supported default encoding (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26172
diff changeset
678
27271
a4416cd6bb4f Append name of actual encoding used if "SYSTEM" is selected.
Markus Mützel <markus.muetzel@gmx.de>
parents: 26959
diff changeset
679 QString default_enc =
28118
f2789cae04f3 Don't use "codecForLocale" to get encoding for locale charset.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27957
diff changeset
680 QString ("SYSTEM (") +
f2789cae04f3 Don't use "codecForLocale" to get encoding for locale charset.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27957
diff changeset
681 QString (octave_locale_charset_wrapper ()).toUpper () + QString (")");
f2789cae04f3 Don't use "codecForLocale" to get encoding for locale charset.
Markus Mützel <markus.muetzel@gmx.de>
parents: 27957
diff changeset
682
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
683 if (enc.isEmpty ())
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
684 {
27672
a36443e94f8a simplify gui_settings->value (PREF.key, PREF.def) calls
John W. Eaton <jwe@octave.org>
parents: 27662
diff changeset
685 enc = m_settings->value (ed_default_enc).toString ();
26186
b23954fd0ea6 fix encoding combo box for not supported default encoding (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26172
diff changeset
686
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
687 if (enc.isEmpty ()) // still empty?
26186
b23954fd0ea6 fix encoding combo box for not supported default encoding (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26172
diff changeset
688 {
b23954fd0ea6 fix encoding combo box for not supported default encoding (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26172
diff changeset
689 if (default_exists)
b23954fd0ea6 fix encoding combo box for not supported default encoding (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26172
diff changeset
690 enc = ed_default_enc.def.toString ();
b23954fd0ea6 fix encoding combo box for not supported default encoding (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26172
diff changeset
691 else
27271
a4416cd6bb4f Append name of actual encoding used if "SYSTEM" is selected.
Markus Mützel <markus.muetzel@gmx.de>
parents: 26959
diff changeset
692 enc = default_enc;
26186
b23954fd0ea6 fix encoding combo box for not supported default encoding (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26172
diff changeset
693 }
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
694 }
20774
5c5e085a1ae6 allow selecting an encoding when saving a file (bug #45688)
Torsten <ttl@justmail.de>
parents: 20428
diff changeset
695
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
696 // fill the combo box
27676
ea7d36e9f197 use standard C++ range-based for loops instead of Qt foreach macro
John W. Eaton <jwe@octave.org>
parents: 27672
diff changeset
697 for (const auto& c : all_codecs)
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
698 combo->addItem (c);
20774
5c5e085a1ae6 allow selecting an encoding when saving a file (bug #45688)
Torsten <ttl@justmail.de>
parents: 20428
diff changeset
699
26186
b23954fd0ea6 fix encoding combo box for not supported default encoding (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26172
diff changeset
700 // prepend the default item
b23954fd0ea6 fix encoding combo box for not supported default encoding (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26172
diff changeset
701 combo->insertSeparator (0);
29058
c76d3afe3d23 resource-manager.cc: Fix think-o in 8f07c47242b8.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29055
diff changeset
702 if (show_system || ! default_exists)
29055
8f07c47242b8 Show correct system encoding in drop-down list in editor settings.
Markus Mützel <markus.muetzel@gmx.de>
parents: 28836
diff changeset
703 combo->insertItem (0, default_enc);
8f07c47242b8 Show correct system encoding in drop-down list in editor settings.
Markus Mützel <markus.muetzel@gmx.de>
parents: 28836
diff changeset
704 else
26186
b23954fd0ea6 fix encoding combo box for not supported default encoding (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26172
diff changeset
705 combo->insertItem (0, ed_default_enc.def.toString ());
20774
5c5e085a1ae6 allow selecting an encoding when saving a file (bug #45688)
Torsten <ttl@justmail.de>
parents: 20428
diff changeset
706
26186
b23954fd0ea6 fix encoding combo box for not supported default encoding (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26172
diff changeset
707 // select the default or the current one
26226
3a90eff58fb5 editor encodings in prefs dialog only in uppercase (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26186
diff changeset
708 int idx = combo->findText (enc, Qt::MatchExactly);
26186
b23954fd0ea6 fix encoding combo box for not supported default encoding (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26172
diff changeset
709 if (idx >= 0)
b23954fd0ea6 fix encoding combo box for not supported default encoding (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26172
diff changeset
710 combo->setCurrentIndex (idx);
b23954fd0ea6 fix encoding combo box for not supported default encoding (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26172
diff changeset
711 else
b23954fd0ea6 fix encoding combo box for not supported default encoding (bug #55139)
Torsten <mttl@mailbox.org>
parents: 26172
diff changeset
712 combo->setCurrentIndex (0);
20774
5c5e085a1ae6 allow selecting an encoding when saving a file (bug #45688)
Torsten <ttl@justmail.de>
parents: 20428
diff changeset
713
24718
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
714 combo->setMaxVisibleItems (12);
ea1c88bd4430 move more GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
715 }
27556
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
716
30877
2bb539746697 consider env variables for location of temp files (bug #62215)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30810
diff changeset
717
27556
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
718 QPointer<QTemporaryFile>
27620
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
719 resource_manager::create_tmp_file (const QString& extension,
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
720 const QString& contents)
27556
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
721 {
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
722 QString ext = extension;
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
723 if ((! ext.isEmpty ()) && (! ext.startsWith ('.')))
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
724 ext = QString (".") + ext;
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
725
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
726 // Create octave dir within temp. dir
30882
b77b321f1ac5 use common function for getting temp dir in GUI (bug #62215)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 30877
diff changeset
727 QString tmp_dir = QString::fromStdString (sys::env::get_temp_directory ());
27556
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
728
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
729 // Create temp. file
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
730 QPointer<QTemporaryFile> tmp_file
27935
f1844e33f621 maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents: 27929
diff changeset
731 = new QTemporaryFile (tmp_dir + QDir::separator() +
f1844e33f621 maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents: 27929
diff changeset
732 "octave_XXXXXX" + ext, this);
27556
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
733
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
734 if (tmp_file->open ())
27935
f1844e33f621 maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents: 27929
diff changeset
735 {
f1844e33f621 maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents: 27929
diff changeset
736 tmp_file->write (contents.toUtf8 ());
f1844e33f621 maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents: 27929
diff changeset
737 tmp_file->close ();
27556
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
738
27935
f1844e33f621 maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents: 27929
diff changeset
739 m_temporary_files << tmp_file;
f1844e33f621 maint: Use Octave coding conventions in libgui/ directory.
Rik <rik@octave.org>
parents: 27929
diff changeset
740 }
27556
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
741
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
742 return tmp_file;
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
743 }
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
744
27620
45bb5bbaf291 don't use singleton pattern for resource manager in GUI
John W. Eaton <jwe@octave.org>
parents: 27611
diff changeset
745 void resource_manager::remove_tmp_file (QPointer<QTemporaryFile> tmp_file)
27556
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
746 {
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
747 if (tmp_file)
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
748 {
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
749 if (tmp_file->exists ())
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
750 tmp_file->remove ();
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
751
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
752 m_temporary_files.removeAll (tmp_file);
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
753 }
410622ac120f improve run selection from editor (bug #42705)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27412
diff changeset
754 }
20774
5c5e085a1ae6 allow selecting an encoding when saving a file (bug #45688)
Torsten <ttl@justmail.de>
parents: 20428
diff changeset
755 }