Browse Source

Rework discovery dialog a bit, allow multi-lib search

tags/v0.9.0
falkTX 13 years ago
parent
commit
c82d1e94a5
2 changed files with 164 additions and 118 deletions
  1. +155
    -109
      src/carla.py
  2. +9
    -9
      src/carla_backend.py

+ 155
- 109
src/carla.py View File

@@ -246,7 +246,6 @@ class SearchPluginsThread(QThread):
QThread.__init__(self, parent)

self.settings_db = self.parent().settings_db
#self.disccover_skip_kill = ""

self.check_ladspa = True
self.check_dssi = True
@@ -258,7 +257,7 @@ class SearchPluginsThread(QThread):
self.check_bins = []

def skipPlugin(self):
#if (self.disccover_skip_kill):
# TODO - windows support
os.system("killall -KILL carla-discovery carla-discovery-unix32 carla-discovery-unix64 carla-discovery-win32.exe carla-discovery-win64.exe")

def pluginLook(self, percent, plugin):
@@ -350,7 +349,7 @@ class SearchPluginsThread(QThread):
if (self.check_ladspa):

if (check_native):
ladspa_binaries = []
ladspa_binaries = []

for PATH in LADSPA_PATH:
binaries = findBinaries(PATH, OS)
@@ -415,43 +414,63 @@ class SearchPluginsThread(QThread):
self.pluginLook(start_value, "LADSPA RDFs...")
ladspa_rdf_info = ladspa_rdf.recheck_all_plugins(self, start_value, percent_value, m_value)

## ----- DSSI
#if (self.check_dssi):
## Check PATH
#dssi_binaries = []
#dssi_binaries_w = []

#for PATH in DSSI_PATH:
#binaries = findBinaries(PATH, OS)
#for binary in binaries:
#if (binary not in dssi_binaries):
#dssi_binaries.append(binary)

#if (len(bins_w) > 0):
#for PATH in DSSI_PATH:
#binaries = findBinaries(PATH, "WINDOWS")
#for binary in binaries:
#if (binary not in dssi_binaries_w):
#dssi_binaries_w.append(binary)

#dssi_binaries.sort()
#dssi_binaries_w.sort()

#for i in range(len(dssi_binaries)):
#dssi = dssi_binaries[i]
#if (getShortFileName(dssi) in blacklist):
#print("plugin %s is blacklisted, skip it" % (dssi))
#continue
#else:
#percent = (( float(i) / len(dssi_binaries) ) * percent_value)
#self.pluginLook(percent + last_value, dssi)
#self.setLastLoadedBinary(dssi)
#for bin_ in bins:
#plugins = checkPluginDSSI(dssi, bin_)
#if (plugins != None):
#dssi_plugins.append(plugins)
# ----- DSSI
if (self.check_dssi):

if (check_native):
dssi_binaries = []

#last_value += percent_value
for PATH in DSSI_PATH:
binaries = findBinaries(PATH, OS)
for binary in binaries:
if (binary not in dssi_binaries):
dssi_binaries.append(binary)

dssi_binaries.sort()

for i in range(len(dssi_binaries)):
dssi = dssi_binaries[i]
if (getShortFileName(dssi) in blacklist):
print("plugin %s is blacklisted, skip it" % (dssi))
continue
else:
percent = ( float(i) / len(dssi_binaries) ) * percent_value
self.pluginLook(last_value + percent, dssi)
self.setLastLoadedBinary(dssi)
for bin_ in bins:
plugins = checkPluginDSSI(dssi, bin_)
if (plugins != None):
dssi_plugins.append(plugins)

last_value += percent_value

if (check_wine):
dssi_binaries_w = []

for PATH in DSSI_PATH:
binaries = findBinaries(PATH, "WINDOWS")
for binary in binaries:
if (binary not in dssi_binaries_w):
dssi_binaries_w.append(binary)

dssi_binaries_w.sort()

# Check binaries, wine
for i in range(len(dssi_binaries_w)):
dssi_w = dssi_binaries_w[i]
if (getShortFileName(dssi_w) in blacklist):
print("plugin %s is blacklisted, skip it" % (dssi_w))
continue
else:
percent = ( float(i) / len(dssi_binaries_w) ) * percent_value
self.pluginLook(last_value + percent, dssi_w)
self.setLastLoadedBinary(dssi_w)
for bin_w in bins_w:
plugins_w = checkPluginDSSI(dssi_w, bin_w, True)
if (plugins_w != None):
dssi_plugins.append(plugins_w)

