Mercurial > octave
view libgui/src/gui-settings.h @ 29487:00674bc1446d
provide second color mode for workspace view
* gui-preferences-ws.h: using the extensions for color preference keys
of different color modes, define the keys for new mode, define preference
for the selected modes
* gui-settings.cc: slightly change the way for inverting the lightness
of the default color
* gui-settings.h: update the text and tooltip of the color mode checkbox
* settings-dialog.cc (read_workspace_colors): add checkbox for second
color mode, connect trigger signal of this checkbox to new slot
update_workspace_colors, use new method color_value for reading colors
from the settings;
(update_workspace_colors): slot for updating the current color picker
colors depending on selected color mode;
(write_workspace_colors): use new method set_color_value for writing
colors to settings depending on color mode;
(read_terminal_colors): read integer from color mode settings, not boolean;
(write_terminal_colors): test if check box was really found
* settings-dialog.h: new slot update_workspace_colors
* workspace-model.cc (notice_settings): get colors with new method
color_value from gui_settings
author | Torsten Lilge <ttl-octave@mailbox.org> |
---|---|
date | Sat, 03 Apr 2021 08:26:30 +0200 |
parents | bed2fd5b8263 |
children | 5384bb4efc51 |
line wrap: on
line source
//////////////////////////////////////////////////////////////////////// // // Copyright (C) 2019-2021 The Octave Project Developers // // See the file COPYRIGHT.md in the top-level directory of this // distribution or <https://octave.org/copyright/>. // // This file is part of Octave. // // Octave is free software: you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Octave is distributed in the hope that it will be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Octave; see the file COPYING. If not, see // <https://www.gnu.org/licenses/>. // //////////////////////////////////////////////////////////////////////// #if ! defined (octave_gui_settings_h) #define octave_gui_settings_h 1 #include <QSettings> #include "gui-preferences.h" namespace octave { class gui_settings : public QSettings { Q_OBJECT public: gui_settings (const QString& file_name, QSettings::Format format, QObject *parent = nullptr) : QSettings (file_name, format, parent) { } gui_settings (QSettings::Format format, QSettings::Scope scope, const QString& organization, const QString& application = QString (), QObject *parent = nullptr) : QSettings (format, scope, organization, application, parent) { } // No copying! gui_settings (const gui_settings&) = delete; gui_settings& operator = (const gui_settings&) = delete; ~gui_settings (void) = default; using QSettings::value; QVariant value (const gui_pref& pref) const { if (pref.ignore) return pref.def; // ignore the current pref and always use default return value (pref.key, pref.def); } /*! Reading a color from the gui_settings taking possible color modes into account. The default value for a second color mode @p mode=1 is deterimined from the standard default value @p mode=0 by inverting the lightness \f{eqnarray*}{ H_1 &=& H_0\\ S_1 &=& S_0\\ L_1 &=& 1.0 - L_0 \f} @param pref gui preference (key string, default value); the default value can be given by QColor or QPalette::ColorRole @param mode Color mode (currently 0 or 1, default is 0) @return Color as QColor */ QColor color_value (const gui_pref& pref, int mode = 0) const; /*! Writing a color to the gui_settings taking possible color modes into account. When @p mode is not zero (standard mode), the extension related to the mode is appended to the settings key string @param pref gui preference where the color should be written @param color QColor to write to the settings @param mode Color mode (currently 0 or 1, default is 0) */ void set_color_value (const gui_pref& pref, const QColor& color, int mode = 0); QString sc_value (const sc_pref& pref) const; QKeySequence sc_def_value (const sc_pref& pref) const; }; } // Some strings used several times in the settings // Other color schemes (currently one extra, but possibly more in the future) const QString settings_color_modes = QT_TRANSLATE_NOOP ( "octave::settings_dialog", "Second color mode (light/dark)"); const QString settings_color_modes_tooltip = QT_TRANSLATE_NOOP ( "octave::settings_dialog", "Switches to another set of colors.\n" "Useful for defining a dark/light mode.\n" "Discards non-applied current changes!"); const QStringList settings_color_modes_ext (QStringList () << "" << "_2"); #endif