| @@ -271,6 +271,7 @@ RES = \ | |||
| bin/resources/pixmapkeyboard.py \ | |||
| bin/resources/resources_rc.py \ | |||
| bin/resources/ui_carla_about.py \ | |||
| bin/resources/ui_carla_about_juce.py \ | |||
| bin/resources/ui_carla_database.py \ | |||
| bin/resources/ui_carla_edit.py \ | |||
| bin/resources/ui_carla_host.py \ | |||
| @@ -309,6 +310,7 @@ bin/resources/%.py: source/%.py | |||
| UIs = \ | |||
| source/ui_carla_control.py \ | |||
| source/ui_carla_about.py \ | |||
| source/ui_carla_about_juce.py \ | |||
| source/ui_carla_database.py \ | |||
| source/ui_carla_edit.py \ | |||
| source/ui_carla_host.py \ | |||
| @@ -521,6 +523,7 @@ install: | |||
| $(LINK) $(PREFIX)/share/carla/pixmapkeyboard.py $(DESTDIR)$(PREFIX)/share/carla/resources/ | |||
| $(LINK) $(PREFIX)/share/carla/resources_rc.py $(DESTDIR)$(PREFIX)/share/carla/resources/ | |||
| $(LINK) $(PREFIX)/share/carla/ui_carla_about.py $(DESTDIR)$(PREFIX)/share/carla/resources/ | |||
| $(LINK) $(PREFIX)/share/carla/ui_carla_about_juce.py $(DESTDIR)$(PREFIX)/share/carla/resources/ | |||
| $(LINK) $(PREFIX)/share/carla/ui_carla_database.py $(DESTDIR)$(PREFIX)/share/carla/resources/ | |||
| $(LINK) $(PREFIX)/share/carla/ui_carla_edit.py $(DESTDIR)$(PREFIX)/share/carla/resources/ | |||
| $(LINK) $(PREFIX)/share/carla/ui_carla_host.py $(DESTDIR)$(PREFIX)/share/carla/resources/ | |||
| @@ -38,6 +38,7 @@ | |||
| <file>48x48/canvas.png</file> | |||
| <file>48x48/jack.png</file> | |||
| <file>48x48/juce.png</file> | |||
| <file>48x48/folder.png</file> | |||
| <file>48x48/carla.png</file> | |||
| @@ -0,0 +1,186 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <ui version="4.0"> | |||
| <class>JuceAboutW</class> | |||
| <widget class="QDialog" name="JuceAboutW"> | |||
| <property name="geometry"> | |||
| <rect> | |||
| <x>0</x> | |||
| <y>0</y> | |||
| <width>463</width> | |||
| <height>244</height> | |||
| </rect> | |||
| </property> | |||
| <property name="windowTitle"> | |||
| <string>About JUCE</string> | |||
| </property> | |||
| <layout class="QGridLayout" name="gridLayout"> | |||
| <item row="0" column="0"> | |||
| <layout class="QVBoxLayout" name="verticalLayout"> | |||
| <item> | |||
| <widget class="QLabel" name="icon"> | |||
| <property name="minimumSize"> | |||
| <size> | |||
| <width>48</width> | |||
| <height>48</height> | |||
| </size> | |||
| </property> | |||
| <property name="maximumSize"> | |||
| <size> | |||
| <width>48</width> | |||
| <height>48</height> | |||
| </size> | |||
| </property> | |||
| <property name="text"> | |||
| <string/> | |||
| </property> | |||
| <property name="pixmap"> | |||
| <pixmap resource="../resources.qrc">:/48x48/juce.png</pixmap> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item> | |||
| <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> | |||
| </item> | |||
| <item row="0" column="1"> | |||
| <layout class="QVBoxLayout" name="verticalLayout_2"> | |||
| <item> | |||
| <widget class="QLabel" name="l_text1"> | |||
| <property name="font"> | |||
| <font> | |||
| <pointsize>8</pointsize> | |||
| </font> | |||
| </property> | |||
| <property name="text"> | |||
| <string><b>About JUCE</b></string> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item> | |||
| <spacer name="verticalSpacer_3"> | |||
| <property name="orientation"> | |||
| <enum>Qt::Vertical</enum> | |||
| </property> | |||
| <property name="sizeType"> | |||
| <enum>QSizePolicy::Fixed</enum> | |||
| </property> | |||
| <property name="sizeHint" stdset="0"> | |||
| <size> | |||
| <width>10</width> | |||
| <height>10</height> | |||
| </size> | |||
| </property> | |||
| </spacer> | |||
| </item> | |||
| <item> | |||
| <widget class="QLabel" name="l_text2"> | |||
| <property name="text"> | |||
| <string>This program uses JUCE version 3.x.x.</string> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item> | |||
| <spacer name="verticalSpacer_4"> | |||
| <property name="orientation"> | |||
| <enum>Qt::Vertical</enum> | |||
| </property> | |||
| <property name="sizeType"> | |||
| <enum>QSizePolicy::Fixed</enum> | |||
| </property> | |||
| <property name="sizeHint" stdset="0"> | |||
| <size> | |||
| <width>10</width> | |||
| <height>10</height> | |||
| </size> | |||
| </property> | |||
| </spacer> | |||
| </item> | |||
| <item> | |||
| <widget class="QLabel" name="l_text3"> | |||
| <property name="text"> | |||
| <string>JUCE (Jules' Utility Class Extensions) is an all-encompassing C++ class library for developing cross-platform software. | |||
| It contains pretty much everything you're likely to need to create most applications, and is particularly well-suited for building highly-customised GUIs, and for handling graphics and sound. | |||
| Most JUCE modules are shared under the GNU Public Licence (GPLv2, v3, and the AGPLv3). | |||
| One module (the juce_core module) is permissively licensed under the ISC.</string> | |||
| </property> | |||
| <property name="wordWrap"> | |||
| <bool>true</bool> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| <item> | |||
| <spacer name="verticalSpacer_2"> | |||
| <property name="orientation"> | |||
| <enum>Qt::Vertical</enum> | |||
| </property> | |||
| <property name="sizeType"> | |||
| <enum>QSizePolicy::Expanding</enum> | |||
| </property> | |||
| </spacer> | |||
| </item> | |||
| </layout> | |||
| </item> | |||
| <item row="1" column="0" colspan="2"> | |||
| <widget class="QDialogButtonBox" name="buttonBox"> | |||
| <property name="orientation"> | |||
| <enum>Qt::Horizontal</enum> | |||
| </property> | |||
| <property name="standardButtons"> | |||
| <set>QDialogButtonBox::Ok</set> | |||
| </property> | |||
| </widget> | |||
| </item> | |||
| </layout> | |||
| </widget> | |||
| <resources> | |||
| <include location="../resources.qrc"/> | |||
| <include location="../resources.qrc"/> | |||
| </resources> | |||
| <connections> | |||
| <connection> | |||
| <sender>buttonBox</sender> | |||
| <signal>accepted()</signal> | |||
| <receiver>JuceAboutW</receiver> | |||
| <slot>accept()</slot> | |||
| <hints> | |||
| <hint type="sourcelabel"> | |||
| <x>248</x> | |||
| <y>254</y> | |||
| </hint> | |||
| <hint type="destinationlabel"> | |||
| <x>157</x> | |||
| <y>274</y> | |||
| </hint> | |||
| </hints> | |||
| </connection> | |||
| <connection> | |||
| <sender>buttonBox</sender> | |||
| <signal>rejected()</signal> | |||
| <receiver>JuceAboutW</receiver> | |||
| <slot>reject()</slot> | |||
| <hints> | |||
| <hint type="sourcelabel"> | |||
| <x>316</x> | |||
| <y>260</y> | |||
| </hint> | |||
| <hint type="destinationlabel"> | |||
| <x>286</x> | |||
| <y>274</y> | |||
| </hint> | |||
| </hints> | |||
| </connection> | |||
| </connections> | |||
| </ui> | |||
| @@ -175,7 +175,7 @@ | |||
| <x>0</x> | |||
| <y>0</y> | |||
| <width>688</width> | |||
| <height>19</height> | |||
| <height>17</height> | |||
| </rect> | |||
| </property> | |||
| <widget class="QMenu" name="menu_File"> | |||
| @@ -265,6 +265,7 @@ | |||
| <string>&Help</string> | |||
| </property> | |||
| <addaction name="act_help_about"/> | |||
| <addaction name="act_help_about_juce"/> | |||
| <addaction name="act_help_about_qt"/> | |||
| </widget> | |||
| <addaction name="menu_File"/> | |||
| @@ -646,6 +647,11 @@ | |||
| <string>Show Canvas &Keyboard</string> | |||
| </property> | |||
| </action> | |||
| <action name="act_help_about_juce"> | |||
| <property name="text"> | |||
| <string>About &JUCE</string> | |||
| </property> | |||
| </action> | |||
| </widget> | |||
| <customwidgets> | |||
| <customwidget> | |||
| @@ -353,6 +353,11 @@ typedef struct _CarlaTransportInfo { | |||
| */ | |||
| CARLA_EXPORT const char* carla_get_complete_license_text(); | |||
| /*! | |||
| * Get the juce version used in the current Carla build. | |||
| */ | |||
| CARLA_EXPORT const char* carla_get_juce_version(); | |||
| /*! | |||
| * Get all the supported file extensions in carla_load_file(). | |||
| * Returned string uses this syntax: | |||
| @@ -512,6 +512,23 @@ const char* carla_get_complete_license_text() | |||
| return retText; | |||
| } | |||
| const char* carla_get_juce_version() | |||
| { | |||
| carla_debug("carla_get_juce_version()"); | |||
| static CarlaString retVersion; | |||
| if (retVersion.isEmpty()) | |||
| { | |||
| if (const char* const version = juce::SystemStats::getJUCEVersion().toRawUTF8()) | |||
| retVersion = version+6; | |||
| else | |||
| retVersion = "3.0"; | |||
| } | |||
| return retVersion; | |||
| } | |||
| const char* carla_get_supported_file_extensions() | |||
| { | |||
| carla_debug("carla_get_supported_file_extensions()"); | |||
| @@ -1224,6 +1224,10 @@ class Host(object): | |||
| def get_complete_license_text(self): | |||
| return charPtrToString(self.lib.carla_get_complete_license_text()) | |||
| # Get the juce version used in the current Carla build. | |||
| def get_juce_version(self): | |||
| return charPtrToString(self.lib.carla_get_juce_version()) | |||
| # Get all the supported file extensions in carla_load_file(). | |||
| # Returned string uses this syntax: | |||
| # @code | |||
| @@ -1742,6 +1746,9 @@ class Host(object): | |||
| self.lib.carla_get_complete_license_text.argtypes = None | |||
| self.lib.carla_get_complete_license_text.restype = c_char_p | |||
| self.lib.carla_get_juce_version.argtypes = None | |||
| self.lib.carla_get_juce_version.restype = c_char_p | |||
| self.lib.carla_get_supported_file_extensions.argtypes = None | |||
| self.lib.carla_get_supported_file_extensions.restype = c_char_p | |||
| @@ -179,6 +179,7 @@ class HostWindow(QMainWindow): | |||
| self.ui.act_file_quit.setMenuRole(QAction.QuitRole) | |||
| self.ui.act_settings_configure.setMenuRole(QAction.PreferencesRole) | |||
| self.ui.act_help_about.setMenuRole(QAction.AboutRole) | |||
| self.ui.act_help_about_juce.setMenuRole(QAction.AboutQtRole) | |||
| self.ui.act_help_about_qt.setMenuRole(QAction.AboutQtRole) | |||
| self.ui.menu_Settings.setTitle("Panels") | |||
| #self.ui.menu_Help.hide() | |||
| @@ -306,6 +307,7 @@ class HostWindow(QMainWindow): | |||
| self.ui.act_transport_forwards.triggered.connect(self.slot_transportForwards) | |||
| self.ui.act_help_about.triggered.connect(self.slot_aboutCarla) | |||
| self.ui.act_help_about_juce.triggered.connect(self.slot_aboutJuce) | |||
| self.ui.act_help_about_qt.triggered.connect(self.slot_aboutQt) | |||
| self.ui.cb_disk.currentIndexChanged.connect(self.slot_diskFolderChanged) | |||
| @@ -1007,6 +1009,10 @@ class HostWindow(QMainWindow): | |||
| def slot_aboutCarla(self): | |||
| CarlaAboutW(self).exec_() | |||
| @pyqtSlot() | |||
| def slot_aboutJuce(self): | |||
| JuceAboutW(self).exec_() | |||
| @pyqtSlot() | |||
| def slot_aboutQt(self): | |||
| QApplication.instance().aboutQt() | |||
| @@ -37,6 +37,7 @@ else: | |||
| # Imports (Custom) | |||
| import ui_carla_about | |||
| import ui_carla_about_juce | |||
| import ui_carla_edit | |||
| import ui_carla_parameter | |||
| @@ -120,7 +121,6 @@ class CarlaAboutW(QDialog): | |||
| self.ui.l_extended.hide() | |||
| self.ui.tabWidget.removeTab(1) | |||
| self.ui.tabWidget.removeTab(1) | |||
| self.adjustSize() | |||
| else: | |||
| self.ui.l_extended.setText(gCarla.host.get_complete_license_text()) | |||
| @@ -188,6 +188,27 @@ class CarlaAboutW(QDialog): | |||
| "</ul>")) | |||
| self.ui.l_vst.setText(self.tr("<p>About 85% complete (missing vst bank/presets and some minor stuff)</p>")) | |||
| self.adjustSize() | |||
| self.setFixedSize(self.size()) | |||
| def done(self, r): | |||
| QDialog.done(self, r) | |||
| self.close() | |||
| # ------------------------------------------------------------------------------------------------------------ | |||
| # JUCE About dialog | |||
| class JuceAboutW(QDialog): | |||
| def __init__(self, parent): | |||
| QDialog.__init__(self, parent) | |||
| self.ui = ui_carla_about_juce.Ui_JuceAboutW() | |||
| self.ui.setupUi(self) | |||
| self.ui.l_text2.setText(self.tr("This program uses JUCE version %s." % (gCarla.host.get_juce_version() if gCarla.host is not None else "3.0"))) | |||
| self.adjustSize() | |||
| self.setFixedSize(self.size()) | |||
| def done(self, r): | |||
| QDialog.done(self, r) | |||
| self.close() | |||