| @@ -467,6 +467,8 @@ ifeq ($(HAVE_PYQT),true) | |||||
| install -d $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps | install -d $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps | ||||
| install -d $(DESTDIR)$(DATADIR)/mime/packages | install -d $(DESTDIR)$(DATADIR)/mime/packages | ||||
| install -d $(DESTDIR)$(DATADIR)/carla/resources/translations | install -d $(DESTDIR)$(DATADIR)/carla/resources/translations | ||||
| install -d $(DESTDIR)$(DATADIR)/carla/common | |||||
| install -d $(DESTDIR)$(DATADIR)/carla/dialogs | |||||
| install -d $(DESTDIR)$(DATADIR)/carla/modgui | install -d $(DESTDIR)$(DATADIR)/carla/modgui | ||||
| install -d $(DESTDIR)$(DATADIR)/carla/patchcanvas | install -d $(DESTDIR)$(DATADIR)/carla/patchcanvas | ||||
| install -d $(DESTDIR)$(DATADIR)/carla/pluginlist | install -d $(DESTDIR)$(DATADIR)/carla/pluginlist | ||||
| @@ -620,6 +622,14 @@ endif | |||||
| source/frontend/*.py \ | source/frontend/*.py \ | ||||
| $(DESTDIR)$(DATADIR)/carla/ | $(DESTDIR)$(DATADIR)/carla/ | ||||
| install -m 644 \ | |||||
| source/frontend/common/*.py \ | |||||
| $(DESTDIR)$(DATADIR)/carla/common/ | |||||
| install -m 644 \ | |||||
| source/frontend/dialogs/*.py \ | |||||
| $(DESTDIR)$(DATADIR)/carla/dialogs/ | |||||
| install -m 644 \ | install -m 644 \ | ||||
| source/frontend/modgui/*.py \ | source/frontend/modgui/*.py \ | ||||
| $(DESTDIR)$(DATADIR)/carla/modgui/ | $(DESTDIR)$(DATADIR)/carla/modgui/ | ||||
| @@ -704,6 +714,8 @@ endif | |||||
| install -m 644 resources/scalable/carla-control.svg $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps | install -m 644 resources/scalable/carla-control.svg $(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps | ||||
| # Install resources (re-use python files) | # Install resources (re-use python files) | ||||
| $(LINK) ../common $(DESTDIR)$(DATADIR)/carla/resources | |||||
| $(LINK) ../dialogs $(DESTDIR)$(DATADIR)/carla/resources | |||||
| $(LINK) ../modgui $(DESTDIR)$(DATADIR)/carla/resources | $(LINK) ../modgui $(DESTDIR)$(DATADIR)/carla/resources | ||||
| $(LINK) ../patchcanvas $(DESTDIR)$(DATADIR)/carla/resources | $(LINK) ../patchcanvas $(DESTDIR)$(DATADIR)/carla/resources | ||||
| $(LINK) ../pluginlist $(DESTDIR)$(DATADIR)/carla/resources | $(LINK) ../pluginlist $(DESTDIR)$(DATADIR)/carla/resources | ||||
| @@ -722,7 +734,6 @@ endif | |||||
| $(LINK) ../externalui.py $(DESTDIR)$(DATADIR)/carla/resources | $(LINK) ../externalui.py $(DESTDIR)$(DATADIR)/carla/resources | ||||
| $(LINK) ../resources_rc.py $(DESTDIR)$(DATADIR)/carla/resources | $(LINK) ../resources_rc.py $(DESTDIR)$(DATADIR)/carla/resources | ||||
| $(LINK) ../ui_carla_about.py $(DESTDIR)$(DATADIR)/carla/resources | $(LINK) ../ui_carla_about.py $(DESTDIR)$(DATADIR)/carla/resources | ||||
| $(LINK) ../ui_carla_about_juce.py $(DESTDIR)$(DATADIR)/carla/resources | |||||
| $(LINK) ../ui_carla_edit.py $(DESTDIR)$(DATADIR)/carla/resources | $(LINK) ../ui_carla_edit.py $(DESTDIR)$(DATADIR)/carla/resources | ||||
| $(LINK) ../ui_carla_host.py $(DESTDIR)$(DATADIR)/carla/resources | $(LINK) ../ui_carla_host.py $(DESTDIR)$(DATADIR)/carla/resources | ||||
| $(LINK) ../ui_carla_parameter.py $(DESTDIR)$(DATADIR)/carla/resources | $(LINK) ../ui_carla_parameter.py $(DESTDIR)$(DATADIR)/carla/resources | ||||
| @@ -24,6 +24,7 @@ BUILD_CXX_FLAGS += -Iutils | |||||
| BUILD_CXX_FLAGS += -I../backend | BUILD_CXX_FLAGS += -I../backend | ||||
| BUILD_CXX_FLAGS += -I../includes | BUILD_CXX_FLAGS += -I../includes | ||||
| BUILD_CXX_FLAGS += -I../modules | |||||
| BUILD_CXX_FLAGS += -I../utils | BUILD_CXX_FLAGS += -I../utils | ||||
| # --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
| @@ -46,6 +47,15 @@ else | |||||
| $(error Trying to build frontend without Qt5, cannot continue) | $(error Trying to build frontend without Qt5, cannot continue) | ||||
| endif | endif | ||||
| QT5_LINK_FLAGS += -L$(BINDIR) -lcarla_utils | |||||
| ifeq ($(MACOS),true) | |||||
| QT5_LINK_FLAGS += -install_name @rpath/libcarla_frontend.dylib | |||||
| # FIXME this does not work: -Wl,-rpath,@loader_path | |||||
| else | |||||
| QT5_LINK_FLAGS += -Wl,-rpath,'$${ORIGIN}' | |||||
| endif | |||||
| # --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
| # Translations | # Translations | ||||
| @@ -57,7 +67,8 @@ QMs = $(patsubst %,translations/carla_%.qm,$(I18N_LANGUAGES)) | |||||
| CPP_FILES = \ | CPP_FILES = \ | ||||
| carla_frontend.cpp \ | carla_frontend.cpp \ | ||||
| pluginlist/jackappdialog.cpp | |||||
| dialogs/aboutjucedialog.cpp \ | |||||
| dialogs/jackappdialog.cpp | |||||
| OBJS = $(CPP_FILES:%=$(OBJDIR)/%.o) | OBJS = $(CPP_FILES:%=$(OBJDIR)/%.o) | ||||
| @@ -89,7 +100,6 @@ RES = \ | |||||
| $(BINDIR)/resources/xycontroller-ui \ | $(BINDIR)/resources/xycontroller-ui \ | ||||
| $(BINDIR)/resources/resources_rc.py \ | $(BINDIR)/resources/resources_rc.py \ | ||||
| $(BINDIR)/resources/ui_carla_about.py \ | $(BINDIR)/resources/ui_carla_about.py \ | ||||
| $(BINDIR)/resources/ui_carla_about_juce.py \ | |||||
| $(BINDIR)/resources/ui_carla_edit.py \ | $(BINDIR)/resources/ui_carla_edit.py \ | ||||
| $(BINDIR)/resources/ui_carla_host.py \ | $(BINDIR)/resources/ui_carla_host.py \ | ||||
| $(BINDIR)/resources/ui_carla_osc_connect.py \ | $(BINDIR)/resources/ui_carla_osc_connect.py \ | ||||
| @@ -116,7 +126,8 @@ endif | |||||
| # --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
| # UI code | # UI code | ||||
| UI_FILES = $(wildcard pluginlist/*.ui) | |||||
| UI_FILES = $(wildcard dialogs/*.ui) | |||||
| UI_FILES += $(wildcard pluginlist/*.ui) | |||||
| UIs = $(UI_FILES:%.ui=%_ui.hpp) | UIs = $(UI_FILES:%.ui=%_ui.hpp) | ||||
| UIs += $(UI_FILES:%.ui=%_ui.py) | UIs += $(UI_FILES:%.ui=%_ui.py) | ||||
| @@ -124,7 +135,6 @@ UIs += $(UI_FILES:%.ui=%_ui.py) | |||||
| # old stuff, not yet converted | # old stuff, not yet converted | ||||
| UIs += \ | UIs += \ | ||||
| ui_carla_about.py \ | ui_carla_about.py \ | ||||
| ui_carla_about_juce.py \ | |||||
| ui_carla_edit.py \ | ui_carla_edit.py \ | ||||
| ui_carla_host.py \ | ui_carla_host.py \ | ||||
| ui_carla_osc_connect.py \ | ui_carla_osc_connect.py \ | ||||
| @@ -176,6 +186,10 @@ $(BINDIR)/libcarla_frontend$(LIB_EXT): $(OBJS) $(LIBS) | |||||
| -@mkdir -p $(BINDIR) | -@mkdir -p $(BINDIR) | ||||
| @echo "Linking libcarla_frontend$(LIB_EXT)" | @echo "Linking libcarla_frontend$(LIB_EXT)" | ||||
| $(SILENT)$(CXX) $(OBJS) $(BUILD_CXX_FLAGS) $(QT5_LINK_FLAGS) $(SHARED) -o $@ | $(SILENT)$(CXX) $(OBJS) $(BUILD_CXX_FLAGS) $(QT5_LINK_FLAGS) $(SHARED) -o $@ | ||||
| ifeq ($(MACOS),true) | |||||
| # FIXME this does not work: -Wl,-rpath,@loader_path | |||||
| $(SILENT)install_name_tool -change ../../../bin/libcarla_utils.dylib @loader_path/libcarla_utils.dylib $@ | |||||
| endif | |||||
| $(OBJDIR)/%.cpp.o: %.cpp $(UIs) | $(OBJDIR)/%.cpp.o: %.cpp $(UIs) | ||||
| -@mkdir -p $(shell dirname $@) | -@mkdir -p $(shell dirname $@) | ||||
| @@ -189,6 +203,7 @@ $(OBJDIR)/%.cpp.o: %.cpp $(UIs) | |||||
| clean: | clean: | ||||
| rm -rf $(BINDIR)/libcarla_frontend$(LIB_EXT) $(UIs) $(RES) $(QMs) __pycache__ *.pyc | rm -rf $(BINDIR)/libcarla_frontend$(LIB_EXT) $(UIs) $(RES) $(QMs) __pycache__ *.pyc | ||||
| # old files | # old files | ||||
| rm -f ui_carla_about_juce.py | |||||
| rm -f ui_carla_add_jack.py | rm -f ui_carla_add_jack.py | ||||
| rm -f ui_carla_database.py | rm -f ui_carla_database.py | ||||
| rm -f ui_carla_refresh.py | rm -f ui_carla_refresh.py | ||||
| @@ -198,17 +213,6 @@ debug: | |||||
| # --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
| tests: pluginlist/jackappdialog$(APP_EXT) | |||||
| # $(UI_FILES:%.ui=%$(APP_EXT)) | |||||
| pluginlist/jackappdialog$(APP_EXT): pluginlist/jackappdialog.cpp pluginlist/jackappdialog.ui pluginlist/jackappdialog_ui.hpp | |||||
| $(CXX) $< $(BUILD_CXX_FLAGS) $(QT5_LINK_FLAGS) -o $@ | |||||
| pluginlist/pluginlistdialog$(APP_EXT): pluginlist/pluginlistdialog.cpp pluginlist/pluginlistdialog.ui pluginlist/pluginlistdialog_ui.hpp | |||||
| $(CXX) $< $(BUILD_CXX_FLAGS) $(QT5_LINK_FLAGS) -o $@ | |||||
| # --------------------------------------------------------------------------------------------------------------------- | |||||
| lint: | lint: | ||||
| pylint \ | pylint \ | ||||
| --extension-pkg-whitelist=PyQt5 \ | --extension-pkg-whitelist=PyQt5 \ | ||||
| @@ -20,9 +20,7 @@ | |||||
| # Imports (Global) | # Imports (Global) | ||||
| from abc import abstractmethod | from abc import abstractmethod | ||||
| from platform import architecture | |||||
| from struct import pack | from struct import pack | ||||
| from sys import platform, maxsize | |||||
| # --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
| # Imports (ctypes) | # Imports (ctypes) | ||||
| @@ -34,10 +32,12 @@ from ctypes import ( | |||||
| CDLL, CFUNCTYPE, RTLD_GLOBAL, RTLD_LOCAL, POINTER | CDLL, CFUNCTYPE, RTLD_GLOBAL, RTLD_LOCAL, POINTER | ||||
| ) | ) | ||||
| # --------------------------------------------------------------------------------------------------------------------- | |||||
| # 64bit check | |||||
| # ------------------------------------------------------------------------------------------------------------ | |||||
| # Imports (Custom) | |||||
| kIs64bit = bool(architecture()[0] == "64bit" and maxsize > 2**32) | |||||
| from common import ( | |||||
| kIs64bit, HAIKU, LINUX, MACOS, WINDOWS, VERSION | |||||
| ) | |||||
| # --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
| # Define custom types | # Define custom types | ||||
| @@ -45,35 +45,6 @@ kIs64bit = bool(architecture()[0] == "64bit" and maxsize > 2**32) | |||||
| c_enum = c_int | c_enum = c_int | ||||
| c_uintptr = c_uint64 if kIs64bit else c_uint32 | c_uintptr = c_uint64 if kIs64bit else c_uint32 | ||||
| # --------------------------------------------------------------------------------------------------------------------- | |||||
| # Set Platform | |||||
| if platform == "darwin": | |||||
| HAIKU = False | |||||
| LINUX = False | |||||
| MACOS = True | |||||
| WINDOWS = False | |||||
| elif "haiku" in platform: | |||||
| HAIKU = True | |||||
| LINUX = False | |||||
| MACOS = False | |||||
| WINDOWS = False | |||||
| elif "linux" in platform: | |||||
| HAIKU = False | |||||
| LINUX = True | |||||
| MACOS = False | |||||
| WINDOWS = False | |||||
| elif platform in ("win32", "win64", "cygwin"): | |||||
| HAIKU = False | |||||
| LINUX = False | |||||
| MACOS = False | |||||
| WINDOWS = True | |||||
| else: | |||||
| HAIKU = False | |||||
| LINUX = False | |||||
| MACOS = False | |||||
| WINDOWS = False | |||||
| # --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
| # Convert a ctypes c_char_p into a python string | # Convert a ctypes c_char_p into a python string | ||||
| @@ -60,11 +60,18 @@ class CarlaFrontendLib(): | |||||
| def __init__(self, filename): | def __init__(self, filename): | ||||
| self.lib = cdll.LoadLibrary(filename) | self.lib = cdll.LoadLibrary(filename) | ||||
| self.lib.carla_frontend_createAndExecAboutJuceW.argtypes = (c_void_p,) | |||||
| self.lib.carla_frontend_createAndExecAboutJuceW.restype = None | |||||
| self.lib.carla_frontend_createAndExecJackApplicationW.argtypes = (c_void_p, c_char_p) | self.lib.carla_frontend_createAndExecJackApplicationW.argtypes = (c_void_p, c_char_p) | ||||
| self.lib.carla_frontend_createAndExecJackApplicationW.restype = POINTER(JackApplicationDialogResults) | self.lib.carla_frontend_createAndExecJackApplicationW.restype = POINTER(JackApplicationDialogResults) | ||||
| # -------------------------------------------------------------------------------------------------------- | # -------------------------------------------------------------------------------------------------------- | ||||
| def createAndExecAboutJuceW(self, parent): | |||||
| # FIXME cast(c_void_p, voidptr(parent)) | |||||
| self.lib.carla_frontend_createAndExecAboutJuceW(None) | |||||
| def createAndExecJackApplicationW(self, parent, projectFilename): | def createAndExecJackApplicationW(self, parent, projectFilename): | ||||
| # FIXME cast(c_void_p, voidptr(parent)) | # FIXME cast(c_void_p, voidptr(parent)) | ||||
| return structToDictOrNull(self.lib.carla_frontend_createAndExecJackApplicationW(None, projectFilename.encode("utf-8"))) | return structToDictOrNull(self.lib.carla_frontend_createAndExecJackApplicationW(None, projectFilename.encode("utf-8"))) | ||||
| @@ -62,7 +62,7 @@ from carla_utils import * | |||||
| from carla_widgets import * | from carla_widgets import * | ||||
| from patchcanvas import patchcanvas | from patchcanvas import patchcanvas | ||||
| from pluginlist import PluginDatabaseW, JackApplicationW | |||||
| from pluginlist import PluginDatabaseW | |||||
| from widgets.digitalpeakmeter import DigitalPeakMeter | from widgets.digitalpeakmeter import DigitalPeakMeter | ||||
| from widgets.pixmapkeyboard import PixmapKeyboardHArea | from widgets.pixmapkeyboard import PixmapKeyboardHArea | ||||
| @@ -2109,7 +2109,7 @@ class HostWindow(QMainWindow): | |||||
| @pyqtSlot() | @pyqtSlot() | ||||
| def slot_aboutJuce(self): | def slot_aboutJuce(self): | ||||
| JuceAboutW(self.fParentOrSelf).exec_() | |||||
| gCarla.felib.createAndExecAboutJuceW(self.fParentOrSelf) | |||||
| @pyqtSlot() | @pyqtSlot() | ||||
| def slot_aboutQt(self): | def slot_aboutQt(self): | ||||
| @@ -47,7 +47,6 @@ from PyQt5.QtWidgets import QFileDialog, QMessageBox | |||||
| # Imports (Custom) | # Imports (Custom) | ||||
| from carla_backend import ( | from carla_backend import ( | ||||
| kIs64bit, HAIKU, LINUX, MACOS, WINDOWS, | |||||
| MAX_DEFAULT_PARAMETERS, | MAX_DEFAULT_PARAMETERS, | ||||
| ENGINE_PROCESS_MODE_MULTIPLE_CLIENTS, | ENGINE_PROCESS_MODE_MULTIPLE_CLIENTS, | ||||
| ENGINE_PROCESS_MODE_PATCHBAY, | ENGINE_PROCESS_MODE_PATCHBAY, | ||||
| @@ -55,6 +54,8 @@ from carla_backend import ( | |||||
| ENGINE_TRANSPORT_MODE_JACK | ENGINE_TRANSPORT_MODE_JACK | ||||
| ) | ) | ||||
| from common import kIs64bit, HAIKU, LINUX, MACOS, WINDOWS, VERSION | |||||
| # ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
| # Config | # Config | ||||
| @@ -68,11 +69,6 @@ X_DATADIR_X = None | |||||
| if WINDOWS: | if WINDOWS: | ||||
| WINDIR = os.getenv("WINDIR") | WINDIR = os.getenv("WINDIR") | ||||
| # ------------------------------------------------------------------------------------------------------------ | |||||
| # Set Version | |||||
| VERSION = "2.6.0-alpha1" | |||||
| # ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
| # Set TMP | # Set TMP | ||||
| @@ -32,7 +32,6 @@ from PyQt5.QtWidgets import QDialog, QFileDialog, QInputDialog, QMenu, QMessageB | |||||
| # Imports (Custom) | # Imports (Custom) | ||||
| import ui_carla_about | import ui_carla_about | ||||
| import ui_carla_about_juce | |||||
| import ui_carla_edit | import ui_carla_edit | ||||
| import ui_carla_parameter | import ui_carla_parameter | ||||
| @@ -239,31 +238,6 @@ class CarlaAboutW(QDialog): | |||||
| if MACOS: | if MACOS: | ||||
| self.setWindowModality(Qt.WindowModal) | self.setWindowModality(Qt.WindowModal) | ||||
| # ------------------------------------------------------------------------------------------------------------ | |||||
| # 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.utils.get_juce_version())) | |||||
| self.adjustSize() | |||||
| self.setFixedSize(self.size()) | |||||
| flags = self.windowFlags() | |||||
| flags &= ~Qt.WindowContextHelpButtonHint | |||||
| if WINDOWS: | |||||
| flags |= Qt.MSWindowsFixedSizeDialogHint | |||||
| self.setWindowFlags(flags) | |||||
| if MACOS: | |||||
| self.setWindowModality(Qt.WindowModal) | |||||
| # ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
| # Plugin Parameter | # Plugin Parameter | ||||
| @@ -0,0 +1,64 @@ | |||||
| #!/usr/bin/env python3 | |||||
| # -*- coding: utf-8 -*- | |||||
| # Common Carla code | |||||
| # Copyright (C) 2011-2022 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) | |||||
| from platform import architecture | |||||
| from sys import platform, maxsize | |||||
| # --------------------------------------------------------------------------------------------------------------------- | |||||
| # Set Version | |||||
| VERSION = "2.6.0-alpha1" | |||||
| # --------------------------------------------------------------------------------------------------------------------- | |||||
| # 64bit check | |||||
| kIs64bit = bool(architecture()[0] == "64bit" and maxsize > 2**32) | |||||
| # --------------------------------------------------------------------------------------------------------------------- | |||||
| # Set Platform | |||||
| if platform == "darwin": | |||||
| HAIKU = False | |||||
| LINUX = False | |||||
| MACOS = True | |||||
| WINDOWS = False | |||||
| elif "haiku" in platform: | |||||
| HAIKU = True | |||||
| LINUX = False | |||||
| MACOS = False | |||||
| WINDOWS = False | |||||
| elif "linux" in platform: | |||||
| HAIKU = False | |||||
| LINUX = True | |||||
| MACOS = False | |||||
| WINDOWS = False | |||||
| elif platform in ("win32", "win64", "cygwin"): | |||||
| HAIKU = False | |||||
| LINUX = False | |||||
| MACOS = False | |||||
| WINDOWS = True | |||||
| else: | |||||
| HAIKU = False | |||||
| LINUX = False | |||||
| MACOS = False | |||||
| WINDOWS = False | |||||
| # --------------------------------------------------------------------------------------------------------------------- | |||||
| @@ -0,0 +1,20 @@ | |||||
| #!/usr/bin/env python3 | |||||
| # -*- coding: utf-8 -*- | |||||
| # Carla plugin host | |||||
| # Copyright (C) 2011-2022 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. | |||||
| from .aboutjucedialog import AboutJuceW | |||||
| from .jackappdialog import JackApplicationW | |||||
| @@ -0,0 +1,96 @@ | |||||
| /* | |||||
| * Carla plugin host | |||||
| * Copyright (C) 2011-2022 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. | |||||
| */ | |||||
| #include "aboutjucedialog.hpp" | |||||
| #ifdef __clang__ | |||||
| # pragma clang diagnostic push | |||||
| # pragma clang diagnostic ignored "-Wdeprecated-copy-with-user-provided-copy" | |||||
| # pragma clang diagnostic ignored "-Wdeprecated-register" | |||||
| #elif defined(__GNUC__) && __GNUC__ >= 8 | |||||
| # pragma GCC diagnostic push | |||||
| # pragma GCC diagnostic ignored "-Wclass-memaccess" | |||||
| # pragma GCC diagnostic ignored "-Wdeprecated-copy" | |||||
| #endif | |||||
| #include "aboutjucedialog_ui.hpp" | |||||
| #ifdef __clang__ | |||||
| # pragma clang diagnostic pop | |||||
| #elif defined(__GNUC__) && __GNUC__ >= 8 | |||||
| # pragma GCC diagnostic pop | |||||
| #endif | |||||
| #include "CarlaUtils.h" | |||||
| // -------------------------------------------------------------------------------------------------------------------- | |||||
| // Jack Application Dialog | |||||
| struct AboutJuceW::Self { | |||||
| Ui_AboutJuceDialog ui; | |||||
| Self() {} | |||||
| static Self& create() | |||||
| { | |||||
| Self* const self = new Self(); | |||||
| return *self; | |||||
| } | |||||
| }; | |||||
| AboutJuceW::AboutJuceW(QWidget* const parent) | |||||
| : QDialog(parent), | |||||
| self(Self::create()) | |||||
| { | |||||
| self.ui.setupUi(this); | |||||
| // ------------------------------------------------------------------------------------------------------------- | |||||
| // UI setup | |||||
| self.ui.l_text2->setText(tr("This program uses JUCE version") + " " + carla_get_juce_version() + "."); | |||||
| adjustSize(); | |||||
| setFixedSize(size()); | |||||
| Qt::WindowFlags flags = windowFlags(); | |||||
| flags &= ~Qt::WindowContextHelpButtonHint; | |||||
| #ifdef CARLA_OS_WIN | |||||
| flags |= Qt::MSWindowsFixedSizeDialogHint; | |||||
| #endif | |||||
| setWindowFlags(flags); | |||||
| #ifdef CARLA_OS_MAC | |||||
| if (parent != nullptr) | |||||
| setWindowModality(Qt::WindowModal); | |||||
| #endif | |||||
| } | |||||
| AboutJuceW::~AboutJuceW() | |||||
| { | |||||
| delete &self; | |||||
| } | |||||
| // -------------------------------------------------------------------------------------------------------------------- | |||||
| void carla_frontend_createAndExecAboutJuceW(void* const parent) | |||||
| { | |||||
| AboutJuceW(reinterpret_cast<QWidget*>(parent)).exec(); | |||||
| } | |||||
| // -------------------------------------------------------------------------------------------------------------------- | |||||
| @@ -0,0 +1,61 @@ | |||||
| /* | |||||
| * Carla plugin host | |||||
| * Copyright (C) 2011-2022 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. | |||||
| */ | |||||
| #ifdef __clang__ | |||||
| # pragma clang diagnostic push | |||||
| # pragma clang diagnostic ignored "-Wdeprecated-copy-with-user-provided-copy" | |||||
| # pragma clang diagnostic ignored "-Wdeprecated-register" | |||||
| #elif defined(__GNUC__) && __GNUC__ >= 8 | |||||
| # pragma GCC diagnostic push | |||||
| # pragma GCC diagnostic ignored "-Wclass-memaccess" | |||||
| # pragma GCC diagnostic ignored "-Wdeprecated-copy" | |||||
| #endif | |||||
| #include <QtWidgets/QDialog> | |||||
| #ifdef __clang__ | |||||
| # pragma clang diagnostic pop | |||||
| #elif defined(__GNUC__) && __GNUC__ >= 8 | |||||
| # pragma GCC diagnostic pop | |||||
| #endif | |||||
| #include "CarlaDefines.h" | |||||
| // -------------------------------------------------------------------------------------------------------------------- | |||||
| // About JUCE dialog | |||||
| class AboutJuceW : public QDialog | |||||
| { | |||||
| struct Self; | |||||
| Self& self; | |||||
| // ---------------------------------------------------------------------------------------------------------------- | |||||
| public: | |||||
| explicit AboutJuceW(QWidget* parent); | |||||
| ~AboutJuceW() override; | |||||
| }; | |||||
| // -------------------------------------------------------------------------------------------------------------------- | |||||
| extern "C" { | |||||
| CARLA_API void carla_frontend_createAndExecAboutJuceW(void* parent); | |||||
| } | |||||
| // -------------------------------------------------------------------------------------------------------------------- | |||||
| @@ -0,0 +1,74 @@ | |||||
| #!/usr/bin/env python3 | |||||
| # -*- coding: utf-8 -*- | |||||
| # Carla plugin host | |||||
| # Copyright (C) 2011-2022 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) | |||||
| from PyQt5.QtCore import Qt | |||||
| from PyQt5.QtWidgets import QDialog | |||||
| # --------------------------------------------------------------------------------------------------------------------- | |||||
| # Imports (Carla) | |||||
| from common import MACOS, WINDOWS | |||||
| from carla_shared import gCarla | |||||
| # --------------------------------------------------------------------------------------------------------------------- | |||||
| # Imports (Local) | |||||
| from .aboutjucedialog_ui import Ui_AboutJuceDialog | |||||
| # ------------------------------------------------------------------------------------------------------------ | |||||
| # About JUCE dialog | |||||
| class AboutJuceW(QDialog): | |||||
| def __init__(self, parent): | |||||
| QDialog.__init__(self, parent) | |||||
| self.ui = Ui_AboutJuceDialog() | |||||
| self.ui.setupUi(self) | |||||
| self.ui.l_text2.setText(self.tr("This program uses JUCE version %s." % gCarla.utils.get_juce_version())) | |||||
| self.adjustSize() | |||||
| self.setFixedSize(self.size()) | |||||
| flags = self.windowFlags() | |||||
| flags &= ~Qt.WindowContextHelpButtonHint | |||||
| if WINDOWS: | |||||
| flags |= Qt.MSWindowsFixedSizeDialogHint | |||||
| self.setWindowFlags(flags) | |||||
| if MACOS: | |||||
| self.setWindowModality(Qt.WindowModal) | |||||
| # --------------------------------------------------------------------------------------------------------------------- | |||||
| # Testing | |||||
| if __name__ == '__main__': | |||||
| import sys | |||||
| # pylint: disable=ungrouped-imports | |||||
| from PyQt5.QtWidgets import QApplication | |||||
| # pylint: enable=ungrouped-imports | |||||
| _app = QApplication(sys.argv) | |||||
| _gui = AboutJuceW(None, "") | |||||
| _gui.exec_() | |||||
| # --------------------------------------------------------------------------------------------------------------------- | |||||
| @@ -1,7 +1,7 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
| <ui version="4.0"> | <ui version="4.0"> | ||||
| <class>JuceAboutW</class> | |||||
| <widget class="QDialog" name="JuceAboutW"> | |||||
| <class>AboutJuceDialog</class> | |||||
| <widget class="QDialog" name="AboutJuceDialog"> | |||||
| <property name="geometry"> | <property name="geometry"> | ||||
| <rect> | <rect> | ||||
| <x>0</x> | <x>0</x> | ||||
| @@ -154,7 +154,7 @@ Copyright (C) 2022 Raw Material Software Limited.</string> | |||||
| <connection> | <connection> | ||||
| <sender>buttonBox</sender> | <sender>buttonBox</sender> | ||||
| <signal>accepted()</signal> | <signal>accepted()</signal> | ||||
| <receiver>JuceAboutW</receiver> | |||||
| <receiver>AboutJuceDialog</receiver> | |||||
| <slot>accept()</slot> | <slot>accept()</slot> | ||||
| <hints> | <hints> | ||||
| <hint type="sourcelabel"> | <hint type="sourcelabel"> | ||||
| @@ -170,7 +170,7 @@ Copyright (C) 2022 Raw Material Software Limited.</string> | |||||
| <connection> | <connection> | ||||
| <sender>buttonBox</sender> | <sender>buttonBox</sender> | ||||
| <signal>rejected()</signal> | <signal>rejected()</signal> | ||||
| <receiver>JuceAboutW</receiver> | |||||
| <receiver>AboutJuceDialog</receiver> | |||||
| <slot>reject()</slot> | <slot>reject()</slot> | ||||
| <hints> | <hints> | ||||
| <hint type="sourcelabel"> | <hint type="sourcelabel"> | ||||
| @@ -53,7 +53,7 @@ enum { | |||||
| }; | }; | ||||
| struct JackApplicationW::Self { | struct JackApplicationW::Self { | ||||
| Ui_Dialog ui; | |||||
| Ui_JackAppDialog ui; | |||||
| const QString fProjectFilename; | const QString fProjectFilename; | ||||
| Self(const char* const projectFilename) | Self(const char* const projectFilename) | ||||
| @@ -76,9 +76,15 @@ JackApplicationW::JackApplicationW(QWidget* const parent, const char* const proj | |||||
| // UI setup | // UI setup | ||||
| self.ui.group_error->setVisible(false); | self.ui.group_error->setVisible(false); | ||||
| adjustSize(); | adjustSize(); | ||||
| setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); | setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); | ||||
| #ifdef CARLA_OS_MAC | |||||
| if (parent != nullptr) | |||||
| setWindowModality(Qt::WindowModal); | |||||
| #endif | |||||
| // ------------------------------------------------------------------------------------------------------------- | // ------------------------------------------------------------------------------------------------------------- | ||||
| // Load settings | // Load settings | ||||
| @@ -33,9 +33,7 @@ | |||||
| # pragma GCC diagnostic pop | # pragma GCC diagnostic pop | ||||
| #endif | #endif | ||||
| #include "../utils/qcarlastring.hpp" | |||||
| #include "CarlaDefines.h" | |||||
| #include "qcarlastring.hpp" | |||||
| // -------------------------------------------------------------------------------------------------------------------- | // -------------------------------------------------------------------------------------------------------------------- | ||||
| // Jack Application Dialog | // Jack Application Dialog | ||||
| @@ -32,7 +32,7 @@ from utils import QSafeSettings | |||||
| # --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
| # Imports (Local) | # Imports (Local) | ||||
| from .jackappdialog_ui import Ui_Dialog | |||||
| from .jackappdialog_ui import Ui_JackAppDialog | |||||
| # --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
| # Imports (API) | # Imports (API) | ||||
| @@ -59,7 +59,7 @@ UI_SESSION_NSM = 2 | |||||
| class JackApplicationW(QDialog): | class JackApplicationW(QDialog): | ||||
| def __init__(self, parent: QWidget, projectFilename: str): | def __init__(self, parent: QWidget, projectFilename: str): | ||||
| QDialog.__init__(self, parent) | QDialog.__init__(self, parent) | ||||
| self.ui = Ui_Dialog() | |||||
| self.ui = Ui_JackAppDialog() | |||||
| self.ui.setupUi(self) | self.ui.setupUi(self) | ||||
| self.fProjectFilename = projectFilename | self.fProjectFilename = projectFilename | ||||
| @@ -1,7 +1,7 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
| <ui version="4.0"> | <ui version="4.0"> | ||||
| <class>Dialog</class> | |||||
| <widget class="QDialog" name="Dialog"> | |||||
| <class>JackAppDialog</class> | |||||
| <widget class="QDialog" name="JackAppDialog"> | |||||
| <property name="geometry"> | <property name="geometry"> | ||||
| <rect> | <rect> | ||||
| <x>0</x> | <x>0</x> | ||||
| @@ -619,7 +619,7 @@ | |||||
| <connection> | <connection> | ||||
| <sender>buttonBox</sender> | <sender>buttonBox</sender> | ||||
| <signal>accepted()</signal> | <signal>accepted()</signal> | ||||
| <receiver>Dialog</receiver> | |||||
| <receiver>JackAppDialog</receiver> | |||||
| <slot>accept()</slot> | <slot>accept()</slot> | ||||
| <hints> | <hints> | ||||
| <hint type="sourcelabel"> | <hint type="sourcelabel"> | ||||
| @@ -635,7 +635,7 @@ | |||||
| <connection> | <connection> | ||||
| <sender>buttonBox</sender> | <sender>buttonBox</sender> | ||||
| <signal>rejected()</signal> | <signal>rejected()</signal> | ||||
| <receiver>Dialog</receiver> | |||||
| <receiver>JackAppDialog</receiver> | |||||
| <slot>reject()</slot> | <slot>reject()</slot> | ||||
| <hints> | <hints> | ||||
| <hint type="sourcelabel"> | <hint type="sourcelabel"> | ||||
| @@ -16,5 +16,4 @@ | |||||
| # | # | ||||
| # For a full copy of the GNU General Public License see the doc/GPL.txt file. | # For a full copy of the GNU General Public License see the doc/GPL.txt file. | ||||
| from .jackappdialog import JackApplicationW | |||||
| from .pluginlistdialog import PluginDatabaseW | from .pluginlistdialog import PluginDatabaseW | ||||
| @@ -35,6 +35,8 @@ | |||||
| # pragma GCC diagnostic pop | # pragma GCC diagnostic pop | ||||
| #endif | #endif | ||||
| #include "CarlaDefines.h" | |||||
| //--------------------------------------------------------------------------------------------------------------------- | //--------------------------------------------------------------------------------------------------------------------- | ||||
| // Custom QString class with a few extra methods | // Custom QString class with a few extra methods | ||||
| @@ -35,6 +35,8 @@ | |||||
| # pragma GCC diagnostic pop | # pragma GCC diagnostic pop | ||||
| #endif | #endif | ||||
| #include "CarlaDefines.h" | |||||
| //--------------------------------------------------------------------------------------------------------------------- | //--------------------------------------------------------------------------------------------------------------------- | ||||
| // Safer QSettings class, which does not throw if type mismatches | // Safer QSettings class, which does not throw if type mismatches | ||||