Browse Source

Keep base macros consistent between C++ and Python code

Signed-off-by: falkTX <falktx@falktx.com>
pull/1996/head
falkTX 3 months ago
parent
commit
69e07df2f7
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
14 changed files with 179 additions and 174 deletions
  1. +2
    -2
      source/frontend/C++/carla_app.cpp
  2. +2
    -2
      source/frontend/carla-plugin
  3. +26
    -14
      source/frontend/carla_app.py
  4. +24
    -21
      source/frontend/carla_backend.py
  5. +12
    -12
      source/frontend/carla_host.py
  6. +12
    -10
      source/frontend/carla_settings.py
  7. +38
    -27
      source/frontend/carla_shared.py
  8. +6
    -20
      source/frontend/carla_utils.py
  9. +10
    -10
      source/frontend/carla_widgets.py
  10. +34
    -45
      source/frontend/common/__init__.py
  11. +2
    -2
      source/frontend/pluginlist/pluginlistdialog.cpp
  12. +4
    -3
      source/frontend/widgets/draggablegraphicsview.py
  13. +4
    -3
      source/frontend/widgets/paramspinbox.py
  14. +3
    -3
      source/frontend/widgets/racklistwidget.py

+ 2
- 2
source/frontend/C++/carla_app.cpp View File

@@ -58,8 +58,8 @@ CarlaApplication::CarlaApplication(const QString appName, int& argc, char* argv[
QApplication.addLibraryPath(CWD) QApplication.addLibraryPath(CWD)


// Needed for local wine build // Needed for local wine build
if WINDOWS and CWD.endswith(("frontend", "resources")) and os.getenv("CXFREEZE") is None:
if kIs64bit:
if CARLA_OS_WIN and CWD.endswith(("frontend", "resources")) and os.getenv("CXFREEZE") is None:
if CARLA_OS_64BIT:
path = "H:\\builds\\msys2-x86_64\\mingw64\\share\\qt5\\plugins" path = "H:\\builds\\msys2-x86_64\\mingw64\\share\\qt5\\plugins"
else: else:
path = "H:\\builds\\msys2-i686\\mingw32\\share\\qt5\\plugins" path = "H:\\builds\\msys2-i686\\mingw32\\share\\qt5\\plugins"


+ 2
- 2
source/frontend/carla-plugin View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# SPDX-FileCopyrightText: 2011-2024 Filipe Coelho <falktx@falktx.com>
# SPDX-FileCopyrightText: 2011-2025 Filipe Coelho <falktx@falktx.com>
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
@@ -541,7 +541,7 @@ class CarlaEmbedW(QEmbedWidget):


# set our gui as parent for all plugins UIs # set our gui as parent for all plugins UIs
if self.host.manageUIs: if self.host.manageUIs:
if MACOS:
if CARLA_OS_MAC:
nsViewPtr = int(self.fWinId) nsViewPtr = int(self.fWinId)
winIdStr = "%x" % gCarla.utils.cocoa_get_window(nsViewPtr) winIdStr = "%x" % gCarla.utils.cocoa_get_window(nsViewPtr)
else: else:


+ 26
- 14
source/frontend/carla_app.py View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# SPDX-FileCopyrightText: 2011-2024 Filipe Coelho <falktx@falktx.com>
# SPDX-FileCopyrightText: 2011-2025 Filipe Coelho <falktx@falktx.com>
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
@@ -18,6 +18,8 @@ from ctypes import CDLL, RTLD_GLOBAL


from qt_compat import qt_config from qt_compat import qt_config


# pylint: disable=import-error

if qt_config == 5: if qt_config == 5:
from PyQt5.QtCore import QT_VERSION, Qt, QCoreApplication, QLibraryInfo, QLocale, QTranslator from PyQt5.QtCore import QT_VERSION, Qt, QCoreApplication, QLibraryInfo, QLocale, QTranslator
from PyQt5.QtGui import QColor, QIcon, QPalette from PyQt5.QtGui import QColor, QIcon, QPalette
@@ -27,17 +29,26 @@ elif qt_config == 6:
from PyQt6.QtGui import QColor, QIcon, QPalette from PyQt6.QtGui import QColor, QIcon, QPalette
from PyQt6.QtWidgets import QApplication from PyQt6.QtWidgets import QApplication


# pylint: enable=import-error
# pylint: disable=possibly-used-before-assignment

# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Imports (Custom) # Imports (Custom)


from carla_backend import kIs64bit, LINUX, MACOS, WINDOWS
from carla_backend import (
CARLA_OS_64BIT,
CARLA_OS_LINUX,
CARLA_OS_MAC,
CARLA_OS_WIN,
CARLA_VERSION_STRING,
)


from carla_shared import ( from carla_shared import (
CARLA_KEY_MAIN_USE_PRO_THEME, CARLA_KEY_MAIN_USE_PRO_THEME,
CARLA_KEY_MAIN_PRO_THEME_COLOR, CARLA_KEY_MAIN_PRO_THEME_COLOR,
CARLA_DEFAULT_MAIN_USE_PRO_THEME, CARLA_DEFAULT_MAIN_USE_PRO_THEME,
CARLA_DEFAULT_MAIN_PRO_THEME_COLOR, CARLA_DEFAULT_MAIN_PRO_THEME_COLOR,
CWD, VERSION,
CWD,
getPaths, getPaths,
gCarla gCarla
) )
@@ -50,13 +61,13 @@ class CarlaApplication():
def __init__(self, appName = "Carla2", libPrefix = None): def __init__(self, appName = "Carla2", libPrefix = None):
pathBinaries, pathResources = getPaths(libPrefix) pathBinaries, pathResources = getPaths(libPrefix)


# Needed for MacOS and Windows
if os.path.exists(CWD) and (MACOS or WINDOWS):
# Needed for macOS and Windows
if os.path.exists(CWD) and (CARLA_OS_MAC or CARLA_OS_WIN):
QApplication.addLibraryPath(CWD) QApplication.addLibraryPath(CWD)


# Needed for local wine build # Needed for local wine build
if WINDOWS and CWD.endswith(("frontend", "resources")) and os.getenv("CXFREEZE") is None:
if kIs64bit:
if CARLA_OS_WIN and CWD.endswith(("frontend", "resources")) and os.getenv("CXFREEZE") is None:
if CARLA_OS_64BIT:
path = "H:\\PawPawBuilds\\targets\\win64\\lib\\qt5\\plugins" path = "H:\\PawPawBuilds\\targets\\win64\\lib\\qt5\\plugins"
else: else:
path = "H:\\PawPawBuilds\\targets\\win32\\lib\\qt5\\plugins" path = "H:\\PawPawBuilds\\targets\\win32\\lib\\qt5\\plugins"
@@ -94,7 +105,7 @@ class CarlaApplication():


# base settings # base settings
settings = QSafeSettings("falkTX", appName) settings = QSafeSettings("falkTX", appName)
useProTheme = MACOS or settings.value(CARLA_KEY_MAIN_USE_PRO_THEME, CARLA_DEFAULT_MAIN_USE_PRO_THEME, bool)
useProTheme = CARLA_OS_MAC or settings.value(CARLA_KEY_MAIN_USE_PRO_THEME, CARLA_DEFAULT_MAIN_USE_PRO_THEME, bool)


if not useProTheme: if not useProTheme:
self.createApp(appName) self.createApp(appName)
@@ -111,7 +122,7 @@ class CarlaApplication():


self.fApp.setStyle("carla" if stylesDir else "fusion") self.fApp.setStyle("carla" if stylesDir else "fusion")


if WINDOWS:
if CARLA_OS_WIN:
carlastyle1 = os.path.join(pathBinaries, "styles", "carlastyle.dll") carlastyle1 = os.path.join(pathBinaries, "styles", "carlastyle.dll")
carlastyle2 = os.path.join(pathResources, "styles", "carlastyle.dll") carlastyle2 = os.path.join(pathResources, "styles", "carlastyle.dll")
carlastyle = carlastyle2 if os.path.exists(carlastyle2) else carlastyle1 carlastyle = carlastyle2 if os.path.exists(carlastyle2) else carlastyle1
@@ -123,14 +134,14 @@ class CarlaApplication():
# set palette # set palette
proThemeColor = settings.value(CARLA_KEY_MAIN_PRO_THEME_COLOR, CARLA_DEFAULT_MAIN_PRO_THEME_COLOR, str).lower() proThemeColor = settings.value(CARLA_KEY_MAIN_PRO_THEME_COLOR, CARLA_DEFAULT_MAIN_PRO_THEME_COLOR, str).lower()


if MACOS or proThemeColor == "black":
if CARLA_OS_MAC or proThemeColor == "black":
self.createPaletteBlack() self.createPaletteBlack()


elif proThemeColor == "blue": elif proThemeColor == "blue":
self.createPaletteBlue() self.createPaletteBlue()


def createApp(self, appName): def createApp(self, appName):
if qt_config == 5 and LINUX:
if qt_config == 5 and CARLA_OS_LINUX:
# AA_X11InitThreads is not available on old PyQt versions # AA_X11InitThreads is not available on old PyQt versions
try: try:
attr = Qt.AA_X11InitThreads attr = Qt.AA_X11InitThreads
@@ -142,17 +153,17 @@ class CarlaApplication():
QApplication.setAttribute(Qt.AA_EnableHighDpiScaling) QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps) QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps)


