@@ -1,78 +0,0 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<ui version="4.0"> | |||||
<class>Dialog</class> | |||||
<widget class="QDialog" name="Dialog"> | |||||
<property name="geometry"> | |||||
<rect> | |||||
<x>0</x> | |||||
<y>0</y> | |||||
<width>400</width> | |||||
<height>300</height> | |||||
</rect> | |||||
</property> | |||||
<property name="windowTitle"> | |||||
<string>Dialog</string> | |||||
</property> | |||||
<widget class="QComboBox" name="comboBox"> | |||||
<property name="geometry"> | |||||
<rect> | |||||
<x>210</x> | |||||
<y>30</y> | |||||
<width>64</width> | |||||
<height>24</height> | |||||
</rect> | |||||
</property> | |||||
</widget> | |||||
<widget class="QComboBox" name="comboBox_2"> | |||||
<property name="geometry"> | |||||
<rect> | |||||
<x>210</x> | |||||
<y>70</y> | |||||
<width>64</width> | |||||
<height>24</height> | |||||
</rect> | |||||
</property> | |||||
</widget> | |||||
<widget class="QLabel" name="label"> | |||||
<property name="geometry"> | |||||
<rect> | |||||
<x>90</x> | |||||
<y>30</y> | |||||
<width>111</width> | |||||
<height>20</height> | |||||
</rect> | |||||
</property> | |||||
<property name="text"> | |||||
<string>Preferred buffer size:</string> | |||||
</property> | |||||
</widget> | |||||
<widget class="QLabel" name="label_2"> | |||||
<property name="geometry"> | |||||
<rect> | |||||
<x>90</x> | |||||
<y>80</y> | |||||
<width>111</width> | |||||
<height>16</height> | |||||
</rect> | |||||
</property> | |||||
<property name="text"> | |||||
<string>Preferred sample rate:</string> | |||||
</property> | |||||
</widget> | |||||
<widget class="QPushButton" name="pushButton"> | |||||
<property name="geometry"> | |||||
<rect> | |||||
<x>150</x> | |||||
<y>110</y> | |||||
<width>131</width> | |||||
<height>51</height> | |||||
</rect> | |||||
</property> | |||||
<property name="text"> | |||||
<string>Show Control Panel</string> | |||||
</property> | |||||
</widget> | |||||
</widget> | |||||
<resources/> | |||||
<connections/> | |||||
</ui> |
@@ -6,8 +6,8 @@ | |||||
<rect> | <rect> | ||||
<x>0</x> | <x>0</x> | ||||
<y>0</y> | <y>0</y> | ||||
<width>467</width> | |||||
<height>461</height> | |||||
<width>592</width> | |||||
<height>494</height> | |||||
</rect> | </rect> | ||||
</property> | </property> | ||||
<property name="windowTitle"> | <property name="windowTitle"> | ||||
@@ -26,164 +26,28 @@ | |||||
<attribute name="title"> | <attribute name="title"> | ||||
<string>Edit</string> | <string>Edit</string> | ||||
</attribute> | </attribute> | ||||
<layout class="QGridLayout" name="gridLayout"> | |||||
<item row="1" column="2"> | |||||
<widget class="QGroupBox" name="groupBox"> | |||||
<layout class="QGridLayout" name="gridLayout_2"> | |||||
<item row="2" column="0"> | |||||
<widget class="QGroupBox" name="groupBox_3"> | |||||
<property name="title"> | <property name="title"> | ||||
<string>Settings</string> | |||||
<string>Control?</string> | |||||
</property> | </property> | ||||
<layout class="QGridLayout" name="gridLayout_3"> | |||||
<item row="1" column="0" colspan="2"> | |||||
<widget class="QCheckBox" name="ch_force_stereo"> | |||||
<property name="text"> | |||||
<string>Force stereo (needs restart)</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="0" column="0" colspan="2"> | |||||
<widget class="QCheckBox" name="ch_fixed_buffer"> | |||||
<property name="text"> | |||||
<string>Fixed-size buffer</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="4" column="0" colspan="2"> | |||||
<widget class="QCheckBox" name="ch_send_control_changes"> | |||||
<property name="text"> | |||||
<string>Send Control Changes</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="5" column="0" colspan="2"> | |||||
<widget class="QCheckBox" name="ch_send_channel_pressure"> | |||||
<property name="text"> | |||||
<string>Send Channel Pressure</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="8" column="0" colspan="2"> | |||||
<widget class="QCheckBox" name="ch_send_all_sound_off"> | |||||
<property name="text"> | |||||
<string>Send All Sound/Notes Off</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="2" column="0" colspan="2"> | |||||
<widget class="QCheckBox" name="ch_map_program_changes"> | |||||
<property name="text"> | |||||
<string>Map Program changes</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="3" column="0" colspan="2"> | |||||
<widget class="QCheckBox" name="ch_use_chunks"> | |||||
<property name="text"> | |||||
<string>Use Chunks</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="7" column="0" colspan="2"> | |||||
<widget class="QCheckBox" name="ch_send_pitchbend"> | |||||
<property name="text"> | |||||
<string>Send Pitchbend</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="6" column="0" colspan="2"> | |||||
<widget class="QCheckBox" name="ch_send_note_aftertouch"> | |||||
<property name="text"> | |||||
<string>Send Note Aftertouch</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
</layout> | |||||
</widget> | |||||
</item> | |||||
<item row="0" column="0" colspan="3"> | |||||
<layout class="QHBoxLayout" name="horizontalLayout"> | |||||
<item> | |||||
<spacer name="horizontalSpacer"> | |||||
<property name="orientation"> | |||||
<enum>Qt::Horizontal</enum> | |||||
</property> | |||||
<property name="sizeType"> | |||||
<enum>QSizePolicy::Fixed</enum> | |||||
</property> | |||||
<property name="sizeHint" stdset="0"> | |||||
<size> | |||||
<width>40</width> | |||||
<height>20</height> | |||||
</size> | |||||
</property> | |||||
</spacer> | |||||
</item> | |||||
<item> | |||||
<widget class="QLabel" name="label_plugin"> | |||||
<property name="font"> | |||||
<font> | |||||
<pointsize>11</pointsize> | |||||
<weight>75</weight> | |||||
<bold>true</bold> | |||||
</font> | |||||
</property> | |||||
<property name="text"> | |||||
<string> | |||||
Plugin Name | |||||
</string> | |||||
</property> | |||||
<property name="alignment"> | |||||
<set>Qt::AlignCenter</set> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item> | |||||
<spacer name="horizontalSpacer_2"> | |||||
<property name="orientation"> | |||||
<enum>Qt::Horizontal</enum> | |||||
</property> | |||||
<property name="sizeHint" stdset="0"> | |||||
<size> | |||||
<width>40</width> | |||||
<height>20</height> | |||||
</size> | |||||
</property> | |||||
</spacer> | |||||
</item> | |||||
<item> | |||||
<widget class="QPushButton" name="b_save_state"> | |||||
<property name="text"> | |||||
<string>Save State</string> | |||||
</property> | |||||
<property name="icon"> | |||||
<iconset resource="../resources.qrc"> | |||||
<normaloff>:/16x16/document-save.png</normaloff>:/16x16/document-save.png</iconset> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item> | |||||
<widget class="QPushButton" name="b_load_state"> | |||||
<property name="text"> | |||||
<string>Load State</string> | |||||
</property> | |||||
<property name="icon"> | |||||
<iconset resource="../resources.qrc"> | |||||
<normaloff>:/16x16/document-open.png</normaloff>:/16x16/document-open.png</iconset> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
</layout> | |||||
</item> | |||||
<item row="1" column="0" colspan="2"> | |||||
<widget class="QGroupBox" name="groupBox_2"> | |||||
<property name="title"> | |||||
<string>Setup</string> | |||||
</property> | |||||
<layout class="QVBoxLayout" name="verticalLayout_3"> | |||||
<layout class="QVBoxLayout" name="verticalLayout_5"> | |||||
<item> | <item> | ||||
<layout class="QHBoxLayout" name="horizontalLayout_5"> | <layout class="QHBoxLayout" name="horizontalLayout_5"> | ||||
<property name="spacing"> | |||||
<number>0</number> | |||||
</property> | |||||
<item> | |||||
<spacer name="horizontalSpacer_5"> | |||||
<property name="orientation"> | |||||
<enum>Qt::Horizontal</enum> | |||||
</property> | |||||
<property name="sizeHint" stdset="0"> | |||||
<size> | |||||
<width>40</width> | |||||
<height>20</height> | |||||
</size> | |||||
</property> | |||||
</spacer> | |||||
</item> | |||||
<item> | <item> | ||||
<widget class="QLabel" name="label_ctrl_channel"> | <widget class="QLabel" name="label_ctrl_channel"> | ||||
<property name="text"> | <property name="text"> | ||||
@@ -229,96 +93,20 @@ Plugin Name | |||||
</layout> | </layout> | ||||
</item> | </item> | ||||
<item> | <item> | ||||
<widget class="QStackedWidget" name="tab_programs"> | |||||
<property name="sizePolicy"> | |||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred"> | |||||
<horstretch>0</horstretch> | |||||
<verstretch>0</verstretch> | |||||
</sizepolicy> | |||||
</property> | |||||
<property name="lineWidth"> | |||||
<number>0</number> | |||||
</property> | |||||
<property name="currentIndex"> | |||||
<number>0</number> | |||||
</property> | |||||
<widget class="QWidget" name="tab_programs_2"> | |||||
<layout class="QHBoxLayout" name="horizontalLayout_3"> | |||||
<property name="spacing"> | |||||
<number>0</number> | |||||
</property> | |||||
<property name="leftMargin"> | |||||
<number>0</number> | |||||
</property> | |||||
<property name="topMargin"> | |||||
<number>0</number> | |||||
</property> | |||||
<property name="rightMargin"> | |||||
<number>0</number> | |||||
</property> | |||||
<property name="bottomMargin"> | |||||
<number>0</number> | |||||
</property> | |||||
<item> | |||||
<widget class="QLabel" name="label_programs"> | |||||
<property name="sizePolicy"> | |||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> | |||||
<horstretch>0</horstretch> | |||||
<verstretch>0</verstretch> | |||||
</sizepolicy> | |||||
</property> | |||||
<property name="text"> | |||||
<string>Program:</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item> | |||||
<widget class="QComboBox" name="cb_programs"/> | |||||
</item> | |||||
</layout> | |||||
</widget> | |||||
<widget class="QWidget" name="tab_midiPrograms"> | |||||
<layout class="QHBoxLayout" name="horizontalLayout_4"> | |||||
<property name="spacing"> | |||||
<number>0</number> | |||||
</property> | |||||
<property name="leftMargin"> | |||||
<number>0</number> | |||||
</property> | |||||
<property name="topMargin"> | |||||
<number>0</number> | |||||
</property> | |||||
<property name="rightMargin"> | |||||
<number>0</number> | |||||
<layout class="QHBoxLayout" name="horizontalLayout_8"> | |||||
<item> | |||||
<spacer name="horizontalSpacer_6"> | |||||
<property name="orientation"> | |||||
<enum>Qt::Horizontal</enum> | |||||
</property> | </property> | ||||
<property name="bottomMargin"> | |||||
<number>0</number> | |||||
<property name="sizeHint" stdset="0"> | |||||
<size> | |||||
<width>10</width> | |||||
<height>10</height> | |||||
</size> | |||||
</property> | </property> | ||||
<item> | |||||
<widget class="QLabel" name="label_midi_programs"> | |||||
<property name="sizePolicy"> | |||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> | |||||
<horstretch>0</horstretch> | |||||
<verstretch>0</verstretch> | |||||
</sizepolicy> | |||||
</property> | |||||
<property name="text"> | |||||
<string>MIDI Program:</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item> | |||||
<widget class="QComboBox" name="cb_midi_programs"/> | |||||
</item> | |||||
</layout> | |||||
</widget> | |||||
</widget> | |||||
</item> | |||||
<item> | |||||
<layout class="QHBoxLayout" name="horizontalLayout_8"> | |||||
<property name="spacing"> | |||||
<number>0</number> | |||||
</property> | |||||
</spacer> | |||||
</item> | |||||
<item> | <item> | ||||
<widget class="PixmapDial" name="dial_vol"> | <widget class="PixmapDial" name="dial_vol"> | ||||
<property name="minimumSize"> | <property name="minimumSize"> | ||||
@@ -377,6 +165,12 @@ Plugin Name | |||||
</item> | </item> | ||||
<item> | <item> | ||||
<widget class="QStackedWidget" name="stackedWidget"> | <widget class="QStackedWidget" name="stackedWidget"> | ||||
<property name="maximumSize"> | |||||
<size> | |||||
<width>16777215</width> | |||||
<height>42</height> | |||||
</size> | |||||
</property> | |||||
<property name="lineWidth"> | <property name="lineWidth"> | ||||
<number>0</number> | <number>0</number> | ||||
</property> | </property> | ||||
@@ -388,16 +182,7 @@ Plugin Name | |||||
<property name="spacing"> | <property name="spacing"> | ||||
<number>0</number> | <number>0</number> | ||||
</property> | </property> | ||||
<property name="leftMargin"> | |||||
<number>0</number> | |||||
</property> | |||||
<property name="topMargin"> | |||||
<number>0</number> | |||||
</property> | |||||
<property name="rightMargin"> | |||||
<number>0</number> | |||||
</property> | |||||
<property name="bottomMargin"> | |||||
<property name="margin"> | |||||
<number>0</number> | <number>0</number> | ||||
</property> | </property> | ||||
<item> | <item> | ||||
@@ -469,16 +254,7 @@ Plugin Name | |||||
<property name="spacing"> | <property name="spacing"> | ||||
<number>0</number> | <number>0</number> | ||||
</property> | </property> | ||||
<property name="leftMargin"> | |||||
<number>0</number> | |||||
</property> | |||||
<property name="topMargin"> | |||||
<number>0</number> | |||||
</property> | |||||
<property name="rightMargin"> | |||||
<number>0</number> | |||||
</property> | |||||
<property name="bottomMargin"> | |||||
<property name="margin"> | |||||
<number>0</number> | <number>0</number> | ||||
</property> | </property> | ||||
<item> | <item> | ||||
@@ -521,24 +297,14 @@ Plugin Name | |||||
<property name="spacing"> | <property name="spacing"> | ||||
<number>0</number> | <number>0</number> | ||||
</property> | </property> | ||||
<item> | |||||
<spacer name="verticalSpacer_2"> | |||||
<property name="orientation"> | |||||
<enum>Qt::Vertical</enum> | |||||
</property> | |||||
<property name="sizeHint" stdset="0"> | |||||
<size> | |||||
<width>1</width> | |||||
<height>1</height> | |||||
</size> | |||||
</property> | |||||
</spacer> | |||||
</item> | |||||
<item> | <item> | ||||
<widget class="QRadioButton" name="radioButton"> | <widget class="QRadioButton" name="radioButton"> | ||||
<property name="text"> | <property name="text"> | ||||
<string>Use Balance</string> | <string>Use Balance</string> | ||||
</property> | </property> | ||||
<property name="checked"> | |||||
<bool>true</bool> | |||||
</property> | |||||
</widget> | </widget> | ||||
</item> | </item> | ||||
<item> | <item> | ||||
@@ -548,39 +314,504 @@ Plugin Name | |||||
</property> | </property> | ||||
</widget> | </widget> | ||||
</item> | </item> | ||||
<item> | |||||
<spacer name="verticalSpacer_3"> | |||||
<property name="orientation"> | |||||
<enum>Qt::Vertical</enum> | |||||
</property> | |||||
<property name="sizeHint" stdset="0"> | |||||
<size> | |||||
<width>1</width> | |||||
<height>1</height> | |||||
</size> | |||||
</property> | |||||
</spacer> | |||||
</item> | |||||
</layout> | </layout> | ||||
</item> | </item> | ||||
<item> | |||||
<spacer name="horizontalSpacer_4"> | |||||
<property name="orientation"> | |||||
<enum>Qt::Horizontal</enum> | |||||
</property> | |||||
<property name="sizeHint" stdset="0"> | |||||
<size> | |||||
<width>10</width> | |||||
<height>10</height> | |||||
</size> | |||||
</property> | |||||
</spacer> | |||||
</item> | |||||
</layout> | </layout> | ||||
</item> | </item> | ||||
</layout> | |||||
</widget> | |||||
</item> | |||||
<item row="1" column="1" rowspan="2"> | |||||
<widget class="QGroupBox" name="groupBox"> | |||||
<property name="sizePolicy"> | |||||
<sizepolicy hsizetype="Preferred" vsizetype="Expanding"> | |||||
<horstretch>0</horstretch> | |||||
<verstretch>0</verstretch> | |||||
</sizepolicy> | |||||
</property> | |||||
<property name="title"> | |||||
<string>Settings</string> | |||||
</property> | |||||
<layout class="QVBoxLayout" name="verticalLayout_4"> | |||||
<item> | |||||
<widget class="QCheckBox" name="ch_use_chunks"> | |||||
<property name="text"> | |||||
<string>Use Chunks</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item> | <item> | ||||
<spacer name="verticalSpacer"> | |||||
<widget class="Line" name="line_2"> | |||||
<property name="lineWidth"> | |||||
<number>0</number> | |||||
</property> | |||||
<property name="midLineWidth"> | |||||
<number>1</number> | |||||
</property> | |||||
<property name="orientation"> | <property name="orientation"> | ||||
<enum>Qt::Vertical</enum> | |||||
<enum>Qt::Horizontal</enum> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item> | |||||
<widget class="QLabel" name="label"> | |||||
<property name="font"> | |||||
<font> | |||||
<weight>75</weight> | |||||
<bold>true</bold> | |||||
</font> | |||||
</property> | |||||
<property name="text"> | |||||
<string> Audio:</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item> | |||||
<widget class="QCheckBox" name="ch_fixed_buffer"> | |||||
<property name="text"> | |||||
<string>Fixed-size buffer</string> | |||||
</property> | </property> | ||||
<property name="sizeHint" stdset="0"> | |||||
<size> | |||||
<width>20</width> | |||||
<height>40</height> | |||||
</size> | |||||
</widget> | |||||
</item> | |||||
<item> | |||||
<widget class="QCheckBox" name="ch_force_stereo"> | |||||
<property name="text"> | |||||
<string>Force stereo (needs restart)</string> | |||||
</property> | </property> | ||||
</spacer> | |||||
</widget> | |||||
</item> | |||||
<item> | |||||
<widget class="Line" name="line"> | |||||
<property name="lineWidth"> | |||||
<number>0</number> | |||||
</property> | |||||
<property name="midLineWidth"> | |||||
<number>1</number> | |||||
</property> | |||||
<property name="orientation"> | |||||
<enum>Qt::Horizontal</enum> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item> | |||||
<widget class="QLabel" name="label_2"> | |||||
<property name="font"> | |||||
<font> | |||||
<weight>75</weight> | |||||
<bold>true</bold> | |||||
</font> | |||||
</property> | |||||
<property name="text"> | |||||
<string> MIDI:</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item> | |||||
<widget class="QCheckBox" name="ch_map_program_changes"> | |||||
<property name="text"> | |||||
<string>Map Program changes</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item> | |||||
<widget class="QCheckBox" name="ch_send_control_changes"> | |||||
<property name="text"> | |||||
<string>Send Control Changes</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item> | |||||
<widget class="QCheckBox" name="ch_send_channel_pressure"> | |||||
<property name="text"> | |||||
<string>Send Channel Pressure</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item> | |||||
<widget class="QCheckBox" name="ch_send_note_aftertouch"> | |||||
<property name="text"> | |||||
<string>Send Note Aftertouch</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item> | |||||
<widget class="QCheckBox" name="ch_send_pitchbend"> | |||||
<property name="text"> | |||||
<string>Send Pitchbend</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item> | |||||
<widget class="QCheckBox" name="ch_send_all_sound_off"> | |||||
<property name="text"> | |||||
<string>Send All Sound/Notes Off</string> | |||||
</property> | |||||
</widget> | |||||
</item> | </item> | ||||
</layout> | </layout> | ||||
</widget> | </widget> | ||||
</item> | </item> | ||||
<item row="0" column="0" colspan="2"> | |||||
<layout class="QHBoxLayout" name="horizontalLayout"> | |||||
<item> | |||||
<spacer name="horizontalSpacer"> | |||||
<property name="orientation"> | |||||
<enum>Qt::Horizontal</enum> | |||||
</property> | |||||
<property name="sizeType"> | |||||
<enum>QSizePolicy::Fixed</enum> | |||||
</property> | |||||
<property name="sizeHint" stdset="0"> | |||||
<size> | |||||
<width>10</width> | |||||
<height>20</height> | |||||
</size> | |||||
</property> | |||||
</spacer> | |||||
</item> | |||||
<item> | |||||
<widget class="QLabel" name="label_plugin"> | |||||
<property name="font"> | |||||
<font> | |||||
<pointsize>11</pointsize> | |||||
<weight>75</weight> | |||||
<bold>true</bold> | |||||
</font> | |||||
</property> | |||||
<property name="text"> | |||||
<string> | |||||
Plugin Name | |||||
</string> | |||||
</property> | |||||
<property name="alignment"> | |||||
<set>Qt::AlignCenter</set> | |||||
</property> | |||||
<property name="wordWrap"> | |||||
<bool>true</bool> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item> | |||||
<spacer name="horizontalSpacer_2"> | |||||
<property name="orientation"> | |||||
<enum>Qt::Horizontal</enum> | |||||
</property> | |||||
<property name="sizeType"> | |||||
<enum>QSizePolicy::Fixed</enum> | |||||
</property> | |||||
<property name="sizeHint" stdset="0"> | |||||
<size> | |||||
<width>10</width> | |||||
<height>20</height> | |||||
</size> | |||||
</property> | |||||
</spacer> | |||||
</item> | |||||
<item> | |||||
<layout class="QGridLayout" name="gridLayout"> | |||||
<item row="1" column="0"> | |||||
<widget class="QPushButton" name="b_save_state"> | |||||
<property name="focusPolicy"> | |||||
<enum>Qt::NoFocus</enum> | |||||
</property> | |||||
<property name="text"> | |||||
<string>Save State</string> | |||||
</property> | |||||
<property name="icon"> | |||||
<iconset resource="../resources.qrc"> | |||||
<normaloff>:/16x16/document-save.png</normaloff>:/16x16/document-save.png</iconset> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="1" column="1"> | |||||
<widget class="QPushButton" name="b_load_state"> | |||||
<property name="focusPolicy"> | |||||
<enum>Qt::NoFocus</enum> | |||||
</property> | |||||
<property name="text"> | |||||
<string>Load State</string> | |||||
</property> | |||||
<property name="icon"> | |||||
<iconset resource="../resources.qrc"> | |||||
<normaloff>:/16x16/document-open.png</normaloff>:/16x16/document-open.png</iconset> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="0" column="0" colspan="2"> | |||||
<widget class="QStackedWidget" name="sw_programs"> | |||||
<property name="sizePolicy"> | |||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred"> | |||||
<horstretch>0</horstretch> | |||||
<verstretch>0</verstretch> | |||||
</sizepolicy> | |||||
</property> | |||||
<property name="lineWidth"> | |||||
<number>0</number> | |||||
</property> | |||||
<property name="currentIndex"> | |||||
<number>1</number> | |||||
</property> | |||||
<widget class="QWidget" name="sww_programs"> | |||||
<layout class="QHBoxLayout" name="horizontalLayout_3"> | |||||
<item> | |||||
<widget class="QLabel" name="label_programs"> | |||||
<property name="sizePolicy"> | |||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> | |||||
<horstretch>0</horstretch> | |||||
<verstretch>0</verstretch> | |||||
</sizepolicy> | |||||
</property> | |||||
<property name="text"> | |||||
<string>Program:</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item> | |||||
<widget class="QComboBox" name="cb_programs"> | |||||
<property name="minimumSize"> | |||||
<size> | |||||
<width>150</width> | |||||
<height>0</height> | |||||
</size> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
</layout> | |||||
</widget> | |||||
<widget class="QWidget" name="sww_midiPrograms"> | |||||
<layout class="QHBoxLayout" name="horizontalLayout_4"> | |||||
<item> | |||||
<widget class="QLabel" name="label_midi_programs"> | |||||
<property name="sizePolicy"> | |||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred"> | |||||
<horstretch>0</horstretch> | |||||
<verstretch>0</verstretch> | |||||
</sizepolicy> | |||||
</property> | |||||
<property name="text"> | |||||
<string>MIDI Program:</string> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item> | |||||
<widget class="QComboBox" name="cb_midi_programs"> | |||||
<property name="minimumSize"> | |||||
<size> | |||||
<width>150</width> | |||||
<height>0</height> | |||||
</size> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
</layout> | |||||
</widget> | |||||
</widget> | |||||
</item> | |||||
</layout> | |||||
</item> | |||||
</layout> | |||||
</item> | |||||
<item row="1" column="0"> | |||||
<widget class="QGroupBox" name="groupBox_2"> | |||||
<property name="sizePolicy"> | |||||
<sizepolicy hsizetype="Preferred" vsizetype="Expanding"> | |||||
<horstretch>0</horstretch> | |||||
<verstretch>0</verstretch> | |||||
</sizepolicy> | |||||
</property> | |||||
<property name="title"> | |||||
<string>Information</string> | |||||
</property> | |||||
<layout class="QVBoxLayout" name="verticalLayout_3"> | |||||
<item> | |||||
<layout class="QGridLayout" name="gridLayout_3"> | |||||
<item row="3" column="1"> | |||||
<widget class="QLineEdit" name="le_maker"> | |||||
<property name="inputMask"> | |||||
<string notr="true"/> | |||||
</property> | |||||
<property name="text"> | |||||
<string notr="true"/> | |||||
</property> | |||||
<property name="frame"> | |||||
<bool>false</bool> | |||||
</property> | |||||
<property name="readOnly"> | |||||
<bool>true</bool> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="2" column="0"> | |||||
<widget class="QLabel" name="label_4"> | |||||
<property name="text"> | |||||
<string>Label/URI:</string> | |||||
</property> | |||||
<property name="alignment"> | |||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="1" column="0"> | |||||
<widget class="QLabel" name="label_3"> | |||||
<property name="text"> | |||||
<string>Name:</string> | |||||
</property> | |||||
<property name="alignment"> | |||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="1" column="1"> | |||||
<widget class="QLineEdit" name="le_name"> | |||||
<property name="inputMask"> | |||||
<string notr="true"/> | |||||
</property> | |||||
<property name="text"> | |||||
<string notr="true"/> | |||||
</property> | |||||
<property name="frame"> | |||||
<bool>false</bool> | |||||
</property> | |||||
<property name="readOnly"> | |||||
<bool>true</bool> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="2" column="1"> | |||||
<widget class="QLineEdit" name="le_label"> | |||||
<property name="inputMask"> | |||||
<string notr="true"/> | |||||
</property> | |||||
<property name="text"> | |||||
<string notr="true"/> | |||||
</property> | |||||
<property name="frame"> | |||||
<bool>false</bool> | |||||
</property> | |||||
<property name="readOnly"> | |||||
<bool>true</bool> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="0" column="1"> | |||||
<widget class="QLineEdit" name="le_type"> | |||||
<property name="inputMask"> | |||||
<string notr="true"/> | |||||
</property> | |||||
<property name="text"> | |||||
<string notr="true"/> | |||||
</property> | |||||
<property name="frame"> | |||||
<bool>false</bool> | |||||
</property> | |||||
<property name="readOnly"> | |||||
<bool>true</bool> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="4" column="1"> | |||||
<widget class="QLineEdit" name="le_copyright"> | |||||
<property name="inputMask"> | |||||
<string notr="true"/> | |||||
</property> | |||||
<property name="text"> | |||||
<string notr="true"/> | |||||
</property> | |||||
<property name="frame"> | |||||
<bool>false</bool> | |||||
</property> | |||||
<property name="readOnly"> | |||||
<bool>true</bool> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="5" column="1"> | |||||
<widget class="QLineEdit" name="le_unique_id"> | |||||
<property name="inputMask"> | |||||
<string notr="true"/> | |||||
</property> | |||||
<property name="text"> | |||||
<string notr="true"/> | |||||
</property> | |||||
<property name="frame"> | |||||
<bool>false</bool> | |||||
</property> | |||||
<property name="readOnly"> | |||||
<bool>true</bool> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="0" column="0"> | |||||
<widget class="QLabel" name="label_5"> | |||||
<property name="text"> | |||||
<string>Type:</string> | |||||
</property> | |||||
<property name="alignment"> | |||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="3" column="0"> | |||||
<widget class="QLabel" name="label_6"> | |||||
<property name="text"> | |||||
<string>Maker:</string> | |||||
</property> | |||||
<property name="alignment"> | |||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="4" column="0"> | |||||
<widget class="QLabel" name="label_7"> | |||||
<property name="text"> | |||||
<string>Copyright:</string> | |||||
</property> | |||||
<property name="alignment"> | |||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
<item row="5" column="0"> | |||||
<widget class="QLabel" name="label_8"> | |||||
<property name="text"> | |||||
<string>Unique ID:</string> | |||||
</property> | |||||
<property name="alignment"> | |||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> | |||||
</property> | |||||
</widget> | |||||
</item> | |||||
</layout> | |||||
</item> | |||||
</layout> | |||||
</widget> | |||||
</item> | |||||
<item row="3" column="0" colspan="2"> | |||||
<spacer name="verticalSpacer"> | |||||
<property name="orientation"> | |||||
<enum>Qt::Vertical</enum> | |||||
</property> | |||||
<property name="sizeHint" stdset="0"> | |||||
<size> | |||||
<width>20</width> | |||||
<height>40</height> | |||||
</size> | |||||
</property> | |||||
</spacer> | |||||
</item> | |||||
</layout> | </layout> | ||||
</widget> | </widget> | ||||
</widget> | </widget> | ||||
@@ -633,16 +864,7 @@ Plugin Name | |||||
<property name="spacing"> | <property name="spacing"> | ||||
<number>0</number> | <number>0</number> | ||||
</property> | </property> | ||||
<property name="leftMargin"> | |||||
<number>0</number> | |||||
</property> | |||||
<property name="topMargin"> | |||||
<number>0</number> | |||||
</property> | |||||
<property name="rightMargin"> | |||||
<number>0</number> | |||||
</property> | |||||
<property name="bottomMargin"> | |||||
<property name="margin"> | |||||
<number>0</number> | <number>0</number> | ||||
</property> | </property> | ||||
<item> | <item> | ||||
@@ -665,6 +887,7 @@ Plugin Name | |||||
<height>64</height> | <height>64</height> | ||||
</size> | </size> | ||||
</property> | </property> | ||||
<zorder>tabWidget</zorder> | |||||
</widget> | </widget> | ||||
</item> | </item> | ||||
</layout> | </layout> | ||||
@@ -20,50 +20,39 @@ | |||||
# Imports (Global) | # Imports (Global) | ||||
try: | try: | ||||
from PyQt5.QtWidgets import QApplication, QMainWindow | |||||
from PyQt5.QtCore import QTimer | |||||
from PyQt5.QtWidgets import QApplication | |||||
except: | except: | ||||
from PyQt4.QtGui import QApplication, QMainWindow | |||||
from PyQt4.QtCore import QTimer | |||||
from PyQt4.QtGui import QApplication | |||||
# ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
# Imports (Custom Stuff) | # Imports (Custom Stuff) | ||||
from carla_database import * | |||||
from carla_rack import * | |||||
from carla_host import * | |||||
from carla_rack import CarlaRackW | |||||
# ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
# Main Window | # Main Window | ||||
class CarlaMiniW(QMainWindow): | |||||
class CarlaMiniW(HostWindow): | |||||
def __init__(self, parent=None): | def __init__(self, parent=None): | ||||
QMainWindow.__init__(self, parent) | |||||
HostWindow.__init__(self, parent) | |||||
#self.ui = ui_carla.Ui_CarlaMainW() | #self.ui = ui_carla.Ui_CarlaMainW() | ||||
#self.ui.setupUi(self) | #self.ui.setupUi(self) | ||||
Carla.host.engine_init("JACK", "Carla") | Carla.host.engine_init("JACK", "Carla") | ||||
self.fRack = CarlaRackW(self) | |||||
self.setCentralWidget(self.fRack) | |||||
self.fContainer = CarlaRackW(self) | |||||
self.setCentralWidget(self.fContainer) | |||||
self.fIdleTimerFast = self.startTimer(50) | |||||
self.fIdleTimerSlow = self.startTimer(50*2) | |||||
self.init() | |||||
QTimer.singleShot(0, self.slot_pluginAdd) | QTimer.singleShot(0, self.slot_pluginAdd) | ||||
def closeEvent(self, event): | def closeEvent(self, event): | ||||
self.fIdleTimerFast = 0 | |||||
self.fIdleTimerSlow = 0 | |||||
Carla.host.engine_close() | Carla.host.engine_close() | ||||
QMainWindow.closeEvent(self, event) | |||||
def timerEvent(self, event): | |||||
if event.timerId() == self.fIdleTimerFast: | |||||
Carla.host.engine_idle() | |||||
self.fRack.idleFast() | |||||
elif event.timerId() == self.fIdleTimerSlow: | |||||
self.fRack.idleSlow() | |||||
QMainWindow.timerEvent(self, event) | |||||
HostWindow.closeEvent(self, event) | |||||
@pyqtSlot() | @pyqtSlot() | ||||
def slot_pluginAdd(self): | def slot_pluginAdd(self): | ||||
@@ -81,82 +70,7 @@ class CarlaMiniW(QMainWindow): | |||||
CustomMessageBox(self, QMessageBox.Critical, self.tr("Error"), self.tr("Failed to load plugin"), cString(Carla.host.get_last_error()), QMessageBox.Ok, QMessageBox.Ok) | CustomMessageBox(self, QMessageBox.Critical, self.tr("Error"), self.tr("Failed to load plugin"), cString(Carla.host.get_last_error()), QMessageBox.Ok, QMessageBox.Ok) | ||||
return | return | ||||
self.fRack.addPlugin(0) | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
def engineCallback(ptr, action, pluginId, value1, value2, value3, valueStr): | |||||
if pluginId < 0 or not Carla.gui: | |||||
return | |||||
#if action == CALLBACK_DEBUG: | |||||
#Carla.gui.emit(SIGNAL("DebugCallback(int, int, int, double, QString)"), pluginId, value1, value2, value3, cString(valueStr)) | |||||
#elif action == CALLBACK_PLUGIN_ADDED: | |||||
#Carla.gui.emit(SIGNAL("PluginAddedCallback(int)"), pluginId) | |||||
#elif action == CALLBACK_PLUGIN_REMOVED: | |||||
#Carla.gui.emit(SIGNAL("PluginRemovedCallback(int)"), pluginId) | |||||
#elif action == CALLBACK_PLUGIN_RENAMED: | |||||
#Carla.gui.emit(SIGNAL("PluginRenamedCallback(int, QString)"), pluginId, valueStr) | |||||
#elif action == CALLBACK_PARAMETER_VALUE_CHANGED: | |||||
#Carla.gui.emit(SIGNAL("ParameterValueChangedCallback(int, int, double)"), pluginId, value1, value3) | |||||
#elif action == CALLBACK_PARAMETER_DEFAULT_CHANGED: | |||||
#Carla.gui.emit(SIGNAL("ParameterDefaultChangedCallback(int, int, double)"), pluginId, value1, value3) | |||||
#elif action == CALLBACK_PARAMETER_MIDI_CHANNEL_CHANGED: | |||||
#Carla.gui.emit(SIGNAL("ParameterMidiChannelChangedCallback(int, int, int)"), pluginId, value1, value2) | |||||
#elif action == CALLBACK_PARAMETER_MIDI_CC_CHANGED: | |||||
#Carla.gui.emit(SIGNAL("ParameterMidiCcChangedCallback(int, int, int)"), pluginId, value1, value2) | |||||
#elif action == CALLBACK_PROGRAM_CHANGED: | |||||
#Carla.gui.emit(SIGNAL("ProgramChangedCallback(int, int)"), pluginId, value1) | |||||
#elif action == CALLBACK_MIDI_PROGRAM_CHANGED: | |||||
#Carla.gui.emit(SIGNAL("MidiProgramChangedCallback(int, int)"), pluginId, value1) | |||||
#elif action == CALLBACK_NOTE_ON: | |||||
#Carla.gui.emit(SIGNAL("NoteOnCallback(int, int, int, int)"), pluginId, value1, value2, value3) | |||||
#elif action == CALLBACK_NOTE_OFF: | |||||
#Carla.gui.emit(SIGNAL("NoteOffCallback(int, int, int)"), pluginId, value1, value2) | |||||
#elif action == CALLBACK_SHOW_GUI: | |||||
#Carla.gui.emit(SIGNAL("ShowGuiCallback(int, int)"), pluginId, value1) | |||||
#elif action == CALLBACK_UPDATE: | |||||
#Carla.gui.emit(SIGNAL("UpdateCallback(int)"), pluginId) | |||||
#elif action == CALLBACK_RELOAD_INFO: | |||||
#Carla.gui.emit(SIGNAL("ReloadInfoCallback(int)"), pluginId) | |||||
#elif action == CALLBACK_RELOAD_PARAMETERS: | |||||
#Carla.gui.emit(SIGNAL("ReloadParametersCallback(int)"), pluginId) | |||||
#elif action == CALLBACK_RELOAD_PROGRAMS: | |||||
#Carla.gui.emit(SIGNAL("ReloadProgramsCallback(int)"), pluginId) | |||||
#elif action == CALLBACK_RELOAD_ALL: | |||||
#Carla.gui.emit(SIGNAL("ReloadAllCallback(int)"), pluginId) | |||||
#elif action == CALLBACK_PATCHBAY_CLIENT_ADDED: | |||||
#Carla.gui.emit(SIGNAL("PatchbayClientAddedCallback(int, int, QString)"), value1, value2, cString(valueStr)) | |||||
#elif action == CALLBACK_PATCHBAY_CLIENT_REMOVED: | |||||
#Carla.gui.emit(SIGNAL("PatchbayClientRemovedCallback(int, QString)"), value1, cString(valueStr)) | |||||
#elif action == CALLBACK_PATCHBAY_CLIENT_RENAMED: | |||||
#Carla.gui.emit(SIGNAL("PatchbayClientRenamedCallback(int, QString)"), value1, cString(valueStr)) | |||||
#elif action == CALLBACK_PATCHBAY_PORT_ADDED: | |||||
#Carla.gui.emit(SIGNAL("PatchbayPortAddedCallback(int, int, int, QString)"), value1, value2, int(value3), cString(valueStr)) | |||||
#elif action == CALLBACK_PATCHBAY_PORT_REMOVED: | |||||
#Carla.gui.emit(SIGNAL("PatchbayPortRemovedCallback(int, int, QString)"), value1, value2, cString(valueStr)) | |||||
#elif action == CALLBACK_PATCHBAY_PORT_RENAMED: | |||||
#Carla.gui.emit(SIGNAL("PatchbayPortRenamedCallback(int, int, QString)"), value1, value2, cString(valueStr)) | |||||
#elif action == CALLBACK_PATCHBAY_CONNECTION_ADDED: | |||||
#Carla.gui.emit(SIGNAL("PatchbayConnectionAddedCallback(int, int, int)"), value1, value2, value3) | |||||
#elif action == CALLBACK_PATCHBAY_CONNECTION_REMOVED: | |||||
#Carla.gui.emit(SIGNAL("PatchbayConnectionRemovedCallback(int)"), value1) | |||||
#elif action == CALLBACK_PATCHBAY_ICON_CHANGED: | |||||
#Carla.gui.emit(SIGNAL("PatchbayIconChangedCallback(int, int)"), value1, value2) | |||||
#elif action == CALLBACK_BUFFER_SIZE_CHANGED: | |||||
#Carla.gui.emit(SIGNAL("BufferSizeChangedCallback(int)"), value1) | |||||
#elif action == CALLBACK_SAMPLE_RATE_CHANGED: | |||||
#Carla.gui.emit(SIGNAL("SampleRateChangedCallback(double)"), value3) | |||||
#elif action == CALLBACK_NSM_ANNOUNCE: | |||||
#Carla.gui.emit(SIGNAL("NSM_AnnounceCallback(QString)"), cString(valueStr)) | |||||
#elif action == CALLBACK_NSM_OPEN: | |||||
#Carla.gui.emit(SIGNAL("NSM_OpenCallback(QString)"), cString(valueStr)) | |||||
#elif action == CALLBACK_NSM_SAVE: | |||||
#Carla.gui.emit(SIGNAL("NSM_SaveCallback()")) | |||||
#elif action == CALLBACK_ERROR: | |||||
#Carla.gui.emit(SIGNAL("ErrorCallback(QString)"), cString(valueStr)) | |||||
#elif action == CALLBACK_QUIT: | |||||
#Carla.gui.emit(SIGNAL("QuitCallback()")) | |||||
self.fContainer.addPlugin(0) | |||||
# ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
# --------------- main ------------------ | # --------------- main ------------------ | ||||
@@ -179,67 +93,9 @@ if __name__ == '__main__': | |||||
Carla.host.set_engine_option(OPTION_PROCESS_NAME, 0, "carla") | Carla.host.set_engine_option(OPTION_PROCESS_NAME, 0, "carla") | ||||
Carla.host.set_engine_option(OPTION_PATH_RESOURCES, 0, libPath) | Carla.host.set_engine_option(OPTION_PATH_RESOURCES, 0, libPath) | ||||
# Set bridge paths | |||||
if carla_bridge_native: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_NATIVE, 0, carla_bridge_native) | |||||
if carla_bridge_posix32: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_POSIX32, 0, carla_bridge_posix32) | |||||
if carla_bridge_posix64: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_POSIX64, 0, carla_bridge_posix64) | |||||
if carla_bridge_win32: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_WIN32, 0, carla_bridge_win32) | |||||
if carla_bridge_win64: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_WIN64, 0, carla_bridge_win64) | |||||
if carla_bridge_lv2_external: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_EXTERNAL, 0, carla_bridge_lv2_external) | |||||
if WINDOWS: | |||||
if carla_bridge_lv2_windows: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_WINDOWS, 0, carla_bridge_lv2_windows) | |||||
if carla_bridge_vst_hwnd: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_VST_HWND, 0, carla_bridge_vst_hwnd) | |||||
elif MACOS: | |||||
if carla_bridge_lv2_cocoa: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_COCOA, 0, carla_bridge_lv2_cocoa) | |||||
if carla_bridge_vst_mac: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_VST_MAC, 0, carla_bridge_vst_mac) | |||||
else: | |||||
if carla_bridge_lv2_gtk2: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_GTK2, 0, carla_bridge_lv2_gtk2) | |||||
if carla_bridge_lv2_gtk3: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_GTK3, 0, carla_bridge_lv2_gtk3) | |||||
if carla_bridge_lv2_qt4: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_QT4, 0, carla_bridge_lv2_qt4) | |||||
if carla_bridge_lv2_qt5: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_QT5, 0, carla_bridge_lv2_qt5) | |||||
if carla_bridge_lv2_x11: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_X11, 0, carla_bridge_lv2_x11) | |||||
if carla_bridge_vst_x11: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_VST_X11, 0, carla_bridge_vst_x11) | |||||
# Create GUI and start engine | # Create GUI and start engine | ||||
Carla.gui = CarlaMiniW() | Carla.gui = CarlaMiniW() | ||||
# Only now we're ready to handle events | |||||
Carla.host.set_engine_callback(engineCallback) | |||||
# Set-up custom signal handling | |||||
setUpSignals() | |||||
# Show GUI | # Show GUI | ||||
Carla.gui.show() | Carla.gui.show() | ||||
@@ -116,9 +116,6 @@ class CarlaMainW(QMainWindow): | |||||
self.fClientName = "Carla" | self.fClientName = "Carla" | ||||
self.fSessionManagerName = "LADISH" if LADISH_APP_NAME else "" | self.fSessionManagerName = "LADISH" if LADISH_APP_NAME else "" | ||||
self.fLadspaRdfNeedsUpdate = True | |||||
self.fLadspaRdfList = [] | |||||
# ------------------------------------------------------------- | # ------------------------------------------------------------- | ||||
# Load Settings | # Load Settings | ||||
@@ -438,60 +435,6 @@ class CarlaMainW(QMainWindow): | |||||
Carla.host.remove_all_plugins() | Carla.host.remove_all_plugins() | ||||
def getExtraStuff(self, plugin): | |||||
ptype = plugin['type'] | |||||
if ptype == PLUGIN_LADSPA: | |||||
uniqueId = plugin['uniqueId'] | |||||
self.loadRDFs() | |||||
for rdfItem in self.fLadspaRdfList: | |||||
if rdfItem.UniqueID == uniqueId: | |||||
return pointer(rdfItem) | |||||
elif ptype == PLUGIN_DSSI: | |||||
if plugin['hints'] & PLUGIN_HAS_GUI: | |||||
gui = findDSSIGUI(plugin['binary'], plugin['name'], plugin['label']) | |||||
if gui: | |||||
return gui.encode("utf-8") | |||||
elif ptype in (PLUGIN_GIG, PLUGIN_SF2, PLUGIN_SFZ): | |||||
if plugin['name'].endswith(" (16 outputs)"): | |||||
# return a dummy non-null pointer | |||||
INTPOINTER = POINTER(c_int) | |||||
ptr = c_int(0x1) | |||||
addr = addressof(ptr) | |||||
return cast(addr, INTPOINTER) | |||||
return c_nullptr | |||||
def loadRDFs(self): | |||||
if not self.fLadspaRdfNeedsUpdate: | |||||
return | |||||
self.fLadspaRdfList = [] | |||||
self.fLadspaRdfNeedsUpdate = False | |||||
if not haveLRDF: | |||||
return | |||||
settingsDir = os.path.join(HOME, ".config", "falkTX") | |||||
frLadspaFile = os.path.join(settingsDir, "ladspa_rdf.db") | |||||
if os.path.exists(frLadspaFile): | |||||
frLadspa = open(frLadspaFile, 'r') | |||||
try: | |||||
self.fLadspaRdfList = ladspa_rdf.get_c_ladspa_rdfs(json.load(frLadspa)) | |||||
except: | |||||
pass | |||||
frLadspa.close() | |||||
def loadRDFsNeeded(self): | |||||
self.fLadspaRdfNeedsUpdate = True | |||||
def menuTransport(self, enabled): | def menuTransport(self, enabled): | ||||
self.ui.act_transport_play.setEnabled(enabled) | self.ui.act_transport_play.setEnabled(enabled) | ||||
self.ui.act_transport_stop.setEnabled(enabled) | self.ui.act_transport_stop.setEnabled(enabled) | ||||
@@ -0,0 +1,327 @@ | |||||
#!/usr/bin/env python3 | |||||
# -*- coding: utf-8 -*- | |||||
# Carla host code | |||||
# Copyright (C) 2011-2013 Filipe Coelho <falktx@falktx.com> | |||||
# | |||||
# This program is free software; you can redistribute it and/or | |||||
# modify it under the terms of the GNU General Public License as | |||||
# published by the Free Software Foundation; either version 2 of | |||||
# the License, or any later version. | |||||
# | |||||
# This program is distributed in the hope that it will be useful, | |||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
# GNU General Public License for more details. | |||||
# | |||||
# For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Imports (Global) | |||||
try: | |||||
from PyQt5.QtWidgets import QMainWindow | |||||
except: | |||||
from PyQt4.QtGui import QMainWindow | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Imports (Custom) | |||||
from carla_database import * | |||||
from carla_settings import * | |||||
from carla_widgets import * | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Dummy widget | |||||
class CarlaDummyW(object): | |||||
def __init__(self, parent): | |||||
object.__init__(self) | |||||
def addPlugin(self, pluginId): | |||||
pass | |||||
def removePlugin(self, pluginId): | |||||
pass | |||||
def removeAllPlugins(self): | |||||
pass | |||||
def idleFast(self): | |||||
pass | |||||
def idleSlow(self): | |||||
pass | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Host Window | |||||
class HostWindow(QMainWindow): | |||||
# signals | |||||
DebugCallback = pyqtSignal(int, int, int, float, str) | |||||
PluginAddedCallback = pyqtSignal(int) | |||||
PluginRemovedCallback = pyqtSignal(int) | |||||
PluginRenamedCallback = pyqtSignal(int, str) | |||||
ParameterValueChangedCallback = pyqtSignal(int, int, float) | |||||
ParameterDefaultChangedCallback = pyqtSignal(int, int, float) | |||||
ParameterMidiChannelChangedCallback = pyqtSignal(int, int, int) | |||||
ParameterMidiCcChangedCallback = pyqtSignal(int, int, int) | |||||
ProgramChangedCallback = pyqtSignal(int, int) | |||||
MidiProgramChangedCallback = pyqtSignal(int, int) | |||||
NoteOnCallback = pyqtSignal(int, int, int, int) | |||||
NoteOffCallback = pyqtSignal(int, int, int) | |||||
ShowGuiCallback = pyqtSignal(int, int) | |||||
UpdateCallback = pyqtSignal(int) | |||||
ReloadInfoCallback = pyqtSignal(int) | |||||
ReloadParametersCallback = pyqtSignal(int) | |||||
ReloadProgramsCallback = pyqtSignal(int) | |||||
ReloadAllCallback = pyqtSignal(int) | |||||
PatchbayClientAddedCallback = pyqtSignal(int, int, str) | |||||
PatchbayClientRemovedCallback = pyqtSignal(int, str) | |||||
PatchbayClientRenamedCallback = pyqtSignal(int, str) | |||||
PatchbayPortAddedCallback = pyqtSignal(int, int, int, str) | |||||
PatchbayPortRemovedCallback = pyqtSignal(int, int, str) | |||||
PatchbayPortRenamedCallback = pyqtSignal(int, int, str) | |||||
PatchbayConnectionAddedCallback = pyqtSignal(int, int, int) | |||||
PatchbayConnectionRemovedCallback = pyqtSignal(int) | |||||
PatchbayIconChangedCallback = pyqtSignal(int, int) | |||||
BufferSizeChangedCallback = pyqtSignal(int) | |||||
SampleRateChangedCallback = pyqtSignal(float) | |||||
NSM_AnnounceCallback = pyqtSignal(str) | |||||
NSM_OpenCallback = pyqtSignal(str) | |||||
NSM_SaveCallback = pyqtSignal() | |||||
ErrorCallback = pyqtSignal(str) | |||||
QuitCallback = pyqtSignal() | |||||
SIGTERM = pyqtSignal() | |||||
SIGUSR1 = pyqtSignal() | |||||
def __init__(self, parent): | |||||
QMainWindow.__init__(self, parent) | |||||
#self.ui = ui_carla_plugin.Ui_PluginWidget() | |||||
#self.ui.setupUi(self) | |||||
# ------------------------------------------------------------- | |||||
# Set bridge paths | |||||
if carla_bridge_native: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_NATIVE, 0, carla_bridge_native) | |||||
if carla_bridge_posix32: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_POSIX32, 0, carla_bridge_posix32) | |||||
if carla_bridge_posix64: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_POSIX64, 0, carla_bridge_posix64) | |||||
if carla_bridge_win32: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_WIN32, 0, carla_bridge_win32) | |||||
if carla_bridge_win64: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_WIN64, 0, carla_bridge_win64) | |||||
if carla_bridge_lv2_external: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_EXTERNAL, 0, carla_bridge_lv2_external) | |||||
if WINDOWS: | |||||
if carla_bridge_lv2_windows: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_WINDOWS, 0, carla_bridge_lv2_windows) | |||||
if carla_bridge_vst_hwnd: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_VST_HWND, 0, carla_bridge_vst_hwnd) | |||||
elif MACOS: | |||||
if carla_bridge_lv2_cocoa: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_COCOA, 0, carla_bridge_lv2_cocoa) | |||||
if carla_bridge_vst_mac: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_VST_MAC, 0, carla_bridge_vst_mac) | |||||
else: | |||||
if carla_bridge_lv2_gtk2: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_GTK2, 0, carla_bridge_lv2_gtk2) | |||||
if carla_bridge_lv2_gtk3: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_GTK3, 0, carla_bridge_lv2_gtk3) | |||||
if carla_bridge_lv2_qt4: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_QT4, 0, carla_bridge_lv2_qt4) | |||||
if carla_bridge_lv2_qt5: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_QT5, 0, carla_bridge_lv2_qt5) | |||||
if carla_bridge_lv2_x11: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_X11, 0, carla_bridge_lv2_x11) | |||||
if carla_bridge_vst_x11: | |||||
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_VST_X11, 0, carla_bridge_vst_x11) | |||||
# ------------------------------------------------------------- | |||||
# Set callback | |||||
Carla.host.set_engine_callback(EngineCallback) | |||||
# ------------------------------------------------------------- | |||||
# Set custom signal handling | |||||
setUpSignals() | |||||
# ------------------------------------------------------------- | |||||
# Internal stuff | |||||
self.fIdleTimerFast = 0 | |||||
self.fIdleTimerSlow = 0 | |||||
self.fLadspaRdfNeedsUpdate = True | |||||
self.fLadspaRdfList = [] | |||||
self.fContainer = CarlaDummyW(self) | |||||
# ------------------------------------------------------------- | |||||
def getExtraStuff(self, plugin): | |||||
ptype = plugin['type'] | |||||
if ptype == PLUGIN_LADSPA: | |||||
uniqueId = plugin['uniqueId'] | |||||
self.maybeLoadRDFs() | |||||
for rdfItem in self.fLadspaRdfList: | |||||
if rdfItem.UniqueID == uniqueId: | |||||
return pointer(rdfItem) | |||||
elif ptype in (PLUGIN_GIG, PLUGIN_SF2, PLUGIN_SFZ): | |||||
if plugin['name'].lower().endswith(" (16 outputs)"): | |||||
# return a dummy non-null pointer | |||||
INTPOINTER = POINTER(c_int) | |||||
int1 = c_int(0x1) | |||||
addr = addressof(int1) | |||||
return cast(addr, INTPOINTER) | |||||
return c_nullptr | |||||
def maybeLoadRDFs(self): | |||||
if not self.fLadspaRdfNeedsUpdate: | |||||
return | |||||
self.fLadspaRdfNeedsUpdate = False | |||||
self.fLadspaRdfList = [] | |||||
if not haveLRDF: | |||||
return | |||||
settingsDir = os.path.join(HOME, ".config", "falkTX") | |||||
frLadspaFile = os.path.join(settingsDir, "ladspa_rdf.db") | |||||
if os.path.exists(frLadspaFile): | |||||
frLadspa = open(frLadspaFile, 'r') | |||||
try: | |||||
self.fLadspaRdfList = ladspa_rdf.get_c_ladspa_rdfs(json.load(frLadspa)) | |||||
except: | |||||
pass | |||||
frLadspa.close() | |||||
def setLoadRDFsNeeded(self): | |||||
self.fLadspaRdfNeedsUpdate = True | |||||
def init(self): | |||||
self.fIdleTimerFast = self.startTimer(50) | |||||
self.fIdleTimerSlow = self.startTimer(50*2) | |||||
def timerEvent(self, event): | |||||
if event.timerId() == self.fIdleTimerFast: | |||||
Carla.host.engine_idle() | |||||
self.fContainer.idleFast() | |||||
elif event.timerId() == self.fIdleTimerSlow: | |||||
self.fContainer.idleSlow() | |||||
QMainWindow.timerEvent(self, event) | |||||
def closeEvent(self, event): | |||||
if self.fIdleTimerFast != 0: | |||||
self.killTimer(self.fIdleTimerFast) | |||||
self.fIdleTimerFast = 0 | |||||
if self.fIdleTimerSlow != 0: | |||||
self.killTimer(self.fIdleTimerSlow) | |||||
self.fIdleTimerSlow = 0 | |||||
QMainWindow.closeEvent(self, event) | |||||
# ------------------------------------------------------------------------------------------------------------ | |||||
# Engine callback | |||||
def EngineCallback(ptr, action, pluginId, value1, value2, value3, valueStr): | |||||
if pluginId < 0 or not Carla.gui: | |||||
return | |||||
if action == CALLBACK_DEBUG: | |||||
Carla.gui.DebugCallback.emit(pluginId, value1, value2, value3, cString(valueStr)) | |||||
elif action == CALLBACK_PLUGIN_ADDED: | |||||
Carla.gui.PluginAddedCallback.emit(pluginId) | |||||
elif action == CALLBACK_PLUGIN_REMOVED: | |||||
Carla.gui.PluginRemovedCallback.emit(pluginId) | |||||
elif action == CALLBACK_PLUGIN_RENAMED: | |||||
Carla.gui.PluginRenamedCallback.emit(pluginId, valueStr) | |||||
elif action == CALLBACK_PARAMETER_VALUE_CHANGED: | |||||
Carla.gui.ParameterValueChangedCallback.emit(pluginId, value1, value3) | |||||
elif action == CALLBACK_PARAMETER_DEFAULT_CHANGED: | |||||
Carla.gui.ParameterDefaultChangedCallback.emit(pluginId, value1, value3) | |||||
elif action == CALLBACK_PARAMETER_MIDI_CHANNEL_CHANGED: | |||||
Carla.gui.ParameterMidiChannelChangedCallback.emit(pluginId, value1, value2) | |||||
elif action == CALLBACK_PARAMETER_MIDI_CC_CHANGED: | |||||
Carla.gui.ParameterMidiCcChangedCallback.emit(pluginId, value1, value2) | |||||
elif action == CALLBACK_PROGRAM_CHANGED: | |||||
Carla.gui.ProgramChangedCallback.emit(pluginId, value1) | |||||
elif action == CALLBACK_MIDI_PROGRAM_CHANGED: | |||||
Carla.gui.MidiProgramChangedCallback.emit(pluginId, value1) | |||||
elif action == CALLBACK_NOTE_ON: | |||||
Carla.gui.NoteOnCallback.emit(pluginId, value1, value2, value3) | |||||
elif action == CALLBACK_NOTE_OFF: | |||||
Carla.gui.NoteOffCallback.emit(pluginId, value1, value2) | |||||
elif action == CALLBACK_SHOW_GUI: | |||||
Carla.gui.ShowGuiCallback.emit(pluginId, value1) | |||||
elif action == CALLBACK_UPDATE: | |||||
Carla.gui.UpdateCallback.emit(pluginId) | |||||
elif action == CALLBACK_RELOAD_INFO: | |||||
Carla.gui.ReloadInfoCallback.emit(pluginId) | |||||
elif action == CALLBACK_RELOAD_PARAMETERS: | |||||
Carla.gui.ReloadParametersCallback.emit(pluginId) | |||||
elif action == CALLBACK_RELOAD_PROGRAMS: | |||||
Carla.gui.ReloadProgramsCallback.emit(pluginId) | |||||
elif action == CALLBACK_RELOAD_ALL: | |||||
Carla.gui.ReloadAllCallback.emit(pluginId) | |||||
elif action == CALLBACK_PATCHBAY_CLIENT_ADDED: | |||||
Carla.gui.PatchbayClientAddedCallback.emit(value1, value2, cString(valueStr)) | |||||
elif action == CALLBACK_PATCHBAY_CLIENT_REMOVED: | |||||
Carla.gui.PatchbayClientRemovedCallback.emit(value1, cString(valueStr)) | |||||
elif action == CALLBACK_PATCHBAY_CLIENT_RENAMED: | |||||
Carla.gui.PatchbayClientRenamedCallback.emit(value1, cString(valueStr)) | |||||
elif action == CALLBACK_PATCHBAY_PORT_ADDED: | |||||
Carla.gui.PatchbayPortAddedCallback.emit(value1, value2, int(value3), cString(valueStr)) | |||||
elif action == CALLBACK_PATCHBAY_PORT_REMOVED: | |||||
Carla.gui.PatchbayPortRemovedCallback.emit(value1, value2, cString(valueStr)) | |||||
elif action == CALLBACK_PATCHBAY_PORT_RENAMED: | |||||
Carla.gui.PatchbayPortRenamedCallback.emit(value1, value2, cString(valueStr)) | |||||
elif action == CALLBACK_PATCHBAY_CONNECTION_ADDED: | |||||
Carla.gui.PatchbayConnectionAddedCallback.emit(value1, value2, value3) | |||||
elif action == CALLBACK_PATCHBAY_CONNECTION_REMOVED: | |||||
Carla.gui.PatchbayConnectionRemovedCallback.emit(value1) | |||||
elif action == CALLBACK_PATCHBAY_ICON_CHANGED: | |||||
Carla.gui.PatchbayIconChangedCallback.emit(value1, value2) | |||||
elif action == CALLBACK_BUFFER_SIZE_CHANGED: | |||||
Carla.gui.BufferSizeChangedCallback.emit(value1) | |||||
elif action == CALLBACK_SAMPLE_RATE_CHANGED: | |||||
Carla.gui.SampleRateChangedCallback.emit(value3) | |||||
elif action == CALLBACK_NSM_ANNOUNCE: | |||||
Carla.gui.NSM_AnnounceCallback.emit(cString(valueStr)) | |||||
elif action == CALLBACK_NSM_OPEN: | |||||
Carla.gui.NSM_OpenCallback.emit(cString(valueStr)) | |||||
elif action == CALLBACK_NSM_SAVE: | |||||
Carla.gui.NSM_SaveCallback.emit() | |||||
elif action == CALLBACK_ERROR: | |||||
Carla.gui.ErrorCallback.emit(cString(valueStr)) | |||||
elif action == CALLBACK_QUIT: | |||||
Carla.gui.QuitCallback.emit() |
@@ -133,9 +133,9 @@ class CarlaPatchbayW(QWidget): | |||||
painter.restore() | painter.restore() | ||||
# ------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------ | ||||
# ... | |||||
# Canvas callback | |||||
def canvasCallback(action, value1, value2, valueStr): | |||||
def CanvasCallback(action, value1, value2, valueStr): | |||||
if action == patchcanvas.ACTION_GROUP_INFO: | if action == patchcanvas.ACTION_GROUP_INFO: | ||||
pass | pass | ||||
@@ -94,21 +94,6 @@ class CarlaRackW(QListWidget): | |||||
""" % (col1, col2)) | """ % (col1, col2)) | ||||
# ------------------------------------------------------------- | # ------------------------------------------------------------- | ||||
# TESTING | |||||
#self.addPlugin(0) | |||||
#self.addPlugin(1) | |||||
#self.addPlugin(2) | |||||
#self.addPlugin(3) | |||||
#self.addPlugin(4) | |||||
#self.removePlugin(3) | |||||
#QTimer.singleShot(3000, self.testRemove) | |||||
#QTimer.singleShot(5000, self.removeAllPlugins) | |||||
def testRemove(self): | |||||
self.removePlugin(0) | |||||
def idleFast(self): | def idleFast(self): | ||||
for i in range(self.fPluginCount): | for i in range(self.fPluginCount): | ||||
@@ -639,8 +639,8 @@ class CarlaSettingsW(QDialog): | |||||
# ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
# TESTING | # TESTING | ||||
from PyQt5.QtWidgets import QApplication | |||||
app = QApplication(sys.argv) | |||||
gui = CarlaSettingsW(None, True) | |||||
gui.show() | |||||
app.exec_() | |||||
#from PyQt5.QtWidgets import QApplication | |||||
#app = QApplication(sys.argv) | |||||
#gui = CarlaSettingsW(None, True) | |||||
#gui.show() | |||||
#app.exec_() |
@@ -20,11 +20,11 @@ | |||||
# Imports (Global) | # Imports (Global) | ||||
try: | try: | ||||
from PyQt5.QtCore import QByteArray, QSettings | |||||
from PyQt5.QtCore import pyqtSignal, pyqtSlot, QByteArray, QSettings | |||||
from PyQt5.QtGui import QColor, QCursor, QFontMetrics, QPainter, QPainterPath | from PyQt5.QtGui import QColor, QCursor, QFontMetrics, QPainter, QPainterPath | ||||
from PyQt5.QtWidgets import QDialog, QFrame, QInputDialog, QLineEdit, QMenu, QVBoxLayout, QWidget | from PyQt5.QtWidgets import QDialog, QFrame, QInputDialog, QLineEdit, QMenu, QVBoxLayout, QWidget | ||||
except: | except: | ||||
from PyQt4.QtCore import QByteArray, QSettings | |||||
from PyQt4.QtCore import pyqtSignal, pyqtSlot, QByteArray, QSettings | |||||
from PyQt4.QtGui import QColor, QCursor, QFontMetrics, QPainter, QPainterPath | from PyQt4.QtGui import QColor, QCursor, QFontMetrics, QPainter, QPainterPath | ||||
from PyQt4.QtGui import QDialog, QFrame, QInputDialog, QLineEdit, QMenu, QVBoxLayout, QWidget | from PyQt4.QtGui import QDialog, QFrame, QInputDialog, QLineEdit, QMenu, QVBoxLayout, QWidget | ||||
@@ -424,6 +424,10 @@ class PluginEdit(QDialog): | |||||
self.ui.dial_b_right.setPixmap(4) | self.ui.dial_b_right.setPixmap(4) | ||||
self.ui.dial_b_right.setLabel("R") | self.ui.dial_b_right.setLabel("R") | ||||
self.ui.dial_pan.setCustomPaint(self.ui.dial_b_right.CUSTOM_PAINT_CARLA_R) # FIXME | |||||
self.ui.dial_pan.setPixmap(4) | |||||
self.ui.dial_pan.setLabel("Pan") | |||||
self.ui.keyboard.setMode(self.ui.keyboard.HORIZONTAL) | self.ui.keyboard.setMode(self.ui.keyboard.HORIZONTAL) | ||||
self.ui.keyboard.setOctaves(10) | self.ui.keyboard.setOctaves(10) | ||||
@@ -518,54 +522,47 @@ class PluginEdit(QDialog): | |||||
pluginType = self.fPluginInfo['type'] | pluginType = self.fPluginInfo['type'] | ||||
pluginHints = self.fPluginInfo['hints'] | pluginHints = self.fPluginInfo['hints'] | ||||
#if pluginType == PLUGIN_INTERNAL: | |||||
#self.ui.le_type.setText(self.tr("Internal")) | |||||
#elif pluginType == PLUGIN_LADSPA: | |||||
#self.ui.le_type.setText("LADSPA") | |||||
#elif pluginType == PLUGIN_DSSI: | |||||
#self.ui.le_type.setText("DSSI") | |||||
#elif pluginType == PLUGIN_LV2: | |||||
#self.ui.le_type.setText("LV2") | |||||
#elif pluginType == PLUGIN_VST: | |||||
#self.ui.le_type.setText("VST") | |||||
#elif pluginType == PLUGIN_AU: | |||||
#self.ui.le_type.setText("AU") | |||||
#elif pluginType == PLUGIN_CSOUND: | |||||
#self.ui.le_type.setText("CSOUND") | |||||
#elif pluginType == PLUGIN_GIG: | |||||
#self.ui.le_type.setText("GIG") | |||||
#elif pluginType == PLUGIN_SF2: | |||||
#self.ui.le_type.setText("SF2") | |||||
#elif pluginType == PLUGIN_SFZ: | |||||
#self.ui.le_type.setText("SFZ") | |||||
#else: | |||||
#self.ui.le_type.setText(self.tr("Unknown")) | |||||
#self.ui.le_name.setText(pluginName) | |||||
#self.ui.le_name.setToolTip(pluginName) | |||||
#self.ui.le_label.setText(self.fPluginInfo['label']) | |||||
#self.ui.le_label.setToolTip(self.fPluginInfo['label']) | |||||
#self.ui.le_maker.setText(self.fPluginInfo['maker']) | |||||
#self.ui.le_maker.setToolTip(self.fPluginInfo['maker']) | |||||
#self.ui.le_copyright.setText(self.fPluginInfo['copyright']) | |||||
#self.ui.le_copyright.setToolTip(self.fPluginInfo['copyright']) | |||||
#self.ui.le_unique_id.setText(str(self.fPluginInfo['uniqueId'])) | |||||
#self.ui.le_unique_id.setToolTip(str(self.fPluginInfo['uniqueId'])) | |||||
#self.ui.le_ains.setText(str(audioCountInfo['ins'])) | |||||
#self.ui.le_aouts.setText(str(audioCountInfo['outs'])) | |||||
#self.ui.le_params.setText(str(paramCountInfo['ins'])) | |||||
if pluginType == PLUGIN_INTERNAL: | |||||
self.ui.le_type.setText(self.tr("Internal")) | |||||
elif pluginType == PLUGIN_LADSPA: | |||||
self.ui.le_type.setText("LADSPA") | |||||
elif pluginType == PLUGIN_DSSI: | |||||
self.ui.le_type.setText("DSSI") | |||||
elif pluginType == PLUGIN_LV2: | |||||
self.ui.le_type.setText("LV2") | |||||
elif pluginType == PLUGIN_VST: | |||||
self.ui.le_type.setText("VST") | |||||
elif pluginType == PLUGIN_AU: | |||||
self.ui.le_type.setText("AU") | |||||
elif pluginType == PLUGIN_CSOUND: | |||||
self.ui.le_type.setText("CSOUND") | |||||
elif pluginType == PLUGIN_GIG: | |||||
self.ui.le_type.setText("GIG") | |||||
elif pluginType == PLUGIN_SF2: | |||||
self.ui.le_type.setText("SF2") | |||||
elif pluginType == PLUGIN_SFZ: | |||||
self.ui.le_type.setText("SFZ") | |||||
else: | |||||
self.ui.le_type.setText(self.tr("Unknown")) | |||||
self.ui.le_name.setText(pluginName) | |||||
self.ui.le_name.setToolTip(pluginName) | |||||
self.ui.le_label.setText(self.fPluginInfo['label']) | |||||
self.ui.le_label.setToolTip(self.fPluginInfo['label']) | |||||
self.ui.le_maker.setText(self.fPluginInfo['maker']) | |||||
self.ui.le_maker.setToolTip(self.fPluginInfo['maker']) | |||||
self.ui.le_copyright.setText(self.fPluginInfo['copyright']) | |||||
self.ui.le_copyright.setToolTip(self.fPluginInfo['copyright']) | |||||
self.ui.le_unique_id.setText(str(self.fPluginInfo['uniqueId'])) | |||||
self.ui.le_unique_id.setToolTip(str(self.fPluginInfo['uniqueId'])) | |||||
self.ui.label_plugin.setText("\n%s\n" % self.fPluginInfo['name']) | self.ui.label_plugin.setText("\n%s\n" % self.fPluginInfo['name']) | ||||
self.setWindowTitle(self.fPluginInfo['name']) | self.setWindowTitle(self.fPluginInfo['name']) | ||||
#if self.fPluginInfo['latency'] > 0: | |||||
#self.ui.le_latency.setText("%i samples" % self.fPluginInfo['latency']) | |||||
#else: | |||||
#self.ui.le_latency.setText(self.tr("None")) | |||||
self.ui.dial_drywet.setEnabled(pluginHints & PLUGIN_CAN_DRYWET) | self.ui.dial_drywet.setEnabled(pluginHints & PLUGIN_CAN_DRYWET) | ||||
self.ui.dial_vol.setEnabled(pluginHints & PLUGIN_CAN_VOLUME) | self.ui.dial_vol.setEnabled(pluginHints & PLUGIN_CAN_VOLUME) | ||||
self.ui.dial_b_left.setEnabled(pluginHints & PLUGIN_CAN_BALANCE) | self.ui.dial_b_left.setEnabled(pluginHints & PLUGIN_CAN_BALANCE) | ||||
self.ui.dial_b_right.setEnabled(pluginHints & PLUGIN_CAN_BALANCE) | self.ui.dial_b_right.setEnabled(pluginHints & PLUGIN_CAN_BALANCE) | ||||
self.ui.dial_pan.setEnabled(pluginHints & PLUGIN_CAN_PANNING) | |||||
self.ui.ch_fixed_buffer.setEnabled(self.fPluginInfo['optionsAvailable'] & PLUGIN_OPTION_FIXED_BUFFERS) | self.ui.ch_fixed_buffer.setEnabled(self.fPluginInfo['optionsAvailable'] & PLUGIN_OPTION_FIXED_BUFFERS) | ||||
self.ui.ch_fixed_buffer.setChecked(self.fPluginInfo['optionsEnabled'] & PLUGIN_OPTION_FIXED_BUFFERS) | self.ui.ch_fixed_buffer.setChecked(self.fPluginInfo['optionsEnabled'] & PLUGIN_OPTION_FIXED_BUFFERS) | ||||
@@ -587,10 +584,10 @@ class PluginEdit(QDialog): | |||||
self.ui.ch_send_all_sound_off.setChecked(self.fPluginInfo['optionsEnabled'] & PLUGIN_OPTION_SEND_ALL_SOUND_OFF) | self.ui.ch_send_all_sound_off.setChecked(self.fPluginInfo['optionsEnabled'] & PLUGIN_OPTION_SEND_ALL_SOUND_OFF) | ||||
if self.fPluginInfo['type'] != PLUGIN_VST: | if self.fPluginInfo['type'] != PLUGIN_VST: | ||||
self.ui.tab_programs.setCurrentIndex(1) | |||||
self.ui.sw_programs.setCurrentIndex(1) | |||||
# Show/hide keyboard | # Show/hide keyboard | ||||
showKeyboard = (self.fPluginInfo['category'] == PLUGIN_CATEGORY_SYNTH) != 0 or (midiCountInfo['ins'] > 0 < midiCountInfo['outs']) | |||||
showKeyboard = (self.fPluginInfo['category'] == PLUGIN_CATEGORY_SYNTH or midiCountInfo['ins'] > 0 < midiCountInfo['outs']) | |||||
self.ui.scrollArea.setEnabled(showKeyboard) | self.ui.scrollArea.setEnabled(showKeyboard) | ||||
self.ui.scrollArea.setVisible(showKeyboard) | self.ui.scrollArea.setVisible(showKeyboard) | ||||
@@ -807,6 +804,8 @@ class PluginEdit(QDialog): | |||||
self.ui.cb_midi_programs.blockSignals(False) | self.ui.cb_midi_programs.blockSignals(False) | ||||
self.ui.sw_programs.setEnabled(programCount > 0 or midiProgramCount > 0) | |||||
if self.fPluginInfo['type'] == PLUGIN_LV2: | if self.fPluginInfo['type'] == PLUGIN_LV2: | ||||
self.ui.b_load_state.setEnabled(programCount > 0) | self.ui.b_load_state.setEnabled(programCount > 0) | ||||
@@ -1264,7 +1263,7 @@ class PluginEdit(QDialog): | |||||
def _updateCtrlMidiProgram(self): | def _updateCtrlMidiProgram(self): | ||||
if self.fPluginInfo['type'] not in (PLUGIN_INTERNAL, PLUGIN_SF2): | if self.fPluginInfo['type'] not in (PLUGIN_INTERNAL, PLUGIN_SF2): | ||||
return | return | ||||
elif not self.fPluginInfo['hints'] & PLUGIN_IS_SYNTH: | |||||
elif self.fPluginInfo['category'] != PLUGIN_CATEGORY_SYNTH: | |||||
return | return | ||||
if self.fControlChannel < 0: | if self.fControlChannel < 0: | ||||