2 # -*- coding: utf-8 -*-
6 from commands
import getoutput
7 from random
import randint
8 from PyQt4
.QtCore
import Qt
, QVariant
, SIGNAL
9 from PyQt4
.QtGui
import QIcon
, QTableWidgetItem
13 from xicon
import XIcon
21 TAB_INDEX_INSTRUMENT
= 2
22 TAB_INDEX_GHOSTESS
= 3
27 # Properly convert QString to str
28 def QStringStr(string
):
29 return str(unicode(string
).encode('utf-8'))
32 class KlaudiaLauncher(object):
33 def __init__(self
, parent
=None, settings
=None, ladish_only
=False):
34 super(KlaudiaLauncher
, self
).__init
__()
37 self
._settings
= settings
38 self
.ladish_only
= ladish_only
40 # For the custom icons
41 self
.MyIcons
= XIcon()
42 self
.MyIcons
.addIconPath(os
.path
.join(sys
.path
[0], "../icons"))
43 self
.MyIcons
.addThemeName(QStringStr(QIcon
.themeName()))
44 self
.MyIcons
.addThemeName("oxygen") # Just in case...
46 if (self
.settings() != None and self
.settings().contains("SplitterDAW") and self
.settings().contains("SplitterGhostess")):
49 self
.parent().splitter_DAW
.setSizes([500,200])
50 self
.parent().splitter_Host
.setSizes([500,200])
51 self
.parent().splitter_Instrument
.setSizes([500,200])
52 self
.parent().splitter_Ghostess
.setSizes([500,200])
53 self
.parent().splitter_Bristol
.setSizes([500,200])
54 self
.parent().splitter_Effect
.setSizes([500,200])
55 self
.parent().splitter_Tool
.setSizes([500,200])
57 self
.parent().listDAW
.setColumnWidth(0, 22)
58 self
.parent().listDAW
.setColumnWidth(1, 150)
59 self
.parent().listDAW
.setColumnWidth(2, 125)
60 self
.parent().listHost
.setColumnWidth(0, 22)
61 self
.parent().listHost
.setColumnWidth(1, 150)
62 self
.parent().listInstrument
.setColumnWidth(0, 22)
63 self
.parent().listInstrument
.setColumnWidth(1, 150)
64 self
.parent().listInstrument
.setColumnWidth(2, 125)
65 self
.parent().listGhostess
.setColumnWidth(0, 22)
66 self
.parent().listGhostess
.setColumnWidth(1, 280)
67 self
.parent().listBristol
.setColumnWidth(0, 22)
68 self
.parent().listBristol
.setColumnWidth(1, 100)
69 self
.parent().listEffect
.setColumnWidth(0, 22)
70 self
.parent().listEffect
.setColumnWidth(1, 225)
71 self
.parent().listEffect
.setColumnWidth(2, 125)
72 self
.parent().listTool
.setColumnWidth(0, 22)
73 self
.parent().listTool
.setColumnWidth(1, 225)
74 self
.parent().listTool
.setColumnWidth(2, 125)
78 self
.clearInfo_Intrument()
79 self
.clearInfo_Ghostess()
80 self
.clearInfo_Bristol()
81 self
.clearInfo_Effect()
86 self
.connect(self
.parent().tabWidget
, SIGNAL("currentChanged(int)"), self
.checkSelectedTab
)
88 self
.connect(self
.parent().listDAW
, SIGNAL("currentCellChanged(int, int, int, int)"), self
.checkSelectedDAW
)
89 self
.connect(self
.parent().listHost
, SIGNAL("currentCellChanged(int, int, int, int)"), self
.checkSelectedHost
)
90 self
.connect(self
.parent().listInstrument
, SIGNAL("currentCellChanged(int, int, int, int)"), self
.checkSelectedInstrument
)
91 self
.connect(self
.parent().listGhostess
, SIGNAL("currentCellChanged(int, int, int, int)"), self
.checkSelectedGhostess
)
92 self
.connect(self
.parent().listBristol
, SIGNAL("currentCellChanged(int, int, int, int)"), self
.checkSelectedBristol
)
93 self
.connect(self
.parent().listEffect
, SIGNAL("currentCellChanged(int, int, int, int)"), self
.checkSelectedEffect
)
94 self
.connect(self
.parent().listTool
, SIGNAL("currentCellChanged(int, int, int, int)"), self
.checkSelectedTool
)
95 self
.connect(self
.parent().listDAW
, SIGNAL("cellDoubleClicked(int, int)"), self
.doubleClickedListDAW
)
96 self
.connect(self
.parent().listHost
, SIGNAL("cellDoubleClicked(int, int)"), self
.doubleClickedListHost
)
97 self
.connect(self
.parent().listInstrument
, SIGNAL("cellDoubleClicked(int, int)"), self
.doubleClickedListInstrument
)
98 self
.connect(self
.parent().listGhostess
, SIGNAL("cellDoubleClicked(int, int)"), self
.doubleClickedListGhostess
)
99 self
.connect(self
.parent().listBristol
, SIGNAL("cellDoubleClicked(int, int)"), self
.doubleClickedListBristol
)
100 self
.connect(self
.parent().listEffect
, SIGNAL("cellDoubleClicked(int, int)"), self
.doubleClickedListEffect
)
101 self
.connect(self
.parent().listTool
, SIGNAL("cellDoubleClicked(int, int)"), self
.doubleClickedListTool
)
103 self
.connect(self
.parent().url_documentation_daw
, SIGNAL("leftClickedUrl(QString)"), self
.openUrl
)
104 self
.connect(self
.parent().url_website_daw
, SIGNAL("leftClickedUrl(QString)"), self
.openUrl
)
105 self
.connect(self
.parent().url_documentation_host
, SIGNAL("leftClickedUrl(QString)"), self
.openUrl
)
106 self
.connect(self
.parent().url_website_host
, SIGNAL("leftClickedUrl(QString)"), self
.openUrl
)
107 self
.connect(self
.parent().url_documentation_ins
, SIGNAL("leftClickedUrl(QString)"), self
.openUrl
)
108 self
.connect(self
.parent().url_website_ins
, SIGNAL("leftClickedUrl(QString)"), self
.openUrl
)
109 self
.connect(self
.parent().url_documentation_ghostess
, SIGNAL("leftClickedUrl(QString)"), self
.openUrl
)
110 self
.connect(self
.parent().url_website_ghostess
, SIGNAL("leftClickedUrl(QString)"), self
.openUrl
)
111 self
.connect(self
.parent().url_documentation_bristol
, SIGNAL("leftClickedUrl(QString)"), self
.openUrl
)
112 self
.connect(self
.parent().url_website_bristol
, SIGNAL("leftClickedUrl(QString)"), self
.openUrl
)
113 self
.connect(self
.parent().url_documentation_effect
, SIGNAL("leftClickedUrl(QString)"), self
.openUrl
)
114 self
.connect(self
.parent().url_website_effect
, SIGNAL("leftClickedUrl(QString)"), self
.openUrl
)
115 self
.connect(self
.parent().url_documentation_tool
, SIGNAL("leftClickedUrl(QString)"), self
.openUrl
)
116 self
.connect(self
.parent().url_website_tool
, SIGNAL("leftClickedUrl(QString)"), self
.openUrl
)
122 return self
._settings
124 def connect(self
, widget
, signal
, func
):
125 self
.parent().connect(widget
, signal
, func
)
127 def getIcon(self
, icon
, size
=48):
128 return QIcon
.fromTheme(icon
, QIcon(self
.MyIcons
.getIconPath(icon
, size
)))
130 def getIconForYesNo(self
, yesno
, size
=16):
131 return self
.getIcon("dialog-ok-apply" if (yesno
) else "dialog-cancel", size
)
133 def getSelectedApp(self
):
134 tab_index
= self
.parent().tabWidget
.currentIndex()
135 column_name
= 2 if (tab_index
== TAB_INDEX_BRISTOL
) else 1
137 if (tab_index
== TAB_INDEX_DAW
):
138 listSel
= self
.parent().listDAW
139 elif (tab_index
== TAB_INDEX_HOST
):
140 listSel
= self
.parent().listHost
141 elif (tab_index
== TAB_INDEX_INSTRUMENT
):
142 listSel
= self
.parent().listInstrument
143 elif (tab_index
== TAB_INDEX_GHOSTESS
):
144 listSel
= self
.parent().listGhostess
145 elif (tab_index
== TAB_INDEX_BRISTOL
):
146 listSel
= self
.parent().listBristol
147 elif (tab_index
== TAB_INDEX_EFFECT
):
148 listSel
= self
.parent().listEffect
149 elif (tab_index
== TAB_INDEX_TOOL
):
150 listSel
= self
.parent().listTool
154 return QStringStr(listSel
.item(listSel
.currentRow(), column_name
).text())
156 def getBinaryFromAppName(self
, appname
):
157 list_DAW
= database
.list_DAW
158 for Package
, AppName
, Type
, Binary
, Icon
, Save
, Level
, License
, Features
, Docs
in list_DAW
:
159 if (appname
== AppName
):
162 list_Host
= database
.list_Host
163 for Package
, AppName
, Instruments
, Effects
, Binary
, Icon
, Save
, Level
, License
, Features
, Docs
in list_Host
:
164 if (appname
== AppName
):
167 list_Instrument
= database
.list_Instrument
168 for Package
, AppName
, Type
, Binary
, Icon
, Save
, Level
, License
, Features
, Docs
in list_Instrument
:
169 if (appname
== AppName
):
172 list_Ghostess
= database
.list_Ghostess
173 for Package
, PluginName
, Type
, PluginBinaryLabel
, Icon
, Save
, Level
, License
, Features
, Docs
in list_Ghostess
:
174 if (appname
== PluginName
):
175 ghname
= PluginBinaryLabel
.split(":")[1].replace(" ","_")
176 binary
= "ghostess "+PluginBinaryLabel
+" -hostname "+ghname
179 list_Bristol
= database
.list_Bristol
180 for Package
, AppName
, Type
, ShortName
, Icon
, Save
, Level
, License
, Features
, Docs
in list_Bristol
:
181 if (appname
== AppName
):
182 binary
= "startBristol -audio jack -midi jack -"+ShortName
185 list_Effect
= database
.list_Effect
186 for Package
, AppName
, Type
, Binary
, Icon
, Save
, Level
, License
, Features
, Docs
in list_Effect
:
187 if (appname
== AppName
):
190 list_Tool
= database
.list_Tool
191 for Package
, AppName
, Type
, Binary
, Icon
, Save
, Level
, License
, Features
, Docs
in list_Tool
:
192 if (appname
== AppName
):
195 print "Failed to find binary from App name"
198 def doubleClickedListDAW(self
, row
, column
):
199 app
= QStringStr(self
.parent().listDAW
.item(row
, 1).text())
200 if (self
.ladish_only
):
201 self
.addAppToLADISH(app
)
205 def doubleClickedListHost(self
, row
, column
):
206 app
= QStringStr(self
.parent().listHost
.item(row
, 1).text())
207 if (self
.ladish_only
):
208 self
.addAppToLADISH(app
)
212 def doubleClickedListInstrument(self
, row
, column
):
213 app
= QStringStr(self
.parent().listInstrument
.item(row
, 1).text())
214 if (self
.ladish_only
):
215 self
.addAppToLADISH(app
)
219 def doubleClickedListGhostess(self
, row
, column
):
220 app
= QStringStr(self
.parent().listGhostess
.item(row
, 1).text())
221 if (self
.ladish_only
):
222 self
.addAppToLADISH(app
)
226 def doubleClickedListBristol(self
, row
, column
):
227 app
= QStringStr(self
.parent().listBristol
.item(row
, 2).text())
228 if (self
.ladish_only
):
229 self
.addAppToLADISH(app
)
233 def doubleClickedListEffect(self
, row
, column
):
234 app
= QStringStr(self
.parent().listEffect
.item(row
, 1).text())
235 if (self
.ladish_only
):
236 self
.addAppToLADISH(app
)
240 def doubleClickedListTool(self
, row
, column
):
241 app
= QStringStr(self
.parent().listTool
.item(row
, 1).text())
242 if (self
.ladish_only
):
243 self
.addAppToLADISH(app
)
247 def startApp(self
, app
=None):
249 app
= self
.getSelectedApp()
250 binary
= self
.getBinaryFromAppName(app
)
251 os
.system("cd '%s' && %s &" % (QStringStr(self
.parent().getProjectFolder()), binary
))
253 def addAppToLADISH(self
, app
=None):
255 app
= self
.getSelectedApp()
256 binary
= self
.getBinaryFromAppName(app
)
258 if (binary
.startswith("startBristol")):
259 self
.createAppTemplate("bristol", app
, binary
)
261 elif (app
in ["Ardour", "Ardour (32bit)", "ArdourVST", "ArdourVST (32bit)"]):
262 self
.createAppTemplate("ardour2", app
, binary
)
264 elif (app
== "Calf Jack Host (GIT)"):
265 self
.createAppTemplate("calfjackhost", app
, binary
)
267 #elif (app == "FeSTige"):
268 #self.createAppTemplate("festige", app, binary)
270 elif (app
in ["Hydrogen", "Hydrogen (SVN)"]):
271 self
.createAppTemplate("hydrogen", app
, binary
)
273 elif (app
== "Jack Mixer"):
274 self
.createAppTemplate("jack-mixer", app
, binary
)
276 elif (app
== "Jack Rack"):
277 self
.createAppTemplate("jack-rack", app
, binary
)
279 elif (app
== "Jacker"):
280 self
.createAppTemplate("jacker", app
, binary
)
282 elif (app
== "Jamin"):
283 self
.createAppTemplate("jamin", app
, binary
)
285 elif (app
in ["MusE", "MusE (SVN)"]):
286 self
.createAppTemplate("muse", app
, binary
)
288 elif (app
== "Non-DAW"):
289 self
.createAppTemplate("non-daw", app
, binary
)
291 elif (app
== "Non-Mixer"):
292 self
.createAppTemplate("non-mixer", app
, binary
)
294 elif (app
== "Non-Sequencer"):
295 self
.createAppTemplate("non-sequencer", app
, binary
)
297 elif (app
in ["Qsampler", "Qsampler (SVN)"]):
298 self
.createAppTemplate("qsampler", app
, binary
)
300 elif (app
in ["Qtractor", "Qtractor (SVN)", "Qtractor (32bit)"]):
301 self
.createAppTemplate("qtractor", app
, binary
)
303 elif (app
in ["Renoise", "Renoise (32bit)"]):
304 self
.createAppTemplate("renoise", app
, binary
)
306 elif (app
== "Rosegarden"):
307 self
.createAppTemplate("rosegarden", app
, binary
)
309 elif (app
== "Seq24"):
310 self
.createAppTemplate("seq24", app
, binary
)
312 elif (app
== "Yoshimi"):
313 self
.createAppTemplate("yoshimi", app
, binary
)
316 appBus
= self
.parent().getAppBus()
317 appBus
.RunCustom(False, binary
, str(app
), 0)
319 def createAppTemplate(self
, app
, app_name
, binary
):
320 rand_check
= randint(1, 99999)
321 proj_srate
= str(self
.parent().getSampleRate())
322 proj_bpm
= str(self
.parent().getBPM())
323 proj_folder
= QStringStr(self
.parent().getProjectFolder())
329 if (not os
.path
.exists(proj_folder
)):
330 os
.mkdir(proj_folder
)
332 if (app
== "ardour2"):
333 tmplte_folder
= os
.path
.join(proj_folder
, "Ardour2_%i" % (rand_check
))
334 tmplte_file
= os
.path
.join(tmplte_folder
, "Ardour2_%i.ardour" % (rand_check
))
335 os
.mkdir(tmplte_folder
)
338 os
.system("cp '%s' '%s'" % (os
.path
.join(sys
.path
[0], "..", "templates", "Ardour2", "Ardour2.ardour"), tmplte_file
))
339 os
.system("cp '%s' '%s'" % (os
.path
.join(sys
.path
[0], "..", "templates", "Ardour2", "instant.xml"), tmplte_folder
))
340 os
.mkdir(os
.path
.join(tmplte_folder
, "analysis"))
341 os
.mkdir(os
.path
.join(tmplte_folder
, "dead_sounds"))
342 os
.mkdir(os
.path
.join(tmplte_folder
, "export"))
343 os
.mkdir(os
.path
.join(tmplte_folder
, "interchange"))
344 os
.mkdir(os
.path
.join(tmplte_folder
, "interchange", "Ardour"))
345 os
.mkdir(os
.path
.join(tmplte_folder
, "interchange", "Ardour", "audiofiles"))
346 os
.mkdir(os
.path
.join(tmplte_folder
, "peaks"))
349 tmplte_cmd
+= " '%s'" % (os
.path
.basename(tmplte_folder
) if self
.parent().isRoom() else tmplte_folder
)
351 tmplte_lvl
= "0" # FIXME - detect this
353 elif (app
== "bristol"):
354 module
= binary
.replace("startBristol -audio jack -midi jack -", "")
355 tmplte_folder
= os
.path
.join(proj_folder
, "bristol_%s_%i" % (module
, rand_check
))
356 os
.mkdir(tmplte_folder
)
358 if (self
.parent().isRoom()):
359 tmplte_folder
= os
.path
.basename(tmplte_folder
)
362 tmplte_cmd
+= " -emulate %s" % (module
)
363 tmplte_cmd
+= " -cache '%s'" % (tmplte_folder
)
364 tmplte_cmd
+= " -memdump '%s'" % (tmplte_folder
)
365 tmplte_cmd
+= " -import '%s'" % (os
.path
.join(tmplte_folder
, "memory"))
366 tmplte_cmd
+= " -exec"
370 elif (app
== "calfjackhost"):
371 tmplte_file_r
= os
.path
.join(proj_folder
, "CalfJackHost_%i" % (rand_check
))
374 os
.system("cp '%s' '%s'" % (os
.path
.join(sys
.path
[0], "..", "templates", "CalfJackHost"), tmplte_file_r
))
377 tmplte_cmd
+= " --load '%s'" % (os
.path
.basename(tmplte_file_r
) if self
.parent().isRoom() else tmplte_file_r
)
381 elif (app
== "hydrogen"):
382 tmplte_file
= os
.path
.join(proj_folder
, "Hydrogen_%i.h2song" % (rand_check
))
385 os
.system("cp '%s' '%s'" % (os
.path
.join(sys
.path
[0], "..", "templates", "Hydrogen.h2song"), tmplte_file
))
388 tmplte_cmd
+= " -s '%s'" % (os
.path
.basename(tmplte_file
) if self
.parent().isRoom() else tmplte_file
)
392 elif (app
== "jack-mixer"):
393 tmplte_file_r
= os
.path
.join(proj_folder
, "Jack-Mixer_%i.xml" % (rand_check
))
396 os
.system("cp '%s' '%s'" % (os
.path
.join(sys
.path
[0], "..", "templates", "Jack-Mixer.xml"), tmplte_file_r
))
399 tmplte_cmd
+= " -c '%s'" % (os
.path
.basename(tmplte_file_r
) if self
.parent().isRoom() else tmplte_file_r
)
403 elif (app
== "jack-rack"):
404 tmplte_file
= os
.path
.join(proj_folder
, "Jack-Rack_%i.xml" % (rand_check
))
407 os
.system("cp '%s' '%s'" % (os
.path
.join(sys
.path
[0], "..", "templates", "Jack-Rack.xml"), tmplte_file
))
410 tmplte_cmd
+= " -s '%s'" % (os
.path
.basename(tmplte_file
) if self
.parent().isRoom() else tmplte_file
)
412 elif (app
== "jacker"):
413 tmplte_file
= os
.path
.join(proj_folder
, "Jacker_%i.jsong" % (rand_check
))
416 os
.system("cp '%s' '%s'" % (os
.path
.join(sys
.path
[0], "..", "templates", "Jacker.jsong"), tmplte_file
))
419 tmplte_cmd
+= " '%s'" % (os
.path
.basename(tmplte_file
) if self
.parent().isRoom() else tmplte_file
)
421 # No decimal bpm support
422 proj_bpm
= proj_bpm
.split(".")[0]
426 elif (app
== "jamin"):
427 tmplte_file_r
= os
.path
.join(proj_folder
, "Jamin_%i.jam" % (rand_check
))
430 os
.system("cp '%s' '%s'" % (os
.path
.join(sys
.path
[0], "..", "templates", "Jamin.jam"), tmplte_file_r
))
433 tmplte_cmd
+= " -f '%s'" % (os
.path
.basename(tmplte_file_r
) if self
.parent().isRoom() else tmplte_file_r
)
435 elif (app
== "muse"):
436 tmplte_file_r
= os
.path
.join(proj_folder
, "MusE_%i.med" % (rand_check
))
439 os
.system("cp '%s' '%s'" % (os
.path
.join(sys
.path
[0], "..", "templates", "MusE.med"), tmplte_file_r
))
442 tmplte_cmd
+= " '%s'" % (os
.path
.basename(tmplte_file_r
) if self
.parent().isRoom() else tmplte_file_r
)
444 elif (app
== "non-daw"):
445 tmplte_folder
= os
.path
.join(proj_folder
, "Non-DAW_%i" % (rand_check
))
448 os
.system("cp -r '%s' '%s'" % (os
.path
.join(sys
.path
[0], "..", "templates", "Non-DAW"), tmplte_folder
))
449 os
.mkdir(os
.path
.join(tmplte_folder
, "sources"))
451 os
.system('sed -i "s/X_SR_X-KLAUDIA-X_SR_X/%s/" "%s"' % (proj_srate
, os
.path
.join(tmplte_folder
, "info")))
452 os
.system('sed -i "s/X_BPM_X-KLAUDIA-X_BPM_X/%s/" "%s"' % (proj_bpm
, os
.path
.join(tmplte_folder
, "history")))
455 tmplte_cmd
+= " '%s'" % (os
.path
.basename(tmplte_folder
) if self
.parent().isRoom() else tmplte_folder
)
457 elif (app
== "non-mixer"):
458 tmplte_folder
= os
.path
.join(proj_folder
, "Non-Mixer_%i" % (rand_check
))
461 os
.system("cp -r '%s' '%s'" % (os
.path
.join(sys
.path
[0], "..", "templates", "Non-Mixer"), tmplte_folder
))
464 tmplte_cmd
+= " '%s'" % (os
.path
.basename(tmplte_folder
) if self
.parent().isRoom() else tmplte_folder
)
466 elif (app
== "non-sequencer"):
467 tmplte_file_r
= os
.path
.join(proj_folder
, "Non-Sequencer_%i.non" % (rand_check
))
470 os
.system("cp '%s' '%s'" % (os
.path
.join(sys
.path
[0], "..", "templates", "Non-Sequencer.non"), tmplte_file_r
))
473 tmplte_cmd
+= " '%s'" % (os
.path
.basename(tmplte_file_r
) if self
.parent().isRoom() else tmplte_file_r
)
475 elif (app
== "qsampler"):
476 tmplte_file_r
= os
.path
.join(proj_folder
, "Qsampler_%i.lscp" % (rand_check
))
479 os
.system("cp '%s' '%s'" % (os
.path
.join(sys
.path
[0], "..", "templates", "Qsampler.lscp"), tmplte_file_r
))
482 tmplte_cmd
+= " '%s'" % (os
.path
.basename(tmplte_file_r
) if self
.parent().isRoom() else tmplte_file_r
)
484 tmplte_lvl
= "1" if (app_name
== "Qsampler (SVN)") else "0"
486 elif (app
== "qtractor"):
487 tmplte_file
= os
.path
.join(proj_folder
, "Qtractor_%i.qtr" % (rand_check
))
490 os
.system("cp '%s' '%s'" % (os
.path
.join(sys
.path
[0], "..", "templates", "Qtractor.qtr"), tmplte_file
))
493 tmplte_cmd
+= " '%s'" % (os
.path
.basename(tmplte_file
) if self
.parent().isRoom() else tmplte_file
)
497 elif (app
== "renoise"):
498 tmplte_file_r
= os
.path
.join(proj_folder
, "Renoise_%i.xrns" % (rand_check
))
499 tmplte_folder
= os
.path
.join(proj_folder
, "tmp_renoise_%i" % (rand_check
))
502 os
.mkdir(tmplte_folder
)
503 os
.system("cp '%s' '%s'" % (os
.path
.join(sys
.path
[0], "..", "templates", "Renoise.xml"), tmplte_folder
))
504 os
.system('sed -i "s/X_SR_X-KLAUDIA-X_SR_X/%s/" "%s"' % (proj_srate
, os
.path
.join(tmplte_folder
, "Renoise.xml")))
505 os
.system("cd '%s' && mv Renoise.xml Song.xml && zip '%s' Song.xml" % (tmplte_folder
, tmplte_file_r
))
506 os
.system("rm -rf '%s'" % (tmplte_folder
))
509 tmplte_cmd
+= " '%s'" % (os
.path
.basename(tmplte_file_r
) if self
.parent().isRoom() else tmplte_file_r
)
511 elif (app
== "rosegarden"):
512 tmplte_file
= os
.path
.join(proj_folder
, "Rosegarden_%i.rg" % (rand_check
))
515 os
.system("cp '%s' '%s'" % (os
.path
.join(sys
.path
[0], "..", "templates", "Rosegarden.rg"), tmplte_file
))
518 tmplte_cmd
+= " '%s'" % (os
.path
.basename(tmplte_file
) if self
.parent().isRoom() else tmplte_file
)
522 elif (app
== "seq24"):
523 tmplte_file_r
= os
.path
.join(proj_folder
, "Seq24_%i.midi" % (rand_check
))
526 os
.system("cp '%s' '%s'" % (os
.path
.join(sys
.path
[0], "..", "templates", "Seq24.midi"), tmplte_file_r
))
529 tmplte_cmd
+= " '%s'" % (os
.path
.basename(tmplte_file_r
) if self
.parent().isRoom() else tmplte_file_r
)
533 elif (app
== "yoshimi"):
534 tmplte_file
= os
.path
.join(proj_folder
, "Yoshimi_%i.state" % (rand_check
))
537 os
.system("cp '%s' '%s'" % (os
.path
.join(sys
.path
[0], "..", "templates", "Yoshimi.state"), tmplte_file
))
540 tmplte_cmd
+= " --state='%s'" % (os
.path
.basename(tmplte_file
) if self
.parent().isRoom() else tmplte_file
)
545 print "ERROR: Failed to parse app name"
548 if (tmplte_file
!= None):
549 os
.system('sed -i "s/X_SR_X-KLAUDIA-X_SR_X/%s/" "%s"' % (proj_srate
, tmplte_file
))
550 os
.system('sed -i "s/X_BPM_X-KLAUDIA-X_BPM_X/%s/" "%s"' % (proj_bpm
, tmplte_file
))
551 os
.system('sed -i "s/X_FOLDER_X-KLAUDIA-X_FOLDER_X/%s/" "%s"' % (proj_folder
.replace("/", "\/").replace("$", "\$"), tmplte_file
))
553 appBus
= self
.parent().getAppBus()
554 appBus
.RunCustom(False, tmplte_cmd
, app_name
, int(tmplte_lvl
))
556 def openUrl(self
, qurl
):
557 os
.system("xdg-open '%s' &" % (QStringStr(qurl
)))
559 def clearInfo_DAW(self
):
560 self
.parent().ico_app_daw
.setPixmap(self
.getIcon("start-here").pixmap(48, 48))
561 self
.parent().label_name_daw
.setText("App Name")
562 self
.parent().ico_ladspa_daw
.setPixmap(self
.getIconForYesNo(False).pixmap(16, 16))
563 self
.parent().ico_dssi_daw
.setPixmap(self
.getIconForYesNo(False).pixmap(16, 16))
564 self
.parent().ico_lv2_daw
.setPixmap(self
.getIconForYesNo(False).pixmap(16, 16))
565 self
.parent().ico_vst_daw
.setPixmap(self
.getIconForYesNo(False).pixmap(16, 16))
566 self
.parent().label_vst_mode_daw
.setText("")
567 self
.parent().ico_jack_transport_daw
.setPixmap(self
.getIconForYesNo(False).pixmap(16, 16))
568 self
.parent().label_midi_mode_daw
.setText("---")
569 self
.parent().label_ladish_level_daw
.setText("0")
570 self
.parent().frame_DAW
.setEnabled(False)
571 self
.showDoc_DAW("", "")
573 def clearInfo_Host(self
):
574 self
.parent().ico_app_host
.setPixmap(self
.getIcon("start-here").pixmap(48, 48))
575 self
.parent().label_name_host
.setText("App Name")
576 self
.parent().ico_ladspa_host
.setPixmap(self
.getIconForYesNo(False).pixmap(16, 16))
577 self
.parent().ico_dssi_host
.setPixmap(self
.getIconForYesNo(False).pixmap(16, 16))
578 self
.parent().ico_lv2_host
.setPixmap(self
.getIconForYesNo(False).pixmap(16, 16))
579 self
.parent().ico_vst_host
.setPixmap(self
.getIconForYesNo(False).pixmap(16, 16))
580 self
.parent().label_vst_mode_host
.setText("")
581 self
.parent().label_midi_mode_host
.setText("---")
582 self
.parent().label_ladish_level_host
.setText("0")
583 self
.parent().frame_Host
.setEnabled(False)
584 self
.showDoc_Host("", "")
586 def clearInfo_Intrument(self
):
587 self
.parent().ico_app_ins
.setPixmap(self
.getIcon("start-here").pixmap(48, 48))
588 self
.parent().label_name_ins
.setText("App Name")
589 self
.parent().ico_builtin_fx_ins
.setPixmap(self
.getIconForYesNo(False).pixmap(16, 16))
590 self
.parent().ico_audio_input_ins
.setPixmap(self
.getIconForYesNo(False).pixmap(16, 16))
591 self
.parent().label_midi_mode_ins
.setText("---")
592 self
.parent().label_ladish_level_ins
.setText("0")
593 self
.parent().frame_Instrument
.setEnabled(False)
594 self
.showDoc_Instrument("", "")
596 def clearInfo_Ghostess(self
):
597 self
.parent().ico_app_ghostess
.setPixmap(self
.getIcon("start-here").pixmap(48, 48))
598 self
.parent().label_name_ghostess
.setText("Plugin Name")
599 self
.parent().ico_builtin_fx_ghostess
.setPixmap(self
.getIconForYesNo(False).pixmap(16, 16))
600 self
.parent().ico_stereo_ghostess
.setPixmap(self
.getIconForYesNo(False).pixmap(16, 16))
601 self
.parent().label_midi_mode_ghostess
.setText("---")
602 self
.parent().label_ladish_level_ghostess
.setText("0")
603 self
.parent().frame_Ghostess
.setEnabled(False)
604 self
.showDoc_Ghostess("", "")
606 def clearInfo_Bristol(self
):
607 self
.parent().ico_app_bristol
.setPixmap(self
.getIcon("start-here").pixmap(48, 48))
608 self
.parent().label_name_bristol
.setText("App Name")
609 self
.parent().ico_builtin_fx_bristol
.setPixmap(self
.getIconForYesNo(False).pixmap(16, 16))
610 self
.parent().ico_audio_input_bristol
.setPixmap(self
.getIconForYesNo(False).pixmap(16, 16))
611 self
.parent().label_midi_mode_bristol
.setText("---")
612 self
.parent().label_ladish_level_bristol
.setText("0")
613 self
.parent().frame_Bristol
.setEnabled(False)
614 self
.showDoc_Bristol("", "")
616 def clearInfo_Effect(self
):
617 self
.parent().ico_app_effect
.setPixmap(self
.getIcon("start-here").pixmap(48, 48))
618 self
.parent().label_name_effect
.setText("App Name")
619 self
.parent().ico_stereo_effect
.setPixmap(self
.getIconForYesNo(False).pixmap(16, 16))
620 self
.parent().label_midi_mode_effect
.setText("---")
621 self
.parent().label_ladish_level_effect
.setText("0")
622 self
.parent().frame_Effect
.setEnabled(False)
623 self
.showDoc_Effect("", "")
625 def clearInfo_Tool(self
):
626 self
.parent().ico_app_tool
.setPixmap(self
.getIcon("start-here").pixmap(48, 48))
627 self
.parent().label_name_tool
.setText("App Name")
628 self
.parent().label_midi_mode_tool
.setText("---")
629 self
.parent().label_ladish_level_tool
.setText("0")
630 self
.parent().frame_Tool
.setEnabled(False)
631 self
.showDoc_Tool("", "")
633 def checkSelectedTab(self
, tab_index
):
634 test_selected
= False
635 if (tab_index
== TAB_INDEX_DAW
):
636 if (len(self
.parent().listDAW
.selectedItems()) > 0):
638 elif (tab_index
== TAB_INDEX_HOST
):
639 if (len(self
.parent().listHost
.selectedItems()) > 0):
641 elif (tab_index
== TAB_INDEX_INSTRUMENT
):
642 if (len(self
.parent().listInstrument
.selectedItems()) > 0):
644 elif (tab_index
== TAB_INDEX_GHOSTESS
):
645 if (len(self
.parent().listGhostess
.selectedItems()) > 0):
647 elif (tab_index
== TAB_INDEX_BRISTOL
):
648 if (len(self
.parent().listBristol
.selectedItems()) > 0):
650 elif (tab_index
== TAB_INDEX_EFFECT
):
651 if (len(self
.parent().listEffect
.selectedItems()) > 0):
653 elif (tab_index
== TAB_INDEX_TOOL
):
654 if (len(self
.parent().listTool
.selectedItems()) > 0):
657 self
.parent().checkGUI(test_selected
)
659 def checkSelectedDAW(self
, row
, column
, p_row
, p_column
):
663 app_name
= QStringStr(self
.parent().listDAW
.item(row
, 1).text())
664 list_DAW
= database
.list_DAW
666 for i
in range(len(list_DAW
)):
667 if (app_name
== list_DAW
[i
][1]):
668 app_info
= list_DAW
[i
]
671 print "ERROR: Failed to retrieve app info from database"
674 Package
, AppName
, Type
, Binary
, Icon
, Save
, Level
, License
, Features
, Docs
= app_info
676 self
.parent().frame_DAW
.setEnabled(True)
677 self
.parent().ico_app_daw
.setPixmap(QIcon(self
.getIcon(Icon
)).pixmap(48, 48))
678 self
.parent().ico_ladspa_daw
.setPixmap(QIcon(self
.getIconForYesNo(Features
[0])).pixmap(16, 16))
679 self
.parent().ico_dssi_daw
.setPixmap(QIcon(self
.getIconForYesNo(Features
[1])).pixmap(16, 16))
680 self
.parent().ico_lv2_daw
.setPixmap(QIcon(self
.getIconForYesNo(Features
[2])).pixmap(16, 16))
681 self
.parent().ico_vst_daw
.setPixmap(QIcon(self
.getIconForYesNo(Features
[3])).pixmap(16, 16))
682 self
.parent().ico_jack_transport_daw
.setPixmap(QIcon(self
.getIconForYesNo(Features
[5])).pixmap(16, 16))
683 self
.parent().label_name_daw
.setText(AppName
)
684 self
.parent().label_vst_mode_daw
.setText(Features
[4])
685 self
.parent().ico_midi_mode_daw
.setPixmap(QIcon(self
.getIconForYesNo(Features
[6])).pixmap(16, 16))
686 self
.parent().label_midi_mode_daw
.setText(Features
[7])
687 self
.parent().label_ladish_level_daw
.setText(str(Level
))
689 Docs0
= Docs
[0] if (os
.path
.exists(Docs
[0].replace("file://",""))) else ""
690 self
.showDoc_DAW(Docs0
, Docs
[1])
693 test_selected
= False
696 self
.parent().checkGUI(test_selected
)
698 def checkSelectedHost(self
, row
, column
, p_row
, p_column
):
702 app_name
= QStringStr(self
.parent().listHost
.item(row
, 1).text())
703 list_Host
= database
.list_Host
705 for i
in range(len(list_Host
)):
706 if (app_name
== list_Host
[i
][1]):
707 app_info
= list_Host
[i
]
710 print "ERROR: Failed to retrieve app info from database"
713 Package
, AppName
, Instruments
, Effects
, Binary
, Icon
, Save
, Level
, License
, Features
, Docs
= app_info
715 self
.parent().frame_Host
.setEnabled(True)
716 self
.parent().ico_app_host
.setPixmap(self
.getIcon(Icon
).pixmap(48, 48))
717 self
.parent().ico_internal_host
.setPixmap(self
.getIconForYesNo(Features
[0]).pixmap(16, 16))
718 self
.parent().ico_ladspa_host
.setPixmap(self
.getIconForYesNo(Features
[1]).pixmap(16, 16))
719 self
.parent().ico_dssi_host
.setPixmap(self
.getIconForYesNo(Features
[2]).pixmap(16, 16))
720 self
.parent().ico_lv2_host
.setPixmap(self
.getIconForYesNo(Features
[3]).pixmap(16, 16))
721 self
.parent().ico_vst_host
.setPixmap(self
.getIconForYesNo(Features
[4]).pixmap(16, 16))
722 self
.parent().label_name_host
.setText(AppName
)
723 self
.parent().label_vst_mode_host
.setText(Features
[5])
724 self
.parent().label_midi_mode_host
.setText(Features
[6])
725 self
.parent().label_ladish_level_host
.setText(str(Level
))
727 Docs0
= Docs
[0] if (os
.path
.exists(Docs
[0].replace("file://",""))) else ""
728 self
.showDoc_Host(Docs0
, Docs
[1])
731 test_selected
= False
734 self
.parent().checkGUI(test_selected
)
736 def checkSelectedInstrument(self
, row
, column
, p_row
, p_column
):
740 app_name
= QStringStr(self
.parent().listInstrument
.item(row
, 1).text())
741 list_Instrument
= database
.list_Instrument
743 for i
in range(len(list_Instrument
)):
744 if (app_name
== list_Instrument
[i
][1]):
745 app_info
= list_Instrument
[i
]
748 print "ERROR: Failed to retrieve app info from database"
751 Package
, AppName
, Type
, Binary
, Icon
, Save
, Level
, License
, Features
, Docs
= app_info
753 self
.parent().frame_Instrument
.setEnabled(True)
754 self
.parent().ico_app_ins
.setPixmap(self
.getIcon(Icon
).pixmap(48, 48))
755 self
.parent().ico_builtin_fx_ins
.setPixmap(self
.getIconForYesNo(Features
[0]).pixmap(16, 16))
756 self
.parent().ico_audio_input_ins
.setPixmap(self
.getIconForYesNo(Features
[1]).pixmap(16, 16))
757 self
.parent().label_name_ins
.setText(AppName
)
758 self
.parent().label_midi_mode_ins
.setText(Features
[2])
759 self
.parent().label_ladish_level_ins
.setText(str(Level
))
761 Docs0
= Docs
[0] if (os
.path
.exists(Docs
[0].replace("file://",""))) else ""
762 self
.showDoc_Instrument(Docs0
, Docs
[1])
765 test_selected
= False
766 self
.clearInfo_Intrument()
768 self
.parent().checkGUI(test_selected
)
770 def checkSelectedGhostess(self
, row
, column
, p_row
, p_column
):
774 app_name
= QStringStr(self
.parent().listGhostess
.item(row
, 1).text())
775 list_Ghostess
= database
.list_Ghostess
777 for i
in range(len(list_Ghostess
)):
778 if (app_name
== list_Ghostess
[i
][1]):
779 app_info
= list_Ghostess
[i
]
782 print "ERROR: Failed to retrieve app info from database"
785 Package
, PluginName
, Type
, PluginBinaryLabel
, Icon
, Save
, Level
, License
, Features
, Docs
= app_info
787 self
.parent().frame_Ghostess
.setEnabled(True)
788 self
.parent().ico_app_ghostess
.setPixmap(self
.getIcon(Icon
).pixmap(48, 48))
789 self
.parent().ico_builtin_fx_ghostess
.setPixmap(self
.getIconForYesNo(Features
[0]).pixmap(16, 16))
790 self
.parent().ico_stereo_ghostess
.setPixmap(self
.getIconForYesNo(Features
[1]).pixmap(16, 16))
791 self
.parent().label_name_ghostess
.setText(PluginName
)
792 self
.parent().label_midi_mode_ghostess
.setText(Features
[2])
793 self
.parent().label_ladish_level_ghostess
.setText(str(Level
))
795 Docs0
= Docs
[0] if (os
.path
.exists(Docs
[0].replace("file://",""))) else ""
796 self
.showDoc_Ghostess(Docs0
, Docs
[1])
799 test_selected
= False
800 self
.clearInfo_Ghostess()
802 self
.parent().checkGUI(test_selected
)
804 def checkSelectedBristol(self
, row
, column
, p_row
, p_column
):
808 app_name
= QStringStr(self
.parent().listBristol
.item(row
, 2).text())
809 list_Bristol
= database
.list_Bristol
811 for i
in range(len(list_Bristol
)):
812 if (app_name
== list_Bristol
[i
][1]):
813 app_info
= list_Bristol
[i
]
816 print "ERROR: Failed to retrieve app info from database"
819 Package
, AppName
, Type
, ShortName
, Icon
, Save
, Level
, License
, Features
, Docs
= app_info
821 self
.parent().frame_Bristol
.setEnabled(True)
822 self
.parent().ico_app_bristol
.setPixmap(self
.getIcon(Icon
).pixmap(48, 48))
823 self
.parent().ico_builtin_fx_bristol
.setPixmap(self
.getIconForYesNo(Features
[0]).pixmap(16, 16))
824 self
.parent().ico_audio_input_bristol
.setPixmap(self
.getIconForYesNo(Features
[1]).pixmap(16, 16))
825 self
.parent().label_name_bristol
.setText(AppName
)
826 self
.parent().label_midi_mode_bristol
.setText(Features
[2])
827 self
.parent().label_ladish_level_bristol
.setText(str(Level
))
829 Docs0
= Docs
[0] if (os
.path
.exists(Docs
[0].replace("file://",""))) else ""
830 self
.showDoc_Bristol(Docs0
, Docs
[1])
833 test_selected
= False
834 self
.clearInfo_Bristol()
836 self
.parent().checkGUI(test_selected
)
838 def checkSelectedEffect(self
, row
, column
, p_row
, p_column
):
842 app_name
= QStringStr(self
.parent().listEffect
.item(row
, 1).text())
843 list_Effect
= database
.list_Effect
845 for i
in range(len(list_Effect
)):
846 if (app_name
== list_Effect
[i
][1]):
847 app_info
= list_Effect
[i
]
850 print "ERROR: Failed to retrieve app info from database"
853 Package
, AppName
, Type
, Binary
, Icon
, Save
, Level
, License
, Features
, Docs
= app_info
855 self
.parent().frame_Effect
.setEnabled(True)
856 self
.parent().ico_app_effect
.setPixmap(self
.getIcon(Icon
).pixmap(48, 48))
857 self
.parent().ico_stereo_effect
.setPixmap(self
.getIconForYesNo(Features
[0]).pixmap(16, 16))
858 self
.parent().label_name_effect
.setText(AppName
)
859 self
.parent().label_midi_mode_effect
.setText(Features
[1])
860 self
.parent().label_ladish_level_effect
.setText(str(Level
))
862 Docs0
= Docs
[0] if (os
.path
.exists(Docs
[0].replace("file://",""))) else ""
863 self
.showDoc_Effect(Docs0
, Docs
[1])
866 test_selected
= False
867 self
.clearInfo_Effect()
869 self
.parent().checkGUI(test_selected
)
871 def checkSelectedTool(self
, row
, column
, p_row
, p_column
):
875 app_name
= QStringStr(self
.parent().listTool
.item(row
, 1).text())
876 list_Tool
= database
.list_Tool
878 for i
in range(len(list_Tool
)):
879 if (app_name
== list_Tool
[i
][1]):
880 app_info
= list_Tool
[i
]
883 print "ERROR: Failed to retrieve app info from database"
886 Package
, AppName
, Type
, Binary
, Icon
, Save
, Level
, License
, Features
, Docs
= app_info
888 self
.parent().frame_Tool
.setEnabled(True)
889 self
.parent().ico_app_tool
.setPixmap(self
.getIcon(Icon
).pixmap(48, 48))
890 self
.parent().label_name_tool
.setText(AppName
)
891 self
.parent().label_midi_mode_tool
.setText(Features
[0])
892 self
.parent().ico_jack_transport_tool
.setPixmap(self
.getIconForYesNo(Features
[1]).pixmap(16, 16))
893 self
.parent().label_ladish_level_tool
.setText(str(Level
))
895 Docs0
= Docs
[0] if (os
.path
.exists(Docs
[0].replace("file://",""))) else ""
896 self
.showDoc_Tool(Docs0
, Docs
[1])
899 test_selected
= False
900 self
.clearInfo_Tool()
902 self
.parent().checkGUI(test_selected
)
904 def showDoc_DAW(self
, doc
, web
):
905 self
.parent().url_documentation_daw
.setVisible(bool(doc
))
906 self
.parent().url_website_daw
.setVisible(bool(web
))
907 self
.parent().label_no_help_daw
.setVisible(not(doc
or web
))
909 if (doc
): self
.setDocUrl(self
.parent().url_documentation_daw
, doc
)
910 if (web
): self
.setWebUrl(self
.parent().url_website_daw
, web
)
912 def showDoc_Host(self
, doc
, web
):
913 self
.parent().url_documentation_host
.setVisible(bool(doc
))
914 self
.parent().url_website_host
.setVisible(bool(web
))
915 self
.parent().label_no_help_host
.setVisible(not(doc
or web
))
917 if (doc
): self
.setDocUrl(self
.parent().url_documentation_host
, doc
)
918 if (web
): self
.setWebUrl(self
.parent().url_website_host
, web
)
920 def showDoc_Instrument(self
, doc
, web
):
921 self
.parent().url_documentation_ins
.setVisible(bool(doc
))
922 self
.parent().url_website_ins
.setVisible(bool(web
))
923 self
.parent().label_no_help_ins
.setVisible(not(doc
or web
))
925 if (doc
): self
.setDocUrl(self
.parent().url_documentation_ins
, doc
)
926 if (web
): self
.setWebUrl(self
.parent().url_website_ins
, web
)
928 def showDoc_Ghostess(self
, doc
, web
):
929 self
.parent().url_documentation_ghostess
.setVisible(bool(doc
))
930 self
.parent().url_website_ghostess
.setVisible(bool(web
))
931 self
.parent().label_no_help_ghostess
.setVisible(not(doc
or web
))
933 if (doc
): self
.setDocUrl(self
.parent().url_documentation_ghostess
, doc
)
934 if (web
): self
.setWebUrl(self
.parent().url_website_ghostess
, web
)
936 def showDoc_Bristol(self
, doc
, web
):
937 self
.parent().url_documentation_bristol
.setVisible(bool(doc
))
938 self
.parent().url_website_bristol
.setVisible(bool(web
))
939 self
.parent().label_no_help_bristol
.setVisible(not(doc
or web
))
941 if (doc
): self
.setDocUrl(self
.parent().url_documentation_bristol
, doc
)
942 if (web
): self
.setWebUrl(self
.parent().url_website_bristol
, web
)
944 def showDoc_Effect(self
, doc
, web
):
945 self
.parent().url_documentation_effect
.setVisible(bool(doc
))
946 self
.parent().url_website_effect
.setVisible(bool(web
))
947 self
.parent().label_no_help_effect
.setVisible(not(doc
or web
))
949 if (doc
): self
.setDocUrl(self
.parent().url_documentation_effect
, doc
)
950 if (web
): self
.setWebUrl(self
.parent().url_website_effect
, web
)
952 def showDoc_Tool(self
, doc
, web
):
953 self
.parent().url_documentation_tool
.setVisible(bool(doc
))
954 self
.parent().url_website_tool
.setVisible(bool(web
))
955 self
.parent().label_no_help_tool
.setVisible(not(doc
or web
))
957 if (doc
): self
.setDocUrl(self
.parent().url_documentation_tool
, doc
)
958 if (web
): self
.setWebUrl(self
.parent().url_website_tool
, web
)
960 def setDocUrl(self
, item
, link
):
961 item
.setText(self
.parent().tr("<a href='%1'>Documentation</a>").arg(link
))
963 def setWebUrl(self
, item
, link
):
964 item
.setText(self
.parent().tr("<a href='%1'>WebSite</a>").arg(link
))
967 self
.parent().listDAW
.clearContents()
968 self
.parent().listHost
.clearContents()
969 self
.parent().listInstrument
.clearContents()
970 self
.parent().listGhostess
.clearContents()
971 self
.parent().listBristol
.clearContents()
972 self
.parent().listEffect
.clearContents()
973 self
.parent().listTool
.clearContents()
974 for i
in range(self
.parent().listDAW
.rowCount()):
975 self
.parent().listDAW
.removeRow(0)
976 for i
in range(self
.parent().listHost
.rowCount()):
977 self
.parent().listHost
.removeRow(0)
978 for i
in range(self
.parent().listInstrument
.rowCount()):
979 self
.parent().listInstrument
.removeRow(0)
980 for i
in range(self
.parent().listGhostess
.rowCount()):
981 self
.parent().listGhostess
.removeRow(0)
982 for i
in range(self
.parent().listBristol
.rowCount()):
983 self
.parent().listBristol
.removeRow(0)
984 for i
in range(self
.parent().listEffect
.rowCount()):
985 self
.parent().listEffect
.removeRow(0)
986 for i
in range(self
.parent().listTool
.rowCount()):
987 self
.parent().listTool
.removeRow(0)
989 def refreshAll(self
):
995 if (os
.path
.exists("/usr/bin/yaourt")):
996 pkg_out
= getoutput("/usr/bin/yaourt -Qsq").split("\n")
997 for package
in pkg_out
:
998 pkglist
.append(package
)
1000 elif (os
.path
.exists("/usr/bin/pacman")):
1001 pkg_out
= getoutput("/usr/bin/pacman -Qsq").split("\n")
1002 for package
in pkg_out
:
1003 pkglist
.append(package
)
1005 elif (os
.path
.exists("/usr/bin/dpkg-query")):
1006 pkg_out
= getoutput("/usr/bin/dpkg-query -W --showformat='${Package}\n'").split("\n")
1007 for package
in pkg_out
:
1008 pkglist
.append(package
)
1010 elif (os
.path
.exists("/usr/bin/equery")):
1011 pkg_out
= getoutput("/usr/bin/equery list").split("\n")
1013 for pkg_info
in pkg_out
:
1014 if pkg_info
.startswith("[I--] "):
1015 pkg_info_small
= pkg_info
.replace("[I--] ","",1).split("]",1)[1].split("/",1)[1].split("(",1)[0]
1017 # Find '-' that splits package's name-version
1018 pkg_info_split
= pkg_info_small
.split("-")
1019 pkg_info_word_count
= 0
1021 for i
in range(len(pkg_info_split
)):
1022 if (i
== 0): continue
1023 else: pkg_info_word_count
+= len(pkg_info_split
[i
-1])
1025 if (pkg_info_split
[i
][0].isdigit()):
1026 pkg_info_sep
= i
+ pkg_info_word_count
-1
1030 # Could not find info separator
1033 package
= pkg_info_small
[0:pkg_info_sep
]
1034 pkglist
.append(package
)
1036 if (not SHOW_ALL
and not "ghostess" in pkglist
):
1037 self
.parent().tabWidget
.setTabEnabled(TAB_INDEX_GHOSTESS
, False)
1039 if (not SHOW_ALL
and not "bristol" in pkglist
):
1040 self
.parent().tabWidget
.setTabEnabled(TAB_INDEX_BRISTOL
, False)
1043 list_DAW
= database
.list_DAW
1044 for i
in range(len(list_DAW
)):
1045 if (SHOW_ALL
or list_DAW
[i
][0] in pkglist
):
1046 Package
, AppName
, Type
, Binary
, Icon
, Save
, Level
, License
, Features
, Docs
= list_DAW
[i
]
1048 w_icon
= QTableWidgetItem("")
1049 w_icon
.setIcon(QIcon(self
.getIcon(Icon
, 16)))
1050 w_name
= QTableWidgetItem(AppName
)
1051 w_type
= QTableWidgetItem(Type
)
1052 w_save
= QTableWidgetItem(Save
)
1053 w_licc
= QTableWidgetItem(License
)
1055 self
.parent().listDAW
.insertRow(last_pos
)
1056 self
.parent().listDAW
.setItem(last_pos
, 0, w_icon
)
1057 self
.parent().listDAW
.setItem(last_pos
, 1, w_name
)
1058 self
.parent().listDAW
.setItem(last_pos
, 2, w_type
)
1059 self
.parent().listDAW
.setItem(last_pos
, 3, w_save
)
1060 self
.parent().listDAW
.setItem(last_pos
, 4, w_licc
)
1065 list_Host
= database
.list_Host
1066 for i
in range(len(list_Host
)):
1067 if (SHOW_ALL
or list_Host
[i
][0] in pkglist
):
1068 Package
, AppName
, Instruments
, Effects
, Binary
, Icon
, Save
, Level
, License
, Features
, Docs
= list_Host
[i
]
1070 w_icon
= QTableWidgetItem("")
1071 w_icon
.setIcon(QIcon(self
.getIcon(Icon
, 16)))
1072 w_name
= QTableWidgetItem(AppName
)
1073 w_h_in
= QTableWidgetItem(Instruments
)
1074 w_h_ef
= QTableWidgetItem(Effects
)
1075 w_save
= QTableWidgetItem(Save
)
1076 w_licc
= QTableWidgetItem(License
)
1078 self
.parent().listHost
.insertRow(last_pos
)
1079 self
.parent().listHost
.setItem(last_pos
, 0, w_icon
)
1080 self
.parent().listHost
.setItem(last_pos
, 1, w_name
)
1081 self
.parent().listHost
.setItem(last_pos
, 2, w_h_in
)
1082 self
.parent().listHost
.setItem(last_pos
, 3, w_h_ef
)
1083 self
.parent().listHost
.setItem(last_pos
, 4, w_save
)
1084 self
.parent().listHost
.setItem(last_pos
, 5, w_licc
)
1089 list_Instrument
= database
.list_Instrument
1090 for i
in range(len(list_Instrument
)):
1091 if (SHOW_ALL
or list_Instrument
[i
][0] in pkglist
):
1092 Package
, AppName
, Type
, Binary
, Icon
, Save
, Level
, License
, Features
, Docs
= list_Instrument
[i
]
1094 w_icon
= QTableWidgetItem("")
1095 w_icon
.setIcon(QIcon(self
.getIcon(Icon
, 16)))
1096 w_name
= QTableWidgetItem(AppName
)
1097 w_type
= QTableWidgetItem(Type
)
1098 w_save
= QTableWidgetItem(Save
)
1099 w_licc
= QTableWidgetItem(License
)
1101 self
.parent().listInstrument
.insertRow(last_pos
)
1102 self
.parent().listInstrument
.setItem(last_pos
, 0, w_icon
)
1103 self
.parent().listInstrument
.setItem(last_pos
, 1, w_name
)
1104 self
.parent().listInstrument
.setItem(last_pos
, 2, w_type
)
1105 self
.parent().listInstrument
.setItem(last_pos
, 3, w_save
)
1106 self
.parent().listInstrument
.setItem(last_pos
, 4, w_licc
)
1111 list_Ghostess
= database
.list_Ghostess
1112 for i
in range(len(list_Ghostess
)):
1113 if (SHOW_ALL
or list_Ghostess
[i
][0] in pkglist
):
1114 Package
, PluginName
, Type
, PluginBinaryLabel
, Icon
, Save
, Level
, License
, Features
, Docs
= list_Ghostess
[i
]
1116 w_icon
= QTableWidgetItem("")
1117 w_icon
.setIcon(QIcon(self
.getIcon(Icon
, 16)))
1118 w_name
= QTableWidgetItem(PluginName
)
1119 w_type
= QTableWidgetItem(Type
)
1120 w_save
= QTableWidgetItem(Save
)
1121 w_licc
= QTableWidgetItem(License
)
1123 self
.parent().listGhostess
.insertRow(last_pos
)
1124 self
.parent().listGhostess
.setItem(last_pos
, 0, w_icon
)
1125 self
.parent().listGhostess
.setItem(last_pos
, 1, w_name
)
1126 self
.parent().listGhostess
.setItem(last_pos
, 2, w_type
)
1127 self
.parent().listGhostess
.setItem(last_pos
, 3, w_save
)
1128 self
.parent().listGhostess
.setItem(last_pos
, 4, w_licc
)
1133 list_Bristol
= database
.list_Bristol
1134 for i
in range(len(list_Bristol
)):
1135 if (SHOW_ALL
or list_Bristol
[i
][0] in pkglist
):
1136 Package
, FullName
, Type
, ShortName
, Icon
, Save
, Level
, License
, Features
, Docs
= list_Bristol
[i
]
1138 w_icon
= QTableWidgetItem("")
1139 w_icon
.setIcon(QIcon(self
.getIcon(Icon
, 16)))
1140 w_fullname
= QTableWidgetItem(FullName
)
1141 w_shortname
= QTableWidgetItem(ShortName
)
1143 self
.parent().listBristol
.insertRow(last_pos
)
1144 self
.parent().listBristol
.setItem(last_pos
, 0, w_icon
)
1145 self
.parent().listBristol
.setItem(last_pos
, 1, w_shortname
)
1146 self
.parent().listBristol
.setItem(last_pos
, 2, w_fullname
)
1151 list_Effect
= database
.list_Effect
1152 for i
in range(len(list_Effect
)):
1153 if (SHOW_ALL
or list_Effect
[i
][0] in pkglist
):
1154 Package
, AppName
, Type
, Binary
, Icon
, Save
, Level
, License
, Features
, Docs
= list_Effect
[i
]
1156 w_icon
= QTableWidgetItem("")
1157 w_icon
.setIcon(QIcon(self
.getIcon(Icon
, 16)))
1158 w_name
= QTableWidgetItem(AppName
)
1159 w_type
= QTableWidgetItem(Type
)
1160 w_save
= QTableWidgetItem(Save
)
1161 w_licc
= QTableWidgetItem(License
)
1163 self
.parent().listEffect
.insertRow(last_pos
)
1164 self
.parent().listEffect
.setItem(last_pos
, 0, w_icon
)
1165 self
.parent().listEffect
.setItem(last_pos
, 1, w_name
)
1166 self
.parent().listEffect
.setItem(last_pos
, 2, w_type
)
1167 self
.parent().listEffect
.setItem(last_pos
, 3, w_save
)
1168 self
.parent().listEffect
.setItem(last_pos
, 4, w_licc
)
1173 list_Tool
= database
.list_Tool
1174 for i
in range(len(list_Tool
)):
1175 if (SHOW_ALL
or list_Tool
[i
][0] in pkglist
):
1176 Package
, AppName
, Type
, Binary
, Icon
, Save
, Level
, License
, Features
, Docs
= list_Tool
[i
]
1178 w_icon
= QTableWidgetItem("")
1179 w_icon
.setIcon(QIcon(self
.getIcon(Icon
, 16)))
1180 w_name
= QTableWidgetItem(AppName
)
1181 w_type
= QTableWidgetItem(Type
)
1182 w_save
= QTableWidgetItem(Save
)
1183 w_licc
= QTableWidgetItem(License
)
1185 self
.parent().listTool
.insertRow(last_pos
)
1186 self
.parent().listTool
.setItem(last_pos
, 0, w_icon
)
1187 self
.parent().listTool
.setItem(last_pos
, 1, w_name
)
1188 self
.parent().listTool
.setItem(last_pos
, 2, w_type
)
1189 self
.parent().listTool
.setItem(last_pos
, 3, w_save
)
1190 self
.parent().listTool
.setItem(last_pos
, 4, w_licc
)
1194 self
.parent().listDAW
.setCurrentCell(-1, -1)
1195 self
.parent().listHost
.setCurrentCell(-1, -1)
1196 self
.parent().listInstrument
.setCurrentCell(-1, -1)
1197 self
.parent().listGhostess
.setCurrentCell(-1, -1)
1198 self
.parent().listBristol
.setCurrentCell(-1, -1)
1199 self
.parent().listEffect
.setCurrentCell(-1, -1)
1200 self
.parent().listTool
.setCurrentCell(-1, -1)
1202 self
.parent().listDAW
.sortByColumn(1, Qt
.AscendingOrder
)
1203 self
.parent().listHost
.sortByColumn(1, Qt
.AscendingOrder
)
1204 self
.parent().listInstrument
.sortByColumn(1, Qt
.AscendingOrder
)
1205 self
.parent().listGhostess
.sortByColumn(1, Qt
.AscendingOrder
)
1206 self
.parent().listBristol
.sortByColumn(2, Qt
.AscendingOrder
)
1207 self
.parent().listEffect
.sortByColumn(1, Qt
.AscendingOrder
)
1208 self
.parent().listTool
.sortByColumn(1, Qt
.AscendingOrder
)
1210 def saveSettings(self
):
1211 self
.settings().setValue("SplitterDAW", QVariant(self
.parent().splitter_DAW
.saveState()))
1212 self
.settings().setValue("SplitterHost", QVariant(self
.parent().splitter_Host
.saveState()))
1213 self
.settings().setValue("SplitterInstrument", QVariant(self
.parent().splitter_Instrument
.saveState()))
1214 self
.settings().setValue("SplitterGhostess", QVariant(self
.parent().splitter_Ghostess
.saveState()))
1215 self
.settings().setValue("SplitterBristol", QVariant(self
.parent().splitter_Bristol
.saveState()))
1216 self
.settings().setValue("SplitterEffect", QVariant(self
.parent().splitter_Effect
.saveState()))
1217 self
.settings().setValue("SplitterTool", QVariant(self
.parent().splitter_Tool
.saveState()))
1219 def loadSettings(self
):
1220 self
.parent().splitter_DAW
.restoreState(self
.settings().value("SplitterDAW").toByteArray())
1221 self
.parent().splitter_Host
.restoreState(self
.settings().value("SplitterHost").toByteArray())
1222 self
.parent().splitter_Instrument
.restoreState(self
.settings().value("SplitterInstrument").toByteArray())
1223 self
.parent().splitter_Ghostess
.restoreState(self
.settings().value("SplitterGhostess").toByteArray())
1224 self
.parent().splitter_Bristol
.restoreState(self
.settings().value("SplitterBristol").toByteArray())
1225 self
.parent().splitter_Effect
.restoreState(self
.settings().value("SplitterEffect").toByteArray())
1226 self
.parent().splitter_Tool
.restoreState(self
.settings().value("SplitterTool").toByteArray())