if MACOS:
if CARLA_OS_MAC:
QApplication.setAttribute(Qt.AA_DontShowIconsInMenus) QApplication.setAttribute(Qt.AA_DontShowIconsInMenus)


args = sys.argv[:] args = sys.argv[:]


if WINDOWS:
if CARLA_OS_WIN:
args += ["-platform", "windows:fontengine=freetype"] args += ["-platform", "windows:fontengine=freetype"]


self.fApp = QCoreApplication(args) if gCarla.nogui else QApplication(args) self.fApp = QCoreApplication(args) if gCarla.nogui else QApplication(args)
self.fApp.setApplicationName(appName) self.fApp.setApplicationName(appName)
self.fApp.setApplicationVersion(VERSION)
self.fApp.setApplicationVersion(CARLA_VERSION_STRING)
self.fApp.setOrganizationName("falkTX") self.fApp.setOrganizationName("falkTX")


if self.fAppTranslator is not None: if self.fAppTranslator is not None:
@@ -306,3 +317,4 @@ class CarlaApplication():
self.fApp.quit() self.fApp.quit()


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# pylint: enable=possibly-used-before-assignment

+ 24
- 21
source/frontend/carla_backend.py View File

@@ -1,20 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*-

# Carla Backend code
# Copyright (C) 2011-2021 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.
# SPDX-FileCopyrightText: 2011-2025 Filipe Coelho <falktx@falktx.com>
# SPDX-License-Identifier: GPL-2.0-or-later


