@@ -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() | |||