diff --git a/src/claudia_database.py b/src/claudia_database.py index 9cf75c6..47b2afd 100644 --- a/src/claudia_database.py +++ b/src/claudia_database.py @@ -15,6 +15,9 @@ LEVEL_NSM = "NSM" TEMPLATE_YES = "Yes" TEMPLATE_NO = "No" +# ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +# DAW + # (L, D, L, V, VST-Mode, T, M, MIDI-Mode) -> ( LADSPA, DSSI, LV2, VST, VST-Mode, Transport, MIDI, MIDI-Mode) list_DAW = [ @@ -58,26 +61,36 @@ list_DAW = [ ( "traverso", "Traverso", "DAW", "traverso", "traverso", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, 0, 1, 0, "", 1, 0, ""), ("file:///usr/share/kxstudio/docs/traverso-manual-0.49.0.pdf", "http://traverso-daw.org/") ), ] +iDAW_Package, iDAW_AppName, iDAW_Type, iDAW_Binary, iDAW_Icon, iDAW_Template, iDAW_Level, iDAW_RelModel, iDAW_Features, iDAW_Docs = range(0, len(list_DAW[0])) + +# ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +# Host + # (I, L, D, L, V, VST-Mode, MIDI-Mode) -> (Internal, LADSPA, DSSI, LV2, VST, VST-Mode, MIDI-Mode) list_Host = [ - # Package AppName Ins? FX? Binary Icon Template? Level Rel.-Model (I, L, D, L, V, VST-Mode, MIDI-Mode) (doc-file, website) - ( "calf-plugins", "Calf Jack Host", "Yes", "Yes", "calfjackhost", "calf", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, 0, 0, 0, 0, "", "JACK"), ("", "http://calf.sourceforge.net/") ), - ( "calf-plugins-git", "Calf Jack Host (GIT)", "Yes", "Yes", "calfjackhost", "calf", TEMPLATE_YES, LEVEL_1, "OpenSource", (1, 0, 0, 0, 0, "", "JACK"), ("file:///usr/share/doc/calf/Calf.html", "http://calf.sourceforge.net/") ), + # Package AppName Ins? FX? Binary Icon Template? Level Rel.-Model (I, L, D, L, V, VST-Mode, MIDI-Mode) (doc-file, website) + ( "calf-plugins", "Calf Jack Host", "Yes", "Yes", "calfjackhost", "calf", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, 0, 0, 0, 0, "", "JACK"), ("", "http://calf.sourceforge.net/") ), + ( "calf-plugins-git", "Calf Jack Host (GIT)", "Yes", "Yes", "calfjackhost", "calf", TEMPLATE_YES, LEVEL_1, "OpenSource", (1, 0, 0, 0, 0, "", "JACK"), ("file:///usr/share/doc/calf/Calf.html", "http://calf.sourceforge.net/") ), - ( "carla", "Carla", "Yes", "Yes", "carla", "carla", TEMPLATE_NO, LEVEL_1, "OpenSource", (0, 1, 1, 1, 1, "Native", "JACK"), ("", "http://kxstudio.sourceforge.net/KXStudio:Applications:Carla") ), + ( "carla", "Carla", "Yes", "Yes", "carla", "carla", TEMPLATE_NO, LEVEL_1, "OpenSource", (0, 1, 1, 1, 1, "Native", "JACK"), ("", "http://kxstudio.sourceforge.net/KXStudio:Applications:Carla") ), - ( "festige", "FeSTige", "Yes", "Yes", "festige", "festige", TEMPLATE_NO, LEVEL_1, "OpenSource", (0, 0, 0, 0, 1, "Windows", "ALSA | JACK"), ("", "http://festige.sourceforge.net/") ), + ( "festige", "FeSTige", "Yes", "Yes", "festige", "festige", TEMPLATE_NO, LEVEL_1, "OpenSource", (0, 0, 0, 0, 1, "Windows", "ALSA | JACK"), ("", "http://festige.sourceforge.net/") ), - #( "ingen", "Ingen", "Yes", "Yes", "ingen -eg", "ingen", TEMPLATE_NO, LEVEL_JS, "OpenSource", (1, 0, 0, 1, 0, "", "JACK"), ("", "http://drobilla.net/blog/software/ingen/") ), - ( "ingen-svn", "Ingen (SVN)", "Yes", "Yes", "ingen-svn -eg", "ingen", TEMPLATE_NO, LEVEL_JS, "OpenSource", (1, 0, 0, 1, 0, "", "JACK"), ("", "http://drobilla.net/blog/software/ingen/") ), + #( "ingen", "Ingen", "Yes", "Yes", "ingen -eg", "ingen", TEMPLATE_NO, LEVEL_JS, "OpenSource", (1, 0, 0, 1, 0, "", "JACK"), ("", "http://drobilla.net/blog/software/ingen/") ), + ( "ingen-svn", "Ingen (SVN)", "Yes", "Yes", "ingen-svn -eg", "ingen", TEMPLATE_NO, LEVEL_JS, "OpenSource", (1, 0, 0, 1, 0, "", "JACK"), ("", "http://drobilla.net/blog/software/ingen/") ), - ( "jack-rack", "Jack Rack", "No", "Yes", "jack-rack", "jack-rack", TEMPLATE_NO, LEVEL_0, "OpenSource", (0, 1, 0, 0, 0, "", "ALSA"), ("", "http://jack-rack.sourceforge.net/") ), + ( "jack-rack", "Jack Rack", "No", "Yes", "jack-rack", "jack-rack", TEMPLATE_NO, LEVEL_0, "OpenSource", (0, 1, 0, 0, 0, "", "ALSA"), ("", "http://jack-rack.sourceforge.net/") ), - ( "zynjacku", "LV2 Rack", "No", "Yes", "lv2rack", "zynjacku", TEMPLATE_NO, LEVEL_LASH, "OpenSource", (0, 0, 0, 1, 0, "", "JACK"), ("", "http://home.gna.org/zynjacku/") ), - ( "zynjacku", "ZynJackU", "Yes", "No", "zynjacku", "zynjacku", TEMPLATE_NO, LEVEL_LASH, "OpenSource", (0, 0, 0, 1, 0, "", "JACK"), ("", "http://home.gna.org/zynjacku/") ), + ( "zynjacku", "LV2 Rack", "No", "Yes", "lv2rack", "zynjacku", TEMPLATE_NO, LEVEL_LASH, "OpenSource", (0, 0, 0, 1, 0, "", "JACK"), ("", "http://home.gna.org/zynjacku/") ), + ( "zynjacku", "ZynJackU", "Yes", "No", "zynjacku", "zynjacku", TEMPLATE_NO, LEVEL_LASH, "OpenSource", (0, 0, 0, 1, 0, "", "JACK"), ("", "http://home.gna.org/zynjacku/") ), ] +iHost_Package, iHost_AppName, iHost_Ins, iHost_FX, iHost_Binary, iHost_Icon, iHost_Template, iHost_Level, iHost_RelModel, iHost_Features, iDAW_Docs = range(0, len(list_Host[0])) + +# ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +# Instrument + # (F, I, MIDI-Mode) -> (Built-in FX, Audio Input, MIDI-Mode) list_Instrument = [ @@ -86,7 +99,7 @@ list_Instrument = [ ( "amsynth", "Amsynth", "Synth", "amsynth", "amsynth", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, 0, "ALSA"), ("", "") ), - ( "azr3-jack", "AZR3", "Synth", "azr3", "azr3", TEMPLATE_NO, LEVEL_0, "OpenSource", (0, 0, "Jack"), ("", "http://ll-plugins.nongnu.org/azr3/") ), + ( "azr3-jack", "AZR3", "Synth", "azr3", "azr3", TEMPLATE_NO, LEVEL_0, "OpenSource", (0, 0, "JACK"), ("", "http://ll-plugins.nongnu.org/azr3/") ), ( "distrho-plugin-ports", "Vex", "Synth", "vex", generic_audio_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", (1, 1, "ALSA"), ("", "") ), ( "highlife", "HighLife", "Sampler", "highlife", generic_audio_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", (1, 1, "ALSA"), ("", "http://www.discodsp.com/highlife/") ), @@ -95,9 +108,9 @@ list_Instrument = [ ( "tal-plugins", "TAL NoiseMaker", "Synth", "TAL-NoiseMaker", "tal_plugins", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, 1, "ALSA"), ("", "http://kunz.corrupt.ch/products/tal-noisemaker") ), ( "wolpertinger", "Wolpertinger", "Synth", "Wolpertinger", "wolpertinger", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, 0, "ALSA"), ("", "http://tumbetoene.tuxfamily.org") ), - ( "foo-yc20", "Foo YC20", "Synth", "foo-yc20", "foo-yc20", TEMPLATE_NO, LEVEL_0, "OpenSource", (0, 0, "Jack"), ("", "http://code.google.com/p/foo-yc20/") ), + ( "foo-yc20", "Foo YC20", "Synth", "foo-yc20", "foo-yc20", TEMPLATE_NO, LEVEL_0, "OpenSource", (0, 0, "JACK"), ("", "http://code.google.com/p/foo-yc20/") ), - ( "jsampler", "JSampler Fantasia", "Sampler", "jsampler-bin", "jsampler", TEMPLATE_NO, LEVEL_0, "OpenSource", (0, 0, "Jack + ALSA"), ("file:///usr/share/kxstudio/docs/jsampler/jsampler.html", "http://www.linuxsampler.org/") ), + ( "jsampler", "JSampler Fantasia", "Sampler", "jsampler-bin", "jsampler", TEMPLATE_NO, LEVEL_0, "OpenSource", (0, 0, "ALSA + JACK"), ("file:///usr/share/kxstudio/docs/jsampler/jsampler.html", "http://www.linuxsampler.org/") ), ( "loomer-plugins", "Aspect", "Synth", "Aspect", "loomer", TEMPLATE_NO, LEVEL_0, "Demo", (1, 1, "ALSA"), ("file:///usr/share/doc/loomer-plugins/Aspect Manual.pdf.gz", "http://www.loomer.co.uk/aspect.htm") ), ( "loomer-plugins", "Sequent", "Synth", "Sequent", "loomer", TEMPLATE_NO, LEVEL_0, "Demo", (1, 1, "ALSA"), ("file:///usr/share/doc/loomer-plugins/Sequent Manual.pdf.gz", "http://www.loomer.co.uk/sequent.htm") ), @@ -105,22 +118,27 @@ list_Instrument = [ ( "phasex", "Phasex", "Synth", "phasex", "phasex", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, 1, "ALSA"), ("file:///usr/share/phasex/help/parameters.help", "") ), - ( "pianoteq", "Pianoteq", "Synth", "Pianoteq", "pianoteq", TEMPLATE_NO, LEVEL_0, "Demo", (1, 0, "Jack + ALSA"), ("file:///usr/local/bin/Documentation/pianoteq-english.pdf", "http://www.pianoteq.com/pianoteq3_standard") ), - ( "pianoteq-play", "Pianoteq Play", "Synth", "Pianoteq-PLAY", "pianoteq", TEMPLATE_NO, LEVEL_0, "Demo", (1, 0, "Jack + ALSA"), ("file:///usr/local/bin/Documentation/pianoteq-english.pdf", "http://www.pianoteq.com/pianoteq3_play") ), + ( "pianoteq", "Pianoteq", "Synth", "Pianoteq", "pianoteq", TEMPLATE_NO, LEVEL_0, "Demo", (1, 0, "ALSA + JACK"), ("file:///usr/local/bin/Documentation/pianoteq-english.pdf", "http://www.pianoteq.com/pianoteq3_standard") ), + ( "pianoteq-play", "Pianoteq Play", "Synth", "Pianoteq-PLAY", "pianoteq", TEMPLATE_NO, LEVEL_0, "Demo", (1, 0, "ALSA + JACK"), ("file:///usr/local/bin/Documentation/pianoteq-english.pdf", "http://www.pianoteq.com/pianoteq3_play") ), - ( "qsampler", "Qsampler", "Sampler", "qsampler", "qsampler", TEMPLATE_NO, LEVEL_1, "OpenSource", (0, 0, "Jack + ALSA"), ("", "http://qsampler.sourceforge.net/") ), + ( "qsampler", "Qsampler", "Sampler", "qsampler", "qsampler", TEMPLATE_NO, LEVEL_1, "OpenSource", (0, 0, "ALSA + JACK"), ("", "http://qsampler.sourceforge.net/") ), - ( "qsynth", "Qsynth", "SoundFont Player", "qsynth -a jack -m jack", "qsynth", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, 0, "Jack | ALSA"), ("", "http://qsynth.sourceforge.net/") ), + ( "qsynth", "Qsynth", "SoundFont Player", "qsynth -a jack -m jack", "qsynth", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, 0, "ALSA | JACK"), ("", "http://qsynth.sourceforge.net/") ), - ( "yoshimi", "Yoshimi", "Synth", "yoshimi -j -J", "yoshimi", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 0, "Jack | ALSA"), ("", "http://yoshimi.sourceforge.net/") ), + ( "yoshimi", "Yoshimi", "Synth", "yoshimi -j -J", "yoshimi", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 0, "ALSA | JACK"), ("", "http://yoshimi.sourceforge.net/") ), - ( "zynaddsubfx", "ZynAddSubFX", "Synth", "zynaddsubfx", "zynaddsubfx", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, 0, "Jack + ALSA"), ("", "http://zynaddsubfx.sourceforge.net/") ), + ( "zynaddsubfx", "ZynAddSubFX", "Synth", "zynaddsubfx", "zynaddsubfx", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, 0, "ALSA + JACK"), ("", "http://zynaddsubfx.sourceforge.net/") ), ] +iInstrument_Package, iInstrument_AppName, iInstrument_Type, iInstrument_Binary, iInstrument_Icon, iInstrument_Template, iInstrument_Level, iInstrument_RelModel, iInstrument_Features, iInstrument_Docs = range(0, len(list_Instrument[0])) + +# ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +# Bristol + # Need name: bit99, bit100 list_Bristol = [ - # Package AppName Type Short-name Icon Template? Level Rel.-Model (F, I, MIDI-Mode) (doc-file, website) + # Package AppName Type Short-name Icon Template? Level Rel.-Model (F, I, MIDI-Mode) (doc-file, website) ( "bristol", "Moog Voyager", "Synth", "explorer", "bristol_explorer", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sourceforge.net/explorer.html") ), ( "bristol", "Moog Mini", "Synth", "mini", "bristol_mini", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sourceforge.net/mini.html") ), ( "bristol", "Sequential Circuits Prophet-52", "Synth", "prophet52", "bristol_prophet52", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sourceforge.net/prophet52.html") ), @@ -165,6 +183,11 @@ list_Bristol = [ #( "bristol", "Bristol Realtime Mixer", "Synth", "mixer", "bristol_mixer", TEMPLATE_NO, LEVEL_1, "OpenSource", (1, 1, "ALSA | JACK"), ("", "http://bristol.sourceforge.net/mixer.html") ), ] +iBristol_Package, iBristol_AppName, iBristol_Type, iBristol_ShortName, iBristol_Icon, iBristol_Template, iBristol_Level, iBristol_RelModel, iBristol_Features, iBristol_Docs = range(0, len(list_Bristol[0])) + +# ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +# Effect + # (S, MIDI-Mode) -> (Stereo, MIDI-Mode) list_Effect = [ @@ -176,7 +199,7 @@ list_Effect = [ ( "distrho-plugins", "3 BandEQ", "EQ", "3BandEQ", "distrho_plugins", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, "ALSA"), ("", "") ), ( "distrho-plugins", "Ping Pong Pan", "Pan", "PingPongPan", "distrho_plugins", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, "ALSA"), ("", "") ), - ( "distrho-plugins", "Stereo Audio Gain", "Amplifier", "StereoAudioGain", "distrho_plugins", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, "ALSA"), ("", "") ), + #( "distrho-plugins", "Stereo Audio Gain", "Amplifier", "StereoAudioGain", "distrho_plugins", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, "ALSA"), ("", "") ), ( "distrho-plugin-ports", "Argotlunar", "Granularor", "argotlunar", generic_audio_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", (1, "ALSA"), ("", "http://argotlunar.info/") ), ( "distrho-plugin-ports", "BitMangler", "Misc", "bitmangler", generic_audio_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", (1, "ALSA"), ("", "") ), @@ -228,79 +251,88 @@ list_Effect = [ ( "tal-plugins", "TAL Vocoder 2", "Vocoder", "TAL-Vocoder-2", "tal_plugins", TEMPLATE_NO, LEVEL_0, "OpenSource", (1, "ALSA"), ("", "http://kunz.corrupt.ch/products/tal-vocoder") ), ] +iEffect_Package, iEffect_AppName, iEffect_Type, iEffect_Binary, iEffect_Icon, iEffect_Template, iEffect_Level, iEffect_RelModel, iEffect_Features, iEffect_Docs = range(0, len(list_Effect[0])) + +# ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +# Tool + +# (MIDI-Mode, T) -> (MIDI-Mode, Transport) + list_Tool = [ - # Package AppName Type Binary Icon Save || Level || Release Model || Features[ midi-mode, tranport ] || Doc[ doc, website ] - ( "a2jmidid", "ALSA -> Jack MIDI", "Bridge", "a2j -e", generic_midi_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", ("Jack", 0), ("", "http://home.gna.org/a2jmidid/") ), + # Package AppName Type Binary Icon Template? Level Rel.-Model (MIDI-Mode, T) (doc, website) + ( "a2jmidid", "ALSA -> Jack MIDI", "Bridge", "a2j -e", generic_midi_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", ("JACK", 0), ("", "http://home.gna.org/a2jmidid/") ), - ( "arpage", "Arpage", "MIDI Arpeggiator", "arpage", "arpage", TEMPLATE_NO, LEVEL_0, "OpenSource", ("Jack", 1), ("", "") ), - ( "arpage", "Zonage", "MIDI Mapper", "zonage", "zonage", TEMPLATE_NO, LEVEL_0, "OpenSource", ("Jack", 0), ("", "") ), + ( "arpage", "Arpage", "MIDI Arpeggiator", "arpage", "arpage", TEMPLATE_NO, LEVEL_0, "OpenSource", ("JACK", 1), ("", "") ), + ( "arpage", "Zonage", "MIDI Mapper", "zonage", "zonage", TEMPLATE_NO, LEVEL_0, "OpenSource", ("JACK", 0), ("", "") ), - ( "audacity", "Audacity", "Audio Editor", "audacity", "audacity", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "http://audacity.sourceforge.net/") ), + ( "audacity", "Audacity", "Audio Editor", "audacity", "audacity", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "http://audacity.sourceforge.net/") ), - ( "cadence", "Cadence", "Multi-Feature", "cadence", "cadence", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "") ), - ( "cadence-py3-tools", "JACK XY Controller", "XY Controller", "jack_xycontroller", generic_audio_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", ("Jack", 0), ("", "") ), - ( "catia", "Catia", "Patch Bay", "catia", "catia", TEMPLATE_NO, LEVEL_0, "OpenSource", ("Jack", 1), ("", "") ), - ( "claudia", "Claudia", "Session Handler", "claudia", "claudia", TEMPLATE_NO, LEVEL_0, "OpenSource", ("Jack", 1), ("", "") ), - ( "carla-control", "Carla OSC Control", "OSC Control", "carla-control", "carla-control", TEMPLATE_NO, LEVEL_0, "OpenSource", ("Jack", 1), ("", "") ), + ( "cadence", "Cadence", "Multi-Feature", "cadence", "cadence", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "") ), + ( "cadence-py3-tools", "JACK XY Controller", "XY Controller", "jack_xycontroller", generic_audio_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", ("JACK", 0), ("", "") ), + ( "catia", "Catia", "Patch Bay", "catia", "catia", TEMPLATE_NO, LEVEL_0, "OpenSource", ("JACK", 1), ("", "") ), + ( "claudia", "Claudia", "Session Handler", "claudia", "claudia", TEMPLATE_NO, LEVEL_0, "OpenSource", ("JACK", 1), ("", "") ), + ( "carla-control", "Carla OSC Control", "OSC Control", "carla-control", "carla-control", TEMPLATE_NO, LEVEL_0, "OpenSource", ("JACK", 1), ("", "") ), - ( "drumstick-tools", "Drumstick Virtual Piano", "Virtual Keyboard", "drumstick-vpiano", "drumstick", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "http://drumstick.sourceforge.net/") ), + ( "drumstick-tools", "Drumstick Virtual Piano", "Virtual Keyboard", "drumstick-vpiano", "drumstick", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "http://drumstick.sourceforge.net/") ), - ( "fmit", "Music Instrument Tuner", "Instrument Tuner", "fmit", generic_audio_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "") ), + ( "fmit", "Music Instrument Tuner", "Instrument Tuner", "fmit", generic_audio_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "") ), - ( "gigedit", "Gigedit", "Instrument Editor", "gigedit", generic_audio_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("/usr/share/doc/gigedit/gigedit_quickstart.html", "") ), + ( "gigedit", "Gigedit", "Instrument Editor", "gigedit", generic_audio_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("/usr/share/doc/gigedit/gigedit_quickstart.html", "") ), - ( "gjacktransport", "GJackClock", "Transport Tool", "gjackclock", "gjackclock", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 1), ("", "") ), - ( "gjacktransport", "GJackTransport", "Transport Tool", "gjacktransport", "gjacktransport", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 1), ("", "") ), + ( "gjacktransport", "GJackClock", "Transport Tool", "gjackclock", "gjackclock", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 1), ("", "") ), + ( "gjacktransport", "GJackTransport", "Transport Tool", "gjacktransport", "gjacktransport", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 1), ("", "") ), - ( "gladish", "LADI Session Handler", "Session Handler", "gladish", "gladish", TEMPLATE_NO, LEVEL_0, "OpenSource", ("Jack", 0), ("", "http://www.ladish.org") ), + ( "gladish", "LADI Session Handler", "Session Handler", "gladish", "gladish", TEMPLATE_NO, LEVEL_0, "OpenSource", ("JACK", 0), ("", "http://www.ladish.org") ), - ( "gninjam", "Gtk NINJAM client", "Music Collaboration", "gninjam", generic_audio_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 1), ("", "") ), + ( "gninjam", "Gtk NINJAM client", "Music Collaboration", "gninjam", generic_audio_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 1), ("", "") ), - ( "jack-capture", "Jack Capture", "Recorder", "jack_capture_gui2", "media-record", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "") ), + ( "jack-capture", "Jack Capture", "Recorder", "jack_capture_gui2", "media-record", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "") ), - ( "jack-keyboard", "Jack Keyboard", "Virtual Keyboard", "jack-keyboard", "jack-keyboard", TEMPLATE_NO, LEVEL_0, "OpenSource", ("Jack", 0), ("file:///usr/share/kxstudio/docs/jack-keyboard/manual.html", "http://jack-keyboard.sourceforge.net/") ), + ( "jack-keyboard", "Jack Keyboard", "Virtual Keyboard", "jack-keyboard", "jack-keyboard", TEMPLATE_NO, LEVEL_0, "OpenSource", ("JACK", 0), ("file:///usr/share/kxstudio/docs/jack-keyboard/manual.html", "http://jack-keyboard.sourceforge.net/") ), - ( "jack-mixer", "Jack Mixer", "Mixer", "jack_mixer", "jack_mixer", TEMPLATE_NO, LEVEL_1, "OpenSource", ("Jack", 0), ("", "http://home.gna.org/jackmixer/") ), + ( "jack-mixer", "Jack Mixer", "Mixer", "jack_mixer", "jack_mixer", TEMPLATE_NO, LEVEL_1, "OpenSource", ("JACK", 0), ("", "http://home.gna.org/jackmixer/") ), - ( "jack-trans2midi", "Jack-Transport -> MIDI Clock", "Bridge", "trans2midi", generic_midi_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", ("Jack", 1), ("", "") ), + ( "jack-trans2midi", "Jack-Transport -> MIDI Clock", "Bridge", "trans2midi", generic_midi_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", ("JACK", 1), ("", "") ), - ( "kmetronome", "KMetronome", "Metronome", "kmetronome", "kmetronome", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "http://kmetronome.sourceforge.net/kmetronome.shtml") ), - ( "kmidimon", "KMidimon", "Monitor", "kmidimon", "kmidimon", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "http://kmidimon.sourceforge.net/") ), + ( "kmetronome", "KMetronome", "Metronome", "kmetronome", "kmetronome", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "http://kmetronome.sourceforge.net/kmetronome.shtml") ), + ( "kmidimon", "KMidimon", "Monitor", "kmidimon", "kmidimon", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "http://kmidimon.sourceforge.net/") ), - ( "laditools", "LADI Log", "Log Viewer", "ladilog", "ladilog", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "") ), - ( "laditools", "LADI Tray", "Session Handler", "laditray", "laditray", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "") ), + ( "laditools", "LADI Log", "Log Viewer", "ladilog", "ladilog", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "") ), + ( "laditools", "LADI Tray", "Session Handler", "laditray", "laditray", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "") ), - ( "linuxdsp-plugins", "linuxDSP JACK Patch Bay", "Patch Bay", "jp1_x86-64 || jp1_i686", "linuxdsp", TEMPLATE_NO, LEVEL_0, "FreeWare", ("Jack", 0), ("file:///usr/share/doc/linuxdsp-plugins/JP1/manual.pdf.gz", "http://www.linuxdsp.co.uk/download/jack/download_jp1_jack/index.html") ), + ( "linuxdsp-plugins", "linuxDSP JACK Patch Bay", "Patch Bay", "jp1_x86-64 || jp1_i686", "linuxdsp", TEMPLATE_NO, LEVEL_0, "FreeWare", ("JACK", 0), ("file:///usr/share/doc/linuxdsp-plugins/JP1/manual.pdf.gz", "http://www.linuxdsp.co.uk/download/jack/download_jp1_jack/index.html") ), - ( "lives", "LiVES", "VJ / Video Editor", "lives", "lives", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 1), ("", "http://lives.sourceforge.net/") ), + ( "lives", "LiVES", "VJ / Video Editor", "lives", "lives", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 1), ("", "http://lives.sourceforge.net/") ), - ( "ltc2amidi", "LTC -> MIDI Clock", "Bridge", "ltc2amidi", generic_midi_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "") ), + ( "ltc2amidi", "LTC -> MIDI Clock", "Bridge", "ltc2amidi", generic_midi_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "") ), - ( "mhwaveedit", "MhWaveEdit", "Audio Editor", "mhwaveedit", "mhwaveedit", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "http://gna.org/projects/mhwaveedit/") ), + ( "mhwaveedit", "MhWaveEdit", "Audio Editor", "mhwaveedit", "mhwaveedit", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "http://gna.org/projects/mhwaveedit/") ), - ( "mixxx", "Mixxx", "DJ", "mixxx", "mixxx", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("file:///usr/share/kxstudio/docs/Mixxx-Manual.pdf", "http://mixxx.sourceforge.net/") ), + ( "mixxx", "Mixxx", "DJ", "mixxx", "mixxx", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("file:///usr/share/kxstudio/docs/Mixxx-Manual.pdf", "http://mixxx.sourceforge.net/") ), - ( "non-mixer", "Non-Mixer", "Mixer", "non-mixer", "non-mixer", TEMPLATE_NO, LEVEL_0, "OpenSource", ("CV", 0), ("file:///usr/share/doc/non-mixer/MANUAL.html", "http://non-daw.tuxfamily.org/") ), + ( "non-mixer", "Non-Mixer", "Mixer", "non-mixer", "non-mixer", TEMPLATE_NO, LEVEL_0, "OpenSource", ("CV", 0), ("file:///usr/share/doc/non-mixer/MANUAL.html", "http://non-daw.tuxfamily.org/") ), - ( "openmovieeditor", "OpenMovieEditor", "Video Editor", "openmovieeditor", "openmovieeditor", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 1), ("file:///usr/share/kxstudio/docs/openmovieeditor/tutorial.html", "http://www.openmovieeditor.org/") ), + ( "openmovieeditor", "OpenMovieEditor", "Video Editor", "openmovieeditor", "openmovieeditor", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 1), ("file:///usr/share/kxstudio/docs/openmovieeditor/tutorial.html", "http://www.openmovieeditor.org/") ), - ( "oomidi-2011", "OpenOctave Studio", "Session Handler", "oostudio-2011", "oomidi-2011", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "https://github.com/ccherrett/oom/wiki/OOStudio") ), + ( "oomidi-2011", "OpenOctave Studio", "Session Handler", "oostudio-2011", "oomidi-2011", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "https://github.com/ccherrett/oom/wiki/OOStudio") ), - ( "patchage", "Patchage", "Patch Bay", "patchage", "patchage", TEMPLATE_NO, LEVEL_0, "OpenSource", ("Jack + ALSA", 0), ("", "http://drobilla.net/blog/software/patchage/") ), - ( "patchage", "Patchage (ALSA Only)", "Patch Bay", "patchage -J", "patchage", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "http://drobilla.net/blog/software/patchage/") ), - ( "patchage-svn", "Patchage (SVN)", "Patch Bay", "patchage-svn", "/opt/drobilla-lad/share/icons/hicolor/48x48/apps/patchage.png", TEMPLATE_NO, LEVEL_0, "OpenSource", ("Jack + ALSA", 0), ("", "http://drobilla.net/blog/software/patchage/") ), - ( "patchage-svn", "Patchage (SVN, ALSA Only)", "Patch Bay", "patchage-svn -J", "/opt/drobilla-lad/share/icons/hicolor/48x48/apps/patchage.png", TEMPLATE_NO, LEVEL_0, "OpenSource", ("Jack + ALSA", 0), ("", "http://drobilla.net/blog/software/patchage/") ), + ( "patchage", "Patchage", "Patch Bay", "patchage", "patchage", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA + JACK", 0), ("", "http://drobilla.net/blog/software/patchage/") ), + ( "patchage", "Patchage (ALSA Only)", "Patch Bay", "patchage -J", "patchage", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "http://drobilla.net/blog/software/patchage/") ), + ( "patchage-svn", "Patchage (SVN)", "Patch Bay", "patchage-svn", "patchage", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA + JACK", 0), ("", "http://drobilla.net/blog/software/patchage/") ), + ( "patchage-svn", "Patchage (SVN, ALSA Only)", "Patch Bay", "patchage-svn -J", "patchage", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA + JACK", 0), ("", "http://drobilla.net/blog/software/patchage/") ), - ( "qjackctl", "QJackControl", "Jack Control", "qjackctl", "qjackctl", TEMPLATE_NO, LEVEL_0, "OpenSource", ("Jack + ALSA", 1), ("", "") ), + ( "qjackctl", "QJackControl", "Jack Control", "qjackctl", "qjackctl", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA + JACK", 1), ("", "") ), - ( "qamix", "QAMix", "Mixer", "qamix", "qamix", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "") ), - ( "qarecord", "QARecord", "Recorder", "qarecord --jack", "qarecord_48", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "") ), - ( "qmidiarp", "QMidiArp", "MIDI Arpeggiator", "qmidiarp", generic_midi_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "") ), + ( "qamix", "QAMix", "Mixer", "qamix", "qamix", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "") ), + ( "qarecord", "QARecord", "Recorder", "qarecord --jack", "qarecord_48", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "") ), + ( "qmidiarp", "QMidiArp", "MIDI Arpeggiator", "qmidiarp", generic_midi_icon, TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("", "") ), - ( "timemachine", "TimeMachine", "Recorder", "timemachine", "timemachine", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "http://plugin.org.uk/timemachine/") ), + ( "timemachine", "TimeMachine", "Recorder", "timemachine", "timemachine", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 0), ("", "http://plugin.org.uk/timemachine/") ), - ( "vmpk", "Virtual MIDI Piano Keyboard", "Virtual Keyboard", "vmpk", "vmpk", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("file:///usr/share/vmpk/help.html", "http://vmpk.sourceforge.net/") ), + ( "vmpk", "Virtual MIDI Piano Keyboard", "Virtual Keyboard", "vmpk", "vmpk", TEMPLATE_NO, LEVEL_0, "OpenSource", ("ALSA", 0), ("file:///usr/share/vmpk/help.html", "http://vmpk.sourceforge.net/") ), - ( "xjadeo", "XJadeo", "Video Player", "qjadeo", "qjadeo", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 1), ("", "http://xjadeo.sourceforge.net/") ), + ( "xjadeo", "XJadeo", "Video Player", "qjadeo", "qjadeo", TEMPLATE_NO, LEVEL_0, "OpenSource", ("---", 1), ("", "http://xjadeo.sourceforge.net/") ), ] +iTool_Package, iTool_AppName, iTool_Type, iTool_Binary, iTool_Icon, iTool_Template, iTool_Level, iTool_RelModel, iTool_Features, iTool_Docs = range(0, len(list_Tool[0])) + diff --git a/src/claudia_launcher.py b/src/claudia_launcher.py index 1b5def8..dc3f11b 100755 --- a/src/claudia_launcher.py +++ b/src/claudia_launcher.py @@ -2,9 +2,8 @@ # -*- coding: utf-8 -*- # Imports (Global) -import os, sys from PyQt4.QtCore import pyqtSlot, Qt, QTimer, QSettings -from PyQt4.QtGui import QIcon, QMainWindow, QTableWidgetItem, QWidget +from PyQt4.QtGui import QMainWindow, QTableWidgetItem, QWidget from subprocess import getoutput from random import randint @@ -17,17 +16,17 @@ from shared import * SHOW_ALL = False # Tab Indexes -TAB_INDEX_DAW = 0 -TAB_INDEX_HOST = 1 +TAB_INDEX_DAW = 0 +TAB_INDEX_HOST = 1 TAB_INDEX_INSTRUMENT = 2 -TAB_INDEX_BRISTOL = 3 -TAB_INDEX_EFFECT = 4 -TAB_INDEX_TOOL = 5 +TAB_INDEX_BRISTOL = 3 +TAB_INDEX_EFFECT = 4 +TAB_INDEX_TOOL = 5 EXTRA_ICON_PATHS = [ - "/usr/share/icons", - "/usr/share/pixmaps", - "/usr/local/share/pixmaps" + "/usr/share/icons", + "/usr/share/pixmaps", + "/usr/local/share/pixmaps" ] # XIcon class @@ -40,25 +39,25 @@ class XIcon(object): icon_paths.append(path) QIcon.setThemeSearchPaths(icon_paths) - def getIcon(self, name, size=48): - if (os.path.exists(name)): - icon = QIcon(name) + def getIcon(self, name): + if os.path.exists(name): + icon = QIcon(name) else: - icon = QIcon.fromTheme(name) - - if (icon.isNull()): - for iEXTRA_PATH in EXTRA_ICON_PATHS: - if os.path.exists(os.path.join(iEXTRA_PATH, name + ".png")): - icon = QIcon(os.path.join(iEXTRA_PATH, name + ".png")) - break - elif os.path.exists(os.path.join(iEXTRA_PATH, name + ".svg")): - icon = QIcon(os.path.join(iEXTRA_PATH, name + ".svg")) - break - elif os.path.exists(os.path.join(iEXTRA_PATH, name + ".xpm")): - icon = QIcon(os.path.join(iEXTRA_PATH, name + ".xpm")) - break - else: - print("XIcon::Failed to find icon for %s" % name) + icon = QIcon.fromTheme(name) + + if icon.isNull(): + for iEXTRA_PATH in EXTRA_ICON_PATHS: + if os.path.exists(os.path.join(iEXTRA_PATH, name + ".png")): + icon = QIcon(os.path.join(iEXTRA_PATH, name + ".png")) + break + elif os.path.exists(os.path.join(iEXTRA_PATH, name + ".svg")): + icon = QIcon(os.path.join(iEXTRA_PATH, name + ".svg")) + break + elif os.path.exists(os.path.join(iEXTRA_PATH, name + ".xpm")): + icon = QIcon(os.path.join(iEXTRA_PATH, name + ".xpm")) + break + else: + print("XIcon::Failed to find icon for %s" % name) return icon @@ -92,15 +91,15 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW): # For the custom icons self.ClaudiaIcons = XIcon() - if (os.path.exists(os.path.join(sys.path[0], "..", "icons"))): - self.ClaudiaIcons.addIconPath(os.path.join(sys.path[0], "..", "icons")) - elif (os.path.exists(os.path.join(sys.path[0], "..", "data", "icons"))): - self.ClaudiaIcons.addIconPath(os.path.join(sys.path[0], "..", "data", "icons")) + if os.path.exists(os.path.join(sys.path[0], "..", "icons")): + self.ClaudiaIcons.addIconPath(os.path.join(sys.path[0], "..", "icons")) + elif os.path.exists(os.path.join(sys.path[0], "..", "data", "icons")): + self.ClaudiaIcons.addIconPath(os.path.join(sys.path[0], "..", "data", "icons")) QIcon.setThemeName("claudia-hicolor") - self.icon_yes = QIcon(self.getIcon("dialog-ok-apply", 16)) - self.icon_no = QIcon(self.getIcon("dialog-cancel", 16)) + self.icon_yes = QIcon(self.getIcon("dialog-ok-apply")) + self.icon_no = QIcon(self.getIcon("dialog-cancel")) self.clearInfo_DAW() self.clearInfo_Host() @@ -130,119 +129,119 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW): tab_index = self.tabWidget.currentIndex() column_name = 2 if (tab_index == TAB_INDEX_BRISTOL) else 1 - if (tab_index == TAB_INDEX_DAW): - listSel = self.listDAW - elif (tab_index == TAB_INDEX_HOST): - listSel = self.listHost - elif (tab_index == TAB_INDEX_INSTRUMENT): - listSel = self.listInstrument - elif (tab_index == TAB_INDEX_BRISTOL): - listSel = self.listBristol - elif (tab_index == TAB_INDEX_EFFECT): - listSel = self.listEffect - elif (tab_index == TAB_INDEX_TOOL): - listSel = self.listTool + if tab_index == TAB_INDEX_DAW: + listSel = self.listDAW + elif tab_index == TAB_INDEX_HOST: + listSel = self.listHost + elif tab_index == TAB_INDEX_INSTRUMENT: + listSel = self.listInstrument + elif tab_index == TAB_INDEX_BRISTOL: + listSel = self.listBristol + elif tab_index == TAB_INDEX_EFFECT: + listSel = self.listEffect + elif tab_index == TAB_INDEX_TOOL: + listSel = self.listTool else: - return "" + return "" return listSel.item(listSel.currentRow(), column_name).text() def getBinaryFromAppName(self, appname): for Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs in database.list_DAW: - if (appname == AppName): - return Binary + if appname == AppName: + return Binary for Package, AppName, Instruments, Effects, Binary, Icon, Save, Level, License, Features, Docs in database.list_Host: - if (appname == AppName): - return Binary + if appname == AppName: + return Binary for Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs in database.list_Instrument: - if (appname == AppName): - return Binary + if appname == AppName: + return Binary for Package, AppName, Type, ShortName, Icon, Save, Level, License, Features, Docs in database.list_Bristol: - if (appname == AppName): - return "startBristol -audio jack -midi jack -%s" % ShortName + if appname == AppName: + return "startBristol -audio jack -midi jack -%s" % ShortName for Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs in database.list_Effect: - if (appname == AppName): - return Binary + if appname == AppName: + return Binary for Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs in database.list_Tool: - if (appname == AppName): - return Binary + if appname == AppName: + return Binary print("Failed to find binary from App name") return "" def startApp(self, app=None): - if (not app): - app = self.getSelectedApp() + if not app: + app = self.getSelectedApp() binary = self.getBinaryFromAppName(app) os.system("cd '%s' && %s &" % (self.callback_getProjectFolder(), binary)) def addAppToLADISH(self, app=None): - if (not app): - app = self.getSelectedApp() + if not app: + app = self.getSelectedApp() binary = self.getBinaryFromAppName(app) - if (binary.startswith("startBristol")): - self.createAppTemplate("bristol", app, binary) + if binary.startswith("startBristol"): + self.createAppTemplate("bristol", app, binary) - elif (app == "Ardour 2.8"): - self.createAppTemplate("ardour2", app, binary) + elif app == "Ardour 2.8": + self.createAppTemplate("ardour2", app, binary) - elif (app == "Ardour 3.0"): - self.createAppTemplate("ardour3", app, binary) + elif app == "Ardour 3.0": + self.createAppTemplate("ardour3", app, binary) - elif (app == "Calf Jack Host (GIT)"): - self.createAppTemplate("calfjackhost", app, binary) + elif app == "Calf Jack Host (GIT)": + self.createAppTemplate("calfjackhost", app, binary) #elif (app in ("Hydrogen", "Hydrogen (SVN)")): - #self.createAppTemplate("hydrogen", app, binary) + #self.createAppTemplate("hydrogen", app, binary) #elif (app == "Jack Mixer"): - #self.createAppTemplate("jack-mixer", app, binary) + #self.createAppTemplate("jack-mixer", app, binary) #elif (app == "Jack Rack"): - #self.createAppTemplate("jack-rack", app, binary) + #self.createAppTemplate("jack-rack", app, binary) #elif (app == "Jacker"): - #self.createAppTemplate("jacker", app, binary) + #self.createAppTemplate("jacker", app, binary) #elif (app == "Jamin"): - #self.createAppTemplate("jamin", app, binary) + #self.createAppTemplate("jamin", app, binary) #elif (app == "Non-DAW"): - #self.createAppTemplate("non-daw", app, binary) + #self.createAppTemplate("non-daw", app, binary) #elif (app == "Non-Mixer"): - #self.createAppTemplate("non-mixer", app, binary) + #self.createAppTemplate("non-mixer", app, binary) #elif (app == "Non-Sequencer"): - #self.createAppTemplate("non-sequencer", app, binary) + #self.createAppTemplate("non-sequencer", app, binary) #elif (app == "Qsampler"): - #self.createAppTemplate("qsampler", app, binary) + #self.createAppTemplate("qsampler", app, binary) #elif (app in ("Qtractor", "Qtractor (SVN)")): - #self.createAppTemplate("qtractor", app, binary) + #self.createAppTemplate("qtractor", app, binary) #elif (app == "Renoise"): - #self.createAppTemplate("renoise", app, binary) + #self.createAppTemplate("renoise", app, binary) #elif (app == "Rosegarden"): - #self.createAppTemplate("rosegarden", app, binary) + #self.createAppTemplate("rosegarden", app, binary) #elif (app == "Seq24"): - #self.createAppTemplate("seq24", app, binary) + #self.createAppTemplate("seq24", app, binary) #elif (app == "Yoshimi"): - #self.createAppTemplate("yoshimi", app, binary) + #self.createAppTemplate("yoshimi", app, binary) else: - appBus = self.callback_getAppBus() - appBus.RunCustom2(False, binary, app, "0") + appBus = self.callback_getAppBus() + appBus.RunCustom2(False, binary, app, "0") def createAppTemplate(self, app, app_name, binary): rand_check = randint(1, 99999) @@ -255,260 +254,260 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW): tmplte_cmd = "" tmplte_lvl = "0" - if (os.path.exists(os.path.join(sys.path[0], "..", "templates"))): - tmplte_dir = os.path.join(sys.path[0], "..", "templates") - elif (os.path.exists(os.path.join(sys.path[0], "..", "data", "templates"))): - tmplte_dir = os.path.join(sys.path[0], "..", "data", "templates") + if os.path.exists(os.path.join(sys.path[0], "..", "templates")): + tmplte_dir = os.path.join(sys.path[0], "..", "templates") + elif os.path.exists(os.path.join(sys.path[0], "..", "data", "templates")): + tmplte_dir = os.path.join(sys.path[0], "..", "data", "templates") else: - app = None - tmplte_cmd = binary - print("Failed to find template dir") - - if (not os.path.exists(proj_folder)): - os.mkdir(proj_folder) - - if (app == "bristol"): - module = binary.replace("startBristol -audio jack -midi jack -", "") - tmplte_folder = os.path.join(proj_folder, "bristol_%s_%i" % (module, rand_check)) - os.mkdir(tmplte_folder) - - if (self.callback_isLadishRoom()): - tmplte_folder = os.path.basename(tmplte_folder) + app = None + tmplte_cmd = binary + print("Failed to find template dir") + + if not os.path.exists(proj_folder): + os.mkdir(proj_folder) + + if app == "bristol": + module = binary.replace("startBristol -audio jack -midi jack -", "") + tmplte_folder = os.path.join(proj_folder, "bristol_%s_%i" % (module, rand_check)) + os.mkdir(tmplte_folder) + + if self.callback_isLadishRoom(): + tmplte_folder = os.path.basename(tmplte_folder) - tmplte_cmd = binary - tmplte_cmd += " -emulate %s" % module - tmplte_cmd += " -cache '%s'" % tmplte_folder - tmplte_cmd += " -memdump '%s'" % tmplte_folder - tmplte_cmd += " -import '%s'" % os.path.join(tmplte_folder, "memory") - tmplte_cmd += " -exec" - tmplte_lvl = "1" + tmplte_cmd = binary + tmplte_cmd += " -emulate %s" % module + tmplte_cmd += " -cache '%s'" % tmplte_folder + tmplte_cmd += " -memdump '%s'" % tmplte_folder + tmplte_cmd += " -import '%s'" % os.path.join(tmplte_folder, "memory") + tmplte_cmd += " -exec" + tmplte_lvl = "1" - elif (app == "ardour2"): - tmplte_folder = os.path.join(proj_folder, "Ardour2_%i" % rand_check) - tmplte_file = os.path.join(tmplte_folder, "Ardour2_%i.ardour" % rand_check) - os.mkdir(tmplte_folder) + elif app == "ardour2": + tmplte_folder = os.path.join(proj_folder, "Ardour2_%i" % rand_check) + tmplte_file = os.path.join(tmplte_folder, "Ardour2_%i.ardour" % rand_check) + os.mkdir(tmplte_folder) - # Create template - os.system("cp '%s' '%s'" % (os.path.join(tmplte_dir, "Ardour2", "Ardour2.ardour"), tmplte_file)) - os.system("cp '%s' '%s'" % (os.path.join(tmplte_dir, "Ardour2", "instant.xml"), tmplte_folder)) - os.mkdir(os.path.join(tmplte_folder, "analysis")) - os.mkdir(os.path.join(tmplte_folder, "dead_sounds")) - os.mkdir(os.path.join(tmplte_folder, "export")) - os.mkdir(os.path.join(tmplte_folder, "interchange")) - os.mkdir(os.path.join(tmplte_folder, "interchange", "Ardour")) - os.mkdir(os.path.join(tmplte_folder, "interchange", "Ardour", "audiofiles")) - os.mkdir(os.path.join(tmplte_folder, "peaks")) + os.system("cp '%s' '%s'" % (os.path.join(tmplte_dir, "Ardour2", "Ardour2.ardour"), tmplte_file)) + os.system("cp '%s' '%s'" % (os.path.join(tmplte_dir, "Ardour2", "instant.xml"), tmplte_folder)) + os.mkdir(os.path.join(tmplte_folder, "analysis")) + os.mkdir(os.path.join(tmplte_folder, "dead_sounds")) + os.mkdir(os.path.join(tmplte_folder, "export")) + os.mkdir(os.path.join(tmplte_folder, "interchange")) + os.mkdir(os.path.join(tmplte_folder, "interchange", "Ardour")) + os.mkdir(os.path.join(tmplte_folder, "interchange", "Ardour", "audiofiles")) + os.mkdir(os.path.join(tmplte_folder, "peaks")) - tmplte_cmd = binary - tmplte_cmd += " '%s'" % os.path.basename(tmplte_folder) if self.callback_isLadishRoom() else tmplte_folder - tmplte_lvl = "1" + tmplte_cmd = binary + tmplte_cmd += " '%s'" % os.path.basename(tmplte_folder) if self.callback_isLadishRoom() else tmplte_folder + tmplte_lvl = "1" - elif (app == "ardour3"): - tmplte_folder = os.path.join(proj_folder, "Ardour3_%i" % rand_check) - tmplte_file = os.path.join(tmplte_folder, "Ardour3_%i.ardour" % rand_check) - os.mkdir(tmplte_folder) + elif app == "ardour3": + tmplte_folder = os.path.join(proj_folder, "Ardour3_%i" % rand_check) + tmplte_file = os.path.join(tmplte_folder, "Ardour3_%i.ardour" % rand_check) + os.mkdir(tmplte_folder) - # Create template - os.system("cp '%s' '%s'" % (os.path.join(tmplte_dir, "Ardour3", "Ardour3.ardour"), tmplte_file)) - os.system("cp '%s' '%s'" % (os.path.join(tmplte_dir, "Ardour3", "instant.xml"), tmplte_folder)) - os.mkdir(os.path.join(tmplte_folder, "analysis")) - os.mkdir(os.path.join(tmplte_folder, "dead")) - os.mkdir(os.path.join(tmplte_folder, "export")) - os.mkdir(os.path.join(tmplte_folder, "externals")) - os.mkdir(os.path.join(tmplte_folder, "interchange")) - os.mkdir(os.path.join(tmplte_folder, "interchange", "Ardour3")) - os.mkdir(os.path.join(tmplte_folder, "interchange", "Ardour3", "audiofiles")) - os.mkdir(os.path.join(tmplte_folder, "interchange", "Ardour3", "midifiles")) - os.mkdir(os.path.join(tmplte_folder, "peaks")) - os.mkdir(os.path.join(tmplte_folder, "plugins")) + # Create template + os.system("cp '%s' '%s'" % (os.path.join(tmplte_dir, "Ardour3", "Ardour3.ardour"), tmplte_file)) + os.system("cp '%s' '%s'" % (os.path.join(tmplte_dir, "Ardour3", "instant.xml"), tmplte_folder)) + os.mkdir(os.path.join(tmplte_folder, "analysis")) + os.mkdir(os.path.join(tmplte_folder, "dead")) + os.mkdir(os.path.join(tmplte_folder, "export")) + os.mkdir(os.path.join(tmplte_folder, "externals")) + os.mkdir(os.path.join(tmplte_folder, "interchange")) + os.mkdir(os.path.join(tmplte_folder, "interchange", "Ardour3")) + os.mkdir(os.path.join(tmplte_folder, "interchange", "Ardour3", "audiofiles")) + os.mkdir(os.path.join(tmplte_folder, "interchange", "Ardour3", "midifiles")) + os.mkdir(os.path.join(tmplte_folder, "peaks")) + os.mkdir(os.path.join(tmplte_folder, "plugins")) - tmplte_cmd = binary - tmplte_cmd += " '%s'" % os.path.basename(tmplte_folder) if self.callback_isLadishRoom() else tmplte_folder + tmplte_cmd = binary + tmplte_cmd += " '%s'" % os.path.basename(tmplte_folder) if self.callback_isLadishRoom() else tmplte_folder - if (self.callback_isLadishRoom()): - tmplte_lvl = "jacksession" + if self.callback_isLadishRoom(): + tmplte_lvl = "jacksession" - elif (app == "calfjackhost"): - tmplte_file = os.path.join(proj_folder, "CalfJackHost_%i" % (rand_check)) + elif app == "calfjackhost": + tmplte_file = os.path.join(proj_folder, "CalfJackHost_%i" % rand_check) - # Create template - os.system("cp '%s' '%s'" % (os.path.join(tmplte_dir, "CalfJackHost"), tmplte_file)) + # Create template + os.system("cp '%s' '%s'" % (os.path.join(tmplte_dir, "CalfJackHost"), tmplte_file)) - tmplte_cmd = binary - tmplte_cmd += " --load '%s'" % os.path.basename(tmplte_file) if self.callback_isLadishRoom() else tmplte_file - tmplte_lvl = "1" + tmplte_cmd = binary + tmplte_cmd += " --load '%s'" % os.path.basename(tmplte_file) if self.callback_isLadishRoom() else tmplte_file + tmplte_lvl = "1" - #elif (app == "hydrogen"): - #tmplte_file = os.path.join(proj_folder, "Hydrogen_%i.h2song" % (rand_check)) + #elif (app == "hydrogen"): + #tmplte_file = os.path.join(proj_folder, "Hydrogen_%i.h2song" % (rand_check)) - ## Create template - #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Hydrogen.h2song"), tmplte_file)) + ## Create template + #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Hydrogen.h2song"), tmplte_file)) - #tmplte_cmd = binary - #tmplte_cmd += " -s '%s'" % (os.path.basename(tmplte_file) if self.callback_isLadishRoom() else tmplte_file) + #tmplte_cmd = binary + #tmplte_cmd += " -s '%s'" % (os.path.basename(tmplte_file) if self.callback_isLadishRoom() else tmplte_file) - #tmplte_lvl = "1" + #tmplte_lvl = "1" - #elif (app == "jack-mixer"): - #tmplte_file_r = os.path.join(proj_folder, "Jack-Mixer_%i.xml" % (rand_check)) + #elif (app == "jack-mixer"): + #tmplte_file_r = os.path.join(proj_folder, "Jack-Mixer_%i.xml" % (rand_check)) - ## Create template - #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Jack-Mixer.xml"), tmplte_file_r)) + ## Create template + #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Jack-Mixer.xml"), tmplte_file_r)) - #tmplte_cmd = binary - #tmplte_cmd += " -c '%s'" % (os.path.basename(tmplte_file_r) if self.callback_isLadishRoom() else tmplte_file_r) + #tmplte_cmd = binary + #tmplte_cmd += " -c '%s'" % (os.path.basename(tmplte_file_r) if self.callback_isLadishRoom() else tmplte_file_r) - #tmplte_lvl = "1" + #tmplte_lvl = "1" - #elif (app == "jack-rack"): - #tmplte_file = os.path.join(proj_folder, "Jack-Rack_%i.xml" % (rand_check)) + #elif (app == "jack-rack"): + #tmplte_file = os.path.join(proj_folder, "Jack-Rack_%i.xml" % (rand_check)) - ## Create template - #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Jack-Rack.xml"), tmplte_file)) + ## Create template + #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Jack-Rack.xml"), tmplte_file)) - #tmplte_cmd = binary - #tmplte_cmd += " -s '%s'" % (os.path.basename(tmplte_file) if self.callback_isLadishRoom() else tmplte_file) + #tmplte_cmd = binary + #tmplte_cmd += " -s '%s'" % (os.path.basename(tmplte_file) if self.callback_isLadishRoom() else tmplte_file) - #elif (app == "jacker"): - #tmplte_file = os.path.join(proj_folder, "Jacker_%i.jsong" % (rand_check)) + #elif (app == "jacker"): + #tmplte_file = os.path.join(proj_folder, "Jacker_%i.jsong" % (rand_check)) - ## Create template - #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Jacker.jsong"), tmplte_file)) + ## Create template + #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Jacker.jsong"), tmplte_file)) - #tmplte_cmd = binary - #tmplte_cmd += " '%s'" % (os.path.basename(tmplte_file) if self.callback_isLadishRoom() else tmplte_file) + #tmplte_cmd = binary + #tmplte_cmd += " '%s'" % (os.path.basename(tmplte_file) if self.callback_isLadishRoom() else tmplte_file) - ## No decimal bpm support - #proj_bpm = proj_bpm.split(".")[0] + ## No decimal bpm support + #proj_bpm = proj_bpm.split(".")[0] - #tmplte_lvl = "1" + #tmplte_lvl = "1" - #elif (app == "jamin"): - #tmplte_file_r = os.path.join(proj_folder, "Jamin_%i.jam" % (rand_check)) + #elif (app == "jamin"): + #tmplte_file_r = os.path.join(proj_folder, "Jamin_%i.jam" % (rand_check)) - ## Create template - #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Jamin.jam"), tmplte_file_r)) + ## Create template + #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Jamin.jam"), tmplte_file_r)) - #tmplte_cmd = binary - #tmplte_cmd += " -f '%s'" % (os.path.basename(tmplte_file_r) if self.callback_isLadishRoom() else tmplte_file_r) + #tmplte_cmd = binary + #tmplte_cmd += " -f '%s'" % (os.path.basename(tmplte_file_r) if self.callback_isLadishRoom() else tmplte_file_r) - #elif (app == "muse"): - #tmplte_file_r = os.path.join(proj_folder, "MusE_%i.med" % (rand_check)) + #elif (app == "muse"): + #tmplte_file_r = os.path.join(proj_folder, "MusE_%i.med" % (rand_check)) - ## Create template - #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "MusE.med"), tmplte_file_r)) + ## Create template + #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "MusE.med"), tmplte_file_r)) - #tmplte_cmd = binary - #tmplte_cmd += " '%s'" % (os.path.basename(tmplte_file_r) if self.callback_isLadishRoom() else tmplte_file_r) + #tmplte_cmd = binary + #tmplte_cmd += " '%s'" % (os.path.basename(tmplte_file_r) if self.callback_isLadishRoom() else tmplte_file_r) - #elif (app == "non-daw"): - #tmplte_folder = os.path.join(proj_folder, "Non-DAW_%i" % (rand_check)) + #elif (app == "non-daw"): + #tmplte_folder = os.path.join(proj_folder, "Non-DAW_%i" % (rand_check)) - ## Create template - #os.system("cp -r '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Non-DAW"), tmplte_folder)) - #os.mkdir(os.path.join(tmplte_folder, "sources")) + ## Create template + #os.system("cp -r '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Non-DAW"), tmplte_folder)) + #os.mkdir(os.path.join(tmplte_folder, "sources")) - #os.system('sed -i "s/X_SR_X-KLAUDIA-X_SR_X/%s/" "%s"' % (proj_srate, os.path.join(tmplte_folder, "info"))) - #os.system('sed -i "s/X_BPM_X-KLAUDIA-X_BPM_X/%s/" "%s"' % (proj_bpm, os.path.join(tmplte_folder, "history"))) + #os.system('sed -i "s/X_SR_X-KLAUDIA-X_SR_X/%s/" "%s"' % (proj_srate, os.path.join(tmplte_folder, "info"))) + #os.system('sed -i "s/X_BPM_X-KLAUDIA-X_BPM_X/%s/" "%s"' % (proj_bpm, os.path.join(tmplte_folder, "history"))) - #tmplte_cmd = binary - #tmplte_cmd += " '%s'" % (os.path.basename(tmplte_folder) if self.callback_isLadishRoom() else tmplte_folder) + #tmplte_cmd = binary + #tmplte_cmd += " '%s'" % (os.path.basename(tmplte_folder) if self.callback_isLadishRoom() else tmplte_folder) - #elif (app == "non-mixer"): - #tmplte_folder = os.path.join(proj_folder, "Non-Mixer_%i" % (rand_check)) + #elif (app == "non-mixer"): + #tmplte_folder = os.path.join(proj_folder, "Non-Mixer_%i" % (rand_check)) - ## Create template - #os.system("cp -r '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Non-Mixer"), tmplte_folder)) + ## Create template + #os.system("cp -r '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Non-Mixer"), tmplte_folder)) - #tmplte_cmd = binary - #tmplte_cmd += " '%s'" % (os.path.basename(tmplte_folder) if self.callback_isLadishRoom() else tmplte_folder) + #tmplte_cmd = binary + #tmplte_cmd += " '%s'" % (os.path.basename(tmplte_folder) if self.callback_isLadishRoom() else tmplte_folder) - #elif (app == "non-sequencer"): - #tmplte_file_r = os.path.join(proj_folder, "Non-Sequencer_%i.non" % (rand_check)) + #elif (app == "non-sequencer"): + #tmplte_file_r = os.path.join(proj_folder, "Non-Sequencer_%i.non" % (rand_check)) - ## Create template - #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Non-Sequencer.non"), tmplte_file_r)) + ## Create template + #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Non-Sequencer.non"), tmplte_file_r)) - #tmplte_cmd = binary - #tmplte_cmd += " '%s'" % (os.path.basename(tmplte_file_r) if self.callback_isLadishRoom() else tmplte_file_r) + #tmplte_cmd = binary + #tmplte_cmd += " '%s'" % (os.path.basename(tmplte_file_r) if self.callback_isLadishRoom() else tmplte_file_r) - #elif (app == "qsampler"): - #tmplte_file_r = os.path.join(proj_folder, "Qsampler_%i.lscp" % (rand_check)) + #elif (app == "qsampler"): + #tmplte_file_r = os.path.join(proj_folder, "Qsampler_%i.lscp" % (rand_check)) - ## Create template - #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Qsampler.lscp"), tmplte_file_r)) + ## Create template + #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Qsampler.lscp"), tmplte_file_r)) - #tmplte_cmd = binary - #tmplte_cmd += " '%s'" % (os.path.basename(tmplte_file_r) if self.callback_isLadishRoom() else tmplte_file_r) + #tmplte_cmd = binary + #tmplte_cmd += " '%s'" % (os.path.basename(tmplte_file_r) if self.callback_isLadishRoom() else tmplte_file_r) - #tmplte_lvl = "1" if (app_name == "Qsampler (SVN)") else "0" + #tmplte_lvl = "1" if (app_name == "Qsampler (SVN)") else "0" - #elif (app == "qtractor"): - #tmplte_file = os.path.join(proj_folder, "Qtractor_%i.qtr" % (rand_check)) + #elif (app == "qtractor"): + #tmplte_file = os.path.join(proj_folder, "Qtractor_%i.qtr" % (rand_check)) - ## Create template - #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Qtractor.qtr"), tmplte_file)) + ## Create template + #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Qtractor.qtr"), tmplte_file)) - #tmplte_cmd = binary - #tmplte_cmd += " '%s'" % (os.path.basename(tmplte_file) if self.callback_isLadishRoom() else tmplte_file) + #tmplte_cmd = binary + #tmplte_cmd += " '%s'" % (os.path.basename(tmplte_file) if self.callback_isLadishRoom() else tmplte_file) - #tmplte_lvl = "1" + #tmplte_lvl = "1" - #elif (app == "renoise"): - #tmplte_file_r = os.path.join(proj_folder, "Renoise_%i.xrns" % (rand_check)) - #tmplte_folder = os.path.join(proj_folder, "tmp_renoise_%i" % (rand_check)) + #elif (app == "renoise"): + #tmplte_file_r = os.path.join(proj_folder, "Renoise_%i.xrns" % (rand_check)) + #tmplte_folder = os.path.join(proj_folder, "tmp_renoise_%i" % (rand_check)) - ## Create template - #os.mkdir(tmplte_folder) - #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Renoise.xml"), tmplte_folder)) - #os.system('sed -i "s/X_SR_X-KLAUDIA-X_SR_X/%s/" "%s"' % (proj_srate, os.path.join(tmplte_folder, "Renoise.xml"))) - #os.system("cd '%s' && mv Renoise.xml Song.xml && zip '%s' Song.xml" % (tmplte_folder, tmplte_file_r)) - #os.system("rm -rf '%s'" % (tmplte_folder)) + ## Create template + #os.mkdir(tmplte_folder) + #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Renoise.xml"), tmplte_folder)) + #os.system('sed -i "s/X_SR_X-KLAUDIA-X_SR_X/%s/" "%s"' % (proj_srate, os.path.join(tmplte_folder, "Renoise.xml"))) + #os.system("cd '%s' && mv Renoise.xml Song.xml && zip '%s' Song.xml" % (tmplte_folder, tmplte_file_r)) + #os.system("rm -rf '%s'" % (tmplte_folder)) - #tmplte_cmd = binary - #tmplte_cmd += " '%s'" % (os.path.basename(tmplte_file_r) if self.callback_isLadishRoom() else tmplte_file_r) + #tmplte_cmd = binary + #tmplte_cmd += " '%s'" % (os.path.basename(tmplte_file_r) if self.callback_isLadishRoom() else tmplte_file_r) - #elif (app == "rosegarden"): - #tmplte_file = os.path.join(proj_folder, "Rosegarden_%i.rg" % (rand_check)) + #elif (app == "rosegarden"): + #tmplte_file = os.path.join(proj_folder, "Rosegarden_%i.rg" % (rand_check)) - ## Create template - #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Rosegarden.rg"), tmplte_file)) + ## Create template + #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Rosegarden.rg"), tmplte_file)) - #tmplte_cmd = binary - #tmplte_cmd += " '%s'" % (os.path.basename(tmplte_file) if self.callback_isLadishRoom() else tmplte_file) + #tmplte_cmd = binary + #tmplte_cmd += " '%s'" % (os.path.basename(tmplte_file) if self.callback_isLadishRoom() else tmplte_file) - #tmplte_lvl = "1" + #tmplte_lvl = "1" - #elif (app == "seq24"): - #tmplte_file_r = os.path.join(proj_folder, "Seq24_%i.midi" % (rand_check)) + #elif (app == "seq24"): + #tmplte_file_r = os.path.join(proj_folder, "Seq24_%i.midi" % (rand_check)) - ## Create template - #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Seq24.midi"), tmplte_file_r)) + ## Create template + #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Seq24.midi"), tmplte_file_r)) - #tmplte_cmd = binary - #tmplte_cmd += " '%s'" % (os.path.basename(tmplte_file_r) if self.callback_isLadishRoom() else tmplte_file_r) + #tmplte_cmd = binary + #tmplte_cmd += " '%s'" % (os.path.basename(tmplte_file_r) if self.callback_isLadishRoom() else tmplte_file_r) - #tmplte_lvl = "1" + #tmplte_lvl = "1" - #elif (app == "yoshimi"): - #tmplte_file = os.path.join(proj_folder, "Yoshimi_%i.state" % (rand_check)) + #elif (app == "yoshimi"): + #tmplte_file = os.path.join(proj_folder, "Yoshimi_%i.state" % (rand_check)) - ## Create template - #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Yoshimi.state"), tmplte_file)) + ## Create template + #os.system("cp '%s' '%s'" % (os.path.join(sys.path[0], "..", "templates", "Yoshimi.state"), tmplte_file)) - #tmplte_cmd = binary - #tmplte_cmd += " --state='%s'" % (os.path.basename(tmplte_file) if self.callback_isLadishRoom() else tmplte_file) + #tmplte_cmd = binary + #tmplte_cmd += " --state='%s'" % (os.path.basename(tmplte_file) if self.callback_isLadishRoom() else tmplte_file) - #tmplte_lvl = "1" + #tmplte_lvl = "1" - #else: - #print("ERROR: Failed to parse app name") - #return + #else: + #print("ERROR: Failed to parse app name") + #return - if (tmplte_file != None): - os.system('sed -i "s/X_SR_X-CLAUDIA-X_SR_X/%s/" "%s"' % (proj_srate, tmplte_file)) - os.system('sed -i "s/X_BPM_X-CLAUDIA-X_BPM_X/%s/" "%s"' % (proj_bpm, tmplte_file)) - os.system('sed -i "s/X_FOLDER_X-CLAUDIA-X_FOLDER_X/%s/" "%s"' % (proj_folder.replace("/", "\/").replace("$", "\$"), tmplte_file)) + if tmplte_file != None: + os.system('sed -i "s/X_SR_X-CLAUDIA-X_SR_X/%s/" "%s"' % (proj_srate, tmplte_file)) + os.system('sed -i "s/X_BPM_X-CLAUDIA-X_BPM_X/%s/" "%s"' % (proj_bpm, tmplte_file)) + os.system('sed -i "s/X_FOLDER_X-CLAUDIA-X_FOLDER_X/%s/" "%s"' % ( + proj_folder.replace("/", "\/").replace("$", "\$"), tmplte_file)) appBus = self.callback_getAppBus() appBus.RunCustom2(False, tmplte_cmd, app_name, tmplte_lvl) @@ -519,11 +518,11 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW): def settings(self): return self._settings - def getIcon(self, icon, size=48): - return self.ClaudiaIcons.getIcon(icon, size) + def getIcon(self, icon): + return self.ClaudiaIcons.getIcon(icon) - def getIconForYesNo(self, yesno, size=16): - return self.icon_yes if (yesno) else self.icon_no + def getIconForYesNo(self, yesno): + return self.icon_yes if yesno else self.icon_no def setCallbackApp(self, parent, settings, ladish_only): self._parent = parent @@ -599,48 +598,48 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW): self.url_website_daw.setVisible(bool(web)) self.label_no_help_daw.setVisible(not(doc or web)) - if (doc): self.setDocUrl(self.url_documentation_daw, doc) - if (web): self.setWebUrl(self.url_website_daw, web) + if doc: self.setDocUrl(self.url_documentation_daw, doc) + if web: self.setWebUrl(self.url_website_daw, web) def showDoc_Host(self, doc, web): self.url_documentation_host.setVisible(bool(doc)) self.url_website_host.setVisible(bool(web)) self.label_no_help_host.setVisible(not(doc or web)) - if (doc): self.setDocUrl(self.url_documentation_host, doc) - if (web): self.setWebUrl(self.url_website_host, web) + if doc: self.setDocUrl(self.url_documentation_host, doc) + if web: self.setWebUrl(self.url_website_host, web) def showDoc_Instrument(self, doc, web): self.url_documentation_ins.setVisible(bool(doc)) self.url_website_ins.setVisible(bool(web)) self.label_no_help_ins.setVisible(not(doc or web)) - if (doc): self.setDocUrl(self.url_documentation_ins, doc) - if (web): self.setWebUrl(self.url_website_ins, web) + if doc: self.setDocUrl(self.url_documentation_ins, doc) + if web: self.setWebUrl(self.url_website_ins, web) def showDoc_Bristol(self, doc, web): self.url_documentation_bristol.setVisible(bool(doc)) self.url_website_bristol.setVisible(bool(web)) self.label_no_help_bristol.setVisible(not(doc or web)) - if (doc): self.setDocUrl(self.url_documentation_bristol, doc) - if (web): self.setWebUrl(self.url_website_bristol, web) + if doc: self.setDocUrl(self.url_documentation_bristol, doc) + if web: self.setWebUrl(self.url_website_bristol, web) def showDoc_Effect(self, doc, web): self.url_documentation_effect.setVisible(bool(doc)) self.url_website_effect.setVisible(bool(web)) self.label_no_help_effect.setVisible(not(doc or web)) - if (doc): self.setDocUrl(self.url_documentation_effect, doc) - if (web): self.setWebUrl(self.url_website_effect, web) + if doc: self.setDocUrl(self.url_documentation_effect, doc) + if web: self.setWebUrl(self.url_website_effect, web) def showDoc_Tool(self, doc, web): self.url_documentation_tool.setVisible(bool(doc)) self.url_website_tool.setVisible(bool(web)) self.label_no_help_tool.setVisible(not(doc or web)) - if (doc): self.setDocUrl(self.url_documentation_tool, doc) - if (web): self.setWebUrl(self.url_website_tool, web) + if doc: self.setDocUrl(self.url_documentation_tool, doc) + if web: self.setWebUrl(self.url_website_tool, web) def setDocUrl(self, item, link): item.setText(self.tr("Documentation" % link)) @@ -656,156 +655,152 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW): self.listEffect.clearContents() self.listTool.clearContents() for x in range(self.listDAW.rowCount()): - self.listDAW.removeRow(0) + self.listDAW.removeRow(0) for x in range(self.listHost.rowCount()): - self.listHost.removeRow(0) + self.listHost.removeRow(0) for x in range(self.listInstrument.rowCount()): - self.listInstrument.removeRow(0) + self.listInstrument.removeRow(0) for x in range(self.listBristol.rowCount()): - self.listBristol.removeRow(0) + self.listBristol.removeRow(0) for x in range(self.listEffect.rowCount()): - self.listEffect.removeRow(0) + self.listEffect.removeRow(0) for x in range(self.listTool.rowCount()): - self.listTool.removeRow(0) + self.listTool.removeRow(0) def refreshAll(self): self.clearAll() + pkglist = [] - if (not SHOW_ALL): - pkglist = [] - - if (os.path.exists("/usr/bin/yaourt")): - pkg_out = getoutput("/usr/bin/yaourt -Qsq").split("\n") - for package in pkg_out: - pkglist.append(package) - - elif (os.path.exists("/usr/bin/pacman")): - pkg_out = getoutput("/usr/bin/pacman -Qsq").split("\n") - for package in pkg_out: - pkglist.append(package) + if not SHOW_ALL: + if os.path.exists("/usr/bin/yaourt"): + pkg_out = getoutput("/usr/bin/yaourt -Qsq").split("\n") + for package in pkg_out: + pkglist.append(package) - elif (os.path.exists("/usr/bin/dpkg-query")): - pkg_out = getoutput("/usr/bin/dpkg-query -W --showformat='${Package}\n'").split("\n") - for package in pkg_out: - pkglist.append(package) + elif os.path.exists("/usr/bin/pacman"): + pkg_out = getoutput("/usr/bin/pacman -Qsq").split("\n") + for package in pkg_out: + pkglist.append(package) - elif (os.path.exists("/usr/bin/equery")): - pkg_out = getoutput("/usr/bin/equery list").split("\n") + elif os.path.exists("/usr/bin/dpkg-query"): + pkg_out = getoutput("/usr/bin/dpkg-query -W --showformat='${Package}\n'").split("\n") + for package in pkg_out: + pkglist.append(package) - if (not SHOW_ALL and not "bristol" in pkglist): - self.tabWidget.setTabEnabled(TAB_INDEX_BRISTOL, False) + if not "bristol" in pkglist: + self.tabWidget.setTabEnabled(TAB_INDEX_BRISTOL, False) last_pos = 0 for Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs in database.list_DAW: - if (SHOW_ALL or Package in pkglist): - w_icon = QTableWidgetItem("") - w_icon.setIcon(QIcon(self.getIcon(Icon, 16))) - w_name = QTableWidgetItem(AppName) - w_type = QTableWidgetItem(Type) - w_save = QTableWidgetItem(Save) - w_licc = QTableWidgetItem(License) - - self.listDAW.insertRow(last_pos) - self.listDAW.setItem(last_pos, 0, w_icon) - self.listDAW.setItem(last_pos, 1, w_name) - self.listDAW.setItem(last_pos, 2, w_type) - self.listDAW.setItem(last_pos, 3, w_save) - self.listDAW.setItem(last_pos, 4, w_licc) - - last_pos += 1 + if SHOW_ALL or Package in pkglist: + w_icon = QTableWidgetItem("") + w_icon.setIcon(QIcon(self.getIcon(Icon))) + w_name = QTableWidgetItem(AppName) + w_type = QTableWidgetItem(Type) + w_save = QTableWidgetItem(Save) + w_licc = QTableWidgetItem(License) + + self.listDAW.insertRow(last_pos) + self.listDAW.setItem(last_pos, 0, w_icon) + self.listDAW.setItem(last_pos, 1, w_name) + self.listDAW.setItem(last_pos, 2, w_type) + self.listDAW.setItem(last_pos, 3, w_save) + self.listDAW.setItem(last_pos, 4, w_licc) + + last_pos += 1 last_pos = 0 for Package, AppName, Instruments, Effects, Binary, Icon, Save, Level, License, Features, Docs in database.list_Host: - if (SHOW_ALL or Package in pkglist): - w_icon = QTableWidgetItem("") - w_icon.setIcon(QIcon(self.getIcon(Icon, 16))) - w_name = QTableWidgetItem(AppName) - w_h_in = QTableWidgetItem(Instruments) - w_h_ef = QTableWidgetItem(Effects) - w_save = QTableWidgetItem(Save) - w_licc = QTableWidgetItem(License) - - self.listHost.insertRow(last_pos) - self.listHost.setItem(last_pos, 0, w_icon) - self.listHost.setItem(last_pos, 1, w_name) - self.listHost.setItem(last_pos, 2, w_h_in) - self.listHost.setItem(last_pos, 3, w_h_ef) - self.listHost.setItem(last_pos, 4, w_save) - self.listHost.setItem(last_pos, 5, w_licc) - - last_pos += 1 + if SHOW_ALL or Package in pkglist: + w_icon = QTableWidgetItem("") + w_icon.setIcon(QIcon(self.getIcon(Icon))) + w_name = QTableWidgetItem(AppName) + w_h_in = QTableWidgetItem(Instruments) + w_h_ef = QTableWidgetItem(Effects) + w_save = QTableWidgetItem(Save) + w_licc = QTableWidgetItem(License) + + self.listHost.insertRow(last_pos) + self.listHost.setItem(last_pos, 0, w_icon) + self.listHost.setItem(last_pos, 1, w_name) + self.listHost.setItem(last_pos, 2, w_h_in) + self.listHost.setItem(last_pos, 3, w_h_ef) + self.listHost.setItem(last_pos, 4, w_save) + self.listHost.setItem(last_pos, 5, w_licc) + + last_pos += 1 last_pos = 0 for Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs in database.list_Instrument: - if (SHOW_ALL or Package in pkglist): - w_icon = QTableWidgetItem("") - w_icon.setIcon(QIcon(self.getIcon(Icon, 16))) - w_name = QTableWidgetItem(AppName) - w_type = QTableWidgetItem(Type) - w_save = QTableWidgetItem(Save) - w_licc = QTableWidgetItem(License) - - self.listInstrument.insertRow(last_pos) - self.listInstrument.setItem(last_pos, 0, w_icon) - self.listInstrument.setItem(last_pos, 1, w_name) - self.listInstrument.setItem(last_pos, 2, w_type) - self.listInstrument.setItem(last_pos, 3, w_save) - self.listInstrument.setItem(last_pos, 4, w_licc) - - last_pos += 1 + if SHOW_ALL or Package in pkglist: + w_icon = QTableWidgetItem("") + w_icon.setIcon(QIcon(self.getIcon(Icon))) + w_name = QTableWidgetItem(AppName) + w_type = QTableWidgetItem(Type) + w_save = QTableWidgetItem(Save) + w_licc = QTableWidgetItem(License) + + self.listInstrument.insertRow(last_pos) + self.listInstrument.setItem(last_pos, 0, w_icon) + self.listInstrument.setItem(last_pos, 1, w_name) + self.listInstrument.setItem(last_pos, 2, w_type) + self.listInstrument.setItem(last_pos, 3, w_save) + self.listInstrument.setItem(last_pos, 4, w_licc) + + last_pos += 1 last_pos = 0 for Package, FullName, Type, ShortName, Icon, Save, Level, License, Features, Docs in database.list_Bristol: - if (SHOW_ALL or Package in pkglist): - w_icon = QTableWidgetItem("") - w_icon.setIcon(QIcon(self.getIcon(Icon, 16))) - w_fullname = QTableWidgetItem(FullName) - w_shortname = QTableWidgetItem(ShortName) + if SHOW_ALL or Package in pkglist: + w_icon = QTableWidgetItem("") + w_icon.setIcon(QIcon(self.getIcon(Icon))) + w_fullname = QTableWidgetItem(FullName) + w_shortname = QTableWidgetItem(ShortName) - self.listBristol.insertRow(last_pos) - self.listBristol.setItem(last_pos, 0, w_icon) - self.listBristol.setItem(last_pos, 1, w_shortname) - self.listBristol.setItem(last_pos, 2, w_fullname) + self.listBristol.insertRow(last_pos) + self.listBristol.setItem(last_pos, 0, w_icon) + self.listBristol.setItem(last_pos, 1, w_shortname) + self.listBristol.setItem(last_pos, 2, w_fullname) - last_pos += 1 + last_pos += 1 last_pos = 0 for Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs in database.list_Effect: - if (SHOW_ALL or Package in pkglist): - w_icon = QTableWidgetItem("") - w_icon.setIcon(QIcon(self.getIcon(Icon, 16))) - w_name = QTableWidgetItem(AppName) - w_type = QTableWidgetItem(Type) - w_save = QTableWidgetItem(Save) - w_licc = QTableWidgetItem(License) - - self.listEffect.insertRow(last_pos) - self.listEffect.setItem(last_pos, 0, w_icon) - self.listEffect.setItem(last_pos, 1, w_name) - self.listEffect.setItem(last_pos, 2, w_type) - self.listEffect.setItem(last_pos, 3, w_save) - self.listEffect.setItem(last_pos, 4, w_licc) - - last_pos += 1 + if SHOW_ALL or Package in pkglist: + w_icon = QTableWidgetItem("") + w_icon.setIcon(QIcon(self.getIcon(Icon))) + w_name = QTableWidgetItem(AppName) + w_type = QTableWidgetItem(Type) + w_save = QTableWidgetItem(Save) + w_licc = QTableWidgetItem(License) + + self.listEffect.insertRow(last_pos) + self.listEffect.setItem(last_pos, 0, w_icon) + self.listEffect.setItem(last_pos, 1, w_name) + self.listEffect.setItem(last_pos, 2, w_type) + self.listEffect.setItem(last_pos, 3, w_save) + self.listEffect.setItem(last_pos, 4, w_licc) + + last_pos += 1 last_pos = 0 for Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs in database.list_Tool: - if (SHOW_ALL or Package in pkglist): - w_icon = QTableWidgetItem("") - w_icon.setIcon(QIcon(self.getIcon(Icon, 16))) - w_name = QTableWidgetItem(AppName) - w_type = QTableWidgetItem(Type) - w_save = QTableWidgetItem(Save) - w_licc = QTableWidgetItem(License) - - self.listTool.insertRow(last_pos) - self.listTool.setItem(last_pos, 0, w_icon) - self.listTool.setItem(last_pos, 1, w_name) - self.listTool.setItem(last_pos, 2, w_type) - self.listTool.setItem(last_pos, 3, w_save) - self.listTool.setItem(last_pos, 4, w_licc) - - last_pos += 1 + if SHOW_ALL or Package in pkglist: + w_icon = QTableWidgetItem("") + w_icon.setIcon(QIcon(self.getIcon(Icon))) + w_name = QTableWidgetItem(AppName) + w_type = QTableWidgetItem(Type) + w_save = QTableWidgetItem(Save) + w_licc = QTableWidgetItem(License) + + self.listTool.insertRow(last_pos) + self.listTool.setItem(last_pos, 0, w_icon) + self.listTool.setItem(last_pos, 1, w_name) + self.listTool.setItem(last_pos, 2, w_type) + self.listTool.setItem(last_pos, 3, w_save) + self.listTool.setItem(last_pos, 4, w_licc) + + last_pos += 1 self.listDAW.setCurrentCell(-1, -1) self.listHost.setCurrentCell(-1, -1) @@ -823,317 +818,317 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW): @pyqtSlot(int) def slot_checkSelectedTab(self, tab_index): - if (tab_index == TAB_INDEX_DAW): - test_selected = (len(self.listDAW.selectedItems()) > 0) - elif (tab_index == TAB_INDEX_HOST): - test_selected = (len(self.listHost.selectedItems()) > 0) - elif (tab_index == TAB_INDEX_INSTRUMENT): - test_selected = (len(self.listInstrument.selectedItems()) > 0) - elif (tab_index == TAB_INDEX_BRISTOL): - test_selected = (len(self.listBristol.selectedItems()) > 0) - elif (tab_index == TAB_INDEX_EFFECT): - test_selected = (len(self.listEffect.selectedItems()) > 0) - elif (tab_index == TAB_INDEX_TOOL): - test_selected = (len(self.listTool.selectedItems()) > 0) + if tab_index == TAB_INDEX_DAW: + test_selected = (len(self.listDAW.selectedItems()) > 0) + elif tab_index == TAB_INDEX_HOST: + test_selected = (len(self.listHost.selectedItems()) > 0) + elif tab_index == TAB_INDEX_INSTRUMENT: + test_selected = (len(self.listInstrument.selectedItems()) > 0) + elif tab_index == TAB_INDEX_BRISTOL: + test_selected = (len(self.listBristol.selectedItems()) > 0) + elif tab_index == TAB_INDEX_EFFECT: + test_selected = (len(self.listEffect.selectedItems()) > 0) + elif tab_index == TAB_INDEX_TOOL: + test_selected = (len(self.listTool.selectedItems()) > 0) else: - test_selected = False + test_selected = False self.callback_checkGUI(test_selected) @pyqtSlot(int) def slot_checkSelectedDAW(self, row): - if (row >= 0): - selected = True - - app_name = self.listDAW.item(row, 1).text() - - for DAW in database.list_DAW: - if (DAW[1] == app_name): - app_info = DAW - break - else: - print("ERROR: Failed to retrieve app info from database") - return - - Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs = app_info - - self.frame_DAW.setEnabled(True) - self.ico_app_daw.setPixmap(QIcon(self.getIcon(Icon)).pixmap(48, 48)) - self.ico_ladspa_daw.setPixmap(QIcon(self.getIconForYesNo(Features[0])).pixmap(16, 16)) - self.ico_dssi_daw.setPixmap(QIcon(self.getIconForYesNo(Features[1])).pixmap(16, 16)) - self.ico_lv2_daw.setPixmap(QIcon(self.getIconForYesNo(Features[2])).pixmap(16, 16)) - self.ico_vst_daw.setPixmap(QIcon(self.getIconForYesNo(Features[3])).pixmap(16, 16)) - self.ico_jack_transport_daw.setPixmap(QIcon(self.getIconForYesNo(Features[5])).pixmap(16, 16)) - self.label_name_daw.setText(AppName) - self.label_vst_mode_daw.setText(Features[4]) - self.ico_midi_mode_daw.setPixmap(QIcon(self.getIconForYesNo(Features[6])).pixmap(16, 16)) - self.label_midi_mode_daw.setText(Features[7]) - self.label_session_level_daw.setText(Level) - - Docs0 = Docs[0] if (os.path.exists(Docs[0].replace("file://",""))) else "" - self.showDoc_DAW(Docs0, Docs[1]) + if row >= 0: + selected = True + + app_name = self.listDAW.item(row, 1).text() + + for DAW in database.list_DAW: + if DAW[1] == app_name: + app_info = DAW + break + else: + print("ERROR: Failed to retrieve app info from database") + return + + Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs = app_info + + self.frame_DAW.setEnabled(True) + self.ico_app_daw.setPixmap(QIcon(self.getIcon(Icon)).pixmap(48, 48)) + self.ico_ladspa_daw.setPixmap(QIcon(self.getIconForYesNo(Features[0])).pixmap(16, 16)) + self.ico_dssi_daw.setPixmap(QIcon(self.getIconForYesNo(Features[1])).pixmap(16, 16)) + self.ico_lv2_daw.setPixmap(QIcon(self.getIconForYesNo(Features[2])).pixmap(16, 16)) + self.ico_vst_daw.setPixmap(QIcon(self.getIconForYesNo(Features[3])).pixmap(16, 16)) + self.ico_jack_transport_daw.setPixmap(QIcon(self.getIconForYesNo(Features[5])).pixmap(16, 16)) + self.label_name_daw.setText(AppName) + self.label_vst_mode_daw.setText(Features[4]) + self.ico_midi_mode_daw.setPixmap(QIcon(self.getIconForYesNo(Features[6])).pixmap(16, 16)) + self.label_midi_mode_daw.setText(Features[7]) + self.label_session_level_daw.setText(Level) + + Docs0 = Docs[0] if (os.path.exists(Docs[0].replace("file://", ""))) else "" + self.showDoc_DAW(Docs0, Docs[1]) else: - selected = False - self.clearInfo_DAW() + selected = False + self.clearInfo_DAW() self.callback_checkGUI(selected) @pyqtSlot(int) def slot_checkSelectedHost(self, row): - if (row >= 0): - selected = True - - app_name = self.listHost.item(row, 1).text() - - for Host in database.list_Host: - if (Host[1] == app_name): - app_info = Host - break - else: - print("ERROR: Failed to retrieve app info from database") - return - - Package, AppName, Instruments, Effects, Binary, Icon, Save, Level, License, Features, Docs = app_info - - self.frame_Host.setEnabled(True) - self.ico_app_host.setPixmap(self.getIcon(Icon).pixmap(48, 48)) - self.ico_internal_host.setPixmap(self.getIconForYesNo(Features[0]).pixmap(16, 16)) - self.ico_ladspa_host.setPixmap(self.getIconForYesNo(Features[1]).pixmap(16, 16)) - self.ico_dssi_host.setPixmap(self.getIconForYesNo(Features[2]).pixmap(16, 16)) - self.ico_lv2_host.setPixmap(self.getIconForYesNo(Features[3]).pixmap(16, 16)) - self.ico_vst_host.setPixmap(self.getIconForYesNo(Features[4]).pixmap(16, 16)) - self.label_name_host.setText(AppName) - self.label_vst_mode_host.setText(Features[5]) - self.label_midi_mode_host.setText(Features[6]) - self.label_session_level_host.setText(str(Level)) - - Docs0 = Docs[0] if (os.path.exists(Docs[0].replace("file://",""))) else "" - self.showDoc_Host(Docs0, Docs[1]) + if row >= 0: + selected = True + + app_name = self.listHost.item(row, 1).text() + + for Host in database.list_Host: + if Host[1] == app_name: + app_info = Host + break + else: + print("ERROR: Failed to retrieve app info from database") + return + + Package, AppName, Instruments, Effects, Binary, Icon, Save, Level, License, Features, Docs = app_info + + self.frame_Host.setEnabled(True) + self.ico_app_host.setPixmap(self.getIcon(Icon).pixmap(48, 48)) + self.ico_internal_host.setPixmap(self.getIconForYesNo(Features[0]).pixmap(16, 16)) + self.ico_ladspa_host.setPixmap(self.getIconForYesNo(Features[1]).pixmap(16, 16)) + self.ico_dssi_host.setPixmap(self.getIconForYesNo(Features[2]).pixmap(16, 16)) + self.ico_lv2_host.setPixmap(self.getIconForYesNo(Features[3]).pixmap(16, 16)) + self.ico_vst_host.setPixmap(self.getIconForYesNo(Features[4]).pixmap(16, 16)) + self.label_name_host.setText(AppName) + self.label_vst_mode_host.setText(Features[5]) + self.label_midi_mode_host.setText(Features[6]) + self.label_session_level_host.setText(str(Level)) + + Docs0 = Docs[0] if (os.path.exists(Docs[0].replace("file://", ""))) else "" + self.showDoc_Host(Docs0, Docs[1]) else: - selected = False - self.clearInfo_DAW() + selected = False + self.clearInfo_DAW() self.callback_checkGUI(selected) @pyqtSlot(int) def slot_checkSelectedInstrument(self, row): - if (row >= 0): - selected = True + if row >= 0: + selected = True - app_name = self.listInstrument.item(row, 1).text() + app_name = self.listInstrument.item(row, 1).text() - for Instrument in database.list_Instrument: - if (Instrument[1] == app_name): - app_info = Instrument - break - else: - print("ERROR: Failed to retrieve app info from database") - return + for Instrument in database.list_Instrument: + if Instrument[1] == app_name: + app_info = Instrument + break + else: + print("ERROR: Failed to retrieve app info from database") + return - Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs = app_info + Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs = app_info - self.frame_Instrument.setEnabled(True) - self.ico_app_ins.setPixmap(self.getIcon(Icon).pixmap(48, 48)) - self.ico_builtin_fx_ins.setPixmap(self.getIconForYesNo(Features[0]).pixmap(16, 16)) - self.ico_audio_input_ins.setPixmap(self.getIconForYesNo(Features[1]).pixmap(16, 16)) - self.label_name_ins.setText(AppName) - self.label_midi_mode_ins.setText(Features[2]) - self.label_session_level_ins.setText(str(Level)) + self.frame_Instrument.setEnabled(True) + self.ico_app_ins.setPixmap(self.getIcon(Icon).pixmap(48, 48)) + self.ico_builtin_fx_ins.setPixmap(self.getIconForYesNo(Features[0]).pixmap(16, 16)) + self.ico_audio_input_ins.setPixmap(self.getIconForYesNo(Features[1]).pixmap(16, 16)) + self.label_name_ins.setText(AppName) + self.label_midi_mode_ins.setText(Features[2]) + self.label_session_level_ins.setText(str(Level)) - Docs0 = Docs[0] if (os.path.exists(Docs[0].replace("file://",""))) else "" - self.showDoc_Instrument(Docs0, Docs[1]) + Docs0 = Docs[0] if (os.path.exists(Docs[0].replace("file://", ""))) else "" + self.showDoc_Instrument(Docs0, Docs[1]) else: - selected = False - self.clearInfo_Intrument() + selected = False + self.clearInfo_Intrument() self.callback_checkGUI(selected) @pyqtSlot(int) def slot_checkSelectedBristol(self, row): - if (row >= 0): - selected = True + if row >= 0: + selected = True - app_name = self.listBristol.item(row, 2).text() + app_name = self.listBristol.item(row, 2).text() - for Bristol in database.list_Bristol: - if (Bristol[1] == app_name): - app_info = Bristol - break - else: - print("ERROR: Failed to retrieve app info from database") - return + for Bristol in database.list_Bristol: + if Bristol[1] == app_name: + app_info = Bristol + break + else: + print("ERROR: Failed to retrieve app info from database") + return - Package, AppName, Type, ShortName, Icon, Save, Level, License, Features, Docs = app_info + Package, AppName, Type, ShortName, Icon, Save, Level, License, Features, Docs = app_info - self.frame_Bristol.setEnabled(True) - self.ico_app_bristol.setPixmap(self.getIcon(Icon).pixmap(48, 48)) - self.ico_builtin_fx_bristol.setPixmap(self.getIconForYesNo(Features[0]).pixmap(16, 16)) - self.ico_audio_input_bristol.setPixmap(self.getIconForYesNo(Features[1]).pixmap(16, 16)) - self.label_name_bristol.setText(AppName) - self.label_midi_mode_bristol.setText(Features[2]) - self.label_session_level_bristol.setText(str(Level)) + self.frame_Bristol.setEnabled(True) + self.ico_app_bristol.setPixmap(self.getIcon(Icon).pixmap(48, 48)) + self.ico_builtin_fx_bristol.setPixmap(self.getIconForYesNo(Features[0]).pixmap(16, 16)) + self.ico_audio_input_bristol.setPixmap(self.getIconForYesNo(Features[1]).pixmap(16, 16)) + self.label_name_bristol.setText(AppName) + self.label_midi_mode_bristol.setText(Features[2]) + self.label_session_level_bristol.setText(str(Level)) - Docs0 = Docs[0] if (os.path.exists(Docs[0].replace("file://",""))) else "" - self.showDoc_Bristol(Docs0, Docs[1]) + Docs0 = Docs[0] if (os.path.exists(Docs[0].replace("file://", ""))) else "" + self.showDoc_Bristol(Docs0, Docs[1]) else: - selected = False - self.clearInfo_Bristol() + selected = False + self.clearInfo_Bristol() self.callback_checkGUI(selected) @pyqtSlot(int) def slot_checkSelectedEffect(self, row): - if (row >= 0): - selected = True + if row >= 0: + selected = True - app_name = self.listEffect.item(row, 1).text() + app_name = self.listEffect.item(row, 1).text() - for Effect in database.list_Effect: - if (Effect[1] == app_name): - app_info = Effect - break - else: - print("ERROR: Failed to retrieve app info from database") - return + for Effect in database.list_Effect: + if Effect[1] == app_name: + app_info = Effect + break + else: + print("ERROR: Failed to retrieve app info from database") + return - Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs = app_info + Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs = app_info - self.frame_Effect.setEnabled(True) - self.ico_app_effect.setPixmap(self.getIcon(Icon).pixmap(48, 48)) - self.ico_stereo_effect.setPixmap(self.getIconForYesNo(Features[0]).pixmap(16, 16)) - self.label_name_effect.setText(AppName) - self.label_midi_mode_effect.setText(Features[1]) - self.label_session_level_effect.setText(str(Level)) + self.frame_Effect.setEnabled(True) + self.ico_app_effect.setPixmap(self.getIcon(Icon).pixmap(48, 48)) + self.ico_stereo_effect.setPixmap(self.getIconForYesNo(Features[0]).pixmap(16, 16)) + self.label_name_effect.setText(AppName) + self.label_midi_mode_effect.setText(Features[1]) + self.label_session_level_effect.setText(str(Level)) - Docs0 = Docs[0] if (os.path.exists(Docs[0].replace("file://",""))) else "" - self.showDoc_Effect(Docs0, Docs[1]) + Docs0 = Docs[0] if (os.path.exists(Docs[0].replace("file://", ""))) else "" + self.showDoc_Effect(Docs0, Docs[1]) else: - selected = False - self.clearInfo_Effect() + selected = False + self.clearInfo_Effect() self.callback_checkGUI(selected) @pyqtSlot(int) def slot_checkSelectedTool(self, row): - if (row >= 0): - selected = True + if row >= 0: + selected = True - app_name = self.listTool.item(row, 1).text() + app_name = self.listTool.item(row, 1).text() - for Tool in database.list_Tool: - if (Tool[1] == app_name): - app_info = Tool - break - else: - print("ERROR: Failed to retrieve app info from database") - return + for Tool in database.list_Tool: + if Tool[1] == app_name: + app_info = Tool + break + else: + print("ERROR: Failed to retrieve app info from database") + return - Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs = app_info + Package, AppName, Type, Binary, Icon, Save, Level, License, Features, Docs = app_info - self.frame_Tool.setEnabled(True) - self.ico_app_tool.setPixmap(self.getIcon(Icon).pixmap(48, 48)) - self.label_name_tool.setText(AppName) - self.label_midi_mode_tool.setText(Features[0]) - self.ico_jack_transport_tool.setPixmap(self.getIconForYesNo(Features[1]).pixmap(16, 16)) - self.label_session_level_tool.setText(str(Level)) + self.frame_Tool.setEnabled(True) + self.ico_app_tool.setPixmap(self.getIcon(Icon).pixmap(48, 48)) + self.label_name_tool.setText(AppName) + self.label_midi_mode_tool.setText(Features[0]) + self.ico_jack_transport_tool.setPixmap(self.getIconForYesNo(Features[1]).pixmap(16, 16)) + self.label_session_level_tool.setText(str(Level)) - Docs0 = Docs[0] if (os.path.exists(Docs[0].replace("file://",""))) else "" - self.showDoc_Tool(Docs0, Docs[1]) + Docs0 = Docs[0] if (os.path.exists(Docs[0].replace("file://", ""))) else "" + self.showDoc_Tool(Docs0, Docs[1]) else: - selected = False - self.clearInfo_Tool() + selected = False + self.clearInfo_Tool() self.callback_checkGUI(selected) @pyqtSlot(int) def slot_doubleClickedListDAW(self, row): app = self.listDAW.item(row, 1).text() - if (self.m_ladish_only): - self.addAppToLADISH(app) + if self.m_ladish_only: + self.addAppToLADISH(app) else: - self.startApp(app) + self.startApp(app) @pyqtSlot(int) def slot_doubleClickedListHost(self, row): app = self.listHost.item(row, 1).text() - if (self.m_ladish_only): - self.addAppToLADISH(app) + if self.m_ladish_only: + self.addAppToLADISH(app) else: - self.startApp(app) + self.startApp(app) @pyqtSlot(int) def slot_doubleClickedListInstrument(self, row): app = self.listInstrument.item(row, 1).text() - if (self.m_ladish_only): - self.addAppToLADISH(app) + if self.m_ladish_only: + self.addAppToLADISH(app) else: - self.startApp(app) + self.startApp(app) @pyqtSlot(int) def slot_doubleClickedListBristol(self, row): app = self.listBristol.item(row, 2).text() - if (self.m_ladish_only): - self.addAppToLADISH(app) + if self.m_ladish_only: + self.addAppToLADISH(app) else: - self.startApp(app) + self.startApp(app) @pyqtSlot(int) def slot_doubleClickedListEffect(self, row): app = self.listEffect.item(row, 1).text() - if (self.m_ladish_only): - self.addAppToLADISH(app) + if self.m_ladish_only: + self.addAppToLADISH(app) else: - self.startApp(app) + self.startApp(app) @pyqtSlot(int) def slot_doubleClickedListTool(self, row): app = self.listTool.item(row, 1).text() - if (self.m_ladish_only): - self.addAppToLADISH(app) + if self.m_ladish_only: + self.addAppToLADISH(app) else: - self.startApp(app) + self.startApp(app) def saveSettings(self): - if (self.settings()): - self.settings().setValue("SplitterDAW", self.splitter_DAW.saveState()) - self.settings().setValue("SplitterHost", self.splitter_Host.saveState()) - self.settings().setValue("SplitterInstrument", self.splitter_Instrument.saveState()) - self.settings().setValue("SplitterBristol", self.splitter_Bristol.saveState()) - self.settings().setValue("SplitterEffect", self.splitter_Effect.saveState()) - self.settings().setValue("SplitterTool", self.splitter_Tool.saveState()) + if self.settings(): + self.settings().setValue("SplitterDAW", self.splitter_DAW.saveState()) + self.settings().setValue("SplitterHost", self.splitter_Host.saveState()) + self.settings().setValue("SplitterInstrument", self.splitter_Instrument.saveState()) + self.settings().setValue("SplitterBristol", self.splitter_Bristol.saveState()) + self.settings().setValue("SplitterEffect", self.splitter_Effect.saveState()) + self.settings().setValue("SplitterTool", self.splitter_Tool.saveState()) def loadSettings(self): - if (self.settings() != None and self.settings().contains("SplitterDAW")): - self.splitter_DAW.restoreState(self.settings().value("SplitterDAW", "")) - self.splitter_Host.restoreState(self.settings().value("SplitterHost", "")) - self.splitter_Instrument.restoreState(self.settings().value("SplitterInstrument", "")) - self.splitter_Bristol.restoreState(self.settings().value("SplitterBristol", "")) - self.splitter_Effect.restoreState(self.settings().value("SplitterEffect", "")) - self.splitter_Tool.restoreState(self.settings().value("SplitterTool", "")) - else: # First-Run - self.splitter_DAW.setSizes([500,200]) - self.splitter_Host.setSizes([500,200]) - self.splitter_Instrument.setSizes([500,200]) - self.splitter_Bristol.setSizes([500,200]) - self.splitter_Effect.setSizes([500,200]) - self.splitter_Tool.setSizes([500,200]) + if self.settings() and self.settings().contains("SplitterDAW"): + self.splitter_DAW.restoreState(self.settings().value("SplitterDAW", "")) + self.splitter_Host.restoreState(self.settings().value("SplitterHost", "")) + self.splitter_Instrument.restoreState(self.settings().value("SplitterInstrument", "")) + self.splitter_Bristol.restoreState(self.settings().value("SplitterBristol", "")) + self.splitter_Effect.restoreState(self.settings().value("SplitterEffect", "")) + self.splitter_Tool.restoreState(self.settings().value("SplitterTool", "")) + else: # First-Run? + self.splitter_DAW.setSizes([500, 200]) + self.splitter_Host.setSizes([500, 200]) + self.splitter_Instrument.setSizes([500, 200]) + self.splitter_Bristol.setSizes([500, 200]) + self.splitter_Effect.setSizes([500, 200]) + self.splitter_Tool.setSizes([500, 200]) # ---------------------------------------- # Callbacks def callback_checkGUI(self, selected): - if (self.parentR()): - self.parentR().callback_checkGUI(selected) + if self.parentR(): + self.parentR().callback_checkGUI(selected) def callback_getProjectFolder(self): - if (self.parentR()): - return self.parentR().callback_getProjectFolder() + if self.parentR(): + return self.parentR().callback_getProjectFolder() return HOME def callback_getAppBus(self): @@ -1150,7 +1145,6 @@ class ClaudiaLauncher(QWidget, ui_claudia_launcher.Ui_ClaudiaLauncherW): #--------------- main ------------------ if __name__ == '__main__': - import dbus from signal import signal, SIG_IGN, SIGUSR1 from PyQt4.QtGui import QApplication @@ -1163,7 +1157,8 @@ if __name__ == '__main__': 'controlBus', 'studioBus', 'appBus', - ] + ] + DBus = DBus() class ClaudiaLauncherApp(QMainWindow, ui_claudia_launcher_app.Ui_ClaudiaLauncherApp): @@ -1182,8 +1177,8 @@ if __name__ == '__main__': # Check for JACK self.jack_client = jacklib.client_open("klaudia", jacklib.JackNoStartServer, None) if not self.jack_client: - QTimer.singleShot(0, self, SLOT("slot_showJackError()")) - return + QTimer.singleShot(0, self, SLOT("slot_showJackError()")) + return # Set-up GUI self.b_start.setIcon(self.getIcon("go-next")) @@ -1199,14 +1194,14 @@ if __name__ == '__main__': self.refreshStudioList() - if (DBus.controlBus): - self.slot_enableLADISH(True) + if DBus.controlBus: + self.slot_enableLADISH(True) else: - for iPATH in PATH: - if (os.path.exists(os.path.join(iPATH, "ladishd"))): - break - else: - self.slot_enableLADISH(False) + for iPATH in PATH: + if os.path.exists(os.path.join(iPATH, "ladishd")): + break + else: + self.slot_enableLADISH(False) self.connect(self.b_start, SIGNAL("clicked()"), SLOT("slot_startApp()")) self.connect(self.b_add, SIGNAL("clicked()"), SLOT("slot_addAppToLADISH()")) @@ -1226,8 +1221,8 @@ if __name__ == '__main__': pos.valid = 0 jacklib.transport_query(self.jack_client, jacklib.pointer(pos)) - if (pos.valid & jacklib.JackPositionBBT): - return pos.beats_per_minute + if pos.valid & jacklib.JackPositionBBT: + return pos.beats_per_minute return 120.0 def getJackSampleRate(self): @@ -1236,25 +1231,26 @@ if __name__ == '__main__': def refreshStudioList(self): self.co_ladi_room.clear() self.co_ladi_room.addItem("") - if (DBus.controlBus): - studio_bus = DBus.loopBus.get_object("org.ladish", "/org/ladish/Studio") - studio_list_dump = studio_bus.GetRoomList() - for i in range(len(studio_list_dump)): - self.co_ladi_room.addItem("%s - %s" % (str(studio_list_dump[i][0]).replace("/org/ladish/Room",""), studio_list_dump[i][1]['name'])) + if DBus.controlBus: + studio_bus = DBus.loopBus.get_object("org.ladish", "/org/ladish/Studio") + studio_list_dump = studio_bus.GetRoomList() + for i in range(len(studio_list_dump)): + self.co_ladi_room.addItem("%s - %s" % ( + str(studio_list_dump[i][0]).replace("/org/ladish/Room", ""), studio_list_dump[i][1]['name'])) # ---------------------------------------- # Callbacks def callback_checkGUI(self, test_selected=None): - if (test_selected != None): - self.test_selected = test_selected + if test_selected != None: + self.test_selected = test_selected - if (self.test_url and self.test_selected): - self.b_add.setEnabled(bool(DBus.controlBus)) - self.b_start.setEnabled(True) + if self.test_url and self.test_selected: + self.b_add.setEnabled(bool(DBus.controlBus)) + self.b_start.setEnabled(True) else: - self.b_add.setEnabled(False) - self.b_start.setEnabled(False) + self.b_add.setEnabled(False) + self.b_start.setEnabled(False) def callback_getProjectFolder(self): return self.le_url.text() @@ -1275,61 +1271,61 @@ if __name__ == '__main__': @pyqtSlot(int) def slot_checkSelectedRoom(self, co_n): - if (co_n == -1 or not DBus.controlBus): - pass - elif (co_n == 0): - DBus.studioBus = DBus.loopBus.get_object("org.ladish", "/org/ladish/Studio") - DBus.appBus = dbus.Interface(DBus.studioBus, 'org.ladish.AppSupervisor') - self.b_open.setEnabled(True) - self.le_url.setEnabled(True) - self.le_url.setText(self.studio_root_folder) - else: - room_number = self.co_ladi_room.currentText().split(" ")[0] - room_name = "/org/ladish/Room"+room_number - DBus.studioBus = DBus.loopBus.get_object("org.ladish", room_name) - DBus.appBus = dbus.Interface(DBus.studioBus, 'org.ladish.AppSupervisor') - room_properties = DBus.studioBus.GetProjectProperties() - if (len(room_properties[1]) > 0): - self.b_open.setEnabled(False) - self.le_url.setEnabled(False) - self.le_url.setText(room_properties[1]['dir']) - else: + if co_n == -1 or not DBus.controlBus: + pass + elif co_n == 0: + DBus.studioBus = DBus.loopBus.get_object("org.ladish", "/org/ladish/Studio") + DBus.appBus = dbus.Interface(DBus.studioBus, 'org.ladish.AppSupervisor') self.b_open.setEnabled(True) self.le_url.setEnabled(True) - self.studio_root_folder = self.le_url.text() + self.le_url.setText(self.studio_root_folder) + else: + room_number = self.co_ladi_room.currentText().split(" ")[0] + room_name = "/org/ladish/Room" + room_number + DBus.studioBus = DBus.loopBus.get_object("org.ladish", room_name) + DBus.appBus = dbus.Interface(DBus.studioBus, 'org.ladish.AppSupervisor') + room_properties = DBus.studioBus.GetProjectProperties() + if len(room_properties[1]) > 0: + self.b_open.setEnabled(False) + self.le_url.setEnabled(False) + self.le_url.setText(room_properties[1]['dir']) + else: + self.b_open.setEnabled(True) + self.le_url.setEnabled(True) + self.studio_root_folder = self.le_url.text() @pyqtSlot(str) def slot_checkFolderUrl(self, url): - if (os.path.exists(url)): - self.test_url = True - if (self.le_url.isEnabled()): - self.studio_root_folder = url + if os.path.exists(url): + self.test_url = True + if self.le_url.isEnabled(): + self.studio_root_folder = url else: - self.test_url = False + self.test_url = False self.callback_checkGUI() @pyqtSlot(bool) def slot_enableLADISH(self, yesno): self.groupLADISH.setCheckable(False) - if (yesno): - try: - DBus.controlBus = DBus.loopBus.get_object("org.ladish", "/org/ladish/Control") - self.groupLADISH.setTitle(self.tr("LADISH is enabled")) - except: - self.groupLADISH.setEnabled(False) - self.groupLADISH.setTitle(self.tr("LADISH is sick")) - return + if yesno: + try: + DBus.controlBus = DBus.loopBus.get_object("org.ladish", "/org/ladish/Control") + self.groupLADISH.setTitle(self.tr("LADISH is enabled")) + except: + self.groupLADISH.setEnabled(False) + self.groupLADISH.setTitle(self.tr("LADISH is sick")) + return - DBus.studioBus = DBus.loopBus.get_object("org.ladish", "/org/ladish/Studio") - DBus.appBus = dbus.Interface(DBus.studioBus, 'org.ladish.AppSupervisor') + DBus.studioBus = DBus.loopBus.get_object("org.ladish", "/org/ladish/Studio") + DBus.appBus = dbus.Interface(DBus.studioBus, 'org.ladish.AppSupervisor') - self.refreshStudioList() - self.callback_checkGUI() + self.refreshStudioList() + self.callback_checkGUI() else: - self.groupLADISH.setEnabled(False) - self.groupLADISH.setTitle(self.tr("LADISH is not available")) + self.groupLADISH.setEnabled(False) + self.groupLADISH.setTitle(self.tr("LADISH is not available")) @pyqtSlot() def slot_startApp(self): @@ -1349,7 +1345,8 @@ if __name__ == '__main__': @pyqtSlot() def slot_showJackError(self): - QMessageBox.critical(self, self.tr("Error"), self.tr("JACK is not started!\nPlease start it first, then re-run Claudia-Launcher again.")) + QMessageBox.critical(self, self.tr("Error"), + self.tr("JACK is not started!\nPlease start it first, then re-run Claudia-Launcher again.")) self.close() def saveSettings(self): @@ -1362,8 +1359,8 @@ if __name__ == '__main__': def closeEvent(self, event): self.saveSettings() - if (self.jack_client): - jacklib.client_close(self.jack_client) + if self.jack_client: + jacklib.client_close(self.jack_client) QMainWindow.closeEvent(self, event) # App initialization @@ -1379,14 +1376,14 @@ if __name__ == '__main__': # Connect to DBus DBus.loopBus = dbus.SessionBus() - if ("org.ladish" in DBus.loopBus.list_names()): - DBus.controlBus = DBus.loopBus.get_object("org.ladish", "/org/ladish/Control") - DBus.studioBus = DBus.loopBus.get_object("org.ladish", "/org/ladish/Studio") - DBus.appBus = dbus.Interface(DBus.studioBus, "org.ladish.AppSupervisor") + if "org.ladish" in DBus.loopBus.list_names(): + DBus.controlBus = DBus.loopBus.get_object("org.ladish", "/org/ladish/Control") + DBus.studioBus = DBus.loopBus.get_object("org.ladish", "/org/ladish/Studio") + DBus.appBus = dbus.Interface(DBus.studioBus, "org.ladish.AppSupervisor") else: - DBus.controlBus = None - DBus.studioBus = None - DBus.appBus = None + DBus.controlBus = None + DBus.studioBus = None + DBus.appBus = None # Show GUI gui = ClaudiaLauncherApp()