last_value += percent_value

## ----- LV2
#if (self.check_lv2 and haveRDF):
@@ -465,90 +484,117 @@ class SearchPluginsThread(QThread):

#self.last_value += self.percent_value

## ----- VST
#if (self.check_vst):
## Check PATH
#vst_binaries = []
#for i in range(len(VST_PATH)):
#binaries = findBinaries(VST_PATH[i])
#for j in range(len(binaries)):
#if (binaries[j] not in vst_binaries):
#vst_binaries.append(binaries[j])

#self.disccover_skip_kill = "carla-discovery carla-discovery-native"
#for i in range(len(vst_binaries)):
#if (getShortFileName(vst_binaries[i]) in blacklist):
#print("plugin %s is blacklisted, skip it" % (vst_binaries[i]))
#continue
#else:
#percent = (( float(i) / len(vst_binaries) ) * self.percent_value)
#self.pluginLook(percent + self.last_value, vst_binaries[i])
#self.setLastLoadedBinary(vst_binaries[i])
#plugins = checkPluginVST(vst_binaries[i])
#if (plugins != None):
#vst_plugins.append(plugins)
# ----- VST
if (self.check_vst):

#self.last_value += self.percent_value
if (check_native):
vst_binaries = []

## ----- SF2
#if (self.check_sf2):
## Check PATH
#sf2_files = []
#for i in range(len(SF2_PATH)):
#files = findSoundFonts(SF2_PATH[i])
#for j in range(len(files)):
#if (files[j] not in sf2_files):
#sf2_files.append(files[j])

#self.disccover_skip_kill = "carla-discovery carla-discovery-native"
#for i in range(len(sf2_files)):
#if (getShortFileName(sf2_files[i]) in blacklist):
#print("soundfont %s is blacklisted, skip it" % (sf2_files[i]))
#continue
#else:
#percent = (( float(i) / len(sf2_files) ) * self.percent_value)
#self.pluginLook(percent + self.last_value, sf2_files[i])
#self.setLastLoadedBinary(sf2_files[i])
#soundfont_ = checkPluginSF2(sf2_files[i])
#if (soundfont_):
#soundfonts.append(soundfont_[0])
for PATH in VST_PATH:
binaries = findBinaries(PATH, OS)
for binary in binaries:
if (binary not in vst_binaries):
vst_binaries.append(binary)

#self.last_value += self.percent_value
vst_binaries.sort()

for i in range(len(vst_binaries)):
vst = vst_binaries[i]
if (getShortFileName(vst) in blacklist):
print("plugin %s is blacklisted, skip it" % (vst))
continue
else:
percent = ( float(i) / len(vst_binaries) ) * percent_value
self.pluginLook(last_value + percent, vst)
self.setLastLoadedBinary(vst)
for bin_ in bins:
plugins = checkPluginVST(vst, bin_)
if (plugins != None):
vst_plugins.append(plugins)

last_value += percent_value

if (check_wine):
vst_binaries_w = []

for PATH in VST_PATH:
binaries = findBinaries(PATH, "WINDOWS")
for binary in binaries:
if (binary not in vst_binaries_w):
vst_binaries_w.append(binary)

vst_binaries_w.sort()

# Check binaries, wine
for i in range(len(vst_binaries_w)):
vst_w = vst_binaries_w[i]
if (getShortFileName(vst_w) in blacklist):
print("plugin %s is blacklisted, skip it" % (vst_w))
continue
else:
percent = ( float(i) / len(vst_binaries_w) ) * percent_value
self.pluginLook(last_value + percent, vst_w)
self.setLastLoadedBinary(vst_w)
for bin_w in bins_w:
plugins_w = checkPluginVST(vst_w, bin_w, True)
if (plugins_w != None):
vst_plugins.append(plugins_w)

last_value += percent_value

# ----- SF2
if (self.check_sf2):

sf2_files = []
for PATH in SF2_PATH:
files = findSoundFonts(PATH)
for file_ in files:
if (file_ not in sf2_files):
sf2_files.append(file_)

for i in range(len(sf2_files)):
sf2 = sf2_files[i]
if (getShortFileName(sf2) in blacklist):
print("soundfont %s is blacklisted, skip it" % (sf2))
continue
else:
percent = (( float(i) / len(sf2_files) ) * percent_value)
self.pluginLook(last_value + percent, sf2)
self.setLastLoadedBinary(sf2)
soundfont = checkPluginSF2(sf2, self.check_native)
if (soundfont):
soundfonts.append(soundfont)

