view libgui/src/resource-manager.h @ 30788:c11d34f72b3c

provide different icon sets for the GUI * FigureWindow.cc (FigureWindow): rename icon path used for figure icons * ToolBarButton.cc (get_icon): dito * libgui/src/cursors: moved directory into libgui/src/icons/cursors * gui-preferences-global.h: update enum for icon related string list, renamed global_icon_fallback_paths into global_icon_paths and extended by cursors directory, string lists for icon themes and the related names * libgui/src/icons/octave/128x128/document-open.png * libgui/src/icons/octave/128x128/folder-new.png * libgui/src/icons/octave/128x128/folder-up.png * libgui/src/icons/octave/128x128/folder.png * libgui/src/icons/octave/128x128/user-home.png: moved from tango theme * libgui/src/icons/octave/scalable/document-open.svg * libgui/src/icons/octave/scalable/folder-new.svg * libgui/src/icons/octave/scalable/folder-up.svg * libgui/src/icons/octave/scalable/folder.svg * libgui/src/icons/octave/scalable/user-home.svg: moved from tango theme * libgui/src/icons/tango/128x128/document-open.png * libgui/src/icons/tango/128x128/folder-new.png * libgui/src/icons/tango/128x128/folder-up.png * libgui/src/icons/tango/128x128/folder.png * libgui/src/icons/tango/128x128/user-home.png: recovered tango versions * libgui/src/icons/tango/scalable/document-open.svg * libgui/src/icons/tango/scalable/folder-new.svg * libgui/src/icons/tango/scalable/folder-up.svg * libgui/src/icons/tango/scalable/folder.svg * libgui/src/icons/tango/scalable/user-home.svg: recovered tango versions * module.mk: updated according to changed icon files * octave-dock-widget.cc (label_dock_widget): use second boolean argument of ressource_manager::icon for icons only available in the octave theme and using new icon search path for octave only icons in style sheets; (octave_dock_widget, make_window, make_widget, set_style): dito; * resource-manager.cc (config_icon_theme): check new and old icon theme preference and transfer old into new if required, add fallbacks search paths depending on current theme; (icon): look for icon in current theme, if not existing, go through the defined icon search paths, use second boolean argument for icons that are only available in the octave icon theme like widget-xyz icnos * resource-manager.h: updated secon boolean argument of icon function * resource.qrc: update icon file names and paths * settings-dialog.cc (settings_dialog): fill new combo box with names of available icon themes; (write_changed_settings): write current index of combo box in pref file * settings-dialog.ui: replaced check box for system icon theme by combo box for icon themes
author Torsten Lilge <ttl-octave@mailbox.org>
date Sun, 27 Feb 2022 20:21:12 +0100
parents 439eb9bd4c04
children 00ccd10a09e0
line wrap: on
line source

////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2011-2022 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_resource_manager_h)
#define octave_resource_manager_h 1

#include <QComboBox>
#include <QIcon>
#include <QPointer>
#if defined (HAVE_QSCINTILLA)
#  include <Qsci/qscilexer.h>
#endif
#include <QTranslator>
#include <QTemporaryFile>

#include "gui-settings.h"

namespace octave
{
  class resource_manager : public QObject
  {
    Q_OBJECT

  protected:

  public:

    resource_manager (void);

    // No copying!

    resource_manager (const resource_manager&) = delete;

    resource_manager& operator = (const resource_manager&) = delete;

    ~resource_manager ();

    QString get_gui_translation_dir (void);

    void config_translators (QTranslator *qt_tr, QTranslator *qsci_tr,
                             QTranslator *gui_tr);
    void config_icon_theme (void);

    gui_settings * get_settings (void) const;

    gui_settings * get_default_settings (void) const;

    QString get_settings_directory (void);

    QString get_settings_file (void);

    QString get_default_font_family (void);

    QStringList get_default_font (void);

    QPointer<QTemporaryFile>
    create_tmp_file (const QString& extension = QString (),
                     const QString& contents = QString ());

    void remove_tmp_file (QPointer<QTemporaryFile> tmp_file);

    void reload_settings (void);

#if defined (HAVE_QSCINTILLA)
    int get_valid_lexer_styles (QsciLexer *lexer, int *styles);
    void read_lexer_settings (QsciLexer *lexer, gui_settings *settings,
                              int mode = 0, int def = 0);
#endif

    void set_settings (const QString& file);

    bool update_settings_key (const QString& new_key, const QString& old_key);

    bool is_first_run (void) const;

    void update_network_settings (void);

    QIcon icon (const QString& icon_name, bool ocatve_only = false);

    void get_codecs (QStringList *codecs);

    void combo_encoding (QComboBox *combo, const QString& current = QString ());

  private:

    /*!
     * Copys the attributes bold, italic and underline from QFont
     * @p attr to the font @p base and returns the result without
     * changing @p base,
     * @param attr QFont with the desired attributes
     * @param base QFont with desired family and size
    */
    QFont copy_font_attributes (const QFont& attr, const QFont& base) const;

    QString m_settings_directory;

    QString m_settings_file;

    gui_settings *m_settings;

    gui_settings *m_default_settings;

    QList<QTemporaryFile *> m_temporary_files;

    QStringList m_icon_fallbacks;
  };
}

#endif