# --------------------------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------------------------
# Imports (Global) # Imports (Global)
@@ -36,14 +22,27 @@ from ctypes import (
# Imports (Custom) # Imports (Custom)


from common import ( from common import (
kIs64bit, HAIKU, LINUX, MACOS, WINDOWS, VERSION
CARLA_OS_64BIT,
CARLA_OS_BSD,
CARLA_OS_GNU_HURD,
CARLA_OS_HAIKU,
CARLA_OS_LINUX,
CARLA_OS_MAC,
CARLA_OS_UNIX,
CARLA_OS_WASM,
CARLA_OS_WIN,
CARLA_OS_WIN32,
CARLA_OS_WIN64,
CARLA_VERSION_HEX,
CARLA_VERSION_STRING,
CARLA_VERSION_STRMIN,
) )


# --------------------------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------------------------
# Define custom types # Define custom types


c_enum = c_int c_enum = c_int
c_uintptr = c_uint64 if kIs64bit else c_uint32
c_uintptr = c_uint64 if CARLA_OS_64BIT else c_uint32


# --------------------------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------------------------
# Convert a ctypes c_char_p into a python string # Convert a ctypes c_char_p into a python string
@@ -1513,10 +1512,14 @@ PyCarlaRuntimeEngineDriverDeviceInfo = {
# --------------------------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------------------------
# Set BINARY_NATIVE # Set BINARY_NATIVE


if WINDOWS:
BINARY_NATIVE = BINARY_WIN64 if kIs64bit else BINARY_WIN32
if CARLA_OS_WIN64:
BINARY_NATIVE = BINARY_WIN64
elif CARLA_OS_WIN32:
BINARY_NATIVE = BINARY_WIN32
elif CARLA_OS_64BIT:
BINARY_NATIVE = BINARY_POSIX64
else: else:
BINARY_NATIVE = BINARY_POSIX64 if kIs64bit else BINARY_POSIX32
BINARY_NATIVE = BINARY_POSIX32


# --------------------------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------------------------
# Carla Host object (Meta) # Carla Host object (Meta)


+ 12
- 12
source/frontend/carla_host.py View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# SPDX-FileCopyrightText: 2011-2024 Filipe Coelho <falktx@falktx.com>
# SPDX-FileCopyrightText: 2011-2025 Filipe Coelho <falktx@falktx.com>
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
@@ -218,7 +218,7 @@ class HostWindow(QMainWindow):
self.fOscAddressTCP = "" self.fOscAddressTCP = ""
self.fOscAddressUDP = "" self.fOscAddressUDP = ""


if MACOS:
if CARLA_OS_MAC:
self.fMacClosingHelper = True self.fMacClosingHelper = True


# CancelableActionCallback Box # CancelableActionCallback Box
@@ -301,7 +301,7 @@ class HostWindow(QMainWindow):
else: else:
self.ui.act_engine_start.setEnabled(True) self.ui.act_engine_start.setEnabled(True)


if WINDOWS:
if CARLA_OS_WIN:
self.ui.tabWidget.removeTab(2) self.ui.tabWidget.removeTab(2)


if self.host.isControl: if self.host.isControl:
@@ -352,7 +352,7 @@ class HostWindow(QMainWindow):
self.ui.menu_Canvas.menuAction().setVisible(False) self.ui.menu_Canvas.menuAction().setVisible(False)
self.ui.tw_miniCanvas.hide() self.ui.tw_miniCanvas.hide()
self.ui.tabWidget.removeTab(1) self.ui.tabWidget.removeTab(1)
if WINDOWS:
if CARLA_OS_WIN:
self.ui.tabWidget.tabBar().hide() self.ui.tabWidget.tabBar().hide()


# ---------------------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------------------
@@ -467,7 +467,7 @@ class HostWindow(QMainWindow):
# ---------------------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------------------
# Set up GUI (special stuff for Mac OS) # Set up GUI (special stuff for Mac OS)


if MACOS:
if CARLA_OS_MAC:
self.ui.act_file_quit.setMenuRole(QAction.QuitRole) self.ui.act_file_quit.setMenuRole(QAction.QuitRole)
self.ui.act_settings_configure.setMenuRole(QAction.PreferencesRole) self.ui.act_settings_configure.setMenuRole(QAction.PreferencesRole)
self.ui.act_help_about.setMenuRole(QAction.AboutRole) self.ui.act_help_about.setMenuRole(QAction.AboutRole)
@@ -2029,7 +2029,7 @@ class HostWindow(QMainWindow):
folder = diskFolders[i] folder = diskFolders[i]
self.ui.cb_disk.addItem(os.path.basename(folder), folder) self.ui.cb_disk.addItem(os.path.basename(folder), folder)


#if MACOS and not settings.value(CARLA_KEY_MAIN_USE_PRO_THEME, True, bool):
#if CARLA_OS_MAC and not settings.value(CARLA_KEY_MAIN_USE_PRO_THEME, True, bool):
# self.setUnifiedTitleAndToolBarOnMac(True) # self.setUnifiedTitleAndToolBarOnMac(True)


showMeters = settings.value("ShowMeters", True, bool) showMeters = settings.value("ShowMeters", True, bool)
@@ -2839,10 +2839,10 @@ class HostWindow(QMainWindow):


# set our gui as parent for all plugins UIs # set our gui as parent for all plugins UIs
if self.host.manageUIs and not self.host.isControl: if self.host.manageUIs and not self.host.isControl:
if MACOS:
if CARLA_OS_MAC:
nsViewPtr = int(self.winId()) nsViewPtr = int(self.winId())
winIdStr = "%x" % gCarla.utils.cocoa_get_window(nsViewPtr) winIdStr = "%x" % gCarla.utils.cocoa_get_window(nsViewPtr)
elif WINDOWS or QApplication.platformName() == "xcb":
elif CARLA_OS_WIN or QApplication.platformName() == "xcb":
winIdStr = "%x" % int(self.winId()) winIdStr = "%x" % int(self.winId())
else: else:
winIdStr = "0" winIdStr = "0"
@@ -3004,7 +3004,7 @@ class HostWindow(QMainWindow):
#def paintEvent(self, event): #def paintEvent(self, event):
#QMainWindow.paintEvent(self, event) #QMainWindow.paintEvent(self, event)


#if MACOS or not self.fSavedSettings[CARLA_KEY_CUSTOM_PAINTING]:
#if CARLA_OS_MAC or not self.fSavedSettings[CARLA_KEY_CUSTOM_PAINTING]:
#return #return


#painter = QPainter(self) #painter = QPainter(self)
@@ -3040,7 +3040,7 @@ class HostWindow(QMainWindow):


patchcanvas.handleAllPluginsRemoved() patchcanvas.handleAllPluginsRemoved()


if MACOS and self.fMacClosingHelper and not (self.host.isControl or self.host.isPlugin):
if CARLA_OS_MAC and self.fMacClosingHelper and not (self.host.isControl or self.host.isPlugin):
self.fCustomStopAction = self.CUSTOM_ACTION_APP_CLOSE self.fCustomStopAction = self.CUSTOM_ACTION_APP_CLOSE
self.fMacClosingHelper = False self.fMacClosingHelper = False
event.ignore() event.ignore()
@@ -3350,7 +3350,7 @@ def initHost(initName, libPrefix, isControl, isPlugin, failError, HostClass = No
# Print info # Print info


if not (gCarla.nogui and isinstance(gCarla.nogui, int)): if not (gCarla.nogui and isinstance(gCarla.nogui, int)):
print("Carla %s started, status:" % VERSION)
print("Carla %s started, status:" % CARLA_VERSION_STRING)
print(" Python version: %s" % sys.version.split(" ",1)[0]) print(" Python version: %s" % sys.version.split(" ",1)[0])
print(" Qt version: %s" % QT_VERSION_STR) print(" Qt version: %s" % QT_VERSION_STR)
print(" PyQt version: %s" % PYQT_VERSION_STR) print(" PyQt version: %s" % PYQT_VERSION_STR)
@@ -3429,7 +3429,7 @@ def loadHostSettings(host):
host.preferPluginBridges = settings.value(CARLA_KEY_ENGINE_PREFER_PLUGIN_BRIDGES, CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES, bool) host.preferPluginBridges = settings.value(CARLA_KEY_ENGINE_PREFER_PLUGIN_BRIDGES, CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES, bool)
host.preferUIBridges = settings.value(CARLA_KEY_ENGINE_PREFER_UI_BRIDGES, CARLA_DEFAULT_PREFER_UI_BRIDGES, bool) host.preferUIBridges = settings.value(CARLA_KEY_ENGINE_PREFER_UI_BRIDGES, CARLA_DEFAULT_PREFER_UI_BRIDGES, bool)
host.preventBadBehaviour = settings.value(CARLA_KEY_EXPERIMENTAL_PREVENT_BAD_BEHAVIOUR, CARLA_DEFAULT_EXPERIMENTAL_PREVENT_BAD_BEHAVIOUR, bool) host.preventBadBehaviour = settings.value(CARLA_KEY_EXPERIMENTAL_PREVENT_BAD_BEHAVIOUR, CARLA_DEFAULT_EXPERIMENTAL_PREVENT_BAD_BEHAVIOUR, bool)
host.showLogs = settings.value(CARLA_KEY_MAIN_SHOW_LOGS, CARLA_DEFAULT_MAIN_SHOW_LOGS, bool) and not WINDOWS
host.showLogs = settings.value(CARLA_KEY_MAIN_SHOW_LOGS, CARLA_DEFAULT_MAIN_SHOW_LOGS, bool) and not CARLA_OS_WIN
host.showPluginBridges = settings.value(CARLA_KEY_EXPERIMENTAL_PLUGIN_BRIDGES, CARLA_DEFAULT_EXPERIMENTAL_PLUGIN_BRIDGES, bool) host.showPluginBridges = settings.value(CARLA_KEY_EXPERIMENTAL_PLUGIN_BRIDGES, CARLA_DEFAULT_EXPERIMENTAL_PLUGIN_BRIDGES, bool)
host.showWineBridges = settings.value(CARLA_KEY_EXPERIMENTAL_WINE_BRIDGES, CARLA_DEFAULT_EXPERIMENTAL_WINE_BRIDGES, bool) host.showWineBridges = settings.value(CARLA_KEY_EXPERIMENTAL_WINE_BRIDGES, CARLA_DEFAULT_EXPERIMENTAL_WINE_BRIDGES, bool)
host.uiBridgesTimeout = settings.value(CARLA_KEY_ENGINE_UI_BRIDGES_TIMEOUT, CARLA_DEFAULT_UI_BRIDGES_TIMEOUT, int) host.uiBridgesTimeout = settings.value(CARLA_KEY_ENGINE_UI_BRIDGES_TIMEOUT, CARLA_DEFAULT_UI_BRIDGES_TIMEOUT, int)


+ 12
- 10
source/frontend/carla_settings.py View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# SPDX-FileCopyrightText: 2011-2024 Filipe Coelho <falktx@falktx.com>
# SPDX-FileCopyrightText: 2011-2025 Filipe Coelho <falktx@falktx.com>
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later


# --------------------------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------------------------
@@ -21,7 +21,9 @@ import ui_carla_settings
import ui_carla_settings_driver import ui_carla_settings_driver


from carla_backend import ( from carla_backend import (
LINUX, MACOS, WINDOWS,
CARLA_OS_LINUX,
CARLA_OS_MAC,
CARLA_OS_WIN,
ENGINE_DRIVER_DEVICE_HAS_CONTROL_PANEL, ENGINE_DRIVER_DEVICE_HAS_CONTROL_PANEL,
ENGINE_DRIVER_DEVICE_CAN_TRIPLE_BUFFER, ENGINE_DRIVER_DEVICE_CAN_TRIPLE_BUFFER,
ENGINE_DRIVER_DEVICE_VARIABLE_BUFFER_SIZE, ENGINE_DRIVER_DEVICE_VARIABLE_BUFFER_SIZE,
@@ -215,7 +217,7 @@ class DriverSettingsW(QDialog):


self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint)


if MACOS:
if CARLA_OS_MAC:
self.setWindowModality(Qt.WindowModal) self.setWindowModality(Qt.WindowModal)


# ------------------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------------------
@@ -406,7 +408,7 @@ class RuntimeDriverSettingsW(QDialog):
self.adjustSize() self.adjustSize()
self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint)


if MACOS:
if CARLA_OS_MAC:
self.setWindowModality(Qt.WindowModal) self.setWindowModality(Qt.WindowModal)


# ------------------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------------------
@@ -533,11 +535,11 @@ class CarlaSettingsW(QDialog):
for i in range(Theme.THEME_MAX): for i in range(Theme.THEME_MAX):
self.ui.cb_canvas_theme.addItem(getThemeName(i)) self.ui.cb_canvas_theme.addItem(getThemeName(i))


if MACOS:
if CARLA_OS_MAC:
self.ui.group_main_theme.setEnabled(False) self.ui.group_main_theme.setEnabled(False)
self.ui.group_main_theme.setVisible(False) self.ui.group_main_theme.setVisible(False)


if WINDOWS or host.isControl:
if CARLA_OS_WIN or host.isControl:
self.ui.ch_main_show_logs.setEnabled(False) self.ui.ch_main_show_logs.setEnabled(False)
self.ui.ch_main_show_logs.setVisible(False) self.ui.ch_main_show_logs.setVisible(False)


@@ -576,15 +578,15 @@ class CarlaSettingsW(QDialog):
self.ui.lw_page.hideRow(self.TAB_INDEX_OSC) self.ui.lw_page.hideRow(self.TAB_INDEX_OSC)
self.ui.lw_page.hideRow(self.TAB_INDEX_WINE) self.ui.lw_page.hideRow(self.TAB_INDEX_WINE)


if not LINUX:
if not CARLA_OS_LINUX:
self.ui.ch_exp_wine_bridges.setVisible(False) self.ui.ch_exp_wine_bridges.setVisible(False)
self.ui.ch_exp_prevent_bad_behaviour.setVisible(False) self.ui.ch_exp_prevent_bad_behaviour.setVisible(False)
self.ui.lw_page.hideRow(self.TAB_INDEX_WINE) self.ui.lw_page.hideRow(self.TAB_INDEX_WINE)


if not MACOS:
if not CARLA_OS_MAC:
self.ui.label_engine_ui_bridges_mac_note.setVisible(False) self.ui.label_engine_ui_bridges_mac_note.setVisible(False)


if not (LINUX or MACOS):
if not (CARLA_OS_LINUX or CARLA_OS_MAC):
self.ui.ch_exp_jack_apps.setVisible(False) self.ui.ch_exp_jack_apps.setVisible(False)


# FIXME, not implemented yet # FIXME, not implemented yet
@@ -599,7 +601,7 @@ class CarlaSettingsW(QDialog):


self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint) self.setWindowFlags(self.windowFlags() & ~Qt.WindowContextHelpButtonHint)


if MACOS:
if CARLA_OS_MAC:
self.setWindowModality(Qt.WindowModal) self.setWindowModality(Qt.WindowModal)


# ------------------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------------------


+ 38
- 27
source/frontend/carla_shared.py View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# SPDX-FileCopyrightText: 2011-2024 Filipe Coelho <falktx@falktx.com>
# SPDX-FileCopyrightText: 2011-2025 Filipe Coelho <falktx@falktx.com>
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
@@ -26,6 +26,8 @@ except:


from qt_compat import qt_config from qt_compat import qt_config


# pylint: disable=import-error

if qt_config == 5: if qt_config == 5:
# import changed in PyQt 5.15.8, so try both # import changed in PyQt 5.15.8, so try both
try: try:
@@ -42,19 +44,25 @@ elif qt_config == 6:
from PyQt6.QtGui import QIcon from PyQt6.QtGui import QIcon
from PyQt6.QtWidgets import QFileDialog, QMessageBox from PyQt6.QtWidgets import QFileDialog, QMessageBox


# pylint: enable=import-error
# pylint: disable=possibly-used-before-assignment

# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Imports (Custom) # Imports (Custom)


from carla_backend import ( from carla_backend import (
CARLA_OS_64BIT,
CARLA_OS_HAIKU,
CARLA_OS_MAC,
CARLA_OS_WIN,
CARLA_VERSION_STRING,
MAX_DEFAULT_PARAMETERS, MAX_DEFAULT_PARAMETERS,
ENGINE_PROCESS_MODE_MULTIPLE_CLIENTS, ENGINE_PROCESS_MODE_MULTIPLE_CLIENTS,
ENGINE_PROCESS_MODE_PATCHBAY, ENGINE_PROCESS_MODE_PATCHBAY,
ENGINE_TRANSPORT_MODE_INTERNAL, ENGINE_TRANSPORT_MODE_INTERNAL,
ENGINE_TRANSPORT_MODE_JACK
ENGINE_TRANSPORT_MODE_JACK,
) )


from common import kIs64bit, HAIKU, LINUX, MACOS, WINDOWS, VERSION

# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Config # Config


@@ -65,7 +73,7 @@ X_DATADIR_X = None
# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Platform specific stuff # Platform specific stuff


if WINDOWS:
if CARLA_OS_WIN:
WINDIR = os.getenv("WINDIR") WINDIR = os.getenv("WINDIR")


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
@@ -74,7 +82,7 @@ if WINDOWS:
envTMP = os.getenv("TMP") envTMP = os.getenv("TMP")


if envTMP is None: if envTMP is None:
if WINDOWS:
if CARLA_OS_WIN:
qWarning("TMP variable not set") qWarning("TMP variable not set")
TMP = QDir.tempPath() TMP = QDir.tempPath()
else: else:
@@ -92,7 +100,7 @@ del envTMP
envHOME = os.getenv("HOME") envHOME = os.getenv("HOME")


if envHOME is None: if envHOME is None:
if not WINDOWS:
if not CARLA_OS_WIN:
qWarning("HOME variable not set") qWarning("HOME variable not set")
HOME = QDir.toNativeSeparators(QDir.homePath()) HOME = QDir.toNativeSeparators(QDir.homePath())
else: else:
@@ -111,9 +119,9 @@ envPATH = os.getenv("PATH")


if envPATH is None: if envPATH is None:
qWarning("PATH variable not set") qWarning("PATH variable not set")
if MACOS:
if CARLA_OS_MAC:
PATH = ("/opt/local/bin", "/usr/local/bin", "/usr/bin", "/bin") PATH = ("/opt/local/bin", "/usr/local/bin", "/usr/bin", "/bin")
elif WINDOWS:
elif CARLA_OS_WIN:
PATH = (os.path.join(WINDIR, "system32"), WINDIR) PATH = (os.path.join(WINDIR, "system32"), WINDIR)
else: else:
PATH = ("/usr/local/bin", "/usr/bin", "/bin") PATH = ("/usr/local/bin", "/usr/bin", "/bin")
@@ -262,7 +270,7 @@ CARLA_DEFAULT_MAIN_PRO_THEME_COLOR = "Black"
CARLA_DEFAULT_MAIN_REFRESH_INTERVAL = 20 CARLA_DEFAULT_MAIN_REFRESH_INTERVAL = 20
CARLA_DEFAULT_MAIN_CONFIRM_EXIT = True CARLA_DEFAULT_MAIN_CONFIRM_EXIT = True
CARLA_DEFAULT_MAIN_CLASSIC_SKIN = False CARLA_DEFAULT_MAIN_CLASSIC_SKIN = False
CARLA_DEFAULT_MAIN_SHOW_LOGS = bool(not WINDOWS)
CARLA_DEFAULT_MAIN_SHOW_LOGS = bool(not CARLA_OS_WIN)
CARLA_DEFAULT_MAIN_SYSTEM_ICONS = False CARLA_DEFAULT_MAIN_SYSTEM_ICONS = False
CARLA_DEFAULT_MAIN_EXPERIMENTAL = False CARLA_DEFAULT_MAIN_EXPERIMENTAL = False


@@ -296,11 +304,11 @@ CARLA_DEFAULT_AUDIO_BUFFER_SIZE = 512
CARLA_DEFAULT_AUDIO_SAMPLE_RATE = 44100 CARLA_DEFAULT_AUDIO_SAMPLE_RATE = 44100
CARLA_DEFAULT_AUDIO_TRIPLE_BUFFER = False CARLA_DEFAULT_AUDIO_TRIPLE_BUFFER = False


if HAIKU:
if CARLA_OS_HAIKU:
CARLA_DEFAULT_AUDIO_DRIVER = "SDL" CARLA_DEFAULT_AUDIO_DRIVER = "SDL"
elif MACOS:
elif CARLA_OS_MAC:
CARLA_DEFAULT_AUDIO_DRIVER = "CoreAudio" CARLA_DEFAULT_AUDIO_DRIVER = "CoreAudio"
elif WINDOWS:
elif CARLA_OS_WIN:
CARLA_DEFAULT_AUDIO_DRIVER = "Windows Audio" CARLA_DEFAULT_AUDIO_DRIVER = "Windows Audio"
elif os.path.exists("/usr/bin/jackd") or os.path.exists("/usr/bin/jackdbus") or os.path.exists("/usr/bin/pw-jack"): elif os.path.exists("/usr/bin/jackd") or os.path.exists("/usr/bin/jackdbus") or os.path.exists("/usr/bin/pw-jack"):
CARLA_DEFAULT_AUDIO_DRIVER = "JACK" CARLA_DEFAULT_AUDIO_DRIVER = "JACK"
@@ -315,7 +323,7 @@ else:
CARLA_DEFAULT_TRANSPORT_MODE = ENGINE_TRANSPORT_MODE_INTERNAL CARLA_DEFAULT_TRANSPORT_MODE = ENGINE_TRANSPORT_MODE_INTERNAL


# OSC # OSC
CARLA_DEFAULT_OSC_ENABLED = not (MACOS or WINDOWS)
CARLA_DEFAULT_OSC_ENABLED = not (CARLA_OS_MAC or CARLA_OS_WIN)
CARLA_DEFAULT_OSC_TCP_PORT_ENABLED = True CARLA_DEFAULT_OSC_TCP_PORT_ENABLED = True
CARLA_DEFAULT_OSC_TCP_PORT_NUMBER = 22752 CARLA_DEFAULT_OSC_TCP_PORT_NUMBER = 22752
CARLA_DEFAULT_OSC_TCP_PORT_RANDOM = False CARLA_DEFAULT_OSC_TCP_PORT_RANDOM = False
@@ -358,7 +366,7 @@ DEFAULT_SF2_PATH = ""
DEFAULT_SFZ_PATH = "" DEFAULT_SFZ_PATH = ""
DEFAULT_JSFX_PATH = "" DEFAULT_JSFX_PATH = ""


if WINDOWS:
if CARLA_OS_WIN:
splitter = ";" splitter = ";"


APPDATA = os.getenv("APPDATA") APPDATA = os.getenv("APPDATA")
@@ -396,7 +404,7 @@ if WINDOWS:
DEFAULT_JSFX_PATH = APPDATA + "\\REAPER\\Effects" DEFAULT_JSFX_PATH = APPDATA + "\\REAPER\\Effects"
#DEFAULT_JSFX_PATH += ";" + PROGRAMFILES + "\\REAPER\\InstallData\\Effects" #DEFAULT_JSFX_PATH += ";" + PROGRAMFILES + "\\REAPER\\InstallData\\Effects"


if kIs64bit:
if CARLA_OS_64BIT:
DEFAULT_VST2_PATH += ";" + COMMONPROGRAMFILES + "\\VST2" DEFAULT_VST2_PATH += ";" + COMMONPROGRAMFILES + "\\VST2"


DEFAULT_VST3_PATH = COMMONPROGRAMFILES + "\\VST3" DEFAULT_VST3_PATH = COMMONPROGRAMFILES + "\\VST3"
@@ -419,7 +427,7 @@ if WINDOWS:
DEFAULT_VST3_PATH += COMMONPROGRAMFILESx86 + "\\VST3" DEFAULT_VST3_PATH += COMMONPROGRAMFILESx86 + "\\VST3"
DEFAULT_CLAP_PATH += COMMONPROGRAMFILESx86 + "\\CLAP" DEFAULT_CLAP_PATH += COMMONPROGRAMFILESx86 + "\\CLAP"


elif HAIKU:
elif CARLA_OS_HAIKU:
splitter = ":" splitter = ":"


DEFAULT_LADSPA_PATH = HOME + "/.ladspa" DEFAULT_LADSPA_PATH = HOME + "/.ladspa"
@@ -442,7 +450,7 @@ elif HAIKU:
DEFAULT_CLAP_PATH = HOME + "/.clap" DEFAULT_CLAP_PATH = HOME + "/.clap"
DEFAULT_CLAP_PATH += ":/system/add-ons/media/clapplugins" DEFAULT_CLAP_PATH += ":/system/add-ons/media/clapplugins"


elif MACOS:
elif CARLA_OS_MAC:
splitter = ":" splitter = ":"


DEFAULT_LADSPA_PATH = HOME + "/Library/Audio/Plug-Ins/LADSPA" DEFAULT_LADSPA_PATH = HOME + "/Library/Audio/Plug-Ins/LADSPA"
@@ -511,7 +519,7 @@ else:
DEFAULT_JSFX_PATH = CONFIG_HOME + "/REAPER/Effects" DEFAULT_JSFX_PATH = CONFIG_HOME + "/REAPER/Effects"
#DEFAULT_JSFX_PATH += ":" + "/opt/REAPER/InstallData/Effects" #DEFAULT_JSFX_PATH += ":" + "/opt/REAPER/InstallData/Effects"


if not WINDOWS:
if not CARLA_OS_WIN:
winePrefix = os.getenv("WINEPREFIX") winePrefix = os.getenv("WINEPREFIX")


if not winePrefix: if not winePrefix:
@@ -525,7 +533,7 @@ if not WINDOWS:
DEFAULT_VST3_PATH += ":" + winePrefix + "/drive_c/Program Files/Common Files/VST3" DEFAULT_VST3_PATH += ":" + winePrefix + "/drive_c/Program Files/Common Files/VST3"
DEFAULT_CLAP_PATH += ":" + winePrefix + "/drive_c/Program Files/Common Files/CLAP" DEFAULT_CLAP_PATH += ":" + winePrefix + "/drive_c/Program Files/Common Files/CLAP"


if kIs64bit:
if CARLA_OS_64BIT:
DEFAULT_VST2_PATH += ":" + winePrefix + "/drive_c/Program Files (x86)/VstPlugins" DEFAULT_VST2_PATH += ":" + winePrefix + "/drive_c/Program Files (x86)/VstPlugins"
DEFAULT_VST2_PATH += ":" + winePrefix + "/drive_c/Program Files (x86)/VSTPlugins" DEFAULT_VST2_PATH += ":" + winePrefix + "/drive_c/Program Files (x86)/VSTPlugins"
DEFAULT_VST2_PATH += ":" + winePrefix + "/drive_c/Program Files (x86)/Steinberg/VstPlugins" DEFAULT_VST2_PATH += ":" + winePrefix + "/drive_c/Program Files (x86)/Steinberg/VstPlugins"
@@ -540,7 +548,7 @@ if not WINDOWS:


readEnvVars = True readEnvVars = True


if WINDOWS:
if CARLA_OS_WIN:
# Check if running Wine. If yes, ignore env vars # Check if running Wine. If yes, ignore env vars
# pylint: disable=import-error # pylint: disable=import-error
from winreg import ConnectRegistry, OpenKey, CloseKey, HKEY_CURRENT_USER from winreg import ConnectRegistry, OpenKey, CloseKey, HKEY_CURRENT_USER
@@ -620,7 +628,7 @@ if os.path.isfile(CWD):
if CWD.endswith("/lib"): if CWD.endswith("/lib"):
CWD = CWD.rsplit("/lib",1)[0] CWD = CWD.rsplit("/lib",1)[0]
CXFREEZE = True CXFREEZE = True
if not WINDOWS:
if not CARLA_OS_WIN:
os.environ['CARLA_MAGIC_FILE'] = os.path.join(CWD, "magic.mgc") os.environ['CARLA_MAGIC_FILE'] = os.path.join(CWD, "magic.mgc")
else: else:
CXFREEZE = False CXFREEZE = False
@@ -628,9 +636,9 @@ else:
# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Set DLL_EXTENSION # Set DLL_EXTENSION


if WINDOWS:
if CARLA_OS_WIN:
DLL_EXTENSION = "dll" DLL_EXTENSION = "dll"
elif MACOS:
elif CARLA_OS_MAC:
DLL_EXTENSION = "dylib" DLL_EXTENSION = "dylib"
else: else:
DLL_EXTENSION = "so" DLL_EXTENSION = "so"
@@ -708,7 +716,7 @@ def handleInitialCommandLineArguments(file):
elif arg in ("-n", "--n", "-no-gui", "--no-gui", "-nogui", "--nogui"): elif arg in ("-n", "--n", "-no-gui", "--no-gui", "-nogui", "--nogui"):
gCarla.nogui = True gCarla.nogui = True


elif MACOS and arg.startswith("-psn_"):
elif CARLA_OS_MAC and arg.startswith("-psn_"):
pass pass


elif arg in ("-h", "--h", "-help", "--help"): elif arg in ("-h", "--h", "-help", "--help"):
@@ -737,7 +745,7 @@ def handleInitialCommandLineArguments(file):
elif arg in ("-v", "--v", "-version", "--version"): elif arg in ("-v", "--v", "-version", "--version"):
pathBinaries, pathResources = getPaths(libPrefix) pathBinaries, pathResources = getPaths(libPrefix)


print("Using Carla version %s" % VERSION)
print("Using Carla version %s" % CARLA_VERSION_STRING)
print(" Python version: %s" % sys.version.split(" ",1)[0]) print(" Python version: %s" % sys.version.split(" ",1)[0])
print(" Qt version: %s" % QT_VERSION_STR) print(" Qt version: %s" % QT_VERSION_STR)
print(" PyQt version: %s" % PYQT_VERSION_STR) print(" PyQt version: %s" % PYQT_VERSION_STR)
@@ -785,7 +793,7 @@ def getInitialProjectFile(skipExistCheck = False):
continue continue
if arg in ("-n", "--n", "-no-gui", "--no-gui", "-nogui", "--nogui", "--gdb"): if arg in ("-n", "--n", "-no-gui", "--no-gui", "-nogui", "--nogui", "--gdb"):
continue continue
if MACOS and arg.startswith("-psn_"):
if CARLA_OS_MAC and arg.startswith("-psn_"):
continue continue
arg = os.path.expanduser(arg) arg = os.path.expanduser(arg)
if skipExistCheck or os.path.exists(arg): if skipExistCheck or os.path.exists(arg):
@@ -914,7 +922,10 @@ def CustomMessageBox(parent, icon, title, text,
msgBox.setInformativeText(extraText) msgBox.setInformativeText(extraText)
msgBox.setStandardButtons(buttons) msgBox.setStandardButtons(buttons)
msgBox.setDefaultButton(defButton) msgBox.setDefaultButton(defButton)
# pylint: disable=no-value-for-parameter
return msgBox.exec_() return msgBox.exec_()
# pylint: enable=no-value-for-parameter
# pylint: enable=too-many-arguments # pylint: enable=too-many-arguments


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# pylint: enable=possibly-used-before-assignment

+ 6
- 20
source/frontend/carla_utils.py View File

@@ -1,20 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*-

# Carla Backend utils
# Copyright (C) 2011-2020 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.
# SPDX-FileCopyrightText: 2011-2025 Filipe Coelho <falktx@falktx.com>
# SPDX-License-Identifier: GPL-2.0-or-later


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Imports (Global) # Imports (Global)
@@ -35,6 +21,7 @@ from ctypes import (
# Imports (Custom) # Imports (Custom)


from carla_backend import ( from carla_backend import (
CARLA_OS_WIN,
PLUGIN_NONE, PLUGIN_NONE,
PLUGIN_INTERNAL, PLUGIN_INTERNAL,
PLUGIN_LADSPA, PLUGIN_LADSPA,
@@ -60,7 +47,6 @@ from carla_backend import (
PLUGIN_CATEGORY_MODULATOR, PLUGIN_CATEGORY_MODULATOR,
PLUGIN_CATEGORY_UTILITY, PLUGIN_CATEGORY_UTILITY,
PLUGIN_CATEGORY_OTHER, PLUGIN_CATEGORY_OTHER,
WINDOWS,
c_enum, c_uintptr, c_enum, c_uintptr,
charPtrToString, charPtrToString,
charPtrPtrToStringList, charPtrPtrToStringList,
@@ -347,7 +333,7 @@ class CarlaUtils():
self._pipeClientCallback = None self._pipeClientCallback = None


# use _putenv on windows # use _putenv on windows
if not WINDOWS:
if not CARLA_OS_WIN:
self.msvcrt = None self.msvcrt = None
return return


@@ -363,7 +349,7 @@ class CarlaUtils():
def setenv(self, key, value): def setenv(self, key, value):
environ[key] = value environ[key] = value


if WINDOWS:
if CARLA_OS_WIN:
keyvalue = "%s=%s" % (key, value) keyvalue = "%s=%s" % (key, value)
# pylint: disable=protected-access # pylint: disable=protected-access
self.msvcrt._putenv(keyvalue.encode("utf-8")) self.msvcrt._putenv(keyvalue.encode("utf-8"))
@@ -374,7 +360,7 @@ class CarlaUtils():
if environ.get(key) is not None: if environ.get(key) is not None:
environ.pop(key) environ.pop(key)


if WINDOWS:
if CARLA_OS_WIN:
keyrm = "%s=" % key keyrm = "%s=" % key
# pylint: disable=protected-access # pylint: disable=protected-access
self.msvcrt._putenv(keyrm.encode("utf-8")) self.msvcrt._putenv(keyrm.encode("utf-8"))


+ 10
- 10
source/frontend/carla_widgets.py View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# SPDX-FileCopyrightText: 2011-2024 Filipe Coelho <falktx@falktx.com>
# SPDX-FileCopyrightText: 2011-2025 Filipe Coelho <falktx@falktx.com>
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
@@ -47,8 +47,10 @@ import ui_carla_edit
import ui_carla_parameter import ui_carla_parameter


from carla_backend import ( from carla_backend import (
MACOS, WINDOWS,
BINARY_NATIVE, BINARY_NATIVE,
CARLA_VERSION_STRING,
CARLA_OS_MAC,
CARLA_OS_WIN,
PLUGIN_INTERNAL, PLUGIN_INTERNAL,
PLUGIN_DSSI, PLUGIN_DSSI,
PLUGIN_LV2, PLUGIN_LV2,
@@ -92,7 +94,6 @@ from carla_backend import (


from carla_shared import ( from carla_shared import (
MIDI_CC_LIST, MAX_MIDI_CC_LIST_ITEM, MIDI_CC_LIST, MAX_MIDI_CC_LIST_ITEM,
VERSION,
countDecimalPoints, countDecimalPoints,
fontMetricsHorizontalAdvance, fontMetricsHorizontalAdvance,
setUpSignals, setUpSignals,
@@ -100,7 +101,6 @@ from carla_shared import (
) )


from carla_utils import getPluginTypeAsString from carla_utils import getPluginTypeAsString
#)


from widgets.collapsablewidget import CollapsibleBox from widgets.collapsablewidget import CollapsibleBox
from widgets.pixmapkeyboard import PixmapKeyboardHArea from widgets.pixmapkeyboard import PixmapKeyboardHArea
@@ -132,8 +132,8 @@ class CarlaAboutW(QDialog):
self.ui.l_about.setText(self.tr("" self.ui.l_about.setText(self.tr(""
"<br>Version %s" "<br>Version %s"
"<br>Carla is a fully-featured audio plugin host%s.<br>" "<br>Carla is a fully-featured audio plugin host%s.<br>"
"<br>Copyright (C) 2011-2022 falkTX<br>"
"" % (VERSION, extraInfo)))
"<br>Copyright (C) 2011-2025 falkTX<br>"
"" % (CARLA_VERSION_STRING, extraInfo)))


if self.ui.about.palette().color(QPalette.Background).blackF() < 0.5: if self.ui.about.palette().color(QPalette.Background).blackF() < 0.5:
self.ui.l_icons.setPixmap(QPixmap(":/bitmaps/carla_about_black.png")) self.ui.l_icons.setPixmap(QPixmap(":/bitmaps/carla_about_black.png"))
@@ -216,7 +216,7 @@ class CarlaAboutW(QDialog):
self.ui.l_vst2.setText(self.tr("About 85&#37; complete (missing vst bank/presets and some minor stuff)")) self.ui.l_vst2.setText(self.tr("About 85&#37; complete (missing vst bank/presets and some minor stuff)"))
self.ui.l_vst3.setText(self.tr("About 66&#37; complete")) self.ui.l_vst3.setText(self.tr("About 66&#37; complete"))


if MACOS:
if CARLA_OS_MAC:
self.ui.l_au.setText(self.tr("About 20&#37; complete")) self.ui.l_au.setText(self.tr("About 20&#37; complete"))
else: else:
self.ui.line_vst3.hide() self.ui.line_vst3.hide()
@@ -234,12 +234,12 @@ class CarlaAboutW(QDialog):
flags = self.windowFlags() flags = self.windowFlags()
flags &= ~Qt.WindowContextHelpButtonHint flags &= ~Qt.WindowContextHelpButtonHint


if WINDOWS:
if CARLA_OS_WIN:
flags |= Qt.MSWindowsFixedSizeDialogHint flags |= Qt.MSWindowsFixedSizeDialogHint


self.setWindowFlags(flags) self.setWindowFlags(flags)


if MACOS:
if CARLA_OS_MAC:
self.setWindowModality(Qt.WindowModal) self.setWindowModality(Qt.WindowModal)


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
@@ -1281,7 +1281,7 @@ class PluginEdit(QDialog):


QDialog.setVisible(self, yesNo) QDialog.setVisible(self, yesNo)


if MACOS and yesNo:
if CARLA_OS_MAC and yesNo:
parent = self.parent() parent = self.parent()
if parent is None: if parent is None:
return return


+ 34
- 45
source/frontend/common/__init__.py View File

@@ -1,20 +1,6 @@
#!/usr/bin/env python3 #!/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.
# SPDX-FileCopyrightText: 2011-2025 Filipe Coelho <falktx@falktx.com>
# SPDX-License-Identifier: GPL-2.0-or-later


# --------------------------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------------------------
# Imports (Global) # Imports (Global)
@@ -25,40 +11,43 @@ from sys import platform, maxsize
# --------------------------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------------------------
# Set Version # Set Version


VERSION = "2.6.0-alpha1"
CARLA_VERSION_HEX = 0x020591
CARLA_VERSION_STRING = "2.6.0-alpha1"
CARLA_VERSION_STRMIN = "2.6"


# --------------------------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------------------------
# 64bit check
# Set Platform

CARLA_OS_BSD = False
CARLA_OS_GNU_HURD = False
CARLA_OS_HAIKU = False
CARLA_OS_LINUX = False
CARLA_OS_MAC = False
CARLA_OS_UNIX = False
CARLA_OS_WASM = False
CARLA_OS_WIN = False
CARLA_OS_WIN32 = False
CARLA_OS_WIN64 = False


kIs64bit = bool(architecture()[0] == "64bit" and maxsize > 2**32)
if platform == "darwin":
CARLA_OS_MAC = True
elif platform == "haiku":
CARLA_OS_HAIKU = True
elif platform == "linux":
CARLA_OS_LINUX = True
elif platform == "win32":
CARLA_OS_WIN32 = True
elif platform == "win64":
CARLA_OS_WIN64 = True

if CARLA_OS_WIN32 and CARLA_OS_WIN64:
CARLA_OS_WIN = True
elif CARLA_OS_BSD or CARLA_OS_GNU_HURD or CARLA_OS_LINUX or CARLA_OS_MAC:
CARLA_OS_UNIX = True


# --------------------------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------------------------
# Set Platform
# 64bit check


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
CARLA_OS_64BIT = bool(architecture()[0] == "64bit" and maxsize > 2**32)


# --------------------------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------------------------

+ 2
- 2
source/frontend/pluginlist/pluginlistdialog.cpp View File

@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2011-2024 Filipe Coelho <falktx@falktx.com>
// SPDX-FileCopyrightText: 2011-2025 Filipe Coelho <falktx@falktx.com>
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later


#include "pluginlistdialog.hpp" #include "pluginlistdialog.hpp"
@@ -908,7 +908,7 @@ PluginListDialog::PluginListDialog(QWidget* const parent, const HostSettings* co


#if 0 #if 0
// NOTE: We Assume win32 carla build will not run win64 plugins // NOTE: We Assume win32 carla build will not run win64 plugins
if (WINDOWS and not kIs64bit) or not host.showPluginBridges:
if (CARLA_OS_WIN and not CARLA_OS_64BIT) or not host.showPluginBridges:
ui.ch_native.setChecked(True) ui.ch_native.setChecked(True)
ui.ch_native.setEnabled(False) ui.ch_native.setEnabled(False)
ui.ch_native.setVisible(True) ui.ch_native.setVisible(True)


+ 4
- 3
source/frontend/widgets/draggablegraphicsview.py View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# SPDX-FileCopyrightText: 2011-2024 Filipe Coelho <falktx@falktx.com>
# SPDX-FileCopyrightText: 2011-2025 Filipe Coelho <falktx@falktx.com>
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later


# --------------------------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------------------------
@@ -21,7 +21,8 @@ elif qt_config == 6:
# --------------------------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------------------------
# Imports (Custom Stuff) # Imports (Custom Stuff)


from carla_shared import MACOS, CustomMessageBox, gCarla
from carla_backend import CARLA_OS_MAC
from carla_shared import CustomMessageBox, gCarla


# --------------------------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------------------------
# Widget Class # Widget Class
@@ -47,7 +48,7 @@ class DraggableGraphicsView(QGraphicsView):
if os.path.isdir(filename): if os.path.isdir(filename):
#if os.path.exists(os.path.join(filename, "manifest.ttl")): #if os.path.exists(os.path.join(filename, "manifest.ttl")):
#return True #return True
if MACOS and lfilename.endswith(".vst"):
if CARLA_OS_MAC and lfilename.endswith(".vst"):
return True return True
if lfilename.endswith(".vst3") and ".vst3" in self.fSupportedExtensions: if lfilename.endswith(".vst3") and ".vst3" in self.fSupportedExtensions:
return True return True


+ 4
- 3
source/frontend/widgets/paramspinbox.py View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# SPDX-FileCopyrightText: 2011-2024 Filipe Coelho <falktx@falktx.com>
# SPDX-FileCopyrightText: 2011-2025 Filipe Coelho <falktx@falktx.com>
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
@@ -24,7 +24,8 @@ elif qt_config == 6:


import ui_inputdialog_value import ui_inputdialog_value


from carla_shared import countDecimalPoints, MACOS
from carla_backend import CARLA_OS_MAC
from carla_shared import countDecimalPoints


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Get a fixed value within min/max bounds # Get a fixed value within min/max bounds
@@ -59,7 +60,7 @@ class CustomInputDialog(QDialog):
self.ui.doubleSpinBox.setPrefix(prefix) self.ui.doubleSpinBox.setPrefix(prefix)
self.ui.doubleSpinBox.setSuffix(suffix) self.ui.doubleSpinBox.setSuffix(suffix)


if MACOS:
if CARLA_OS_MAC:
self.setWindowModality(Qt.WindowModal) self.setWindowModality(Qt.WindowModal)


if not scalePoints: if not scalePoints:


+ 3
- 3
source/frontend/widgets/racklistwidget.py View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# SPDX-FileCopyrightText: 2011-2024 Filipe Coelho <falktx@falktx.com>
# SPDX-FileCopyrightText: 2011-2025 Filipe Coelho <falktx@falktx.com>
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later


# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
@@ -24,7 +24,7 @@ elif qt_config == 6:
# ------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------
# Imports (Custom Stuff) # Imports (Custom Stuff)


from carla_backend import CUSTOM_DATA_TYPE_PROPERTY, MACOS
from carla_backend import CARLA_OS_MAC, CUSTOM_DATA_TYPE_PROPERTY
from carla_shared import gCarla, CustomMessageBox from carla_shared import gCarla, CustomMessageBox
from carla_skin import createPluginSlot from carla_skin import createPluginSlot


@@ -259,7 +259,7 @@ class RackListWidget(QListWidget):
if os.path.isdir(filename): if os.path.isdir(filename):
#if os.path.exists(os.path.join(filename, "manifest.ttl")): #if os.path.exists(os.path.join(filename, "manifest.ttl")):
#return True #return True
if MACOS and lfilename.endswith(".vst"):
if CARLA_OS_MAC and lfilename.endswith(".vst"):
return True return True
if lfilename.endswith(".vst3") and ".vst3" in self.fSupportedExtensions: if lfilename.endswith(".vst3") and ".vst3" in self.fSupportedExtensions:
return True return True


Loading…
Cancel
Save