@@ -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 | |||