| @@ -7,7 +7,7 @@ | |||
| <x>0</x> | |||
| <y>0</y> | |||
| <width>612</width> | |||
| <height>572</height> | |||
| <height>620</height> | |||
| </rect> | |||
| </property> | |||
| <property name="minimumSize"> | |||
| @@ -2711,6 +2711,13 @@ | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item> | |||
| <widget class="QCheckBox" name="ch_main_system_icons"> | |||
| <property name="text"> | |||
| <string>Use system/desktop-theme icons (needs restart)</string> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item> | |||
| <widget class="QCheckBox" name="ch_exp_load_lib_global"> | |||
| <property name="text"> | |||
| @@ -2,7 +2,7 @@ | |||
| # -*- coding: utf-8 -*- | |||
| # Carla plugin database code | |||
| # Copyright (C) 2011-2020 Filipe Coelho <falktx@falktx.com> | |||
| # Copyright (C) 2011-2021 Filipe Coelho <falktx@falktx.com> | |||
| # | |||
| # This program is free software; you can redistribute it and/or | |||
| # modify it under the terms of the GNU General Public License as | |||
| @@ -1003,7 +1003,7 @@ class SearchPluginsThread(QThread): | |||
| # Plugin Refresh Dialog | |||
| class PluginRefreshW(QDialog): | |||
| def __init__(self, parent, host): | |||
| def __init__(self, parent, host, useSystemIcons): | |||
| QDialog.__init__(self, parent) | |||
| self.host = host | |||
| self.ui = ui_carla_refresh.Ui_PluginRefreshW() | |||
| @@ -1019,8 +1019,22 @@ class PluginRefreshW(QDialog): | |||
| hasWin64 = os.path.exists(os.path.join(self.host.pathBinaries, "carla-discovery-win64.exe")) | |||
| self.fThread = SearchPluginsThread(self, host.pathBinaries) | |||
| self.fIconYes = QPixmap(":/16x16/dialog-ok-apply.svgz") | |||
| self.fIconNo = QPixmap(":/16x16/dialog-error.svgz") | |||
| # ------------------------------------------------------------------------------------------------------------- | |||
| # Set-up Icons | |||
| if useSystemIcons: | |||
| self.ui.b_start.setIcon(getIcon('arrow-right', 16, 'svgz')) | |||
| self.ui.b_close.setIcon(getIcon('window-close', 16, 'svgz')) | |||
| if QT_VERSION >= 0x50600: | |||
| size = int(16 * self.devicePixelRatioF()) | |||
| else: | |||
| size = 16 | |||
| self.fIconYes = QPixmap(getIcon('dialog-ok-apply', 16, 'svgz').pixmap(size)) | |||
| self.fIconNo = QPixmap(getIcon('dialog-error', 16, 'svgz').pixmap(size)) | |||
| else: | |||
| self.fIconYes = QPixmap(":/16x16/dialog-ok-apply.svgz") | |||
| self.fIconNo = QPixmap(":/16x16/dialog-error.svgz") | |||
| # ------------------------------------------------------------------------------------------------------------- | |||
| # Set-up GUI | |||
| @@ -1387,7 +1401,7 @@ class PluginDatabaseW(QDialog): | |||
| TABLEWIDGET_ITEM_MAKER = 3 | |||
| TABLEWIDGET_ITEM_BINARY = 4 | |||
| def __init__(self, parent, host): | |||
| def __init__(self, parent, host, useSystemIcons): | |||
| QDialog.__init__(self, parent) | |||
| self.host = host | |||
| self.ui = ui_carla_database.Ui_PluginDatabaseW() | |||
| @@ -1401,6 +1415,7 @@ class PluginDatabaseW(QDialog): | |||
| self.fRealParent = parent | |||
| self.fFavoritePlugins = [] | |||
| self.fFavoritePluginsChanged = False | |||
| self.fUseSystemIcons = useSystemIcons | |||
| self.fTrYes = self.tr("Yes") | |||
| self.fTrNo = self.tr("No") | |||
| @@ -1459,6 +1474,16 @@ class PluginDatabaseW(QDialog): | |||
| self.ui.ch_bridged_wine.setEnabled(False) | |||
| self.ui.ch_bridged_wine.setVisible(False) | |||
| # ---------------------------------------------------------------------------------------------------- | |||
| # Set-up Icons | |||
| if useSystemIcons: | |||
| self.ui.b_add.setIcon(getIcon('list-add', 16, 'svgz')) | |||
| self.ui.b_cancel.setIcon(getIcon('dialog-cancel', 16, 'svgz')) | |||
| self.ui.b_clear_filters.setIcon(getIcon('edit-clear', 16, 'svgz')) | |||
| self.ui.b_refresh.setIcon(getIcon('view-refresh', 16, 'svgz')) | |||
| self.ui.tableWidget.horizontalHeaderItem(self.TABLEWIDGET_ITEM_FAVORITE).setIcon(getIcon('bookmarks', 16, 'svgz')) | |||
| # ---------------------------------------------------------------------------------------------------- | |||
| # Set-up connections | |||
| @@ -1656,7 +1681,7 @@ class PluginDatabaseW(QDialog): | |||
| @pyqtSlot() | |||
| def slot_refreshPlugins(self): | |||
| if PluginRefreshW(self, self.host).exec_(): | |||
| if PluginRefreshW(self, self.host, self.fUseSystemIcons).exec_(): | |||
| self._reAddPlugins() | |||
| if self.fRealParent: | |||
| @@ -2381,7 +2406,8 @@ if __name__ == '__main__': | |||
| host = _initHost("Carla2-Database", libPrefix, False, False, False) | |||
| _loadHostSettings(host) | |||
| gui = PluginDatabaseW(None, host) | |||
| gui = PluginDatabaseW(None, host, True) | |||
| #gui = PluginRefreshW(None, host, True) | |||
| gui.show() | |||
| app.exit_exec() | |||
| @@ -2,7 +2,7 @@ | |||
| # -*- coding: utf-8 -*- | |||
| # Carla host code | |||
| # Copyright (C) 2011-2020 Filipe Coelho <falktx@falktx.com> | |||
| # Copyright (C) 2011-2021 Filipe Coelho <falktx@falktx.com> | |||
| # | |||
| # This program is free software; you can redistribute it and/or | |||
| # modify it under the terms of the GNU General Public License as | |||
| @@ -449,6 +449,32 @@ class HostWindow(QMainWindow): | |||
| self.setupCanvas() | |||
| # ---------------------------------------------------------------------------------------------------- | |||
| # Set-up Icons | |||
| if self.fSavedSettings[CARLA_KEY_MAIN_SYSTEM_ICONS]: | |||
| self.ui.act_file_connect.setIcon(getIcon('network-connect', 16, 'svgz')) | |||
| self.ui.act_file_refresh.setIcon(getIcon('view-refresh', 16, 'svgz')) | |||
| self.ui.act_file_new.setIcon(getIcon('document-new', 16, 'svgz')) | |||
| self.ui.act_file_open.setIcon(getIcon('document-open', 16, 'svgz')) | |||
| self.ui.act_file_save.setIcon(getIcon('document-save', 16, 'svgz')) | |||
| self.ui.act_file_save_as.setIcon(getIcon('document-save-as', 16, 'svgz')) | |||
| self.ui.act_file_quit.setIcon(getIcon('application-exit', 16, 'svgz')) | |||
| self.ui.act_engine_start.setIcon(getIcon('media-playback-start', 16, 'svgz')) | |||
| self.ui.act_engine_stop.setIcon(getIcon('media-playback-stop', 16, 'svgz')) | |||
| self.ui.act_engine_panic.setIcon(getIcon('dialog-warning', 16, 'svgz')) | |||
| self.ui.act_engine_config.setIcon(getIcon('configure', 16, 'svgz')) | |||
| self.ui.act_plugin_add.setIcon(getIcon('list-add', 16, 'svgz')) | |||
| self.ui.act_plugin_add_jack.setIcon(getIcon('list-add', 16, 'svgz')) | |||
| self.ui.act_plugin_remove_all.setIcon(getIcon('edit-delete', 16, 'svgz')) | |||
| self.ui.act_canvas_arrange.setIcon(getIcon('view-sort-ascending', 16, 'svgz')) | |||
| self.ui.act_canvas_refresh.setIcon(getIcon('view-refresh', 16, 'svgz')) | |||
| self.ui.act_canvas_zoom_fit.setIcon(getIcon('zoom-fit-best', 16, 'svgz')) | |||
| self.ui.act_canvas_zoom_in.setIcon(getIcon('zoom-in', 16, 'svgz')) | |||
| self.ui.act_canvas_zoom_out.setIcon(getIcon('zoom-out', 16, 'svgz')) | |||
| self.ui.act_canvas_zoom_100.setIcon(getIcon('zoom-original', 16, 'svgz')) | |||
| self.ui.act_settings_configure.setIcon(getIcon('configure', 16, 'svgz')) | |||
| # ---------------------------------------------------------------------------------------------------- | |||
| # Connect actions to functions | |||
| @@ -1145,7 +1171,8 @@ class HostWindow(QMainWindow): | |||
| def showAddPluginDialog(self): | |||
| if self.fPluginDatabaseDialog is None: | |||
| self.fPluginDatabaseDialog = PluginDatabaseW(self.fParentOrSelf, self.host) | |||
| self.fPluginDatabaseDialog = PluginDatabaseW(self.fParentOrSelf, self.host, | |||
| self.fSavedSettings[CARLA_KEY_MAIN_SYSTEM_ICONS]) | |||
| dialog = self.fPluginDatabaseDialog | |||
| ret = dialog.exec_() | |||
| @@ -1912,6 +1939,7 @@ class HostWindow(QMainWindow): | |||
| CARLA_KEY_MAIN_PROJECT_FOLDER: settings.value(CARLA_KEY_MAIN_PROJECT_FOLDER, CARLA_DEFAULT_MAIN_PROJECT_FOLDER, str), | |||
| CARLA_KEY_MAIN_CONFIRM_EXIT: settings.value(CARLA_KEY_MAIN_CONFIRM_EXIT, CARLA_DEFAULT_MAIN_CONFIRM_EXIT, bool), | |||
| CARLA_KEY_MAIN_REFRESH_INTERVAL: settings.value(CARLA_KEY_MAIN_REFRESH_INTERVAL, CARLA_DEFAULT_MAIN_REFRESH_INTERVAL, int), | |||
| CARLA_KEY_MAIN_SYSTEM_ICONS: settings.value(CARLA_KEY_MAIN_SYSTEM_ICONS, CARLA_DEFAULT_MAIN_SYSTEM_ICONS, bool), | |||
| CARLA_KEY_MAIN_EXPERIMENTAL: settings.value(CARLA_KEY_MAIN_EXPERIMENTAL, CARLA_DEFAULT_MAIN_EXPERIMENTAL, bool), | |||
| CARLA_KEY_CANVAS_THEME: settings.value(CARLA_KEY_CANVAS_THEME, CARLA_DEFAULT_CANVAS_THEME, str), | |||
| CARLA_KEY_CANVAS_SIZE: settings.value(CARLA_KEY_CANVAS_SIZE, CARLA_DEFAULT_CANVAS_SIZE, str), | |||
| @@ -2,7 +2,7 @@ | |||
| # -*- coding: utf-8 -*- | |||
| # Carla settings code | |||
| # Copyright (C) 2011-2020 Filipe Coelho <falktx@falktx.com> | |||
| # Copyright (C) 2011-2021 Filipe Coelho <falktx@falktx.com> | |||
| # | |||
| # This program is free software; you can redistribute it and/or | |||
| # modify it under the terms of the GNU General Public License as | |||
| @@ -55,6 +55,7 @@ from carla_shared import ( | |||
| CARLA_KEY_MAIN_REFRESH_INTERVAL, | |||
| CARLA_KEY_MAIN_CONFIRM_EXIT, | |||
| CARLA_KEY_MAIN_SHOW_LOGS, | |||
| CARLA_KEY_MAIN_SYSTEM_ICONS, | |||
| CARLA_KEY_MAIN_EXPERIMENTAL, | |||
| CARLA_KEY_CANVAS_THEME, | |||
| CARLA_KEY_CANVAS_SIZE, | |||
| @@ -113,6 +114,7 @@ from carla_shared import ( | |||
| CARLA_DEFAULT_MAIN_REFRESH_INTERVAL, | |||
| CARLA_DEFAULT_MAIN_CONFIRM_EXIT, | |||
| CARLA_DEFAULT_MAIN_SHOW_LOGS, | |||
| CARLA_DEFAULT_MAIN_SYSTEM_ICONS, | |||
| #CARLA_DEFAULT_MAIN_EXPERIMENTAL, | |||
| CARLA_DEFAULT_CANVAS_THEME, | |||
| CARLA_DEFAULT_CANVAS_SIZE, | |||
| @@ -643,6 +645,9 @@ class CarlaSettingsW(QDialog): | |||
| self.ui.ch_main_confirm_exit.setChecked( | |||
| settings.value(CARLA_KEY_MAIN_CONFIRM_EXIT, CARLA_DEFAULT_MAIN_CONFIRM_EXIT, bool)) | |||
| self.ui.ch_main_system_icons.setChecked( | |||
| settings.value(CARLA_KEY_MAIN_SYSTEM_ICONS, CARLA_DEFAULT_MAIN_SYSTEM_ICONS, bool)) | |||
| # ------------------------------------------------------------------------------------------------------------- | |||
| # Canvas | |||
| @@ -907,6 +912,7 @@ class CarlaSettingsW(QDialog): | |||
| settings.setValue(CARLA_KEY_MAIN_USE_PRO_THEME, self.ui.ch_main_theme_pro.isChecked()) | |||
| settings.setValue(CARLA_KEY_MAIN_PRO_THEME_COLOR, self.ui.cb_main_theme_color.currentText()) | |||
| settings.setValue(CARLA_KEY_MAIN_REFRESH_INTERVAL, self.ui.sb_main_refresh_interval.value()) | |||
| settings.setValue(CARLA_KEY_MAIN_SYSTEM_ICONS, self.ui.ch_main_system_icons.isChecked()) | |||
| # ------------------------------------------------------------------------------------------------------------- | |||
| # Canvas | |||
| @@ -1269,6 +1275,7 @@ class CarlaSettingsW(QDialog): | |||
| self.ui.ch_exp_prevent_bad_behaviour.setChecked(CARLA_DEFAULT_EXPERIMENTAL_PREVENT_BAD_BEHAVIOUR) | |||
| # Temporary, until stable | |||
| self.ui.ch_main_system_icons.setChecked(CARLA_DEFAULT_MAIN_SYSTEM_ICONS) | |||
| self.ui.cb_canvas_fancy_eyecandy.setChecked(CARLA_DEFAULT_CANVAS_FANCY_EYE_CANDY) | |||
| self.ui.cb_canvas_use_opengl.setChecked(CARLA_DEFAULT_CANVAS_USE_OPENGL and | |||
| self.ui.cb_canvas_use_opengl.isEnabled()) | |||
| @@ -2,7 +2,7 @@ | |||
| # -*- coding: utf-8 -*- | |||
| # Common Carla code | |||
| # Copyright (C) 2011-2020 Filipe Coelho <falktx@falktx.com> | |||
| # Copyright (C) 2011-2021 Filipe Coelho <falktx@falktx.com> | |||
| # | |||
| # This program is free software; you can redistribute it and/or | |||
| # modify it under the terms of the GNU General Public License as | |||
| @@ -184,6 +184,7 @@ CARLA_KEY_MAIN_PRO_THEME_COLOR = "Main/ProThemeColor" # str | |||
| CARLA_KEY_MAIN_REFRESH_INTERVAL = "Main/RefreshInterval" # int | |||
| CARLA_KEY_MAIN_CONFIRM_EXIT = "Main/ConfirmExit" # bool | |||
| CARLA_KEY_MAIN_SHOW_LOGS = "Main/ShowLogs" # bool | |||
| CARLA_KEY_MAIN_SYSTEM_ICONS = "Main/SystemIcons" # bool | |||
| CARLA_KEY_MAIN_EXPERIMENTAL = "Main/Experimental" # bool | |||
| CARLA_KEY_CANVAS_THEME = "Canvas/Theme" # str | |||
| @@ -259,6 +260,7 @@ CARLA_DEFAULT_MAIN_PRO_THEME_COLOR = "Black" | |||
| CARLA_DEFAULT_MAIN_REFRESH_INTERVAL = 20 | |||
| CARLA_DEFAULT_MAIN_CONFIRM_EXIT = True | |||
| CARLA_DEFAULT_MAIN_SHOW_LOGS = bool(not WINDOWS) | |||
| CARLA_DEFAULT_MAIN_SYSTEM_ICONS = False | |||
| CARLA_DEFAULT_MAIN_EXPERIMENTAL = False | |||
| # Canvas | |||
| @@ -622,8 +624,8 @@ def toList(value): | |||
| # ------------------------------------------------------------------------------------------------------------ | |||
| # Get Icon from user theme, using our own as backup (Oxygen) | |||
| def getIcon(icon, size = 16): | |||
| return QIcon.fromTheme(icon, QIcon(":/%ix%i/%s.png" % (size, size, icon))) | |||
| def getIcon(icon, size, qrcformat): | |||
| return QIcon.fromTheme(icon, QIcon(":/%ix%i/%s.%s" % (size, size, icon, qrcformat))) | |||
| # ------------------------------------------------------------------------------------------------------------ | |||
| # Handle some basic command-line arguments shared between all carla variants | |||