| @@ -6,7 +6,7 @@ | |||||
| <rect> | <rect> | ||||
| <x>0</x> | <x>0</x> | ||||
| <y>0</y> | <y>0</y> | ||||
| <width>600</width> | |||||
| <width>607</width> | |||||
| <height>465</height> | <height>465</height> | ||||
| </rect> | </rect> | ||||
| </property> | </property> | ||||
| @@ -180,7 +180,7 @@ | |||||
| <number>0</number> | <number>0</number> | ||||
| </property> | </property> | ||||
| <property name="currentIndex"> | <property name="currentIndex"> | ||||
| <number>0</number> | |||||
| <number>1</number> | |||||
| </property> | </property> | ||||
| <widget class="QWidget" name="page_main"> | <widget class="QWidget" name="page_main"> | ||||
| <layout class="QVBoxLayout" name="verticalLayout_5"> | <layout class="QVBoxLayout" name="verticalLayout_5"> | ||||
| @@ -190,7 +190,7 @@ | |||||
| <item> | <item> | ||||
| <layout class="QHBoxLayout" name="horizontalLayout"> | <layout class="QHBoxLayout" name="horizontalLayout"> | ||||
| <item> | <item> | ||||
| <widget class="QLabel" name="label"> | |||||
| <widget class="QLabel" name="label_main"> | |||||
| <property name="text"> | <property name="text"> | ||||
| <string><b>Main</b></string> | <string><b>Main</b></string> | ||||
| </property> | </property> | ||||
| @@ -236,17 +236,17 @@ | |||||
| <item> | <item> | ||||
| <layout class="QHBoxLayout" name="horizontalLayout_2"> | <layout class="QHBoxLayout" name="horizontalLayout_2"> | ||||
| <item> | <item> | ||||
| <widget class="QLabel" name="label_3"> | |||||
| <widget class="QLabel" name="label_main_proj_folder_open"> | |||||
| <property name="text"> | <property name="text"> | ||||
| <string>Default project folder:</string> | <string>Default project folder:</string> | ||||
| </property> | </property> | ||||
| </widget> | </widget> | ||||
| </item> | </item> | ||||
| <item> | <item> | ||||
| <widget class="QLineEdit" name="le_main_def_folder"/> | |||||
| <widget class="QLineEdit" name="le_main_proj_folder"/> | |||||
| </item> | </item> | ||||
| <item> | <item> | ||||
| <widget class="QPushButton" name="b_main_def_folder_open"> | |||||
| <widget class="QPushButton" name="b_main_proj_folder_open"> | |||||
| <property name="maximumSize"> | <property name="maximumSize"> | ||||
| <size> | <size> | ||||
| <width>22</width> | <width>22</width> | ||||
| @@ -268,20 +268,20 @@ | |||||
| </widget> | </widget> | ||||
| </item> | </item> | ||||
| <item> | <item> | ||||
| <widget class="QGroupBox" name="group_theme"> | |||||
| <widget class="QGroupBox" name="group_main_theme"> | |||||
| <property name="title"> | <property name="title"> | ||||
| <string>Theme</string> | <string>Theme</string> | ||||
| </property> | </property> | ||||
| <layout class="QGridLayout" name="gridLayout_3"> | <layout class="QGridLayout" name="gridLayout_3"> | ||||
| <item row="0" column="0" colspan="3"> | <item row="0" column="0" colspan="3"> | ||||
| <widget class="QCheckBox" name="ch_theme_pro"> | |||||
| <widget class="QCheckBox" name="ch_main_theme_pro"> | |||||
| <property name="text"> | <property name="text"> | ||||
| <string>Use Carla "PRO" theme (needs restart)</string> | <string>Use Carla "PRO" theme (needs restart)</string> | ||||
| </property> | </property> | ||||
| </widget> | </widget> | ||||
| </item> | </item> | ||||
| <item row="1" column="0"> | <item row="1" column="0"> | ||||
| <widget class="QLabel" name="label_2"> | |||||
| <widget class="QLabel" name="label_main_theme_color"> | |||||
| <property name="enabled"> | <property name="enabled"> | ||||
| <bool>false</bool> | <bool>false</bool> | ||||
| </property> | </property> | ||||
| @@ -294,7 +294,7 @@ | |||||
| </widget> | </widget> | ||||
| </item> | </item> | ||||
| <item row="1" column="1"> | <item row="1" column="1"> | ||||
| <widget class="QComboBox" name="cb_theme_color"> | |||||
| <widget class="QComboBox" name="cb_main_theme_color"> | |||||
| <property name="enabled"> | <property name="enabled"> | ||||
| <bool>false</bool> | <bool>false</bool> | ||||
| </property> | </property> | ||||
| @@ -330,13 +330,13 @@ | |||||
| </widget> | </widget> | ||||
| </item> | </item> | ||||
| <item> | <item> | ||||
| <widget class="QGroupBox" name="groupBox_3"> | |||||
| <widget class="QGroupBox" name="group_main_misc"> | |||||
| <property name="title"> | <property name="title"> | ||||
| <string>Misc</string> | <string>Misc</string> | ||||
| </property> | </property> | ||||
| <layout class="QGridLayout" name="gridLayout_4"> | <layout class="QGridLayout" name="gridLayout_4"> | ||||
| <item row="1" column="0"> | <item row="1" column="0"> | ||||
| <widget class="QLabel" name="label_8"> | |||||
| <widget class="QLabel" name="label_main_refresh_interval"> | |||||
| <property name="text"> | <property name="text"> | ||||
| <string>GUI Refresh interval:</string> | <string>GUI Refresh interval:</string> | ||||
| </property> | </property> | ||||
| @@ -346,7 +346,7 @@ | |||||
| </widget> | </widget> | ||||
| </item> | </item> | ||||
| <item row="1" column="1"> | <item row="1" column="1"> | ||||
| <widget class="QSpinBox" name="sb_gui_refresh"> | |||||
| <widget class="QSpinBox" name="sb_main_refresh_interval"> | |||||
| <property name="suffix"> | <property name="suffix"> | ||||
| <string> ms</string> | <string> ms</string> | ||||
| </property> | </property> | ||||
| @@ -378,7 +378,7 @@ | |||||
| </spacer> | </spacer> | ||||
| </item> | </item> | ||||
| <item row="0" column="0" colspan="3"> | <item row="0" column="0" colspan="3"> | ||||
| <widget class="QCheckBox" name="ch_engine_disable_checks"> | |||||
| <widget class="QCheckBox" name="ch_main_disable_checks"> | |||||
| <property name="toolTip"> | <property name="toolTip"> | ||||
| <string>Carla will run small processing checks when scanning the plugins (to make sure they won't crash). | <string>Carla will run small processing checks when scanning the plugins (to make sure they won't crash). | ||||
| You can disable these checks to get a faster scanning time (at your own risk).</string> | You can disable these checks to get a faster scanning time (at your own risk).</string> | ||||
| @@ -452,7 +452,7 @@ You can disable these checks to get a faster scanning time (at your own risk).</ | |||||
| </layout> | </layout> | ||||
| </item> | </item> | ||||
| <item> | <item> | ||||
| <widget class="QGroupBox" name="groupBox_4"> | |||||
| <widget class="QGroupBox" name="group_canvas_theme"> | |||||
| <property name="title"> | <property name="title"> | ||||
| <string>Theme</string> | <string>Theme</string> | ||||
| </property> | </property> | ||||
| @@ -470,7 +470,7 @@ You can disable these checks to get a faster scanning time (at your own risk).</ | |||||
| </property> | </property> | ||||
| </spacer> | </spacer> | ||||
| </item> | </item> | ||||
| <item row="1" column="0" colspan="2"> | |||||
| <item row="2" column="0" colspan="2"> | |||||
| <spacer name="horizontalSpacer_8"> | <spacer name="horizontalSpacer_8"> | ||||
| <property name="orientation"> | <property name="orientation"> | ||||
| <enum>Qt::Horizontal</enum> | <enum>Qt::Horizontal</enum> | ||||
| @@ -483,7 +483,7 @@ You can disable these checks to get a faster scanning time (at your own risk).</ | |||||
| </property> | </property> | ||||
| </spacer> | </spacer> | ||||
| </item> | </item> | ||||
| <item row="1" column="2" colspan="3"> | |||||
| <item row="2" column="2" colspan="3"> | |||||
| <widget class="QCheckBox" name="cb_canvas_bezier_lines"> | <widget class="QCheckBox" name="cb_canvas_bezier_lines"> | ||||
| <property name="text"> | <property name="text"> | ||||
| <string>Bezier Lines</string> | <string>Bezier Lines</string> | ||||
| @@ -494,7 +494,7 @@ You can disable these checks to get a faster scanning time (at your own risk).</ | |||||
| <widget class="QComboBox" name="cb_canvas_theme"/> | <widget class="QComboBox" name="cb_canvas_theme"/> | ||||
| </item> | </item> | ||||
| <item row="0" column="1" colspan="2"> | <item row="0" column="1" colspan="2"> | ||||
| <widget class="QLabel" name="label_11"> | |||||
| <widget class="QLabel" name="label_canvas_theme"> | |||||
| <property name="text"> | <property name="text"> | ||||
| <string>Theme:</string> | <string>Theme:</string> | ||||
| </property> | </property> | ||||
| @@ -516,11 +516,76 @@ You can disable these checks to get a faster scanning time (at your own risk).</ | |||||
| </property> | </property> | ||||
| </spacer> | </spacer> | ||||
| </item> | </item> | ||||
| <item row="1" column="0"> | |||||
| <spacer name="horizontalSpacer_15"> | |||||
| <property name="orientation"> | |||||
| <enum>Qt::Horizontal</enum> | |||||
| </property> | |||||
| <property name="sizeHint" stdset="0"> | |||||
| <size> | |||||
| <width>40</width> | |||||
| <height>20</height> | |||||
| </size> | |||||
| </property> | |||||
| </spacer> | |||||
| </item> | |||||
| <item row="1" column="1" colspan="2"> | |||||
| <widget class="QLabel" name="label_canvas_size"> | |||||
| <property name="text"> | |||||
| <string>Size:</string> | |||||
| </property> | |||||
| <property name="alignment"> | |||||
| <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> | |||||
| </property> | |||||
| </widget> | |||||
| </item> | |||||
| <item row="1" column="3"> | |||||
| <widget class="QComboBox" name="cb_canvas_size"> | |||||
| <item> | |||||
| <property name="text"> | |||||
| <string>775x600</string> | |||||
| </property> | |||||
| </item> | |||||
| <item> | |||||
| <property name="text"> | |||||
| <string>1550x1200</string> | |||||
| </property> | |||||
| </item> | |||||
| <item> | |||||
| <property name="text"> | |||||
| <string>3100x2400</string> | |||||
| </property> | |||||
| </item> | |||||
| <item> | |||||
| <property name="text"> | |||||
| <string>4650x3600</string> | |||||
| </property> | |||||
| </item> | |||||
| <item> | |||||
| <property name="text"> | |||||
| <string>6200x4800</string> | |||||
| </property> | |||||
| </item> | |||||
| </widget> | |||||
| </item> | |||||
| <item row="1" column="4"> | |||||
| <spacer name="horizontalSpacer_16"> | |||||
| <property name="orientation"> | |||||
| <enum>Qt::Horizontal</enum> | |||||
| </property> | |||||
| <property name="sizeHint" stdset="0"> | |||||
| <size> | |||||
| <width>40</width> | |||||
| <height>20</height> | |||||
| </size> | |||||
| </property> | |||||
| </spacer> | |||||
| </item> | |||||
| </layout> | </layout> | ||||
| </widget> | </widget> | ||||
| </item> | </item> | ||||
| <item> | <item> | ||||
| <widget class="QGroupBox" name="groupBox_7"> | |||||
| <widget class="QGroupBox" name="group_canvas_options"> | |||||
| <property name="title"> | <property name="title"> | ||||
| <string>Options</string> | <string>Options</string> | ||||
| </property> | </property> | ||||
| @@ -553,7 +618,7 @@ You can disable these checks to get a faster scanning time (at your own risk).</ | |||||
| </widget> | </widget> | ||||
| </item> | </item> | ||||
| <item> | <item> | ||||
| <widget class="QGroupBox" name="groupBox_5"> | |||||
| <widget class="QGroupBox" name="group_canvas_render"> | |||||
| <property name="title"> | <property name="title"> | ||||
| <string>Render Hints</string> | <string>Render Hints</string> | ||||
| </property> | </property> | ||||
| @@ -632,7 +697,7 @@ You can disable these checks to get a faster scanning time (at your own risk).</ | |||||
| <string notr="true"/> | <string notr="true"/> | ||||
| </property> | </property> | ||||
| <property name="pixmap"> | <property name="pixmap"> | ||||
| <pixmap>:/48x48/exec.png</pixmap> | |||||
| <pixmap resource="../resources.qrc">:/48x48/jack.png</pixmap> | |||||
| </property> | </property> | ||||
| <property name="alignment"> | <property name="alignment"> | ||||
| <set>Qt::AlignHCenter|Qt::AlignTop</set> | <set>Qt::AlignHCenter|Qt::AlignTop</set> | ||||
| @@ -1306,9 +1371,9 @@ This mode is not available for VST plugins.</string> | |||||
| </hints> | </hints> | ||||
| </connection> | </connection> | ||||
| <connection> | <connection> | ||||
| <sender>ch_theme_pro</sender> | |||||
| <sender>ch_main_theme_pro</sender> | |||||
| <signal>toggled(bool)</signal> | <signal>toggled(bool)</signal> | ||||
| <receiver>label_2</receiver> | |||||
| <receiver>label_main_theme_color</receiver> | |||||
| <slot>setEnabled(bool)</slot> | <slot>setEnabled(bool)</slot> | ||||
| <hints> | <hints> | ||||
| <hint type="sourcelabel"> | <hint type="sourcelabel"> | ||||
| @@ -1322,9 +1387,9 @@ This mode is not available for VST plugins.</string> | |||||
| </hints> | </hints> | ||||
| </connection> | </connection> | ||||
| <connection> | <connection> | ||||
| <sender>ch_theme_pro</sender> | |||||
| <sender>ch_main_theme_pro</sender> | |||||
| <signal>toggled(bool)</signal> | <signal>toggled(bool)</signal> | ||||
| <receiver>cb_theme_color</receiver> | |||||
| <receiver>cb_main_theme_color</receiver> | |||||
| <slot>setEnabled(bool)</slot> | <slot>setEnabled(bool)</slot> | ||||
| <hints> | <hints> | ||||
| <hint type="sourcelabel"> | <hint type="sourcelabel"> | ||||
| @@ -42,7 +42,6 @@ from carla_widgets import * | |||||
| CANVAS_ANTIALIASING_SMALL = 1 | CANVAS_ANTIALIASING_SMALL = 1 | ||||
| CANVAS_EYECANDY_SMALL = 1 | CANVAS_EYECANDY_SMALL = 1 | ||||
| CANVAS_DEFAULT_THEME_NAME = "Modern Dark" | |||||
| # ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
| # Session Management support | # Session Management support | ||||
| @@ -601,18 +600,21 @@ class HostWindow(QMainWindow): | |||||
| # --------------------------------------------- | # --------------------------------------------- | ||||
| # TODO | |||||
| self.fSavedSettings = { | self.fSavedSettings = { | ||||
| "Main/DefaultProjectFolder": settings.value("Main/DefaultProjectFolder", HOME, type=str), | |||||
| "Main/RefreshInterval": settings.value("Main/RefreshInterval", 50, type=int), | |||||
| "Canvas/Theme": settings.value("Canvas/Theme", CANVAS_DEFAULT_THEME_NAME, type=str), | |||||
| "Canvas/AutoHideGroups": settings.value("Canvas/AutoHideGroups", False, type=bool), | |||||
| "Canvas/UseBezierLines": settings.value("Canvas/UseBezierLines", True, type=bool), | |||||
| "Canvas/EyeCandy": settings.value("Canvas/EyeCandy", CANVAS_EYECANDY_SMALL, type=int), | |||||
| "Canvas/UseOpenGL": settings.value("Canvas/UseOpenGL", False, type=bool), | |||||
| "Canvas/Antialiasing": settings.value("Canvas/Antialiasing", CANVAS_ANTIALIASING_SMALL, type=int), | |||||
| "Canvas/HighQualityAntialiasing": settings.value("Canvas/HighQualityAntialiasing", False, type=bool), | |||||
| "UseCustomMiniCanvasPaint": (settings.value("Main/UseProTheme", True, type=bool) and | |||||
| settings.value("Main/ProThemeColor", "Black", type=str).lower() == "black") | |||||
| "Main/DefaultProjectFolder": settings.value("Main/DefaultProjectFolder", HOME, type=str), | |||||
| "Main/RefreshInterval": settings.value("Main/RefreshInterval", 50, type=int), | |||||
| CARLA_KEY_CANVAS_THEME: settings.value(CARLA_KEY_CANVAS_THEME, CARLA_DEFAULT_CANVAS_THEME, type=str), | |||||
| CARLA_KEY_CANVAS_SIZE: settings.value(CARLA_KEY_CANVAS_SIZE, CARLA_DEFAULT_CANVAS_SIZE, type=str), | |||||
| CARLA_KEY_CANVAS_AUTO_HIDE_GROUPS: settings.value(CARLA_KEY_CANVAS_AUTO_HIDE_GROUPS, CARLA_DEFAULT_CANVAS_AUTO_HIDE_GROUPS, type=bool), | |||||
| CARLA_KEY_CANVAS_USE_BEZIER_LINES: settings.value(CARLA_KEY_CANVAS_USE_BEZIER_LINES, CARLA_DEFAULT_CANVAS_USE_BEZIER_LINES, type=bool), | |||||
| CARLA_KEY_CANVAS_EYE_CANDY: settings.value(CARLA_KEY_CANVAS_EYE_CANDY, CARLA_DEFAULT_CANVAS_EYE_CANDY, type=int), | |||||
| CARLA_KEY_CANVAS_USE_OPENGL: settings.value(CARLA_KEY_CANVAS_USE_OPENGL, CARLA_DEFAULT_CANVAS_USE_OPENGL, type=bool), | |||||
| CARLA_KEY_CANVAS_ANTIALIASING: settings.value(CARLA_KEY_CANVAS_ANTIALIASING, CARLA_DEFAULT_CANVAS_ANTIALIASING, type=int), | |||||
| CARLA_KEY_CANVAS_HQ_ANTIALIASING: settings.value(CARLA_KEY_CANVAS_HQ_ANTIALIASING, CARLA_DEFAULT_CANVAS_HQ_ANTIALIASING, type=bool), | |||||
| "UseCustomMiniCanvasPaint": (settings.value("Main/UseProTheme", True, type=bool) and | |||||
| settings.value("Main/ProThemeColor", "Black", type=str).lower() == "black") | |||||
| } | } | ||||
| # --------------------------------------------- | # --------------------------------------------- | ||||
| @@ -65,17 +65,17 @@ class CarlaPatchbayW(QGraphicsView): | |||||
| self.scene = patchcanvas.PatchScene(self, self) # FIXME? | self.scene = patchcanvas.PatchScene(self, self) # FIXME? | ||||
| self.setScene(self.scene) | self.setScene(self.scene) | ||||
| self.setRenderHint(QPainter.Antialiasing, bool(parent.fSavedSettings["Canvas/Antialiasing"] == patchcanvas.ANTIALIASING_FULL)) | |||||
| if parent.fSavedSettings["Canvas/UseOpenGL"] and hasGL: | |||||
| self.setRenderHint(QPainter.Antialiasing, bool(parent.fSavedSettings[CARLA_KEY_CANVAS_ANTIALIASING] == patchcanvas.ANTIALIASING_FULL)) | |||||
| if parent.fSavedSettings[CARLA_KEY_CANVAS_USE_OPENGL] and hasGL: | |||||
| self.setViewport(QGLWidget(self)) | self.setViewport(QGLWidget(self)) | ||||
| self.setRenderHint(QPainter.HighQualityAntialiasing, parent.fSavedSettings["Canvas/HighQualityAntialiasing"]) | |||||
| self.setRenderHint(QPainter.HighQualityAntialiasing, parent.fSavedSettings[CARLA_KEY_CANVAS_HQ_ANTIALIASING]) | |||||
| pOptions = patchcanvas.options_t() | pOptions = patchcanvas.options_t() | ||||
| pOptions.theme_name = parent.fSavedSettings["Canvas/Theme"] | |||||
| pOptions.auto_hide_groups = parent.fSavedSettings["Canvas/AutoHideGroups"] | |||||
| pOptions.use_bezier_lines = parent.fSavedSettings["Canvas/UseBezierLines"] | |||||
| pOptions.antialiasing = parent.fSavedSettings["Canvas/Antialiasing"] | |||||
| pOptions.eyecandy = parent.fSavedSettings["Canvas/EyeCandy"] | |||||
| pOptions.theme_name = parent.fSavedSettings[CARLA_KEY_CANVAS_THEME] | |||||
| pOptions.auto_hide_groups = parent.fSavedSettings[CARLA_KEY_CANVAS_AUTO_HIDE_GROUPS] | |||||
| pOptions.use_bezier_lines = parent.fSavedSettings[CARLA_KEY_CANVAS_USE_BEZIER_LINES] | |||||
| pOptions.antialiasing = parent.fSavedSettings[CARLA_KEY_CANVAS_ANTIALIASING] | |||||
| pOptions.eyecandy = parent.fSavedSettings[CARLA_KEY_CANVAS_EYE_CANDY] | |||||
| pFeatures = patchcanvas.features_t() | pFeatures = patchcanvas.features_t() | ||||
| pFeatures.group_info = False | pFeatures.group_info = False | ||||
| @@ -88,16 +88,22 @@ class CarlaPatchbayW(QGraphicsView): | |||||
| patchcanvas.setFeatures(pFeatures) | patchcanvas.setFeatures(pFeatures) | ||||
| patchcanvas.init("Carla", self.scene, CanvasCallback, True) | patchcanvas.init("Carla", self.scene, CanvasCallback, True) | ||||
| #patchcanvas.setCanvasSize(0, 0, DEFAULT_CANVAS_WIDTH, DEFAULT_CANVAS_HEIGHT) | |||||
| #patchcanvas.setInitialPos(DEFAULT_CANVAS_WIDTH / 2, DEFAULT_CANVAS_HEIGHT / 2) | |||||
| #self.setSceneRect(0, 0, DEFAULT_CANVAS_WIDTH, DEFAULT_CANVAS_HEIGHT) | |||||
| tryCanvasSize = parent.fSavedSettings[CARLA_KEY_CANVAS_SIZE].split("x") | |||||
| if len(tryCanvasSize) == 2 and tryCanvasSize[0].isdigit() and tryCanvasSize[1].isdigit(): | |||||
| canvasWidth = int(tryCanvasSize[0]) | |||||
| canvasHeight = int(tryCanvasSize[1]) | |||||
| else: | |||||
| canvasWidth = CARLA_DEFAULT_CANVAS_SIZE_WIDTH | |||||
| canvasHeight = CARLA_DEFAULT_CANVAS_SIZE_HEIGHT | |||||
| patchcanvas.setCanvasSize(0, 0, canvasWidth, canvasHeight) | |||||
| patchcanvas.setInitialPos(canvasWidth / 2, canvasHeight / 2) | |||||
| self.setSceneRect(0, 0, canvasWidth, canvasHeight) | |||||
| # ------------------------------------------------------------- | # ------------------------------------------------------------- | ||||
| # Connect actions to functions | # Connect actions to functions | ||||
| if parent is None: | |||||
| return | |||||
| parent.ui.act_plugins_enable.triggered.connect(self.slot_pluginsEnable) | parent.ui.act_plugins_enable.triggered.connect(self.slot_pluginsEnable) | ||||
| parent.ui.act_plugins_disable.triggered.connect(self.slot_pluginsDisable) | parent.ui.act_plugins_disable.triggered.connect(self.slot_pluginsDisable) | ||||
| parent.ui.act_plugins_volume100.triggered.connect(self.slot_pluginsVolume100) | parent.ui.act_plugins_volume100.triggered.connect(self.slot_pluginsVolume100) | ||||
| @@ -334,7 +340,7 @@ class CarlaPatchbayW(QGraphicsView): | |||||
| @pyqtSlot() | @pyqtSlot() | ||||
| def slot_configureCarla(self): | def slot_configureCarla(self): | ||||
| if self.fParent is None or not self.fParent.openSettingsWindow(False, False): | |||||
| if self.fParent is None or not self.fParent.openSettingsWindow(True, hasGL): | |||||
| return | return | ||||
| self.fParent.loadSettings(False) | self.fParent.loadSettings(False) | ||||
| @@ -442,7 +448,7 @@ class CarlaPatchbayW(QGraphicsView): | |||||
| if pitem is None: | if pitem is None: | ||||
| return | return | ||||
| pitem.sendNoteOn(channel, note) | |||||
| pitem.sendNoteOn(channel, note, False) | |||||
| @pyqtSlot(int, int, int) | @pyqtSlot(int, int, int) | ||||
| def slot_handleNoteOffCallback(self, pluginId, channel, note): | def slot_handleNoteOffCallback(self, pluginId, channel, note): | ||||
| @@ -453,7 +459,7 @@ class CarlaPatchbayW(QGraphicsView): | |||||
| if pitem is None: | if pitem is None: | ||||
| return | return | ||||
| pitem.sendNoteOff(channel, note) | |||||
| pitem.sendNoteOff(channel, note, False) | |||||
| # ----------------------------------------------------------------- | # ----------------------------------------------------------------- | ||||
| @@ -415,7 +415,7 @@ class CarlaRackW(QListWidget): | |||||
| if pitem is None: | if pitem is None: | ||||
| return | return | ||||
| pitem.fWidget.sendNoteOn(channel, note) | |||||
| pitem.fWidget.sendNoteOn(channel, note, True) | |||||
| @pyqtSlot(int, int, int) | @pyqtSlot(int, int, int) | ||||
| def slot_handleNoteOffCallback(self, pluginId, channel, note): | def slot_handleNoteOffCallback(self, pluginId, channel, note): | ||||
| @@ -426,7 +426,7 @@ class CarlaRackW(QListWidget): | |||||
| if pitem is None: | if pitem is None: | ||||
| return | return | ||||
| pitem.fWidget.sendNoteOff(channel, note) | |||||
| pitem.fWidget.sendNoteOff(channel, note, True) | |||||
| # ----------------------------------------------------------------- | # ----------------------------------------------------------------- | ||||
| @@ -38,14 +38,34 @@ from carla_style import * | |||||
| from patchcanvas_theme import * | from patchcanvas_theme import * | ||||
| # ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
| # Carla defaults | |||||
| # PatchCanvas defines | |||||
| CANVAS_ANTIALIASING_SMALL = 1 | |||||
| CANVAS_EYECANDY_SMALL = 1 | |||||
| # Canvas size | |||||
| CARLA_DEFAULT_CANVAS_WIDTH = 3100 | |||||
| CARLA_DEFAULT_CANVAS_HEIGHT = 2400 | |||||
| # ------------------------------------------------------------------------------------------------------------ | |||||
| # Carla defaults | |||||
| # Engine settings | |||||
| CARLA_DEFAULT_RUN_DISCOVERY_CHECKS = True | |||||
| # Main | |||||
| CARLA_DEFAULT_MAIN_PROJECT_FOLDER = HOME | |||||
| CARLA_DEFAULT_MAIN_USE_PRO_THEME = True | |||||
| CARLA_DEFAULT_MAIN_PRO_THEME_COLOR = "Black" | |||||
| CARLA_DEFAULT_MAIN_DISABLE_CHECKS = False | |||||
| CARLA_DEFAULT_MAIN_REFRESH_INTERVAL = 50 | |||||
| # Canvas | |||||
| CARLA_DEFAULT_CANVAS_THEME = "Modern Dark" | |||||
| CARLA_DEFAULT_CANVAS_SIZE = "3100x2400" | |||||
| CARLA_DEFAULT_CANVAS_SIZE_WIDTH = 3100 | |||||
| CARLA_DEFAULT_CANVAS_SIZE_HEIGHT = 2400 | |||||
| CARLA_DEFAULT_CANVAS_USE_BEZIER_LINES = True | |||||
| CARLA_DEFAULT_CANVAS_AUTO_HIDE_GROUPS = False | |||||
| CARLA_DEFAULT_CANVAS_EYE_CANDY = CANVAS_EYECANDY_SMALL | |||||
| CARLA_DEFAULT_CANVAS_USE_OPENGL = False | |||||
| CARLA_DEFAULT_CANVAS_ANTIALIASING = CANVAS_ANTIALIASING_SMALL | |||||
| CARLA_DEFAULT_CANVAS_HQ_ANTIALIASING = False | |||||
| # Engine | |||||
| CARLA_DEFAULT_FORCE_STEREO = False | CARLA_DEFAULT_FORCE_STEREO = False | ||||
| CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES = False | CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES = False | ||||
| CARLA_DEFAULT_PREFER_UI_BRIDGES = True | CARLA_DEFAULT_PREFER_UI_BRIDGES = True | ||||
| @@ -66,18 +86,9 @@ else: | |||||
| if LINUX: | if LINUX: | ||||
| CARLA_DEFAULT_PROCESS_MODE = PROCESS_MODE_MULTIPLE_CLIENTS | CARLA_DEFAULT_PROCESS_MODE = PROCESS_MODE_MULTIPLE_CLIENTS | ||||
| CARLA_DEFAULT_TRANSPORT_MODE = TRANSPORT_MODE_JACK | CARLA_DEFAULT_TRANSPORT_MODE = TRANSPORT_MODE_JACK | ||||
| CARLA_DEFAULT_DISABLE_CHECKS = False | |||||
| else: | else: | ||||
| CARLA_DEFAULT_PROCESS_MODE = PROCESS_MODE_CONTINUOUS_RACK | CARLA_DEFAULT_PROCESS_MODE = PROCESS_MODE_CONTINUOUS_RACK | ||||
| CARLA_DEFAULT_TRANSPORT_MODE = TRANSPORT_MODE_INTERNAL | CARLA_DEFAULT_TRANSPORT_MODE = TRANSPORT_MODE_INTERNAL | ||||
| CARLA_DEFAULT_DISABLE_CHECKS = False | |||||
| # ------------------------------------------------------------------------------------------------------------ | |||||
| # PatchCanvas defines | |||||
| CANVAS_ANTIALIASING_SMALL = 1 | |||||
| CANVAS_EYECANDY_SMALL = 1 | |||||
| CANVAS_DEFAULT_THEME_NAME = "Modern Dark" | |||||
| # ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
| # ... | # ... | ||||
| @@ -132,10 +143,10 @@ class DriverSettingsW(QDialog): | |||||
| def loadSettings(self): | def loadSettings(self): | ||||
| settings = QSettings() | settings = QSettings() | ||||
| audioDevice = settings.value("Engine/Driver-%s/Device" % self.fDriverName, "", type=str) | |||||
| audioNumPeriods = settings.value("Engine/Driver-%s/NumPeriods" % self.fDriverName, CARLA_DEFAULT_AUDIO_NUM_PERIODS, type=int) | |||||
| audioBufferSize = settings.value("Engine/Driver-%s/BufferSize" % self.fDriverName, CARLA_DEFAULT_AUDIO_BUFFER_SIZE, type=int) | |||||
| audioSampleRate = settings.value("Engine/Driver-%s/SampleRate" % self.fDriverName, CARLA_DEFAULT_AUDIO_SAMPLE_RATE, type=int) | |||||
| audioDevice = settings.value("%s%s/Device" % (CARLA_KEY_ENGINE_DRIVER_PREFIX, self.fDriverName), "", type=str) | |||||
| audioNumPeriods = settings.value("%s%s/NumPeriods" % (CARLA_KEY_ENGINE_DRIVER_PREFIX, self.fDriverName), CARLA_DEFAULT_AUDIO_NUM_PERIODS, type=int) | |||||
| audioBufferSize = settings.value("%s%s/BufferSize" % (CARLA_KEY_ENGINE_DRIVER_PREFIX, self.fDriverName), CARLA_DEFAULT_AUDIO_BUFFER_SIZE, type=int) | |||||
| audioSampleRate = settings.value("%s%s/SampleRate" % (CARLA_KEY_ENGINE_DRIVER_PREFIX, self.fDriverName), CARLA_DEFAULT_AUDIO_SAMPLE_RATE, type=int) | |||||
| if audioDevice and audioDevice in self.fDeviceNames: | if audioDevice and audioDevice in self.fDeviceNames: | ||||
| self.ui.cb_device.setCurrentIndex(self.fDeviceNames.index(audioDevice)) | self.ui.cb_device.setCurrentIndex(self.fDeviceNames.index(audioDevice)) | ||||
| @@ -161,10 +172,10 @@ class DriverSettingsW(QDialog): | |||||
| def slot_saveSettings(self): | def slot_saveSettings(self): | ||||
| settings = QSettings() | settings = QSettings() | ||||
| settings.setValue("Engine/Driver-%s/Device" % self.fDriverName, self.ui.cb_device.currentText()) | |||||
| settings.setValue("Engine/Driver-%s/NumPeriods" % self.fDriverName, self.ui.sb_numperiods.value()) | |||||
| settings.setValue("Engine/Driver-%s/BufferSize" % self.fDriverName, self.ui.cb_buffersize.currentText()) | |||||
| settings.setValue("Engine/Driver-%s/SampleRate" % self.fDriverName, self.ui.cb_samplerate.currentText()) | |||||
| settings.setValue("%s%s/Device" % (CARLA_KEY_ENGINE_DRIVER_PREFIX, self.fDriverName), self.ui.cb_device.currentText()) | |||||
| settings.setValue("%s%s/NumPeriods" % (CARLA_KEY_ENGINE_DRIVER_PREFIX, self.fDriverName), self.ui.sb_numperiods.value()) | |||||
| settings.setValue("%s%s/BufferSize" % (CARLA_KEY_ENGINE_DRIVER_PREFIX, self.fDriverName), self.ui.cb_buffersize.currentText()) | |||||
| settings.setValue("%s%s/SampleRate" % (CARLA_KEY_ENGINE_DRIVER_PREFIX, self.fDriverName), self.ui.cb_samplerate.currentText()) | |||||
| def done(self, r): | def done(self, r): | ||||
| QDialog.done(self, r) | QDialog.done(self, r) | ||||
| @@ -175,11 +186,11 @@ class DriverSettingsW(QDialog): | |||||
| class CarlaSettingsW(QDialog): | class CarlaSettingsW(QDialog): | ||||
| # Tab indexes | # Tab indexes | ||||
| TAB_INDEX_MAIN = 0 | |||||
| TAB_INDEX_CANVAS = 1 | |||||
| TAB_INDEX_CARLA_ENGINE = 2 | |||||
| TAB_INDEX_CARLA_PATHS = 3 | |||||
| TAB_INDEX_NONE = 4 | |||||
| TAB_INDEX_MAIN = 0 | |||||
| TAB_INDEX_CANVAS = 1 | |||||
| TAB_INDEX_ENGINE = 2 | |||||
| TAB_INDEX_PATHS = 3 | |||||
| TAB_INDEX_NONE = 4 | |||||
| # Single and Multiple client mode is only for JACK, | # Single and Multiple client mode is only for JACK, | ||||
| # but we still want to match QComboBox index to defines, | # but we still want to match QComboBox index to defines, | ||||
| @@ -200,13 +211,17 @@ class CarlaSettingsW(QDialog): | |||||
| driverName = cString(Carla.host.get_engine_driver_name(i)) | driverName = cString(Carla.host.get_engine_driver_name(i)) | ||||
| self.ui.cb_engine_audio_driver.addItem(driverName) | self.ui.cb_engine_audio_driver.addItem(driverName) | ||||
| for i in range(Theme.THEME_MAX): | |||||
| thisThemeName = getThemeName(i) | |||||
| self.ui.cb_canvas_theme.addItem(thisThemeName) | |||||
| # ------------------------------------------------------------- | # ------------------------------------------------------------- | ||||
| # Load settings | # Load settings | ||||
| self.loadSettings() | self.loadSettings() | ||||
| if not hasCanvas: | if not hasCanvas: | ||||
| # TODO - hide canvas section | |||||
| self.ui.lw_page.hideRow(self.TAB_INDEX_CANVAS) | |||||
| if not hasCanvasGL: | if not hasCanvasGL: | ||||
| self.ui.cb_canvas_use_opengl.setChecked(False) | self.ui.cb_canvas_use_opengl.setChecked(False) | ||||
| @@ -217,12 +232,8 @@ class CarlaSettingsW(QDialog): | |||||
| self.ui.ch_theme_pro.setChecked(False) | self.ui.ch_theme_pro.setChecked(False) | ||||
| if Carla.isPlugin: | if Carla.isPlugin: | ||||
| self.ui.lw_page.hideRow(self.TAB_INDEX_CARLA_ENGINE) | |||||
| self.ui.lw_page.hideRow(self.TAB_INDEX_CARLA_PATHS) | |||||
| #from PyQt4.QtGui import QTableWidget | |||||
| #x = QTableWidget(self) | |||||
| #x.() | |||||
| self.ui.lw_page.hideRow(self.TAB_INDEX_ENGINE) | |||||
| self.ui.lw_page.hideRow(self.TAB_INDEX_PATHS) | |||||
| # ------------------------------------------------------------- | # ------------------------------------------------------------- | ||||
| # Set-up connections | # Set-up connections | ||||
| @@ -230,9 +241,11 @@ class CarlaSettingsW(QDialog): | |||||
| self.accepted.connect(self.slot_saveSettings) | self.accepted.connect(self.slot_saveSettings) | ||||
| self.ui.buttonBox.button(QDialogButtonBox.Reset).clicked.connect(self.slot_resetSettings) | self.ui.buttonBox.button(QDialogButtonBox.Reset).clicked.connect(self.slot_resetSettings) | ||||
| self.ui.b_main_def_folder_open.clicked.connect(self.slot_getAndSetProjectPath) | |||||
| self.ui.b_main_proj_folder_open.clicked.connect(self.slot_getAndSetProjectPath) | |||||
| self.ui.cb_engine_audio_driver.currentIndexChanged.connect(self.slot_engineAudioDriverChanged) | self.ui.cb_engine_audio_driver.currentIndexChanged.connect(self.slot_engineAudioDriverChanged) | ||||
| self.ui.tb_engine_driver_config.clicked.connect(self.slot_showAudioDriverSettings) | self.ui.tb_engine_driver_config.clicked.connect(self.slot_showAudioDriverSettings) | ||||
| self.ui.b_paths_add.clicked.connect(self.slot_addPluginPath) | self.ui.b_paths_add.clicked.connect(self.slot_addPluginPath) | ||||
| self.ui.b_paths_remove.clicked.connect(self.slot_removePluginPath) | self.ui.b_paths_remove.clicked.connect(self.slot_removePluginPath) | ||||
| self.ui.b_paths_change.clicked.connect(self.slot_changePluginPath) | self.ui.b_paths_change.clicked.connect(self.slot_changePluginPath) | ||||
| @@ -262,36 +275,28 @@ class CarlaSettingsW(QDialog): | |||||
| settings = QSettings() | settings = QSettings() | ||||
| # --------------------------------------- | # --------------------------------------- | ||||
| # Main | |||||
| self.ui.le_main_def_folder.setText(settings.value("Main/DefaultProjectFolder", HOME, type=str)) | |||||
| self.ui.ch_theme_pro.setChecked(settings.value("Main/UseProTheme", True, type=bool)) | |||||
| self.ui.sb_gui_refresh.setValue(settings.value("Main/RefreshInterval", 50, type=int)) | |||||
| themeColor = settings.value("Main/ProThemeColor", "Black", type=str) | |||||
| if themeColor == "System": | |||||
| self.ui.cb_theme_color.setCurrentIndex(1) | |||||
| else: | |||||
| self.ui.cb_theme_color.setCurrentIndex(0) | |||||
| 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)) | |||||
| 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.ch_main_disable_checks.setChecked(settings.value(CARLA_KEY_MAIN_DISABLE_CHECKS, CARLA_DEFAULT_MAIN_DISABLE_CHECKS, type=bool)) | |||||
| self.ui.sb_main_refresh_interval.setValue(settings.value(CARLA_KEY_MAIN_REFRESH_INTERVAL, CARLA_DEFAULT_MAIN_REFRESH_INTERVAL, type=int)) | |||||
| # --------------------------------------- | # --------------------------------------- | ||||
| # Canvas | |||||
| self.ui.cb_canvas_hide_groups.setChecked(settings.value("Canvas/AutoHideGroups", False, type=bool)) | |||||
| self.ui.cb_canvas_bezier_lines.setChecked(settings.value("Canvas/UseBezierLines", True, type=bool)) | |||||
| self.ui.cb_canvas_eyecandy.setCheckState(settings.value("Canvas/EyeCandy", CANVAS_EYECANDY_SMALL, type=int)) | |||||
| self.ui.cb_canvas_use_opengl.setChecked(settings.value("Canvas/UseOpenGL", False, type=bool)) | |||||
| self.ui.cb_canvas_render_aa.setCheckState(settings.value("Canvas/Antialiasing", CANVAS_ANTIALIASING_SMALL, type=int)) | |||||
| self.ui.cb_canvas_render_hq_aa.setChecked(settings.value("Canvas/HighQualityAntialiasing", False, type=bool)) | |||||
| canvasThemeName = settings.value("Canvas/Theme", getDefaultThemeName(), type=str) | |||||
| for i in range(Theme.THEME_MAX): | |||||
| thisThemeName = getThemeName(i) | |||||
| self.ui.cb_canvas_theme.addItem(thisThemeName) | |||||
| if thisThemeName == canvasThemeName: | |||||
| self.ui.cb_canvas_theme.setCurrentIndex(i) | |||||
| self.ui.cb_canvas_theme.setCurrentIndex(self.ui.cb_canvas_theme.findText(settings.value(CARLA_KEY_CANVAS_THEME, CARLA_DEFAULT_CANVAS_THEME, type=str))) | |||||
| self.ui.cb_canvas_size.setCurrentIndex(self.ui.cb_canvas_size.findText(settings.value(CARLA_KEY_CANVAS_SIZE, CARLA_DEFAULT_CANVAS_SIZE, type=str))) | |||||
| self.ui.cb_canvas_bezier_lines.setChecked(settings.value(CARLA_KEY_CANVAS_USE_BEZIER_LINES, CARLA_DEFAULT_CANVAS_USE_BEZIER_LINES, type=bool)) | |||||
| self.ui.cb_canvas_hide_groups.setChecked(settings.value(CARLA_KEY_CANVAS_AUTO_HIDE_GROUPS, CARLA_DEFAULT_CANVAS_AUTO_HIDE_GROUPS, type=bool)) | |||||
| self.ui.cb_canvas_eyecandy.setCheckState(settings.value(CARLA_KEY_CANVAS_EYE_CANDY, CARLA_DEFAULT_CANVAS_EYE_CANDY, type=int)) | |||||
| self.ui.cb_canvas_use_opengl.setChecked(settings.value(CARLA_KEY_CANVAS_USE_OPENGL, CARLA_DEFAULT_CANVAS_USE_OPENGL, type=bool)) | |||||
| self.ui.cb_canvas_render_aa.setCheckState(settings.value(CARLA_KEY_CANVAS_ANTIALIASING, CARLA_DEFAULT_CANVAS_ANTIALIASING, type=int)) | |||||
| self.ui.cb_canvas_render_hq_aa.setChecked(settings.value(CARLA_KEY_CANVAS_HQ_ANTIALIASING, CARLA_DEFAULT_CANVAS_HQ_ANTIALIASING, type=bool)) | |||||
| # -------------------------------------------- | # -------------------------------------------- | ||||
| # Engine | |||||
| audioDriver = settings.value("Engine/AudioDriver", CARLA_DEFAULT_AUDIO_DRIVER, type=str) | audioDriver = settings.value("Engine/AudioDriver", CARLA_DEFAULT_AUDIO_DRIVER, type=str) | ||||
| @@ -316,11 +321,11 @@ class CarlaSettingsW(QDialog): | |||||
| self.ui.ch_engine_uis_always_on_top.setChecked(settings.value("Engine/UIsAlwaysOnTop", CARLA_DEFAULT_UIS_ALWAYS_ON_TOP, type=bool)) | self.ui.ch_engine_uis_always_on_top.setChecked(settings.value("Engine/UIsAlwaysOnTop", CARLA_DEFAULT_UIS_ALWAYS_ON_TOP, type=bool)) | ||||
| self.ui.ch_engine_prefer_ui_bridges.setChecked(settings.value("Engine/PreferUiBridges", CARLA_DEFAULT_PREFER_UI_BRIDGES, type=bool)) | self.ui.ch_engine_prefer_ui_bridges.setChecked(settings.value("Engine/PreferUiBridges", CARLA_DEFAULT_PREFER_UI_BRIDGES, type=bool)) | ||||
| #self.ui.sb_engine_oscgui_timeout.setValue(settings.value("Engine/OscUiTimeout", CARLA_DEFAULT_OSC_UI_TIMEOUT, type=int)) | #self.ui.sb_engine_oscgui_timeout.setValue(settings.value("Engine/OscUiTimeout", CARLA_DEFAULT_OSC_UI_TIMEOUT, type=int)) | ||||
| self.ui.ch_engine_disable_checks.setChecked(settings.value("Engine/DisableChecks", CARLA_DEFAULT_DISABLE_CHECKS, type=bool)) | |||||
| self.ui.ch_engine_prefer_plugin_bridges.setChecked(settings.value("Engine/PreferPluginBridges", CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES, type=bool)) | self.ui.ch_engine_prefer_plugin_bridges.setChecked(settings.value("Engine/PreferPluginBridges", CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES, type=bool)) | ||||
| self.ui.ch_engine_force_stereo.setChecked(settings.value("Engine/ForceStereo", CARLA_DEFAULT_FORCE_STEREO, type=bool)) | self.ui.ch_engine_force_stereo.setChecked(settings.value("Engine/ForceStereo", CARLA_DEFAULT_FORCE_STEREO, type=bool)) | ||||
| # -------------------------------------------- | # -------------------------------------------- | ||||
| # Paths | |||||
| ladspas = toList(settings.value("Paths/LADSPA", Carla.DEFAULT_LADSPA_PATH)) | ladspas = toList(settings.value("Paths/LADSPA", Carla.DEFAULT_LADSPA_PATH)) | ||||
| dssis = toList(settings.value("Paths/DSSI", Carla.DEFAULT_DSSI_PATH)) | dssis = toList(settings.value("Paths/DSSI", Carla.DEFAULT_DSSI_PATH)) | ||||
| @@ -365,22 +370,22 @@ class CarlaSettingsW(QDialog): | |||||
| # --------------------------------------- | # --------------------------------------- | ||||
| settings.setValue("Main/DefaultProjectFolder", self.ui.le_main_def_folder.text()) | |||||
| settings.setValue("Main/UseProTheme", self.ui.ch_theme_pro.isChecked()) | |||||
| settings.setValue("Main/ProThemeColor", self.ui.cb_theme_color.currentText()) | |||||
| settings.setValue("Main/RefreshInterval", self.ui.sb_gui_refresh.value()) | |||||
| 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_DISABLE_CHECKS, self.ui.ch_main_disable_checks.isChecked()) | |||||
| settings.setValue(CARLA_KEY_MAIN_REFRESH_INTERVAL, self.ui.sb_main_refresh_interval.value()) | |||||
| # --------------------------------------- | # --------------------------------------- | ||||
| settings.setValue("Canvas/Theme", self.ui.cb_canvas_theme.currentText()) | |||||
| settings.setValue("Canvas/AutoHideGroups", self.ui.cb_canvas_hide_groups.isChecked()) | |||||
| settings.setValue("Canvas/UseBezierLines", self.ui.cb_canvas_bezier_lines.isChecked()) | |||||
| settings.setValue("Canvas/UseOpenGL", self.ui.cb_canvas_use_opengl.isChecked()) | |||||
| settings.setValue("Canvas/HighQualityAntialiasing", self.ui.cb_canvas_render_hq_aa.isChecked()) | |||||
| # 0, 1, 2 match their enum variants | |||||
| settings.setValue("Canvas/EyeCandy", self.ui.cb_canvas_eyecandy.checkState()) | |||||
| settings.setValue("Canvas/Antialiasing", self.ui.cb_canvas_render_aa.checkState()) | |||||
| settings.setValue(CARLA_KEY_CANVAS_THEME, self.ui.cb_canvas_theme.currentText()) | |||||
| settings.setValue(CARLA_KEY_CANVAS_SIZE, self.ui.cb_canvas_size.currentText()) | |||||
| settings.setValue(CARLA_KEY_CANVAS_USE_BEZIER_LINES, self.ui.cb_canvas_bezier_lines.isChecked()) | |||||
| settings.setValue(CARLA_KEY_CANVAS_AUTO_HIDE_GROUPS, self.ui.cb_canvas_hide_groups.isChecked()) | |||||
| settings.setValue(CARLA_KEY_CANVAS_EYE_CANDY, self.ui.cb_canvas_eyecandy.checkState()) # 0, 1, 2 match their enum variants | |||||
| settings.setValue(CARLA_KEY_CANVAS_USE_OPENGL, self.ui.cb_canvas_use_opengl.isChecked()) | |||||
| settings.setValue(CARLA_KEY_CANVAS_HQ_ANTIALIASING, self.ui.cb_canvas_render_hq_aa.isChecked()) | |||||
| settings.setValue(CARLA_KEY_CANVAS_ANTIALIASING, self.ui.cb_canvas_render_aa.checkState()) # 0, 1, 2 match their enum variants | |||||
| # -------------------------------------------- | # -------------------------------------------- | ||||
| @@ -398,7 +403,6 @@ class CarlaSettingsW(QDialog): | |||||
| settings.setValue("Engine/UIsAlwaysOnTop", self.ui.ch_engine_uis_always_on_top.isChecked()) | settings.setValue("Engine/UIsAlwaysOnTop", self.ui.ch_engine_uis_always_on_top.isChecked()) | ||||
| settings.setValue("Engine/PreferUiBridges", self.ui.ch_engine_prefer_ui_bridges.isChecked()) | settings.setValue("Engine/PreferUiBridges", self.ui.ch_engine_prefer_ui_bridges.isChecked()) | ||||
| #settings.setValue("Engine/OscUiTimeout", self.ui.sb_engine_oscgui_timeout.value()) | #settings.setValue("Engine/OscUiTimeout", self.ui.sb_engine_oscgui_timeout.value()) | ||||
| settings.setValue("Engine/DisableChecks", self.ui.ch_engine_disable_checks.isChecked()) | |||||
| settings.setValue("Engine/UseDssiVstChunks", self.ui.ch_engine_dssi_chunks.isChecked()) | settings.setValue("Engine/UseDssiVstChunks", self.ui.ch_engine_dssi_chunks.isChecked()) | ||||
| settings.setValue("Engine/PreferPluginBridges", self.ui.ch_engine_prefer_plugin_bridges.isChecked()) | settings.setValue("Engine/PreferPluginBridges", self.ui.ch_engine_prefer_plugin_bridges.isChecked()) | ||||
| settings.setValue("Engine/ForceStereo", self.ui.ch_engine_force_stereo.isChecked()) | settings.setValue("Engine/ForceStereo", self.ui.ch_engine_force_stereo.isChecked()) | ||||
| @@ -445,27 +449,28 @@ class CarlaSettingsW(QDialog): | |||||
| @pyqtSlot() | @pyqtSlot() | ||||
| def slot_resetSettings(self): | def slot_resetSettings(self): | ||||
| if self.ui.lw_page.currentRow() == self.TAB_INDEX_MAIN: | if self.ui.lw_page.currentRow() == self.TAB_INDEX_MAIN: | ||||
| self.ui.le_main_def_folder.setText(HOME) | |||||
| self.ui.ch_theme_pro.setChecked(True) | |||||
| self.ui.cb_theme_color.setCurrentIndex(0) | |||||
| self.ui.sb_gui_refresh.setValue(50) | |||||
| self.ui.le_main_proj_folder.setText(CARLA_DEFAULT_MAIN_PROJECT_FOLDER) | |||||
| self.ui.ch_theme_pro.setChecked(CARLA_DEFAULT_MAIN_USE_PRO_THEME) | |||||
| self.ui.cb_theme_color.setCurrentIndex(self.ui.cb_theme_color.findText(CARLA_DEFAULT_MAIN_PRO_THEME_COLOR)) | |||||
| self.ui.ch_engine_disable_checks.setChecked(CARLA_DEFAULT_MAIN_DISABLE_CHECKS) | |||||
| self.ui.sb_gui_refresh.setValue(CARLA_DEFAULT_MAIN_REFRESH_INTERVAL) | |||||
| elif self.ui.lw_page.currentRow() == self.TAB_INDEX_CANVAS: | elif self.ui.lw_page.currentRow() == self.TAB_INDEX_CANVAS: | ||||
| self.ui.cb_canvas_theme.setCurrentIndex(0) | |||||
| self.ui.cb_canvas_hide_groups.setChecked(False) | |||||
| self.ui.cb_canvas_bezier_lines.setChecked(True) | |||||
| self.ui.cb_canvas_eyecandy.setCheckState(Qt.PartiallyChecked) | |||||
| self.ui.cb_canvas_use_opengl.setChecked(False) | |||||
| self.ui.cb_canvas_render_aa.setCheckState(Qt.PartiallyChecked) | |||||
| self.ui.cb_canvas_render_hq_aa.setChecked(False) | |||||
| elif self.ui.lw_page.currentRow() == self.TAB_INDEX_CARLA_ENGINE: | |||||
| self.ui.cb_canvas_theme.setCurrentIndex(self.ui.cb_canvas_theme.findText(CARLA_DEFAULT_CANVAS_THEME)) | |||||
| self.ui.cb_canvas_size.setCurrentIndex(self.ui.cb_canvas_size.findText(CARLA_DEFAULT_CANVAS_SIZE)) | |||||
| self.ui.cb_canvas_bezier_lines.setChecked(CARLA_DEFAULT_CANVAS_USE_BEZIER_LINES) | |||||
| self.ui.cb_canvas_hide_groups.setChecked(CARLA_DEFAULT_CANVAS_AUTO_HIDE_GROUPS) | |||||
| self.ui.cb_canvas_eyecandy.setCheckState(Qt.PartiallyChecked) # CARLA_DEFAULT_CANVAS_EYE_CANDY | |||||
| self.ui.cb_canvas_use_opengl.setChecked(CARLA_DEFAULT_CANVAS_USE_OPENGL) | |||||
| self.ui.cb_canvas_render_aa.setCheckState(Qt.PartiallyChecked) # CARLA_DEFAULT_CANVAS_ANTIALIASING | |||||
| self.ui.cb_canvas_render_hq_aa.setChecked(CARLA_DEFAULT_CANVAS_HQ_ANTIALIASING) | |||||
| elif self.ui.lw_page.currentRow() == self.TAB_INDEX_ENGINE: | |||||
| self.ui.cb_engine_audio_driver.setCurrentIndex(0) | self.ui.cb_engine_audio_driver.setCurrentIndex(0) | ||||
| self.ui.sb_engine_max_params.setValue(CARLA_DEFAULT_MAX_PARAMETERS) | self.ui.sb_engine_max_params.setValue(CARLA_DEFAULT_MAX_PARAMETERS) | ||||
| self.ui.ch_engine_uis_always_on_top.setChecked(CARLA_DEFAULT_UIS_ALWAYS_ON_TOP) | self.ui.ch_engine_uis_always_on_top.setChecked(CARLA_DEFAULT_UIS_ALWAYS_ON_TOP) | ||||
| self.ui.ch_engine_prefer_ui_bridges.setChecked(CARLA_DEFAULT_PREFER_UI_BRIDGES) | self.ui.ch_engine_prefer_ui_bridges.setChecked(CARLA_DEFAULT_PREFER_UI_BRIDGES) | ||||
| #self.ui.sb_engine_oscgui_timeout.setValue(CARLA_DEFAULT_OSC_UI_TIMEOUT) | #self.ui.sb_engine_oscgui_timeout.setValue(CARLA_DEFAULT_OSC_UI_TIMEOUT) | ||||
| #self.ui.ch_engine_disable_checks.setChecked(CARLA_DEFAULT_DISABLE_CHECKS) | |||||
| self.ui.ch_engine_prefer_plugin_bridges.setChecked(CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES) | self.ui.ch_engine_prefer_plugin_bridges.setChecked(CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES) | ||||
| self.ui.ch_engine_force_stereo.setChecked(CARLA_DEFAULT_FORCE_STEREO) | self.ui.ch_engine_force_stereo.setChecked(CARLA_DEFAULT_FORCE_STEREO) | ||||
| @@ -476,7 +481,7 @@ class CarlaSettingsW(QDialog): | |||||
| self.ui.cb_engine_process_mode_other.setCurrentIndex(PROCESS_MODE_CONTINUOUS_RACK-self.PROCESS_MODE_NON_JACK_PADDING) | self.ui.cb_engine_process_mode_other.setCurrentIndex(PROCESS_MODE_CONTINUOUS_RACK-self.PROCESS_MODE_NON_JACK_PADDING) | ||||
| self.ui.sw_engine_process_mode.setCurrentIndex(1) | self.ui.sw_engine_process_mode.setCurrentIndex(1) | ||||
| elif self.ui.lw_page.currentRow() == self.TAB_INDEX_CARLA_PATHS: | |||||
| elif self.ui.lw_page.currentRow() == self.TAB_INDEX_PATHS: | |||||
| if self.ui.tw_paths.currentIndex() == 0: | if self.ui.tw_paths.currentIndex() == 0: | ||||
| paths = DEFAULT_LADSPA_PATH.split(splitter) | paths = DEFAULT_LADSPA_PATH.split(splitter) | ||||
| paths.sort() | paths.sort() | ||||
| @@ -535,7 +540,7 @@ class CarlaSettingsW(QDialog): | |||||
| @pyqtSlot() | @pyqtSlot() | ||||
| def slot_getAndSetProjectPath(self): | def slot_getAndSetProjectPath(self): | ||||
| getAndSetPath(self, self.ui.le_main_def_folder.text(), self.ui.le_main_def_folder) | |||||
| getAndSetPath(self, self.ui.le_main_proj_folder.text(), self.ui.le_main_proj_folder) | |||||
| @pyqtSlot() | @pyqtSlot() | ||||
| def slot_engineAudioDriverChanged(self): | def slot_engineAudioDriverChanged(self): | ||||
| @@ -300,6 +300,44 @@ else: | |||||
| DEFAULT_SFZ_PATH = ":".join((os.path.join(HOME, ".sounds", "sfz"), | DEFAULT_SFZ_PATH = ":".join((os.path.join(HOME, ".sounds", "sfz"), | ||||
| os.path.join("/", "usr", "share", "sounds", "sfz"))) | os.path.join("/", "usr", "share", "sounds", "sfz"))) | ||||
| # ------------------------------------------------------------------------------------------------------------ | |||||
| # Carla Settings keys | |||||
| CARLA_KEY_MAIN_PROJECT_FOLDER = "Main/ProjectFolder" # str | |||||
| CARLA_KEY_MAIN_USE_PRO_THEME = "Main/UseProTheme" # bool | |||||
| CARLA_KEY_MAIN_PRO_THEME_COLOR = "Main/ProThemeColor" # str | |||||
| CARLA_KEY_MAIN_DISABLE_CHECKS = "Main/DisableChecks" # bool | |||||
| CARLA_KEY_MAIN_REFRESH_INTERVAL = "Main/RefreshInterval" # int | |||||
| CARLA_KEY_CANVAS_THEME = "Canvas/Theme" # str | |||||
| CARLA_KEY_CANVAS_SIZE = "Canvas/Size" # str "NxN" | |||||
| CARLA_KEY_CANVAS_USE_BEZIER_LINES = "Canvas/UseBezierLines" # bool | |||||
| CARLA_KEY_CANVAS_AUTO_HIDE_GROUPS = "Canvas/AutoHideGroups" # bool | |||||
| CARLA_KEY_CANVAS_EYE_CANDY = "Canvas/EyeCandy" # enum | |||||
| CARLA_KEY_CANVAS_USE_OPENGL = "Canvas/UseOpenGL" # bool | |||||
| CARLA_KEY_CANVAS_ANTIALIASING = "Canvas/Antialiasing" # enum | |||||
| CARLA_KEY_CANVAS_HQ_ANTIALIASING = "Canvas/HQAntialiasing" # bool | |||||
| CARLA_KEY_ENGINE_ = "Engine/AudioDriver" # str | |||||
| CARLA_KEY_ENGINE_ = "Engine/ProcessMode" # enum | |||||
| CARLA_KEY_ENGINE_ = "Engine/MaxParameters" # bool | |||||
| CARLA_KEY_ENGINE_ = "Engine/UIsAlwaysOnTop" # bool | |||||
| CARLA_KEY_ENGINE_ = "Engine/PreferUiBridges" # bool | |||||
| CARLA_KEY_ENGINE_ = "Engine/OscUiTimeout" # int | |||||
| CARLA_KEY_ENGINE_ = "Engine/PreferPluginBridges" # bool | |||||
| CARLA_KEY_ENGINE_ = "Engine/ForceStereo" # bool | |||||
| CARLA_KEY_ENGINE_DRIVER_PREFIX = "Engine/Driver-" | |||||
| CARLA_KEY_PATHS_LADSPA = "Paths/LADSPA" | |||||
| CARLA_KEY_PATHS_DSSI = "Paths/DSSI" | |||||
| CARLA_KEY_PATHS_LV2 = "Paths/LV2" | |||||
| CARLA_KEY_PATHS_VST = "Paths/VST" | |||||
| CARLA_KEY_PATHS_AU = "Paths/AU" | |||||
| CARLA_KEY_PATHS_CSOUND = "Paths/CSOUND" | |||||
| CARLA_KEY_PATHS_GIG = "Paths/GIG" | |||||
| CARLA_KEY_PATHS_SF2 = "Paths/SF2" | |||||
| CARLA_KEY_PATHS_SFZ = "Paths/SFZ" | |||||
| # ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
| # Global Carla object | # Global Carla object | ||||
| @@ -925,11 +925,12 @@ class PluginEdit(QDialog): | |||||
| self.ui.cb_midi_programs.setCurrentIndex(index) | self.ui.cb_midi_programs.setCurrentIndex(index) | ||||
| self.ui.cb_midi_programs.blockSignals(False) | self.ui.cb_midi_programs.blockSignals(False) | ||||
| def sendNoteOn(self, channel, note): | |||||
| # FIXME - return True/False instead of needsLedFeedback | |||||
| def sendNoteOn(self, channel, note, needsLedFeedback): | |||||
| if self.fControlChannel == channel: | if self.fControlChannel == channel: | ||||
| self.ui.keyboard.sendNoteOn(note, False) | self.ui.keyboard.sendNoteOn(note, False) | ||||
| if len(self.fPlayingNotes) == 0 and self.fRealParent: | |||||
| if needsLedFeedback and len(self.fPlayingNotes) == 0 and self.fRealParent is not None: | |||||
| self.fRealParent.ui.led_midi.setChecked(True) | self.fRealParent.ui.led_midi.setChecked(True) | ||||
| playItem = (channel, note) | playItem = (channel, note) | ||||
| @@ -937,11 +938,11 @@ class PluginEdit(QDialog): | |||||
| if playItem not in self.fPlayingNotes: | if playItem not in self.fPlayingNotes: | ||||
| self.fPlayingNotes.append(playItem) | self.fPlayingNotes.append(playItem) | ||||
| def sendNoteOff(self, channel, note): | |||||
| def sendNoteOff(self, channel, note, needsLedFeedback): | |||||
| if self.fControlChannel == channel: | if self.fControlChannel == channel: | ||||
| self.ui.keyboard.sendNoteOff(note, False) | self.ui.keyboard.sendNoteOff(note, False) | ||||
| if len(self.fPlayingNotes) == 1 and self.fRealParent: | |||||
| if needsLedFeedback and len(self.fPlayingNotes) == 1 and self.fRealParent is not None: | |||||
| self.fRealParent.ui.led_midi.setChecked(False) | self.fRealParent.ui.led_midi.setChecked(False) | ||||
| playItem = (channel, note) | playItem = (channel, note) | ||||
| @@ -442,6 +442,8 @@ def addGroup(group_id, group_name, split=SPLIT_UNDEF, icon=ICON_APPLICATION): | |||||
| if options.eyecandy == EYECANDY_FULL and not options.auto_hide_groups: | if options.eyecandy == EYECANDY_FULL and not options.auto_hide_groups: | ||||
| CanvasItemFX(group_sbox, True) | CanvasItemFX(group_sbox, True) | ||||
| group_sbox.checkItemPos() | |||||
| else: | else: | ||||
| group_box.setSplit(False) | group_box.setSplit(False) | ||||