|
|
@@ -19,16 +19,480 @@ |
|
|
|
# ------------------------------------------------------------------------------------------------------------ |
|
|
|
# Imports (Global) |
|
|
|
|
|
|
|
from PyQt4.QtCore import QSize |
|
|
|
from PyQt4.QtGui import QApplication, QMainWindow |
|
|
|
from PyQt4.QtCore import Qt, QSize |
|
|
|
from PyQt4.QtGui import QApplication, QDialogButtonBox, QMainWindow |
|
|
|
|
|
|
|
# ------------------------------------------------------------------------------------------------------------ |
|
|
|
# Imports (Custom Stuff) |
|
|
|
|
|
|
|
import ui_carla |
|
|
|
import ui_carla_settings |
|
|
|
from carla_shared import * |
|
|
|
from carla_backend import * # FIXME, remove later |
|
|
|
|
|
|
|
# ------------------------------------------------------------------------------------------------------------ |
|
|
|
# Global variables |
|
|
|
|
|
|
|
# Tab indexes |
|
|
|
TAB_INDEX_MAIN = 0 |
|
|
|
TAB_INDEX_CANVAS = 1 |
|
|
|
TAB_INDEX_CARLA_ENGINE = 2 |
|
|
|
TAB_INDEX_CARLA_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, |
|
|
|
# so add +2 pos padding if driverName != "JACK". |
|
|
|
PROCESS_MODE_NON_JACK_PADDING = 2 |
|
|
|
|
|
|
|
# Carla defaults |
|
|
|
CARLA_DEFAULT_PROCESS_HIGH_PRECISION = False |
|
|
|
CARLA_DEFAULT_MAX_PARAMETERS = 200 |
|
|
|
CARLA_DEFAULT_FORCE_STEREO = False |
|
|
|
CARLA_DEFAULT_USE_DSSI_VST_CHUNKS = False |
|
|
|
CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES = False |
|
|
|
CARLA_DEFAULT_PREFER_UI_BRIDGES = True |
|
|
|
CARLA_DEFAULT_OSC_UI_TIMEOUT = 4000 |
|
|
|
CARLA_DEFAULT_DISABLE_CHECKS = False |
|
|
|
|
|
|
|
# PatchCanvas defines |
|
|
|
CANVAS_ANTIALIASING_SMALL = 1 |
|
|
|
CANVAS_EYECANDY_SMALL = 1 |
|
|
|
|
|
|
|
# ------------------------------------------------------------------------------------------------------------ |
|
|
|
# Settings Dialog |
|
|
|
|
|
|
|
class CarlaSettingsW(QDialog): |
|
|
|
def __init__(self, parent): |
|
|
|
QDialog.__init__(self, parent) |
|
|
|
self.ui = ui_carla_settings.Ui_CarlaSettingsW() |
|
|
|
self.ui.setupUi(self) |
|
|
|
|
|
|
|
# TODO |
|
|
|
self.ui.lw_page.hideRow(TAB_INDEX_CANVAS) |
|
|
|
|
|
|
|
# ------------------------------------------------------------- |
|
|
|
# Load settings |
|
|
|
|
|
|
|
self.loadSettings() |
|
|
|
|
|
|
|
# ------------------------------------------------------------- |
|
|
|
# Set-up GUI |
|
|
|
|
|
|
|
driverCount = Carla.host.get_engine_driver_count() |
|
|
|
|
|
|
|
for i in range(driverCount): |
|
|
|
driverName = cString(Carla.host.get_engine_driver_name(i)) |
|
|
|
self.ui.cb_engine_audio_driver.addItem(driverName) |
|
|
|
|
|
|
|
#if not hasOpenGL: |
|
|
|
#self.cb_canvas_use_opengl.setChecked(False) |
|
|
|
#self.cb_canvas_use_opengl.setEnabled(False) |
|
|
|
|
|
|
|
# ------------------------------------------------------------- |
|
|
|
# Set-up connections |
|
|
|
|
|
|
|
self.connect(self, SIGNAL("accepted()"), SLOT("slot_saveSettings()")) |
|
|
|
self.connect(self.ui.buttonBox.button(QDialogButtonBox.Reset), SIGNAL("clicked()"), SLOT("slot_resetSettings()")) |
|
|
|
|
|
|
|
self.connect(self.ui.b_main_def_folder_open, SIGNAL("clicked()"), SLOT("slot_getAndSetProjectPath()")) |
|
|
|
self.connect(self.ui.cb_engine_audio_driver, SIGNAL("currentIndexChanged(int)"), SLOT("slot_engineAudioDriverChanged()")) |
|
|
|
self.connect(self.ui.b_paths_add, SIGNAL("clicked()"), SLOT("slot_addPluginPath()")) |
|
|
|
self.connect(self.ui.b_paths_remove, SIGNAL("clicked()"), SLOT("slot_removePluginPath()")) |
|
|
|
self.connect(self.ui.b_paths_change, SIGNAL("clicked()"), SLOT("slot_changePluginPath()")) |
|
|
|
self.connect(self.ui.tw_paths, SIGNAL("currentChanged(int)"), SLOT("slot_pluginPathTabChanged(int)")) |
|
|
|
self.connect(self.ui.lw_ladspa, SIGNAL("currentRowChanged(int)"), SLOT("slot_pluginPathRowChanged(int)")) |
|
|
|
self.connect(self.ui.lw_dssi, SIGNAL("currentRowChanged(int)"), SLOT("slot_pluginPathRowChanged(int)")) |
|
|
|
self.connect(self.ui.lw_lv2, SIGNAL("currentRowChanged(int)"), SLOT("slot_pluginPathRowChanged(int)")) |
|
|
|
self.connect(self.ui.lw_vst, SIGNAL("currentRowChanged(int)"), SLOT("slot_pluginPathRowChanged(int)")) |
|
|
|
self.connect(self.ui.lw_sf2, SIGNAL("currentRowChanged(int)"), SLOT("slot_pluginPathRowChanged(int)")) |
|
|
|
|
|
|
|
# ------------------------------------------------------------- |
|
|
|
# Post-connect setup |
|
|
|
|
|
|
|
self.ui.lw_ladspa.setCurrentRow(0) |
|
|
|
self.ui.lw_dssi.setCurrentRow(0) |
|
|
|
self.ui.lw_lv2.setCurrentRow(0) |
|
|
|
self.ui.lw_vst.setCurrentRow(0) |
|
|
|
self.ui.lw_gig.setCurrentRow(0) |
|
|
|
self.ui.lw_sf2.setCurrentRow(0) |
|
|
|
self.ui.lw_sfz.setCurrentRow(0) |
|
|
|
#QTimer.singleShot(0, self, ) |
|
|
|
#self.slot_pluginPathTabChanged(self.tw_paths.currentIndex()) |
|
|
|
|
|
|
|
def loadSettings(self): |
|
|
|
settings = QSettings() |
|
|
|
|
|
|
|
# --------------------------------------- |
|
|
|
|
|
|
|
self.ui.le_main_def_folder.setText(settings.value("Main/DefaultProjectFolder", HOME, type=str)) |
|
|
|
self.ui.sb_gui_refresh.setValue(settings.value("Main/RefreshInterval", 50, type=int)) |
|
|
|
|
|
|
|
# --------------------------------------- |
|
|
|
|
|
|
|
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)) |
|
|
|
|
|
|
|
#themeName = 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 == themeName: |
|
|
|
#self.ui.cb_canvas_theme.setCurrentIndex(i) |
|
|
|
|
|
|
|
# -------------------------------------------- |
|
|
|
|
|
|
|
audioDriver = settings.value("Engine/AudioDriver", "JACK", type=str) |
|
|
|
for i in range(self.ui.cb_engine_audio_driver.count()): |
|
|
|
if self.ui.cb_engine_audio_driver.itemText(i) == audioDriver: |
|
|
|
self.ui.cb_engine_audio_driver.setCurrentIndex(i) |
|
|
|
break |
|
|
|
else: |
|
|
|
self.ui.cb_engine_audio_driver.setCurrentIndex(-1) |
|
|
|
|
|
|
|
if audioDriver == "JACK": |
|
|
|
processModeIndex = settings.value("Engine/ProcessMode", PROCESS_MODE_MULTIPLE_CLIENTS, type=int) |
|
|
|
self.ui.cb_engine_process_mode_jack.setCurrentIndex(processModeIndex) |
|
|
|
self.ui.sw_engine_process_mode.setCurrentIndex(0) |
|
|
|
else: |
|
|
|
processModeIndex = settings.value("Engine/ProcessMode", PROCESS_MODE_CONTINUOUS_RACK, type=int) |
|
|
|
processModeIndex -= PROCESS_MODE_NON_JACK_PADDING |
|
|
|
self.ui.cb_engine_process_mode_other.setCurrentIndex(processModeIndex) |
|
|
|
self.ui.sw_engine_process_mode.setCurrentIndex(1) |
|
|
|
|
|
|
|
self.ui.sb_engine_max_params.setValue(settings.value("Engine/MaxParameters", CARLA_DEFAULT_MAX_PARAMETERS, type=int)) |
|
|
|
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_dssi_chunks.setChecked(settings.value("Engine/UseDssiVstChunks", CARLA_DEFAULT_USE_DSSI_VST_CHUNKS, 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)) |
|
|
|
|
|
|
|
# -------------------------------------------- |
|
|
|
|
|
|
|
global LADSPA_PATH, DSSI_PATH, LV2_PATH, VST_PATH, GIG_PATH, SF2_PATH, SFZ_PATH |
|
|
|
|
|
|
|
ladspas = toList(settings.value("Paths/LADSPA", LADSPA_PATH)) |
|
|
|
dssis = toList(settings.value("Paths/DSSI", DSSI_PATH)) |
|
|
|
lv2s = toList(settings.value("Paths/LV2", LV2_PATH)) |
|
|
|
vsts = toList(settings.value("Paths/VST", VST_PATH)) |
|
|
|
gigs = toList(settings.value("Paths/GIG", GIG_PATH)) |
|
|
|
sf2s = toList(settings.value("Paths/SF2", SF2_PATH)) |
|
|
|
sfzs = toList(settings.value("Paths/SFZ", SFZ_PATH)) |
|
|
|
|
|
|
|
ladspas.sort() |
|
|
|
dssis.sort() |
|
|
|
lv2s.sort() |
|
|
|
vsts.sort() |
|
|
|
gigs.sort() |
|
|
|
sf2s.sort() |
|
|
|
sfzs.sort() |
|
|
|
|
|
|
|
for ladspa in ladspas: |
|
|
|
self.ui.lw_ladspa.addItem(ladspa) |
|
|
|
|
|
|
|
for dssi in dssis: |
|
|
|
self.ui.lw_dssi.addItem(dssi) |
|
|
|
|
|
|
|
for lv2 in lv2s: |
|
|
|
self.ui.lw_lv2.addItem(lv2) |
|
|
|
|
|
|
|
for vst in vsts: |
|
|
|
self.ui.lw_vst.addItem(vst) |
|
|
|
|
|
|
|
for gig in gigs: |
|
|
|
self.ui.lw_gig.addItem(gig) |
|
|
|
|
|
|
|
for sf2 in sf2s: |
|
|
|
self.ui.lw_sf2.addItem(sf2) |
|
|
|
|
|
|
|
for sfz in sfzs: |
|
|
|
self.ui.lw_sfz.addItem(sfz) |
|
|
|
|
|
|
|
@pyqtSlot() |
|
|
|
def slot_saveSettings(self): |
|
|
|
settings = QSettings() |
|
|
|
|
|
|
|
# --------------------------------------- |
|
|
|
|
|
|
|
settings.setValue("Main/RefreshInterval", self.ui.sb_gui_refresh.value()) |
|
|
|
settings.setValue("Main/DefaultProjectFolder", self.ui.le_main_def_folder.text()) |
|
|
|
|
|
|
|
# --------------------------------------- |
|
|
|
|
|
|
|
#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()) |
|
|
|
|
|
|
|
# -------------------------------------------- |
|
|
|
|
|
|
|
audioDriver = self.ui.cb_engine_audio_driver.currentText() |
|
|
|
settings.setValue("Engine/AudioDriver", audioDriver) |
|
|
|
|
|
|
|
if audioDriver == "JACK": |
|
|
|
settings.setValue("Engine/ProcessMode", self.ui.cb_engine_process_mode_jack.currentIndex()) |
|
|
|
else: |
|
|
|
settings.setValue("Engine/ProcessMode", self.ui.cb_engine_process_mode_other.currentIndex()+PROCESS_MODE_NON_JACK_PADDING) |
|
|
|
|
|
|
|
settings.setValue("Engine/MaxParameters", self.ui.sb_engine_max_params.value()) |
|
|
|
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()) |
|
|
|
|
|
|
|
# -------------------------------------------- |
|
|
|
|
|
|
|
# FIXME - find a cleaner way to do this, *.items() ? |
|
|
|
ladspas = [] |
|
|
|
dssis = [] |
|
|
|
lv2s = [] |
|
|
|
vsts = [] |
|
|
|
gigs = [] |
|
|
|
sf2s = [] |
|
|
|
sfzs = [] |
|
|
|
|
|
|
|
for i in range(self.ui.lw_ladspa.count()): |
|
|
|
ladspas.append(self.ui.lw_ladspa.item(i).text()) |
|
|
|
|
|
|
|
for i in range(self.ui.lw_dssi.count()): |
|
|
|
dssis.append(self.ui.lw_dssi.item(i).text()) |
|
|
|
|
|
|
|
for i in range(self.ui.lw_lv2.count()): |
|
|
|
lv2s.append(self.ui.lw_lv2.item(i).text()) |
|
|
|
|
|
|
|
for i in range(self.ui.lw_vst.count()): |
|
|
|
vsts.append(self.ui.lw_vst.item(i).text()) |
|
|
|
|
|
|
|
for i in range(self.ui.lw_gig.count()): |
|
|
|
gigs.append(self.ui.lw_gig.item(i).text()) |
|
|
|
|
|
|
|
for i in range(self.ui.lw_sf2.count()): |
|
|
|
sf2s.append(self.ui.lw_sf2.item(i).text()) |
|
|
|
|
|
|
|
for i in range(self.ui.lw_sfz.count()): |
|
|
|
sfzs.append(self.ui.lw_sfz.item(i).text()) |
|
|
|
|
|
|
|
settings.setValue("Paths/LADSPA", ladspas) |
|
|
|
settings.setValue("Paths/DSSI", dssis) |
|
|
|
settings.setValue("Paths/LV2", lv2s) |
|
|
|
settings.setValue("Paths/VST", vsts) |
|
|
|
settings.setValue("Paths/GIG", gigs) |
|
|
|
settings.setValue("Paths/SF2", sf2s) |
|
|
|
settings.setValue("Paths/SFZ", sfzs) |
|
|
|
|
|
|
|
@pyqtSlot() |
|
|
|
def slot_resetSettings(self): |
|
|
|
if self.ui.lw_page.currentRow() == TAB_INDEX_MAIN: |
|
|
|
self.ui.le_main_def_folder.setText(HOME) |
|
|
|
self.ui.sb_gui_refresh.setValue(50) |
|
|
|
|
|
|
|
elif self.ui.lw_page.currentRow() == 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() == TAB_INDEX_CARLA_ENGINE: |
|
|
|
self.ui.cb_engine_audio_driver.setCurrentIndex(0) |
|
|
|
self.ui.sb_engine_max_params.setValue(CARLA_DEFAULT_MAX_PARAMETERS) |
|
|
|
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_dssi_chunks.setChecked(CARLA_DEFAULT_USE_DSSI_VST_CHUNKS) |
|
|
|
self.ui.ch_engine_prefer_plugin_bridges.setChecked(CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES) |
|
|
|
self.ui.ch_engine_force_stereo.setChecked(CARLA_DEFAULT_FORCE_STEREO) |
|
|
|
|
|
|
|
if self.ui.cb_engine_audio_driver.currentText() == "JACK": |
|
|
|
self.ui.cb_engine_process_mode_jack.setCurrentIndex(PROCESS_MODE_MULTIPLE_CLIENTS) |
|
|
|
self.ui.sw_engine_process_mode.setCurrentIndex(0) |
|
|
|
else: |
|
|
|
self.ui.cb_engine_process_mode_other.setCurrentIndex(PROCESS_MODE_CONTINUOUS_RACK-PROCESS_MODE_NON_JACK_PADDING) |
|
|
|
self.ui.sw_engine_process_mode.setCurrentIndex(1) |
|
|
|
|
|
|
|
elif self.ui.lw_page.currentRow() == TAB_INDEX_CARLA_PATHS: |
|
|
|
global LADSPA_PATH, DSSI_PATH, LV2_PATH, VST_PATH, GIG_PATH, SF2_PATH, SFZ_PATH |
|
|
|
|
|
|
|
if self.ui.tw_paths.currentIndex() == 0: |
|
|
|
LADSPA_PATH.sort() |
|
|
|
self.ui.lw_ladspa.clear() |
|
|
|
|
|
|
|
for ladspa in LADSPA_PATH: |
|
|
|
self.ui.lw_ladspa.addItem(ladspa) |
|
|
|
|
|
|
|
elif self.ui.tw_paths.currentIndex() == 1: |
|
|
|
DSSI_PATH.sort() |
|
|
|
self.ui.lw_dssi.clear() |
|
|
|
|
|
|
|
for dssi in DSSI_PATH: |
|
|
|
self.ui.lw_dssi.addItem(dssi) |
|
|
|
|
|
|
|
elif self.ui.tw_paths.currentIndex() == 2: |
|
|
|
LV2_PATH.sort() |
|
|
|
self.ui.lw_lv2.clear() |
|
|
|
|
|
|
|
for lv2 in LV2_PATH: |
|
|
|
self.ui.lw_lv2.addItem(lv2) |
|
|
|
|
|
|
|
elif self.ui.tw_paths.currentIndex() == 3: |
|
|
|
VST_PATH.sort() |
|
|
|
self.ui.lw_vst.clear() |
|
|
|
|
|
|
|
for vst in VST_PATH: |
|
|
|
self.ui.lw_vst.addItem(vst) |
|
|
|
|
|
|
|
elif self.ui.tw_paths.currentIndex() == 4: |
|
|
|
GIG_PATH.sort() |
|
|
|
self.ui.lw_gig.clear() |
|
|
|
|
|
|
|
for gig in GIG_PATH: |
|
|
|
self.ui.lw_gig.addItem(gig) |
|
|
|
|
|
|
|
elif self.ui.tw_paths.currentIndex() == 5: |
|
|
|
SF2_PATH.sort() |
|
|
|
self.ui.lw_sf2.clear() |
|
|
|
|
|
|
|
for sf2 in SF2_PATH: |
|
|
|
self.ui.lw_sf2.addItem(sf2) |
|
|
|
|
|
|
|
elif self.ui.tw_paths.currentIndex() == 6: |
|
|
|
SFZ_PATH.sort() |
|
|
|
self.ui.lw_sfz.clear() |
|
|
|
|
|
|
|
for sfz in SFZ_PATH: |
|
|
|
self.ui.lw_sfz.addItem(sfz) |
|
|
|
|
|
|
|
@pyqtSlot() |
|
|
|
def slot_getAndSetProjectPath(self): |
|
|
|
pass #getAndSetPath(self, self.le_main_def_folder.text(), self.le_main_def_folder) |
|
|
|
|
|
|
|
@pyqtSlot() |
|
|
|
def slot_engineAudioDriverChanged(self): |
|
|
|
if self.ui.cb_engine_audio_driver.currentText() == "JACK": |
|
|
|
self.ui.sw_engine_process_mode.setCurrentIndex(0) |
|
|
|
else: |
|
|
|
self.ui.sw_engine_process_mode.setCurrentIndex(1) |
|
|
|
|
|
|
|
@pyqtSlot() |
|
|
|
def slot_addPluginPath(self): |
|
|
|
newPath = QFileDialog.getExistingDirectory(self, self.tr("Add Path"), "", QFileDialog.ShowDirsOnly) |
|
|
|
if newPath: |
|
|
|
if self.ui.tw_paths.currentIndex() == 0: |
|
|
|
self.ui.lw_ladspa.addItem(newPath) |
|
|
|
elif self.ui.tw_paths.currentIndex() == 1: |
|
|
|
self.ui.lw_dssi.addItem(newPath) |
|
|
|
elif self.ui.tw_paths.currentIndex() == 2: |
|
|
|
self.ui.lw_lv2.addItem(newPath) |
|
|
|
elif self.ui.tw_paths.currentIndex() == 3: |
|
|
|
self.ui.lw_vst.addItem(newPath) |
|
|
|
elif self.ui.tw_paths.currentIndex() == 4: |
|
|
|
self.ui.lw_gig.addItem(newPath) |
|
|
|
elif self.ui.tw_paths.currentIndex() == 5: |
|
|
|
self.ui.lw_sf2.addItem(newPath) |
|
|
|
elif self.ui.tw_paths.currentIndex() == 6: |
|
|
|
self.ui.lw_sfz.addItem(newPath) |
|
|
|
|
|
|
|
@pyqtSlot() |
|
|
|
def slot_removePluginPath(self): |
|
|
|
if self.ui.tw_paths.currentIndex() == 0: |
|
|
|
self.ui.lw_ladspa.takeItem(self.ui.lw_ladspa.currentRow()) |
|
|
|
elif self.ui.tw_paths.currentIndex() == 1: |
|
|
|
self.ui.lw_dssi.takeItem(self.ui.lw_dssi.currentRow()) |
|
|
|
elif self.ui.tw_paths.currentIndex() == 2: |
|
|
|
self.ui.lw_lv2.takeItem(self.ui.lw_lv2.currentRow()) |
|
|
|
elif self.ui.tw_paths.currentIndex() == 3: |
|
|
|
self.ui.lw_vst.takeItem(self.ui.lw_vst.currentRow()) |
|
|
|
elif self.ui.tw_paths.currentIndex() == 4: |
|
|
|
self.ui.lw_gig.takeItem(self.ui.lw_gig.currentRow()) |
|
|
|
elif self.ui.tw_paths.currentIndex() == 5: |
|
|
|
self.ui.lw_sf2.takeItem(self.ui.lw_sf2.currentRow()) |
|
|
|
elif self.ui.tw_paths.currentIndex() == 6: |
|
|
|
self.ui.lw_sfz.takeItem(self.ui.lw_sfz.currentRow()) |
|
|
|
|
|
|
|
@pyqtSlot() |
|
|
|
def slot_changePluginPath(self): |
|
|
|
if self.ui.tw_paths.currentIndex() == 0: |
|
|
|
currentPath = self.ui.lw_ladspa.currentItem().text() |
|
|
|
elif self.ui.tw_paths.currentIndex() == 1: |
|
|
|
currentPath = self.ui.lw_dssi.currentItem().text() |
|
|
|
elif self.ui.tw_paths.currentIndex() == 2: |
|
|
|
currentPath = self.ui.lw_lv2.currentItem().text() |
|
|
|
elif self.ui.tw_paths.currentIndex() == 3: |
|
|
|
currentPath = self.ui.lw_vst.currentItem().text() |
|
|
|
elif self.ui.tw_paths.currentIndex() == 4: |
|
|
|
currentPath = self.ui.lw_gig.currentItem().text() |
|
|
|
elif self.ui.tw_paths.currentIndex() == 5: |
|
|
|
currentPath = self.ui.lw_sf2.currentItem().text() |
|
|
|
elif self.ui.tw_paths.currentIndex() == 6: |
|
|
|
currentPath = self.ui.lw_sfz.currentItem().text() |
|
|
|
else: |
|
|
|
currentPath = "" |
|
|
|
|
|
|
|
newPath = QFileDialog.getExistingDirectory(self, self.tr("Add Path"), currentPath, QFileDialog.ShowDirsOnly) |
|
|
|
if newPath: |
|
|
|
if self.ui.tw_paths.currentIndex() == 0: |
|
|
|
self.ui.lw_ladspa.currentItem().setText(newPath) |
|
|
|
elif self.ui.tw_paths.currentIndex() == 1: |
|
|
|
self.ui.lw_dssi.currentItem().setText(newPath) |
|
|
|
elif self.ui.tw_paths.currentIndex() == 2: |
|
|
|
self.ui.lw_lv2.currentItem().setText(newPath) |
|
|
|
elif self.ui.tw_paths.currentIndex() == 3: |
|
|
|
self.ui.lw_vst.currentItem().setText(newPath) |
|
|
|
elif self.ui.tw_paths.currentIndex() == 4: |
|
|
|
self.ui.lw_gig.currentItem().setText(newPath) |
|
|
|
elif self.ui.tw_paths.currentIndex() == 5: |
|
|
|
self.ui.lw_sf2.currentItem().setText(newPath) |
|
|
|
elif self.ui.tw_paths.currentIndex() == 6: |
|
|
|
self.ui.lw_sfz.currentItem().setText(newPath) |
|
|
|
|
|
|
|
@pyqtSlot(int) |
|
|
|
def slot_pluginPathTabChanged(self, index): |
|
|
|
if index == 0: |
|
|
|
row = self.ui.lw_ladspa.currentRow() |
|
|
|
elif index == 1: |
|
|
|
row = self.ui.lw_dssi.currentRow() |
|
|
|
elif index == 2: |
|
|
|
row = self.ui.lw_lv2.currentRow() |
|
|
|
elif index == 3: |
|
|
|
row = self.ui.lw_vst.currentRow() |
|
|
|
elif index == 4: |
|
|
|
row = self.ui.lw_gig.currentRow() |
|
|
|
elif index == 5: |
|
|
|
row = self.ui.lw_sf2.currentRow() |
|
|
|
elif index == 6: |
|
|
|
row = self.ui.lw_sfz.currentRow() |
|
|
|
else: |
|
|
|
row = -1 |
|
|
|
|
|
|
|
check = bool(row >= 0) |
|
|
|
self.ui.b_paths_remove.setEnabled(check) |
|
|
|
self.ui.b_paths_change.setEnabled(check) |
|
|
|
|
|
|
|
@pyqtSlot(int) |
|
|
|
def slot_pluginPathRowChanged(self, row): |
|
|
|
check = bool(row >= 0) |
|
|
|
self.ui.b_paths_remove.setEnabled(check) |
|
|
|
self.ui.b_paths_change.setEnabled(check) |
|
|
|
|
|
|
|
def done(self, r): |
|
|
|
QDialog.done(self, r) |
|
|
|
self.close() |
|
|
|
|
|
|
|
# ------------------------------------------------------------------------------------------------------------ |
|
|
|
# Main Window |
|
|
|
|
|
|
@@ -361,7 +825,7 @@ class CarlaMainW(QMainWindow): |
|
|
|
|
|
|
|
@pyqtSlot() |
|
|
|
def slot_configureCarla(self): |
|
|
|
CarlaAboutW(self).exec_() |
|
|
|
CarlaSettingsW(self).exec_() |
|
|
|
|
|
|
|
@pyqtSlot() |
|
|
|
def slot_handleSIGUSR1(self): |
|
|
|