| @@ -261,6 +261,71 @@ | |||
| </layout> | |||
| </widget> | |||
| </item> | |||
| <item> | |||
| <widget class="QGroupBox" name="group_main_misc"> | |||
| <property name="title"> | |||
| <string>Interface</string> | |||
| </property> | |||
| <layout class="QGridLayout" name="gridLayout_4"> | |||
| <item row="3" column="1"> | |||
| <widget class="QSpinBox" name="sb_main_refresh_interval"> | |||
| <property name="suffix"> | |||
| <string> ms</string> | |||
| </property> | |||
| <property name="minimum"> | |||
| <number>10</number> | |||
| </property> | |||
| <property name="maximum"> | |||
| <number>1000</number> | |||
| </property> | |||
| <property name="value"> | |||
| <number>250</number> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item row="3" column="2"> | |||
| <spacer name="horizontalSpacer_12"> | |||
| <property name="orientation"> | |||
| <enum>Qt::Horizontal</enum> | |||
| </property> | |||
| <property name="sizeType"> | |||
| <enum>QSizePolicy::Fixed</enum> | |||
| </property> | |||
| <property name="sizeHint" stdset="0"> | |||
| <size> | |||
| <width>130</width> | |||
| <height>10</height> | |||
| </size> | |||
| </property> | |||
| </spacer> | |||
| </item> | |||
| <item row="3" column="0"> | |||
| <widget class="QLabel" name="label_main_refresh_interval"> | |||
| <property name="text"> | |||
| <string>Interface refresh interval:</string> | |||
| </property> | |||
| <property name="alignment"> | |||
| <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item row="1" column="0" colspan="3"> | |||
| <widget class="QCheckBox" name="ch_main_manage_uis"> | |||
| <property name="text"> | |||
| <string>Make plugin UIs appear on top of Carla (needs restart)</string> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item row="2" column="0" colspan="3"> | |||
| <widget class="QCheckBox" name="ch_main_use_custom_skins"> | |||
| <property name="text"> | |||
| <string>Use custom plugin slot skins</string> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| </layout> | |||
| </widget> | |||
| </item> | |||
| <item> | |||
| <widget class="QGroupBox" name="group_main_theme"> | |||
| <property name="title"> | |||
| @@ -323,64 +388,6 @@ | |||
| </layout> | |||
| </widget> | |||
| </item> | |||
| <item> | |||
| <widget class="QGroupBox" name="group_main_misc"> | |||
| <property name="title"> | |||
| <string>Misc</string> | |||
| </property> | |||
| <layout class="QGridLayout" name="gridLayout_4"> | |||
| <item row="1" column="0"> | |||
| <widget class="QLabel" name="label_main_refresh_interval"> | |||
| <property name="text"> | |||
| <string>GUI Refresh interval:</string> | |||
| </property> | |||
| <property name="alignment"> | |||
| <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item row="1" column="1"> | |||
| <widget class="QSpinBox" name="sb_main_refresh_interval"> | |||
| <property name="suffix"> | |||
| <string> ms</string> | |||
| </property> | |||
| <property name="minimum"> | |||
| <number>10</number> | |||
| </property> | |||
| <property name="maximum"> | |||
| <number>1000</number> | |||
| </property> | |||
| <property name="value"> | |||
| <number>250</number> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item row="1" column="2"> | |||
| <spacer name="horizontalSpacer_12"> | |||
| <property name="orientation"> | |||
| <enum>Qt::Horizontal</enum> | |||
| </property> | |||
| <property name="sizeType"> | |||
| <enum>QSizePolicy::Fixed</enum> | |||
| </property> | |||
| <property name="sizeHint" stdset="0"> | |||
| <size> | |||
| <width>130</width> | |||
| <height>10</height> | |||
| </size> | |||
| </property> | |||
| </spacer> | |||
| </item> | |||
| <item row="0" column="0" colspan="3"> | |||
| <widget class="QCheckBox" name="cb_main_use_custom_skins"> | |||
| <property name="text"> | |||
| <string>Use custom plugin slot skins</string> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| </layout> | |||
| </widget> | |||
| </item> | |||
| <item> | |||
| <spacer name="verticalSpacer"> | |||
| <property name="orientation"> | |||
| @@ -1216,6 +1216,7 @@ class CarlaHostMeta(object): | |||
| self.preferPluginBridges = False | |||
| self.preferUIBridges = False | |||
| self.preventBadBehaviour = False | |||
| self.manageUIs = False | |||
| self.uisAlwaysOnTop = False | |||
| self.maxParameters = 0 | |||
| self.uiBridgesTimeout = 0 | |||
| @@ -1842,7 +1842,7 @@ class HostWindow(QMainWindow): | |||
| QMainWindow.showEvent(self, event) | |||
| # set our gui as parent for all plugins UIs | |||
| if not (self.host.isControl or self.host.isPlugin): | |||
| if self.host.manageUIs and not (self.host.isControl or self.host.isPlugin): | |||
| winIdStr = "%x" % self.winId() | |||
| self.host.set_engine_option(ENGINE_OPTION_FRONTEND_WIN_ID, 0, winIdStr) | |||
| @@ -2241,6 +2241,16 @@ def loadHostSettings(host): | |||
| settings = QSettings("falkTX", "Carla2") | |||
| # bool values | |||
| try: | |||
| host.manageUIs = settings.value(CARLA_KEY_MAIN_MANAGE_UIS, CARLA_DEFAULT_MAIN_MANAGE_UIS, type=bool) | |||
| except: | |||
| host.manageUIs = CARLA_DEFAULT_MAIN_MANAGE_UIS | |||
| try: | |||
| host.uisAlwaysOnTop = settings.value(CARLA_KEY_ENGINE_UIS_ALWAYS_ON_TOP, CARLA_DEFAULT_UIS_ALWAYS_ON_TOP, type=bool) | |||
| except: | |||
| host.uisAlwaysOnTop = CARLA_DEFAULT_UIS_ALWAYS_ON_TOP | |||
| try: | |||
| host.forceStereo = settings.value(CARLA_KEY_ENGINE_FORCE_STEREO, CARLA_DEFAULT_FORCE_STEREO, type=bool) | |||
| except: | |||
| @@ -2256,11 +2266,6 @@ def loadHostSettings(host): | |||
| except: | |||
| host.preferUIBridges = CARLA_DEFAULT_PREFER_UI_BRIDGES | |||
| try: | |||
| host.uisAlwaysOnTop = settings.value(CARLA_KEY_ENGINE_UIS_ALWAYS_ON_TOP, CARLA_DEFAULT_UIS_ALWAYS_ON_TOP, type=bool) | |||
| except: | |||
| host.uisAlwaysOnTop = CARLA_DEFAULT_UIS_ALWAYS_ON_TOP | |||
| # int values | |||
| try: | |||
| host.maxParameters = settings.value(CARLA_KEY_ENGINE_MAX_PARAMETERS, CARLA_DEFAULT_MAX_PARAMETERS, type=int) | |||
| @@ -238,6 +238,10 @@ class CarlaSettingsW(QDialog): | |||
| self.ui.group_main_theme.setEnabled(False) | |||
| self.ui.group_main_theme.setVisible(False) | |||
| if MACOS or WINDOWS: | |||
| self.ui.ch_main_manage_uis.setEnabled(False) | |||
| self.ui.ch_main_manage_uis.setVisible(False) | |||
| if host.isControl: | |||
| self.ui.lw_page.hideRow(self.TAB_INDEX_CANVAS) | |||
| self.ui.lw_page.hideRow(self.TAB_INDEX_ENGINE) | |||
| @@ -320,11 +324,14 @@ class CarlaSettingsW(QDialog): | |||
| # ---------------------------------------------------------------------------------------------------- | |||
| # Main | |||
| self.ui.ch_main_manage_uis.setChecked(self.host.manageUIs) | |||
| self.ui.ch_engine_uis_always_on_top.setChecked(self.host.uisAlwaysOnTop) | |||
| self.ui.le_main_proj_folder.setText(settings.value(CARLA_KEY_MAIN_PROJECT_FOLDER, CARLA_DEFAULT_MAIN_PROJECT_FOLDER, type=str)) | |||
| self.ui.ch_main_theme_pro.setChecked(settings.value(CARLA_KEY_MAIN_USE_PRO_THEME, CARLA_DEFAULT_MAIN_USE_PRO_THEME, type=bool) and self.ui.group_main_theme.isEnabled()) | |||
| self.ui.cb_main_theme_color.setCurrentIndex(self.ui.cb_main_theme_color.findText(settings.value(CARLA_KEY_MAIN_PRO_THEME_COLOR, CARLA_DEFAULT_MAIN_PRO_THEME_COLOR, type=str))) | |||
| self.ui.sb_main_refresh_interval.setValue(settings.value(CARLA_KEY_MAIN_REFRESH_INTERVAL, CARLA_DEFAULT_MAIN_REFRESH_INTERVAL, type=int)) | |||
| self.ui.cb_main_use_custom_skins.setChecked(settings.value(CARLA_KEY_MAIN_USE_CUSTOM_SKINS, CARLA_DEFAULT_MAIN_USE_CUSTOM_SKINS, type=bool)) | |||
| self.ui.ch_main_use_custom_skins.setChecked(settings.value(CARLA_KEY_MAIN_USE_CUSTOM_SKINS, CARLA_DEFAULT_MAIN_USE_CUSTOM_SKINS, type=bool)) | |||
| # ---------------------------------------------------------------------------------------------------- | |||
| # Canvas | |||
| @@ -374,7 +381,6 @@ class CarlaSettingsW(QDialog): | |||
| self.ui.cb_engine_process_mode_other.setCurrentIndex(0) | |||
| self.ui.sb_engine_max_params.setValue(self.host.maxParameters) | |||
| self.ui.ch_engine_uis_always_on_top.setChecked(self.host.uisAlwaysOnTop) | |||
| self.ui.ch_engine_prefer_ui_bridges.setChecked(self.host.preferUIBridges) | |||
| self.ui.sb_engine_ui_bridges_timeout.setValue(self.host.uiBridgesTimeout) | |||
| self.ui.ch_engine_force_stereo.setChecked(self.host.forceStereo or not self.ui.ch_engine_force_stereo.isEnabled()) | |||
| @@ -442,11 +448,17 @@ class CarlaSettingsW(QDialog): | |||
| # ---------------------------------------------------------------------------------------------------- | |||
| # Main | |||
| self.host.manageUIs = self.ui.ch_main_manage_uis.isChecked() | |||
| self.host.uisAlwaysOnTop = self.ui.ch_engine_uis_always_on_top.isChecked() | |||
| settings.setValue(CARLA_KEY_MAIN_PROJECT_FOLDER, self.ui.le_main_proj_folder.text()) | |||
| 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_USE_CUSTOM_SKINS, self.ui.cb_main_use_custom_skins.isChecked()) | |||
| settings.setValue(CARLA_KEY_MAIN_USE_CUSTOM_SKINS, self.ui.ch_main_use_custom_skins.isChecked()) | |||
| settings.setValue(CARLA_KEY_MAIN_MANAGE_UIS, self.host.manageUIs) | |||
| settings.setValue(CARLA_KEY_ENGINE_UIS_ALWAYS_ON_TOP, self.host.uisAlwaysOnTop) | |||
| # ---------------------------------------------------------------------------------------------------- | |||
| # Canvas | |||
| @@ -484,7 +496,6 @@ class CarlaSettingsW(QDialog): | |||
| self.host.forceStereo = self.ui.ch_engine_force_stereo.isChecked() | |||
| self.host.preferPluginBridges = self.ui.ch_engine_prefer_plugin_bridges.isChecked() | |||
| self.host.preferUIBridges = self.ui.ch_engine_prefer_ui_bridges.isChecked() | |||
| self.host.uisAlwaysOnTop = self.ui.ch_engine_uis_always_on_top.isChecked() | |||
| self.host.maxParameters = self.ui.sb_engine_max_params.value() | |||
| self.host.uiBridgesTimeout = self.ui.sb_engine_ui_bridges_timeout.value() | |||
| @@ -502,7 +513,6 @@ class CarlaSettingsW(QDialog): | |||
| settings.setValue(CARLA_KEY_ENGINE_PREFER_PLUGIN_BRIDGES, self.host.preferPluginBridges) | |||
| settings.setValue(CARLA_KEY_ENGINE_PREFER_UI_BRIDGES, self.host.preferUIBridges) | |||
| settings.setValue(CARLA_KEY_ENGINE_UIS_ALWAYS_ON_TOP, self.host.uisAlwaysOnTop) | |||
| settings.setValue(CARLA_KEY_ENGINE_MAX_PARAMETERS, self.host.maxParameters) | |||
| settings.setValue(CARLA_KEY_ENGINE_UI_BRIDGES_TIMEOUT, self.host.uiBridgesTimeout) | |||
| @@ -572,7 +582,8 @@ class CarlaSettingsW(QDialog): | |||
| self.ui.ch_main_theme_pro.setChecked(CARLA_DEFAULT_MAIN_USE_PRO_THEME and self.ui.group_main_theme.isEnabled()) | |||
| self.ui.cb_main_theme_color.setCurrentIndex(self.ui.cb_main_theme_color.findText(CARLA_DEFAULT_MAIN_PRO_THEME_COLOR)) | |||
| self.ui.sb_main_refresh_interval.setValue(CARLA_DEFAULT_MAIN_REFRESH_INTERVAL) | |||
| self.ui.cb_main_use_custom_skins.setChecked(CARLA_DEFAULT_MAIN_USE_CUSTOM_SKINS) | |||
| self.ui.ch_main_use_custom_skins.setChecked(CARLA_DEFAULT_MAIN_USE_CUSTOM_SKINS) | |||
| self.ui.ch_main_manage_uis.setChecked(CARLA_DEFAULT_MAIN_MANAGE_UIS) | |||
| # ---------------------------------------------------------------------------------------------------- | |||
| # Canvas | |||
| @@ -192,6 +192,7 @@ CARLA_KEY_MAIN_USE_PRO_THEME = "Main/UseProTheme" # bool | |||
| CARLA_KEY_MAIN_PRO_THEME_COLOR = "Main/ProThemeColor" # str | |||
| CARLA_KEY_MAIN_REFRESH_INTERVAL = "Main/RefreshInterval" # int | |||
| CARLA_KEY_MAIN_USE_CUSTOM_SKINS = "Main/UseCustomSkins" # bool | |||
| CARLA_KEY_MAIN_MANAGE_UIS = "Main/ManageUIs" # bool | |||
| CARLA_KEY_CANVAS_THEME = "Canvas/Theme" # str | |||
| CARLA_KEY_CANVAS_SIZE = "Canvas/Size" # str "NxN" | |||
| @@ -235,6 +236,7 @@ CARLA_DEFAULT_MAIN_USE_PRO_THEME = True | |||
| CARLA_DEFAULT_MAIN_PRO_THEME_COLOR = "Black" | |||
| CARLA_DEFAULT_MAIN_REFRESH_INTERVAL = 20 | |||
| CARLA_DEFAULT_MAIN_USE_CUSTOM_SKINS = True | |||
| CARLA_DEFAULT_MAIN_MANAGE_UIS = True | |||
| # Canvas | |||
| CARLA_DEFAULT_CANVAS_THEME = "Modern Dark" | |||
| @@ -533,8 +533,9 @@ class CarlaEmbedW(QEmbedWidget): | |||
| QEmbedWidget.showEvent(self, event) | |||
| # set our gui as parent for all plugins UIs | |||
| winIdStr = "%x" % self.fWinId | |||
| self.host.set_engine_option(ENGINE_OPTION_FRONTEND_WIN_ID, 0, winIdStr) | |||
| if self.host.manageUIs: | |||
| winIdStr = "%x" % self.fWinId | |||
| self.host.set_engine_option(ENGINE_OPTION_FRONTEND_WIN_ID, 0, winIdStr) | |||
| def hideEvent(self, event): | |||
| # disable parent | |||