#self.disccover_skip_kill = ""
self.setLastLoadedBinary("")

# Save plugins to database
self.pluginLook(100, "Database...")

#if (self.check_ladspa):
#self.settings_db.setValue("Plugins/LADSPA", QVariant(ladspa_plugins))

#if (self.check_dssi):
#self.settings_db.setValue("Plugins/DSSI", QVariant(dssi_plugins))
if (self.check_ladspa):
self.settings_db.setValue("Plugins/LADSPA", ladspa_plugins)

#if (self.check_lv2):
#self.settings_db.setValue("Plugins/LV2", QVariant(lv2_plugins))
if (self.check_dssi):
self.settings_db.setValue("Plugins/DSSI", dssi_plugins)

#if (self.check_vst):
#self.settings_db.setValue("Plugins/VST", QVariant(vst_plugins))
if (self.check_lv2):
self.settings_db.setValue("Plugins/LV2", lv2_plugins)

#if (self.check_winvst):
#self.settings_db.setValue("Plugins/WinVST", QVariant(winvst_plugins))
if (self.check_vst):
self.settings_db.setValue("Plugins/VST", vst_plugins)

#if (self.check_sf2):
#self.settings_db.setValue("Plugins/SF2", QVariant(soundfonts))
if (self.check_sf2):
self.settings_db.setValue("Plugins/SF2", soundfonts)

#self.settings_db.sync()
self.settings_db.sync()

#if (haveRDF):
#SettingsDir = os.path.join(HOME, ".config", "Cadence")
if (haveRDF):
SettingsDir = os.path.join(HOME, ".config", "Cadence")

#if (self.check_ladspa):
#f_ladspa = open(os.path.join(SettingsDir, "ladspa_rdf.db"), 'w')
#if (f_ladspa):
#json.dump(ladspa_rdf_info, f_ladspa)
#f_ladspa.close()
if (self.check_ladspa):
f_ladspa = open(os.path.join(SettingsDir, "ladspa_rdf.db"), 'w')
if (f_ladspa):
json.dump(ladspa_rdf_info, f_ladspa)
f_ladspa.close()

#if (self.check_lv2):
#f_lv2 = open(os.path.join(SettingsDir, "lv2_rdf.db"), 'w')
@@ -569,14 +615,14 @@ class PluginRefreshW(QDialog, ui_carla_refresh.Ui_PluginRefreshW):

self.pThread = SearchPluginsThread(self)

if (carla_discovery_unix32):
if (carla_discovery_unix32 and not WINDOWS):
self.ico_unix32.setPixmap(getIcon("dialog-ok-apply").pixmap(16, 16))
else:
self.ico_unix32.setPixmap(getIcon("dialog-error").pixmap(16, 16))
self.ch_unix32.setChecked(False)
self.ch_unix32.setEnabled(False)

if (carla_discovery_unix64):
if (carla_discovery_unix64 and not WINDOWS):
self.ico_unix64.setPixmap(getIcon("dialog-ok-apply").pixmap(16, 16))
else:
self.ico_unix64.setPixmap(getIcon("dialog-error").pixmap(16, 16))


+ 9
- 9
src/carla_backend.py View File

@@ -321,16 +321,16 @@ def findBinaries(PATH, OS):

return binaries

#def findSoundFonts(PATH):
#soundfonts = []
def findSoundFonts(PATH):
soundfonts = []

#extensions = (".sf2", ".sF2", ".SF2", ".Sf2")
extensions = (".sf2", ".sF2", ".SF2", ".Sf2")

#for root, dirs, files in os.walk(PATH):
#for name in [name for name in files if name.endswith(extensions)]:
#soundfonts.append(os.path.join(root, name))
for root, dirs, files in os.walk(PATH):
for name in [name for name in files if name.endswith(extensions)]:
soundfonts.append(os.path.join(root, name))

#return soundfonts
return soundfonts

#def findLV2Bundles(PATH):
#bundles = []
@@ -415,8 +415,8 @@ def runCarlaDiscovery(itype, stype, filename, tool, isWine=False):
except:
output = []

#for line in output:
#print(line)
for line in output:
print(line)
#if (line == "carla-discovery::init::-----------"):
#pinfo = deepcopy(PyPluginInfo)
#pinfo['type'] = itype


Loading…
Cancel
Save