Audio plugin host https://kx.studio/carla
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

279 lines
14KB

  1. /*
  2. * Carla plugin host
  3. * Copyright (C) 2011-2019 Filipe Coelho <falktx@falktx.com>
  4. *
  5. * This program is free software; you can redistribute it and/or
  6. * modify it under the terms of the GNU General Public License as
  7. * published by the Free Software Foundation; either version 2 of
  8. * the License, or any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * For a full copy of the GNU General Public License see the doc/GPL.txt file.
  16. */
  17. //---------------------------------------------------------------------------------------------------------------------
  18. // Imports (Global)
  19. #include <QtCore/QCoreApplication>
  20. #include <QtCore/QDir>
  21. #include <QtGui/QIcon>
  22. #include <QtGui/QPalette>
  23. #include <QtWidgets/QApplication>
  24. //---------------------------------------------------------------------------------------------------------------------
  25. // Imports (Custom)
  26. #include "app.hpp"
  27. #include "shared.hpp"
  28. //---------------------------------------------------------------------------------------------------------------------
  29. CarlaApplication::CarlaApplication(const QString appName, int& argc, char* argv[])
  30. : fApp(nullptr)
  31. {
  32. QCarlaString pathBinaries, pathResources;
  33. /*
  34. pathBinaries, pathResources = getPaths(libPrefix)
  35. // Needed for MacOS and Windows
  36. if (os.path.exists(CWD))
  37. QApplication.addLibraryPath(CWD)
  38. # Needed for local wine build
  39. if WINDOWS and CWD.endswith(("frontend", "resources")) and os.getenv("CXFREEZE") is None:
  40. if kIs64bit:
  41. path = "H:\\builds\\msys2-x86_64\\mingw64\\share\\qt5\\plugins"
  42. else:
  43. path = "H:\\builds\\msys2-i686\\mingw32\\share\\qt5\\plugins"
  44. QApplication.addLibraryPath(path)
  45. */
  46. QCarlaString stylesDir;
  47. // Use binary dir as library path
  48. /*
  49. if (QDir(pathBinaries).exists())
  50. {
  51. QApplication::addLibraryPath(pathBinaries);
  52. stylesDir = pathBinaries;
  53. }
  54. */
  55. // base settings
  56. const QSafeSettings settings("falkTX", appName);
  57. #ifdef CARLA_OS_MAC
  58. const bool useProTheme = true;
  59. #else
  60. const bool useProTheme = settings.valueBool(CARLA_KEY_MAIN_USE_PRO_THEME, CARLA_DEFAULT_MAIN_USE_PRO_THEME);
  61. #endif
  62. if (! useProTheme)
  63. {
  64. createApp(appName, argc, argv);
  65. return;
  66. }
  67. // set style
  68. QApplication::setStyle(stylesDir.isNotEmpty() ? "carla" : "fusion");
  69. // create app
  70. QApplication* const guiApp = createApp(appName, argc, argv);
  71. if (guiApp == nullptr)
  72. return;
  73. guiApp->setStyle(stylesDir.isNotEmpty() ? "carla" : "fusion");
  74. #ifdef MACOS
  75. if (true)
  76. #else
  77. // set palette
  78. const QString proThemeColor(settings.valueString(CARLA_KEY_MAIN_PRO_THEME_COLOR, CARLA_DEFAULT_MAIN_PRO_THEME_COLOR).toLower());
  79. if (proThemeColor == "black")
  80. #endif
  81. {
  82. QPalette palBlack;
  83. palBlack.setColor(QPalette::Disabled, QPalette::Window, QColor(14, 14, 14));
  84. palBlack.setColor(QPalette::Active, QPalette::Window, QColor(17, 17, 17));
  85. palBlack.setColor(QPalette::Inactive, QPalette::Window, QColor(17, 17, 17));
  86. palBlack.setColor(QPalette::Disabled, QPalette::WindowText, QColor(83, 83, 83));
  87. palBlack.setColor(QPalette::Active, QPalette::WindowText, QColor(240, 240, 240));
  88. palBlack.setColor(QPalette::Inactive, QPalette::WindowText, QColor(240, 240, 240));
  89. palBlack.setColor(QPalette::Disabled, QPalette::Base, QColor(6, 6, 6));
  90. palBlack.setColor(QPalette::Active, QPalette::Base, QColor(7, 7, 7));
  91. palBlack.setColor(QPalette::Inactive, QPalette::Base, QColor(7, 7, 7));
  92. palBlack.setColor(QPalette::Disabled, QPalette::AlternateBase, QColor(12, 12, 12));
  93. palBlack.setColor(QPalette::Active, QPalette::AlternateBase, QColor(14, 14, 14));
  94. palBlack.setColor(QPalette::Inactive, QPalette::AlternateBase, QColor(14, 14, 14));
  95. palBlack.setColor(QPalette::Disabled, QPalette::ToolTipBase, QColor(4, 4, 4));
  96. palBlack.setColor(QPalette::Active, QPalette::ToolTipBase, QColor(4, 4, 4));
  97. palBlack.setColor(QPalette::Inactive, QPalette::ToolTipBase, QColor(4, 4, 4));
  98. palBlack.setColor(QPalette::Disabled, QPalette::ToolTipText, QColor(230, 230, 230));
  99. palBlack.setColor(QPalette::Active, QPalette::ToolTipText, QColor(230, 230, 230));
  100. palBlack.setColor(QPalette::Inactive, QPalette::ToolTipText, QColor(230, 230, 230));
  101. palBlack.setColor(QPalette::Disabled, QPalette::Text, QColor(74, 74, 74));
  102. palBlack.setColor(QPalette::Active, QPalette::Text, QColor(230, 230, 230));
  103. palBlack.setColor(QPalette::Inactive, QPalette::Text, QColor(230, 230, 230));
  104. palBlack.setColor(QPalette::Disabled, QPalette::Button, QColor(24, 24, 24));
  105. palBlack.setColor(QPalette::Active, QPalette::Button, QColor(28, 28, 28));
  106. palBlack.setColor(QPalette::Inactive, QPalette::Button, QColor(28, 28, 28));
  107. palBlack.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(90, 90, 90));
  108. palBlack.setColor(QPalette::Active, QPalette::ButtonText, QColor(240, 240, 240));
  109. palBlack.setColor(QPalette::Inactive, QPalette::ButtonText, QColor(240, 240, 240));
  110. palBlack.setColor(QPalette::Disabled, QPalette::BrightText, QColor(255, 255, 255));
  111. palBlack.setColor(QPalette::Active, QPalette::BrightText, QColor(255, 255, 255));
  112. palBlack.setColor(QPalette::Inactive, QPalette::BrightText, QColor(255, 255, 255));
  113. palBlack.setColor(QPalette::Disabled, QPalette::Light, QColor(191, 191, 191));
  114. palBlack.setColor(QPalette::Active, QPalette::Light, QColor(191, 191, 191));
  115. palBlack.setColor(QPalette::Inactive, QPalette::Light, QColor(191, 191, 191));
  116. palBlack.setColor(QPalette::Disabled, QPalette::Midlight, QColor(155, 155, 155));
  117. palBlack.setColor(QPalette::Active, QPalette::Midlight, QColor(155, 155, 155));
  118. palBlack.setColor(QPalette::Inactive, QPalette::Midlight, QColor(155, 155, 155));
  119. palBlack.setColor(QPalette::Disabled, QPalette::Dark, QColor(129, 129, 129));
  120. palBlack.setColor(QPalette::Active, QPalette::Dark, QColor(129, 129, 129));
  121. palBlack.setColor(QPalette::Inactive, QPalette::Dark, QColor(129, 129, 129));
  122. palBlack.setColor(QPalette::Disabled, QPalette::Mid, QColor(94, 94, 94));
  123. palBlack.setColor(QPalette::Active, QPalette::Mid, QColor(94, 94, 94));
  124. palBlack.setColor(QPalette::Inactive, QPalette::Mid, QColor(94, 94, 94));
  125. palBlack.setColor(QPalette::Disabled, QPalette::Shadow, QColor(155, 155, 155));
  126. palBlack.setColor(QPalette::Active, QPalette::Shadow, QColor(155, 155, 155));
  127. palBlack.setColor(QPalette::Inactive, QPalette::Shadow, QColor(155, 155, 155));
  128. palBlack.setColor(QPalette::Disabled, QPalette::Highlight, QColor(14, 14, 14));
  129. palBlack.setColor(QPalette::Active, QPalette::Highlight, QColor(60, 60, 60));
  130. palBlack.setColor(QPalette::Inactive, QPalette::Highlight, QColor(34, 34, 34));
  131. palBlack.setColor(QPalette::Disabled, QPalette::HighlightedText, QColor(83, 83, 83));
  132. palBlack.setColor(QPalette::Active, QPalette::HighlightedText, QColor(255, 255, 255));
  133. palBlack.setColor(QPalette::Inactive, QPalette::HighlightedText, QColor(240, 240, 240));
  134. palBlack.setColor(QPalette::Disabled, QPalette::Link, QColor(34, 34, 74));
  135. palBlack.setColor(QPalette::Active, QPalette::Link, QColor(100, 100, 230));
  136. palBlack.setColor(QPalette::Inactive, QPalette::Link, QColor(100, 100, 230));
  137. palBlack.setColor(QPalette::Disabled, QPalette::LinkVisited, QColor(74, 34, 74));
  138. palBlack.setColor(QPalette::Active, QPalette::LinkVisited, QColor(230, 100, 230));
  139. palBlack.setColor(QPalette::Inactive, QPalette::LinkVisited, QColor(230, 100, 230));
  140. guiApp->setPalette(palBlack);
  141. }
  142. else if (proThemeColor == "blue")
  143. {
  144. QPalette palBlue;
  145. palBlue.setColor(QPalette::Disabled, QPalette::Window, QColor(32, 35, 39));
  146. palBlue.setColor(QPalette::Active, QPalette::Window, QColor(37, 40, 45));
  147. palBlue.setColor(QPalette::Inactive, QPalette::Window, QColor(37, 40, 45));
  148. palBlue.setColor(QPalette::Disabled, QPalette::WindowText, QColor(89, 95, 104));
  149. palBlue.setColor(QPalette::Active, QPalette::WindowText, QColor(223, 237, 255));
  150. palBlue.setColor(QPalette::Inactive, QPalette::WindowText, QColor(223, 237, 255));
  151. palBlue.setColor(QPalette::Disabled, QPalette::Base, QColor(48, 53, 60));
  152. palBlue.setColor(QPalette::Active, QPalette::Base, QColor(55, 61, 69));
  153. palBlue.setColor(QPalette::Inactive, QPalette::Base, QColor(55, 61, 69));
  154. palBlue.setColor(QPalette::Disabled, QPalette::AlternateBase, QColor(60, 64, 67));
  155. palBlue.setColor(QPalette::Active, QPalette::AlternateBase, QColor(69, 73, 77));
  156. palBlue.setColor(QPalette::Inactive, QPalette::AlternateBase, QColor(69, 73, 77));
  157. palBlue.setColor(QPalette::Disabled, QPalette::ToolTipBase, QColor(182, 193, 208));
  158. palBlue.setColor(QPalette::Active, QPalette::ToolTipBase, QColor(182, 193, 208));
  159. palBlue.setColor(QPalette::Inactive, QPalette::ToolTipBase, QColor(182, 193, 208));
  160. palBlue.setColor(QPalette::Disabled, QPalette::ToolTipText, QColor(42, 44, 48));
  161. palBlue.setColor(QPalette::Active, QPalette::ToolTipText, QColor(42, 44, 48));
  162. palBlue.setColor(QPalette::Inactive, QPalette::ToolTipText, QColor(42, 44, 48));
  163. palBlue.setColor(QPalette::Disabled, QPalette::Text, QColor(96, 103, 113));
  164. palBlue.setColor(QPalette::Active, QPalette::Text, QColor(210, 222, 240));
  165. palBlue.setColor(QPalette::Inactive, QPalette::Text, QColor(210, 222, 240));
  166. palBlue.setColor(QPalette::Disabled, QPalette::Button, QColor(51, 55, 62));
  167. palBlue.setColor(QPalette::Active, QPalette::Button, QColor(59, 63, 71));
  168. palBlue.setColor(QPalette::Inactive, QPalette::Button, QColor(59, 63, 71));
  169. palBlue.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(98, 104, 114));
  170. palBlue.setColor(QPalette::Active, QPalette::ButtonText, QColor(210, 222, 240));
  171. palBlue.setColor(QPalette::Inactive, QPalette::ButtonText, QColor(210, 222, 240));
  172. palBlue.setColor(QPalette::Disabled, QPalette::BrightText, QColor(255, 255, 255));
  173. palBlue.setColor(QPalette::Active, QPalette::BrightText, QColor(255, 255, 255));
  174. palBlue.setColor(QPalette::Inactive, QPalette::BrightText, QColor(255, 255, 255));
  175. palBlue.setColor(QPalette::Disabled, QPalette::Light, QColor(59, 64, 72));
  176. palBlue.setColor(QPalette::Active, QPalette::Light, QColor(63, 68, 76));
  177. palBlue.setColor(QPalette::Inactive, QPalette::Light, QColor(63, 68, 76));
  178. palBlue.setColor(QPalette::Disabled, QPalette::Midlight, QColor(48, 52, 59));
  179. palBlue.setColor(QPalette::Active, QPalette::Midlight, QColor(51, 56, 63));
  180. palBlue.setColor(QPalette::Inactive, QPalette::Midlight, QColor(51, 56, 63));
  181. palBlue.setColor(QPalette::Disabled, QPalette::Dark, QColor(18, 19, 22));
  182. palBlue.setColor(QPalette::Active, QPalette::Dark, QColor(20, 22, 25));
  183. palBlue.setColor(QPalette::Inactive, QPalette::Dark, QColor(20, 22, 25));
  184. palBlue.setColor(QPalette::Disabled, QPalette::Mid, QColor(28, 30, 34));
  185. palBlue.setColor(QPalette::Active, QPalette::Mid, QColor(32, 35, 39));
  186. palBlue.setColor(QPalette::Inactive, QPalette::Mid, QColor(32, 35, 39));
  187. palBlue.setColor(QPalette::Disabled, QPalette::Shadow, QColor(13, 14, 16));
  188. palBlue.setColor(QPalette::Active, QPalette::Shadow, QColor(15, 16, 18));
  189. palBlue.setColor(QPalette::Inactive, QPalette::Shadow, QColor(15, 16, 18));
  190. palBlue.setColor(QPalette::Disabled, QPalette::Highlight, QColor(32, 35, 39));
  191. palBlue.setColor(QPalette::Active, QPalette::Highlight, QColor(14, 14, 17));
  192. palBlue.setColor(QPalette::Inactive, QPalette::Highlight, QColor(27, 28, 33));
  193. palBlue.setColor(QPalette::Disabled, QPalette::HighlightedText, QColor(89, 95, 104));
  194. palBlue.setColor(QPalette::Active, QPalette::HighlightedText, QColor(217, 234, 253));
  195. palBlue.setColor(QPalette::Inactive, QPalette::HighlightedText, QColor(223, 237, 255));
  196. palBlue.setColor(QPalette::Disabled, QPalette::Link, QColor(79, 100, 118));
  197. palBlue.setColor(QPalette::Active, QPalette::Link, QColor(156, 212, 255));
  198. palBlue.setColor(QPalette::Inactive, QPalette::Link, QColor(156, 212, 255));
  199. palBlue.setColor(QPalette::Disabled, QPalette::LinkVisited, QColor(51, 74, 118));
  200. palBlue.setColor(QPalette::Active, QPalette::LinkVisited, QColor(64, 128, 255));
  201. palBlue.setColor(QPalette::Inactive, QPalette::LinkVisited, QColor(64, 128, 255));
  202. guiApp->setPalette(palBlue);
  203. }
  204. }
  205. QApplication* CarlaApplication::createApp(const QString& appName, int& argc, char* argv[])
  206. {
  207. #ifdef CARLA_OS_LINUX
  208. QApplication::setAttribute(Qt::AA_X11InitThreads);
  209. #endif
  210. #ifdef CARLA_OS_MAC
  211. QApplication::setAttribute(Qt::AA_DontShowIconsInMenus);
  212. #endif
  213. #if QT_VERSION >= 0x50600
  214. QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
  215. QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
  216. #endif
  217. /*
  218. // TODO
  219. args = sys.argv[:]
  220. if WINDOWS:
  221. args += ["-platform", "windows:fontengine=freetype"]
  222. */
  223. fApp = gCarla.nogui ? new QCoreApplication(argc, argv) : new QApplication(argc, argv);
  224. fApp->setApplicationName(appName);
  225. fApp->setApplicationVersion(CARLA_VERSION_STRING);
  226. fApp->setOrganizationName("falkTX");
  227. if (gCarla.nogui)
  228. return nullptr;
  229. QApplication* const guiApp = dynamic_cast<QApplication*>(fApp);
  230. CARLA_SAFE_ASSERT_RETURN(guiApp != nullptr, nullptr);
  231. if (appName.toLower() == "carla-control")
  232. {
  233. #if QT_VERSION >= 0x50700
  234. guiApp->setDesktopFileName("carla-control");
  235. #endif
  236. guiApp->setWindowIcon(QIcon(":/scalable/carla-control.svg"));
  237. }
  238. else
  239. {
  240. #if QT_VERSION >= 0x50700
  241. guiApp->setDesktopFileName("carla");
  242. #endif
  243. guiApp->setWindowIcon(QIcon(":/scalable/carla.svg"));
  244. }
  245. return guiApp;
  246. }
  247. //---------------------------------------------------------------------------------------------------------------------