| @@ -6,7 +6,7 @@ | |||
| <rect> | |||
| <x>0</x> | |||
| <y>0</y> | |||
| <width>600</width> | |||
| <width>607</width> | |||
| <height>465</height> | |||
| </rect> | |||
| </property> | |||
| @@ -180,7 +180,7 @@ | |||
| <number>0</number> | |||
| </property> | |||
| <property name="currentIndex"> | |||
| <number>0</number> | |||
| <number>1</number> | |||
| </property> | |||
| <widget class="QWidget" name="page_main"> | |||
| <layout class="QVBoxLayout" name="verticalLayout_5"> | |||
| @@ -190,7 +190,7 @@ | |||
| <item> | |||
| <layout class="QHBoxLayout" name="horizontalLayout"> | |||
| <item> | |||
| <widget class="QLabel" name="label"> | |||
| <widget class="QLabel" name="label_main"> | |||
| <property name="text"> | |||
| <string><b>Main</b></string> | |||
| </property> | |||
| @@ -236,17 +236,17 @@ | |||
| <item> | |||
| <layout class="QHBoxLayout" name="horizontalLayout_2"> | |||
| <item> | |||
| <widget class="QLabel" name="label_3"> | |||
| <widget class="QLabel" name="label_main_proj_folder_open"> | |||
| <property name="text"> | |||
| <string>Default project folder:</string> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item> | |||
| <widget class="QLineEdit" name="le_main_def_folder"/> | |||
| <widget class="QLineEdit" name="le_main_proj_folder"/> | |||
| </item> | |||
| <item> | |||
| <widget class="QPushButton" name="b_main_def_folder_open"> | |||
| <widget class="QPushButton" name="b_main_proj_folder_open"> | |||
| <property name="maximumSize"> | |||
| <size> | |||
| <width>22</width> | |||
| @@ -268,20 +268,20 @@ | |||
| </widget> | |||
| </item> | |||
| <item> | |||
| <widget class="QGroupBox" name="group_theme"> | |||
| <widget class="QGroupBox" name="group_main_theme"> | |||
| <property name="title"> | |||
| <string>Theme</string> | |||
| </property> | |||
| <layout class="QGridLayout" name="gridLayout_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"> | |||
| <string>Use Carla "PRO" theme (needs restart)</string> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item row="1" column="0"> | |||
| <widget class="QLabel" name="label_2"> | |||
| <widget class="QLabel" name="label_main_theme_color"> | |||
| <property name="enabled"> | |||
| <bool>false</bool> | |||
| </property> | |||
| @@ -294,7 +294,7 @@ | |||
| </widget> | |||
| </item> | |||
| <item row="1" column="1"> | |||
| <widget class="QComboBox" name="cb_theme_color"> | |||
| <widget class="QComboBox" name="cb_main_theme_color"> | |||
| <property name="enabled"> | |||
| <bool>false</bool> | |||
| </property> | |||
| @@ -330,13 +330,13 @@ | |||
| </widget> | |||
| </item> | |||
| <item> | |||
| <widget class="QGroupBox" name="groupBox_3"> | |||
| <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_8"> | |||
| <widget class="QLabel" name="label_main_refresh_interval"> | |||
| <property name="text"> | |||
| <string>GUI Refresh interval:</string> | |||
| </property> | |||
| @@ -346,7 +346,7 @@ | |||
| </widget> | |||
| </item> | |||
| <item row="1" column="1"> | |||
| <widget class="QSpinBox" name="sb_gui_refresh"> | |||
| <widget class="QSpinBox" name="sb_main_refresh_interval"> | |||
| <property name="suffix"> | |||
| <string> ms</string> | |||
| </property> | |||
| @@ -378,7 +378,7 @@ | |||
| </spacer> | |||
| </item> | |||
| <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"> | |||
| <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> | |||
| @@ -452,7 +452,7 @@ You can disable these checks to get a faster scanning time (at your own risk).</ | |||
| </layout> | |||
| </item> | |||
| <item> | |||
| <widget class="QGroupBox" name="groupBox_4"> | |||
| <widget class="QGroupBox" name="group_canvas_theme"> | |||
| <property name="title"> | |||
| <string>Theme</string> | |||
| </property> | |||
| @@ -470,7 +470,7 @@ You can disable these checks to get a faster scanning time (at your own risk).</ | |||
| </property> | |||
| </spacer> | |||
| </item> | |||
| <item row="1" column="0" colspan="2"> | |||
| <item row="2" column="0" colspan="2"> | |||
| <spacer name="horizontalSpacer_8"> | |||
| <property name="orientation"> | |||
| <enum>Qt::Horizontal</enum> | |||
| @@ -483,7 +483,7 @@ You can disable these checks to get a faster scanning time (at your own risk).</ | |||
| </property> | |||
| </spacer> | |||
| </item> | |||
| <item row="1" column="2" colspan="3"> | |||
| <item row="2" column="2" colspan="3"> | |||
| <widget class="QCheckBox" name="cb_canvas_bezier_lines"> | |||
| <property name="text"> | |||
| <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"/> | |||
| </item> | |||
| <item row="0" column="1" colspan="2"> | |||
| <widget class="QLabel" name="label_11"> | |||
| <widget class="QLabel" name="label_canvas_theme"> | |||
| <property name="text"> | |||
| <string>Theme:</string> | |||
| </property> | |||
| @@ -516,11 +516,76 @@ You can disable these checks to get a faster scanning time (at your own risk).</ | |||
| </property> | |||
| </spacer> | |||
| </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> | |||
| </widget> | |||
| </item> | |||
| <item> | |||
| <widget class="QGroupBox" name="groupBox_7"> | |||
| <widget class="QGroupBox" name="group_canvas_options"> | |||
| <property name="title"> | |||
| <string>Options</string> | |||
| </property> | |||
| @@ -553,7 +618,7 @@ You can disable these checks to get a faster scanning time (at your own risk).</ | |||
| </widget> | |||
| </item> | |||
| <item> | |||
| <widget class="QGroupBox" name="groupBox_5"> | |||
| <widget class="QGroupBox" name="group_canvas_render"> | |||
| <property name="title"> | |||
| <string>Render Hints</string> | |||
| </property> | |||
| @@ -632,7 +697,7 @@ You can disable these checks to get a faster scanning time (at your own risk).</ | |||
| <string notr="true"/> | |||
| </property> | |||
| <property name="pixmap"> | |||
| <pixmap>:/48x48/exec.png</pixmap> | |||
| <pixmap resource="../resources.qrc">:/48x48/jack.png</pixmap> | |||
| </property> | |||
| <property name="alignment"> | |||
| <set>Qt::AlignHCenter|Qt::AlignTop</set> | |||
| @@ -1306,9 +1371,9 @@ This mode is not available for VST plugins.</string> | |||
| </hints> | |||
| </connection> | |||
| <connection> | |||
| <sender>ch_theme_pro</sender> | |||
| <sender>ch_main_theme_pro</sender> | |||
| <signal>toggled(bool)</signal> | |||
| <receiver>label_2</receiver> | |||
| <receiver>label_main_theme_color</receiver> | |||
| <slot>setEnabled(bool)</slot> | |||
| <hints> | |||
| <hint type="sourcelabel"> | |||
| @@ -1322,9 +1387,9 @@ This mode is not available for VST plugins.</string> | |||
| </hints> | |||
| </connection> | |||
| <connection> | |||
| <sender>ch_theme_pro</sender> | |||
| <sender>ch_main_theme_pro</sender> | |||
| <signal>toggled(bool)</signal> | |||
| <receiver>cb_theme_color</receiver> | |||
| <receiver>cb_main_theme_color</receiver> | |||
| <slot>setEnabled(bool)</slot> | |||
| <hints> | |||
| <hint type="sourcelabel"> | |||
| @@ -42,7 +42,6 @@ from carla_widgets import * | |||
| CANVAS_ANTIALIASING_SMALL = 1 | |||
| CANVAS_EYECANDY_SMALL = 1 | |||
| CANVAS_DEFAULT_THEME_NAME = "Modern Dark" | |||
| # ------------------------------------------------------------------------------------------------------------ | |||
| # Session Management support | |||
| @@ -601,18 +600,21 @@ class HostWindow(QMainWindow): | |||
| # --------------------------------------------- | |||
| # TODO | |||
| 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.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.setRenderHint(QPainter.HighQualityAntialiasing, parent.fSavedSettings["Canvas/HighQualityAntialiasing"]) | |||
| self.setRenderHint(QPainter.HighQualityAntialiasing, parent.fSavedSettings[CARLA_KEY_CANVAS_HQ_ANTIALIASING]) | |||
| 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.group_info = False | |||
| @@ -88,16 +88,22 @@ class CarlaPatchbayW(QGraphicsView): | |||
| patchcanvas.setFeatures(pFeatures) | |||
| 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 | |||
| if parent is None: | |||
| return | |||
| parent.ui.act_plugins_enable.triggered.connect(self.slot_pluginsEnable) | |||
| parent.ui.act_plugins_disable.triggered.connect(self.slot_pluginsDisable) | |||
| parent.ui.act_plugins_volume100.triggered.connect(self.slot_pluginsVolume100) | |||
| @@ -334,7 +340,7 @@ class CarlaPatchbayW(QGraphicsView): | |||
| @pyqtSlot() | |||
| 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 | |||
| self.fParent.loadSettings(False) | |||
| @@ -442,7 +448,7 @@ class CarlaPatchbayW(QGraphicsView): | |||
| if pitem is None: | |||
| return | |||
| pitem.sendNoteOn(channel, note) | |||
| pitem.sendNoteOn(channel, note, False) | |||
| @pyqtSlot(int, int, int) | |||
| def slot_handleNoteOffCallback(self, pluginId, channel, note): | |||
| @@ -453,7 +459,7 @@ class CarlaPatchbayW(QGraphicsView): | |||
| if pitem is None: | |||
| return | |||
| pitem.sendNoteOff(channel, note) | |||
| pitem.sendNoteOff(channel, note, False) | |||
| # ----------------------------------------------------------------- | |||
| @@ -415,7 +415,7 @@ class CarlaRackW(QListWidget): | |||
| if pitem is None: | |||
| return | |||
| pitem.fWidget.sendNoteOn(channel, note) | |||
| pitem.fWidget.sendNoteOn(channel, note, True) | |||
| @pyqtSlot(int, int, int) | |||
| def slot_handleNoteOffCallback(self, pluginId, channel, note): | |||
| @@ -426,7 +426,7 @@ class CarlaRackW(QListWidget): | |||
| if pitem is None: | |||
| return | |||
| pitem.fWidget.sendNoteOff(channel, note) | |||
| pitem.fWidget.sendNoteOff(channel, note, True) | |||
| # ----------------------------------------------------------------- | |||
| @@ -38,14 +38,34 @@ from carla_style 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_PREFER_PLUGIN_BRIDGES = False | |||
| CARLA_DEFAULT_PREFER_UI_BRIDGES = True | |||
| @@ -66,18 +86,9 @@ else: | |||
| if LINUX: | |||
| CARLA_DEFAULT_PROCESS_MODE = PROCESS_MODE_MULTIPLE_CLIENTS | |||
| CARLA_DEFAULT_TRANSPORT_MODE = TRANSPORT_MODE_JACK | |||
| CARLA_DEFAULT_DISABLE_CHECKS = False | |||
| else: | |||
| CARLA_DEFAULT_PROCESS_MODE = PROCESS_MODE_CONTINUOUS_RACK | |||
| 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): | |||
| 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: | |||
| self.ui.cb_device.setCurrentIndex(self.fDeviceNames.index(audioDevice)) | |||
| @@ -161,10 +172,10 @@ class DriverSettingsW(QDialog): | |||
| def slot_saveSettings(self): | |||
| 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): | |||
| QDialog.done(self, r) | |||
| @@ -175,11 +186,11 @@ class DriverSettingsW(QDialog): | |||
| class CarlaSettingsW(QDialog): | |||
| # 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, | |||
| # 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)) | |||
| 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 | |||
| self.loadSettings() | |||
| if not hasCanvas: | |||
| # TODO - hide canvas section | |||
| self.ui.lw_page.hideRow(self.TAB_INDEX_CANVAS) | |||
| if not hasCanvasGL: | |||
| self.ui.cb_canvas_use_opengl.setChecked(False) | |||
| @@ -217,12 +232,8 @@ class CarlaSettingsW(QDialog): | |||
| self.ui.ch_theme_pro.setChecked(False) | |||
| 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 | |||
| @@ -230,9 +241,11 @@ class CarlaSettingsW(QDialog): | |||
| self.accepted.connect(self.slot_saveSettings) | |||
| 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.tb_engine_driver_config.clicked.connect(self.slot_showAudioDriverSettings) | |||
| self.ui.b_paths_add.clicked.connect(self.slot_addPluginPath) | |||
| self.ui.b_paths_remove.clicked.connect(self.slot_removePluginPath) | |||
| self.ui.b_paths_change.clicked.connect(self.slot_changePluginPath) | |||
| @@ -262,36 +275,28 @@ class CarlaSettingsW(QDialog): | |||
| 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) | |||
| @@ -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_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.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_force_stereo.setChecked(settings.value("Engine/ForceStereo", CARLA_DEFAULT_FORCE_STEREO, type=bool)) | |||
| # -------------------------------------------- | |||
| # Paths | |||
| ladspas = toList(settings.value("Paths/LADSPA", Carla.DEFAULT_LADSPA_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/PreferUiBridges", self.ui.ch_engine_prefer_ui_bridges.isChecked()) | |||
| #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/PreferPluginBridges", self.ui.ch_engine_prefer_plugin_bridges.isChecked()) | |||
| settings.setValue("Engine/ForceStereo", self.ui.ch_engine_force_stereo.isChecked()) | |||
| @@ -445,27 +449,28 @@ class CarlaSettingsW(QDialog): | |||
| @pyqtSlot() | |||
| def slot_resetSettings(self): | |||
| 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: | |||
| 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.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_prefer_ui_bridges.setChecked(CARLA_DEFAULT_PREFER_UI_BRIDGES) | |||
| #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_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.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: | |||
| paths = DEFAULT_LADSPA_PATH.split(splitter) | |||
| paths.sort() | |||
| @@ -535,7 +540,7 @@ class CarlaSettingsW(QDialog): | |||
| @pyqtSlot() | |||
| 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() | |||
| def slot_engineAudioDriverChanged(self): | |||
| @@ -300,6 +300,44 @@ else: | |||
| DEFAULT_SFZ_PATH = ":".join((os.path.join(HOME, ".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 | |||
| @@ -925,11 +925,12 @@ class PluginEdit(QDialog): | |||
| self.ui.cb_midi_programs.setCurrentIndex(index) | |||
| 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: | |||
| 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) | |||
| playItem = (channel, note) | |||
| @@ -937,11 +938,11 @@ class PluginEdit(QDialog): | |||
| if playItem not in self.fPlayingNotes: | |||
| self.fPlayingNotes.append(playItem) | |||
| def sendNoteOff(self, channel, note): | |||
| def sendNoteOff(self, channel, note, needsLedFeedback): | |||
| if self.fControlChannel == channel: | |||
| 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) | |||
| 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: | |||
| CanvasItemFX(group_sbox, True) | |||
| group_sbox.checkItemPos() | |||
| else: | |||
| group_box.setSplit(False) | |||