Collection of tools useful for audio production
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.

653 lines
30KB

  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. # PatchBay Canvas Themes
  4. # Copyright (C) 2010-2012 Filipe Coelho <falktx@falktx.com>
  5. #
  6. # This program is free software; you can redistribute it and/or modify
  7. # it under the terms of the GNU General Public License as published by
  8. # the Free Software Foundation; either version 2 of the License, or
  9. # any later version.
  10. #
  11. # This program is distributed in the hope that it will be useful,
  12. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. # GNU General Public License for more details.
  15. #
  16. # For a full copy of the GNU General Public License see the COPYING file
  17. # ------------------------------------------------------------------------------------------------------------
  18. # Imports (Global)
  19. from PyQt4.QtCore import Qt
  20. from PyQt4.QtGui import QColor, QFont, QFontMetrics, QPen, QPixmap
  21. # ------------------------------------------------------------------------------------------------------------
  22. # patchcanvas-theme.cpp
  23. # Utilities
  24. ## hsvAdjusted() - returns color with selectively rewrote HSV parameters
  25. def hsvAdjusted(color, hue = -1, saturation = -1, value = -1, alpha = -1):
  26. if hue == -1: hue = color.hue()
  27. if saturation == -1: saturation = color.saturation()
  28. if value == -1: value = color.value()
  29. if alpha == -1: alpha = color.alpha()
  30. return QColor.fromHsv(hue, saturation, value, alpha)
  31. ## hsvAdjusted() variant for relative changes
  32. def hsvAdjustedRel(color, hue = 0, saturation = 0, value = 0, alpha = 0):
  33. return QColor.fromHsv(
  34. color.hue()+hue,
  35. color.saturation()+saturation,
  36. color.value()+value,
  37. color.alpha()+alpha)
  38. class Theme(object):
  39. # enum PortType
  40. THEME_PORT_SQUARE = 0
  41. THEME_PORT_POLYGON = 1
  42. # enum List
  43. THEME_MODERN_DARK = 0
  44. THEME_MODERN_DARK_TINY = 1
  45. THEME_MODERN_LIGHT = 2
  46. THEME_CLASSIC_DARK = 3
  47. THEME_NEOCLASSIC_DARK = 4
  48. THEME_OOSTUDIO = 5
  49. THEME_MAX = 6
  50. # enum BackgroundType
  51. THEME_BG_SOLID = 0
  52. THEME_BG_GRADIENT = 1
  53. def __init__(self, idx):
  54. object.__init__(self)
  55. self.idx = idx
  56. self.port_side_min_space = 3
  57. if idx == self.THEME_MODERN_DARK:
  58. # Canvas
  59. self.canvas_bg = QColor(0, 0, 0)
  60. # Boxes
  61. self.box_pen = QPen(QColor(76, 77, 78), 1, Qt.SolidLine)
  62. self.box_pen_sel = QPen(QColor(206, 207, 208), 1, Qt.DashLine)
  63. self.box_bg_1 = QColor(32, 34, 35)
  64. self.box_bg_2 = QColor(43, 47, 48)
  65. self.box_shadow = QColor(89, 89, 89, 180)
  66. self.box_hover = QColor(255, 255, 255, 60)
  67. self.box_header_pixmap = None
  68. self.box_header_height = 24
  69. self.box_header_spacing = 0
  70. self.box_rounding = 3.0
  71. self.box_text = QPen(QColor(240, 240, 240), 0)
  72. self.box_text_sel = self.box_text
  73. self.box_font_name = "Deja Vu Sans"
  74. self.box_font_size = 8
  75. self.box_font_state = QFont.Bold
  76. self.box_bg_type = self.THEME_BG_GRADIENT
  77. self.box_use_icon = True
  78. # Ports
  79. self.port_text = QPen(QColor(250, 250, 250, 180), 0)
  80. self.port_hover = QColor(255, 255, 255, 80)
  81. self.port_bg_pixmap = None
  82. self.port_font_name = "Deja Vu Sans"
  83. self.port_font_size = 8
  84. self.port_font_state = QFont.Normal
  85. self.port_mode = self.THEME_PORT_POLYGON
  86. self.port_audio_jack_pen = QPen(QColor(63, 90, 126), 1)
  87. self.port_audio_jack_pen_sel = QPen(QColor(63 + 30, 90 + 30, 126 + 30), 1)
  88. self.port_midi_jack_pen = QPen(QColor(159, 44, 42), 1)
  89. self.port_midi_jack_pen_sel = QPen(QColor(159 + 30, 44 + 30, 42 + 30), 1)
  90. self.port_midi_a2j_pen = QPen(QColor(137, 76, 43), 1)
  91. self.port_midi_a2j_pen_sel = QPen(QColor(137 + 30, 76 + 30, 43 + 30), 1)
  92. self.port_midi_alsa_pen = QPen(QColor(93, 141, 46), 1)
  93. self.port_midi_alsa_pen_sel = QPen(QColor(93 + 30, 141 + 30, 46 + 30), 1)
  94. self.port_audio_jack_bg = QColor(35, 61, 99)
  95. self.port_audio_jack_bg_sel = QColor(35 + 50, 61 + 50, 99 + 50)
  96. self.port_midi_jack_bg = QColor(120, 15, 16)
  97. self.port_midi_jack_bg_sel = QColor(120 + 50, 15 + 50, 16 + 50)
  98. self.port_midi_a2j_bg = QColor(101, 47, 16)
  99. self.port_midi_a2j_bg_sel = QColor(101 + 50, 47 + 50, 16 + 50)
  100. self.port_midi_alsa_bg = QColor(64, 112, 18)
  101. self.port_midi_alsa_bg_sel = QColor(64 + 50, 112 + 50, 18 + 50)
  102. self.port_audio_jack_text = self.port_text
  103. self.port_audio_jack_text_sel = self.port_text
  104. self.port_midi_jack_text = self.port_text
  105. self.port_midi_jack_text_sel = self.port_text
  106. self.port_midi_a2j_text = self.port_text
  107. self.port_midi_a2j_text_sel = self.port_text
  108. self.port_midi_alsa_text = self.port_text
  109. self.port_midi_alsa_text_sel = self.port_text
  110. self.port_text_padding = 1
  111. self.port_offset = 0
  112. self.port_spacing = 3
  113. self.port_spacingT = 2
  114. self.port_rounding = 0.0
  115. # To not scale some line widths
  116. self.box_pen.setCosmetic(True)
  117. self.box_pen_sel.setCosmetic(True)
  118. self.port_audio_jack_pen.setCosmetic(True)
  119. self.port_audio_jack_pen_sel.setCosmetic(True)
  120. self.port_midi_jack_pen.setCosmetic(True)
  121. self.port_midi_jack_pen_sel.setCosmetic(True)
  122. self.port_midi_a2j_pen.setCosmetic(True)
  123. self.port_midi_a2j_pen_sel.setCosmetic(True)
  124. self.port_midi_alsa_pen.setCosmetic(True)
  125. self.port_midi_alsa_pen_sel.setCosmetic(True)
  126. # Lines
  127. self.line_audio_jack = QColor(63, 90, 126)
  128. self.line_audio_jack_sel = QColor(63 + 90, 90 + 90, 126 + 90)
  129. self.line_audio_jack_glow = QColor(100, 100, 200)
  130. self.line_midi_jack = QColor(159, 44, 42)
  131. self.line_midi_jack_sel = QColor(159 + 90, 44 + 90, 42 + 90)
  132. self.line_midi_jack_glow = QColor(200, 100, 100)
  133. self.line_midi_a2j = QColor(137, 76, 43)
  134. self.line_midi_a2j_sel = QColor(137 + 90, 76 + 90, 43 + 90)
  135. self.line_midi_a2j_glow = QColor(166, 133, 133)
  136. self.line_midi_alsa = QColor(93, 141, 46)
  137. self.line_midi_alsa_sel = QColor(93 + 90, 141 + 90, 46 + 90)
  138. self.line_midi_alsa_glow = QColor(100, 200, 100)
  139. self.rubberband_pen = QPen(QColor(206, 207, 208), 1, Qt.SolidLine)
  140. self.rubberband_brush = QColor(76, 77, 78, 100)
  141. elif idx == self.THEME_MODERN_DARK_TINY:
  142. # Canvas
  143. self.canvas_bg = QColor(0, 0, 0)
  144. # Boxes
  145. self.box_pen = QPen(QColor(76, 77, 78), 1, Qt.SolidLine)
  146. self.box_pen_sel = QPen(QColor(206, 207, 208), 1, Qt.DashLine)
  147. self.box_bg_1 = QColor(32, 34, 35)
  148. self.box_bg_2 = QColor(43, 47, 48)
  149. self.box_shadow = QColor(89, 89, 89, 180)
  150. self.box_hover = QColor(255, 255, 255, 60)
  151. self.box_header_pixmap = None
  152. self.box_header_height = 14
  153. self.box_header_spacing = 0
  154. self.box_rounding = 2.0
  155. self.box_text = QPen(QColor(240, 240, 240), 0)
  156. self.box_text_sel = self.box_text
  157. self.box_font_name = "Deja Vu Sans"
  158. self.box_font_size = 7
  159. self.box_font_state = QFont.Bold
  160. self.box_bg_type = self.THEME_BG_GRADIENT
  161. self.box_use_icon = False
  162. # Ports
  163. self.port_text = QPen(QColor(250, 250, 250, 220), 0)
  164. self.port_hover = QColor(255, 255, 255, 80)
  165. self.port_bg_pixmap = None
  166. self.port_font_name = "Deja Vu Sans"
  167. self.port_font_size = 6
  168. self.port_font_state = QFont.Normal
  169. self.port_mode = self.THEME_PORT_POLYGON
  170. self.port_audio_jack_pen = QPen(QColor(63, 90, 126), 1)
  171. self.port_audio_jack_pen_sel = QPen(QColor(63 + 30, 90 + 30, 126 + 30), 1)
  172. self.port_midi_jack_pen = QPen(QColor(159, 44, 42), 1)
  173. self.port_midi_jack_pen_sel = QPen(QColor(159 + 30, 44 + 30, 42 + 30), 1)
  174. self.port_midi_a2j_pen = QPen(QColor(137, 76, 43), 1)
  175. self.port_midi_a2j_pen_sel = QPen(QColor(137 + 30, 76 + 30, 43 + 30), 1)
  176. self.port_midi_alsa_pen = QPen(QColor(93, 141, 46), 1)
  177. self.port_midi_alsa_pen_sel = QPen(QColor(93 + 30, 141 + 30, 46 + 30), 1)
  178. self.port_audio_jack_bg = QColor(35, 61, 99)
  179. self.port_audio_jack_bg_sel = QColor(35 + 50, 61 + 50, 99 + 50)
  180. self.port_midi_jack_bg = QColor(120, 15, 16)
  181. self.port_midi_jack_bg_sel = QColor(120 + 50, 15 + 50, 16 + 50)
  182. self.port_midi_a2j_bg = QColor(101, 47, 16)
  183. self.port_midi_a2j_bg_sel = QColor(101 + 50, 47 + 50, 16 + 50)
  184. self.port_midi_alsa_bg = QColor(64, 112, 18)
  185. self.port_midi_alsa_bg_sel = QColor(64 + 50, 112 + 50, 18 + 50)
  186. self.port_audio_jack_text = self.port_text
  187. self.port_audio_jack_text_sel = self.port_text
  188. self.port_midi_jack_text = self.port_text
  189. self.port_midi_jack_text_sel = self.port_text
  190. self.port_midi_a2j_text = self.port_text
  191. self.port_midi_a2j_text_sel = self.port_text
  192. self.port_midi_alsa_text = self.port_text
  193. self.port_midi_alsa_text_sel = self.port_text
  194. self.port_text_padding = 1
  195. self.port_offset = 0
  196. self.port_spacing = -1
  197. self.port_spacingT = 2
  198. self.port_rounding = 0.0
  199. # To not scale some line widths
  200. self.box_pen.setCosmetic(True)
  201. self.box_pen_sel.setCosmetic(True)
  202. self.port_audio_jack_pen.setCosmetic(True)
  203. self.port_audio_jack_pen_sel.setCosmetic(True)
  204. self.port_midi_jack_pen.setCosmetic(True)
  205. self.port_midi_jack_pen_sel.setCosmetic(True)
  206. self.port_midi_a2j_pen.setCosmetic(True)
  207. self.port_midi_a2j_pen_sel.setCosmetic(True)
  208. self.port_midi_alsa_pen.setCosmetic(True)
  209. self.port_midi_alsa_pen_sel.setCosmetic(True)
  210. # Lines
  211. self.line_audio_jack = QColor(63, 90, 126)
  212. self.line_audio_jack_sel = QColor(63 + 90, 90 + 90, 126 + 90)
  213. self.line_audio_jack_glow = QColor(100, 100, 200)
  214. self.line_midi_jack = QColor(159, 44, 42)
  215. self.line_midi_jack_sel = QColor(159 + 90, 44 + 90, 42 + 90)
  216. self.line_midi_jack_glow = QColor(200, 100, 100)
  217. self.line_midi_a2j = QColor(137, 76, 43)
  218. self.line_midi_a2j_sel = QColor(137 + 90, 76 + 90, 43 + 90)
  219. self.line_midi_a2j_glow = QColor(166, 133, 133)
  220. self.line_midi_alsa = QColor(93, 141, 46)
  221. self.line_midi_alsa_sel = QColor(93 + 90, 141 + 90, 46 + 90)
  222. self.line_midi_alsa_glow = QColor(100, 200, 100)
  223. self.rubberband_pen = QPen(QColor(206, 207, 208), 1, Qt.SolidLine)
  224. self.rubberband_brush = QColor(76, 77, 78, 100)
  225. elif idx == self.THEME_MODERN_LIGHT:
  226. # Canvas
  227. self.canvas_bg = QColor(248, 249, 250)
  228. # Boxes
  229. self.box_pen = QPen(QColor(0, 0, 0, 60), 1, Qt.SolidLine)
  230. self.box_pen_sel = QPen(QColor(1, 2, 3), 2, Qt.DashLine)
  231. self.box_bg_1 = QColor(220, 220, 220)
  232. self.box_bg_2 = self.box_bg_1.darker(120)
  233. self.box_shadow = QColor(1, 1, 1, 100)
  234. self.box_hover = QColor(0, 0, 0, 60)
  235. self.box_header_pixmap = None
  236. self.box_header_height = 24
  237. self.box_header_spacing = 0
  238. self.box_rounding = 3.0
  239. self.box_text = QPen(QColor(1, 1, 1), 0)
  240. self.box_text_sel = self.box_text
  241. self.box_font_name = "Ubuntu"
  242. self.box_font_size = 10
  243. self.box_font_state = QFont.Bold
  244. self.box_bg_type = self.THEME_BG_GRADIENT
  245. self.box_use_icon = True
  246. # Ports
  247. self.port_text = QPen(QColor(255, 255, 255, 220), 1)
  248. self.port_hover = QColor(0, 0, 0, 255)
  249. self.port_bg_pixmap = None
  250. self.port_font_name = "Ubuntu"
  251. self.port_font_size = 9
  252. self.port_font_state = QFont.Bold
  253. self.port_mode = self.THEME_PORT_POLYGON
  254. # Port colors
  255. port_audio_jack_color = QColor.fromHsv(240, 214, 181)
  256. port_midi_jack_color = QColor.fromHsv(0, 214, 130)
  257. port_midi_a2j_color = QColor.fromHsv(22, 214, 102)
  258. port_midi_alsa_color = QColor.fromHsv(91, 214, 112)
  259. port_lineW = 1
  260. port_pen_shade = 130
  261. self.port_audio_jack_pen = QPen(port_audio_jack_color.darker(port_pen_shade), port_lineW)
  262. self.port_midi_jack_pen = QPen(port_midi_jack_color.darker(port_pen_shade), port_lineW)
  263. self.port_midi_a2j_pen = QPen(port_midi_a2j_color.darker(port_pen_shade), port_lineW)
  264. self.port_midi_alsa_pen = QPen(port_midi_alsa_color.darker(port_pen_shade), port_lineW)
  265. port_selW = 1.5
  266. self.port_audio_jack_pen_sel = QPen(port_audio_jack_color.lighter(port_pen_shade), port_selW)
  267. self.port_midi_jack_pen_sel = QPen(port_midi_jack_color.lighter(port_pen_shade), port_selW)
  268. self.port_midi_a2j_pen_sel = QPen(port_midi_a2j_color.lighter(port_pen_shade), port_selW)
  269. self.port_midi_alsa_pen_sel = QPen(port_midi_alsa_color.lighter(port_pen_shade), port_selW)
  270. port_bg_shade = 170
  271. self.port_audio_jack_bg = port_audio_jack_color
  272. self.port_midi_jack_bg = port_midi_jack_color
  273. self.port_midi_a2j_bg = port_midi_a2j_color
  274. self.port_midi_alsa_bg = port_midi_alsa_color
  275. self.port_audio_jack_bg_sel = hsvAdjustedRel(self.port_audio_jack_bg, saturation = -80).lighter(130)
  276. self.port_midi_jack_bg_sel = hsvAdjustedRel(self.port_midi_jack_bg, saturation = -80).lighter(130)
  277. self.port_midi_a2j_bg_sel = hsvAdjustedRel(self.port_midi_a2j_bg, saturation = -80).lighter(130)
  278. self.port_midi_alsa_bg_sel = hsvAdjustedRel(self.port_midi_alsa_bg, saturation = -80).lighter(130)
  279. self.port_audio_jack_text = QPen(hsvAdjustedRel(port_audio_jack_color, hue = -30, saturation = -70, value = 70), 1)
  280. self.port_midi_jack_text = QPen(hsvAdjustedRel(port_midi_jack_color, hue = 10, saturation = -70, value = 70), 1)
  281. self.port_midi_a2j_text = QPen(hsvAdjustedRel(port_midi_a2j_color, hue = 8, saturation = -70, value = 70), 1)
  282. self.port_midi_alsa_text = QPen(hsvAdjustedRel(port_midi_alsa_color, hue = -8, saturation = -70, value = 70), 1)
  283. self.port_audio_jack_text_sel = self.port_text
  284. self.port_midi_jack_text_sel = self.port_text
  285. self.port_midi_a2j_text_sel = self.port_text
  286. self.port_midi_alsa_text_sel = self.port_text
  287. self.port_text_padding = 0.5
  288. self.port_offset = 0
  289. self.port_spacing = 2
  290. self.port_spacingT = 1
  291. self.port_rounding = 0.0
  292. # To not scale some line widths
  293. self.box_pen.setCosmetic(True)
  294. self.box_pen_sel.setCosmetic(True)
  295. self.port_audio_jack_pen.setCosmetic(True)
  296. self.port_audio_jack_pen_sel.setCosmetic(True)
  297. self.port_midi_jack_pen.setCosmetic(True)
  298. self.port_midi_jack_pen_sel.setCosmetic(True)
  299. self.port_midi_a2j_pen.setCosmetic(True)
  300. self.port_midi_a2j_pen_sel.setCosmetic(True)
  301. self.port_midi_alsa_pen.setCosmetic(True)
  302. self.port_midi_alsa_pen_sel.setCosmetic(True)
  303. # Lines
  304. self.line_audio_jack = QColor(63, 90, 126)
  305. self.line_audio_jack_sel = QColor(63 + 63, 90 + 90, 126 + 90)
  306. self.line_audio_jack_glow = QColor(100, 100, 200)
  307. self.line_midi_jack = QColor(159, 44, 42)
  308. self.line_midi_jack_sel = QColor(159 + 44, 44 + 90, 42 + 90)
  309. self.line_midi_jack_glow = QColor(200, 100, 100)
  310. self.line_midi_a2j = QColor(137, 43, 43)
  311. self.line_midi_a2j_sel = QColor(137 + 90, 76 + 90, 43 + 90)
  312. self.line_midi_a2j_glow = QColor(166, 133, 133)
  313. self.line_midi_alsa = QColor(93, 141, 46)
  314. self.line_midi_alsa_sel = QColor(93 + 90, 141 + 90, 46 + 90)
  315. self.line_midi_alsa_glow = QColor(100, 200, 100)
  316. self.rubberband_pen = QPen(QColor(76, 77, 78, 130), 1, Qt.SolidLine)
  317. self.rubberband_brush = QColor(76, 77, 78, 100)
  318. elif idx == self.THEME_CLASSIC_DARK:
  319. # Canvas
  320. self.canvas_bg = QColor(0, 0, 0)
  321. # Boxes
  322. self.box_pen = QPen(QColor(143 - 70, 143 - 70, 143 - 70), 1, Qt.SolidLine)
  323. self.box_pen_sel = QPen(QColor(143, 143, 143), 1, Qt.CustomDashLine, Qt.RoundCap)
  324. self.box_pen_sel.setDashPattern([3, 4])
  325. self.box_bg_1 = QColor(30, 34, 36)
  326. self.box_bg_2 = QColor(30, 34, 36)
  327. self.box_shadow = QColor(89, 89, 89, 180)
  328. self.box_hover = QColor(255, 255, 255, 60)
  329. self.box_header_pixmap = None
  330. self.box_header_height = 19
  331. self.box_header_spacing = 0
  332. self.box_rounding = 0.0
  333. self.box_text = QPen(QColor(255, 255, 255), 0)
  334. self.box_text_sel = self.box_text
  335. self.box_font_name = "Sans"
  336. self.box_font_size = 9
  337. self.box_font_state = QFont.Normal
  338. self.box_bg_type = self.THEME_BG_GRADIENT
  339. self.box_use_icon = False
  340. # Ports
  341. self.port_text = QPen(QColor(250, 250, 250, 150), 0)
  342. self.port_hover = QColor(255, 255, 255, 150)
  343. self.port_bg_pixmap = None
  344. self.port_font_name = "Sans"
  345. self.port_font_size = 8
  346. self.port_font_state = QFont.Normal
  347. self.port_mode = self.THEME_PORT_SQUARE
  348. self.port_audio_jack_bg = hsvAdjusted(QColor(41, 61, 99), saturation=120)
  349. self.port_audio_jack_bg_sel = QColor(255, 0, 0)
  350. self.port_midi_jack_bg = hsvAdjusted(QColor(120, 15, 16), saturation=150)
  351. self.port_midi_jack_bg_sel = QColor(255, 0, 0)
  352. self.port_midi_a2j_bg = hsvAdjusted(QColor(101, 47, 17), saturation=150)
  353. self.port_midi_a2j_bg_sel = QColor(255, 0, 0)
  354. self.port_midi_alsa_bg = hsvAdjusted(QColor(63, 112, 19), saturation=120)
  355. self.port_midi_alsa_bg_sel = QColor(255, 0, 0)
  356. port_pen = QPen(QColor(255, 255, 255, 50), 1)
  357. self.port_audio_jack_pen_sel = self.port_audio_jack_pen = QPen(hsvAdjustedRel(self.port_audio_jack_bg.lighter(180), saturation=-60), 1)
  358. self.port_midi_jack_pen_sel = self.port_midi_jack_pen = QPen(hsvAdjustedRel(self.port_midi_jack_bg.lighter(180), saturation=-60), 1)
  359. self.port_midi_a2j_pen_sel = self.port_midi_a2j_pen = QPen(hsvAdjustedRel(self.port_midi_a2j_bg.lighter(180), saturation=-60), 1)
  360. self.port_midi_alsa_pen_sel = self.port_midi_alsa_pen = QPen(hsvAdjustedRel(self.port_midi_alsa_bg.lighter(180), saturation=-60), 1)
  361. self.port_audio_jack_text = self.port_audio_jack_pen_sel
  362. self.port_audio_jack_text_sel = self.port_audio_jack_pen_sel
  363. self.port_midi_jack_text = self.port_midi_jack_pen_sel
  364. self.port_midi_jack_text_sel = self.port_midi_jack_pen_sel
  365. self.port_midi_a2j_text = self.port_midi_a2j_pen_sel
  366. self.port_midi_a2j_text_sel = self.port_midi_a2j_pen_sel
  367. self.port_midi_alsa_text = self.port_midi_alsa_pen_sel
  368. self.port_midi_alsa_text_sel = self.port_midi_alsa_pen_sel
  369. self.port_text_padding = 0
  370. self.port_offset = 0
  371. self.port_spacing = 1
  372. self.port_spacingT = 0
  373. self.port_rounding = 0.0
  374. # Lines
  375. self.line_audio_jack = QColor(53, 78, 116)
  376. self.line_audio_jack_sel = QColor(255, 0, 0)
  377. self.line_audio_jack_glow = QColor(255, 0, 0)
  378. self.line_midi_jack = QColor(139, 32, 32)
  379. self.line_midi_jack_sel = QColor(255, 0, 0)
  380. self.line_midi_jack_glow = QColor(255, 0, 0)
  381. self.line_midi_a2j = QColor(120, 65, 33)
  382. self.line_midi_a2j_sel = QColor(255, 0, 0)
  383. self.line_midi_a2j_glow = QColor(255, 0, 0)
  384. self.line_midi_alsa = QColor(81, 130, 36)
  385. self.line_midi_alsa_sel = QColor(255, 0, 0)
  386. self.line_midi_alsa_glow = QColor(255, 0, 0)
  387. self.rubberband_pen = QPen(QColor(147, 151, 143), 1, Qt.SolidLine)
  388. self.rubberband_brush = QColor(35, 61, 99, 100)
  389. elif idx == self.THEME_NEOCLASSIC_DARK:
  390. # Canvas
  391. self.canvas_bg = QColor(0, 0, 0)
  392. # Boxes
  393. self.box_pen = QPen(QColor(143 - 70, 143 - 70, 143 - 70), 2, Qt.SolidLine)
  394. self.box_pen_sel = QPen(QColor(143, 143, 143), 2, Qt.CustomDashLine, Qt.RoundCap)
  395. self.box_pen_sel.setDashPattern([1.5, 3])
  396. self.box_bg_1 = QColor(30, 34, 36)
  397. self.box_bg_2 = QColor(30, 34, 36)
  398. self.box_shadow = QColor(89, 89, 89, 180)
  399. self.box_hover = QColor(255, 255, 255, 60)
  400. self.box_header_pixmap = None
  401. self.box_header_height = 19
  402. self.box_header_spacing = 0
  403. self.box_rounding = 4.0
  404. self.box_text = QPen(QColor(255, 255, 255), 0)
  405. self.box_text_sel = self.box_text
  406. self.box_font_name = "Sans"
  407. self.box_font_size = 8
  408. self.box_font_state = QFont.Normal
  409. self.box_bg_type = self.THEME_BG_GRADIENT
  410. self.box_use_icon = False
  411. # Ports
  412. self.port_text = QPen(QColor(250, 250, 250), 0)
  413. self.port_hover = QColor(255, 255, 255, 80)
  414. self.port_bg_pixmap = None
  415. self.port_font_name = "Sans"
  416. self.port_font_size = 8
  417. self.port_font_state = QFont.Normal
  418. self.port_mode = self.THEME_PORT_SQUARE
  419. port_dash = [4, 3]
  420. self.port_audio_jack_pen = QPen(QColor(55, 91, 149), 1)
  421. self.port_midi_jack_pen = QPen(QColor(150, 25, 26), 1)
  422. self.port_midi_a2j_pen = QPen(QColor(141, 67, 27), 1)
  423. self.port_midi_alsa_pen = QPen(QColor(83, 152, 29), 1)
  424. self.port_audio_jack_pen_sel = QPen(QColor(55, 91, 149), 1, Qt.CustomDashLine, Qt.RoundCap)
  425. self.port_midi_jack_pen_sel = QPen(QColor(150, 25, 26), 1, Qt.CustomDashLine, Qt.RoundCap)
  426. self.port_midi_a2j_pen_sel = QPen(QColor(141, 67, 27), 1, Qt.CustomDashLine, Qt.RoundCap)
  427. self.port_midi_alsa_pen_sel = QPen(QColor(83, 152, 29), 1, Qt.CustomDashLine, Qt.RoundCap)
  428. self.port_audio_jack_pen_sel.setDashPattern(port_dash);
  429. self.port_midi_jack_pen_sel.setDashPattern(port_dash);
  430. self.port_midi_a2j_pen_sel.setDashPattern(port_dash);
  431. self.port_midi_alsa_pen_sel.setDashPattern(port_dash);
  432. self.port_audio_jack_bg = QColor(35, 61, 99)
  433. self.port_midi_jack_bg = QColor(120, 15, 16)
  434. self.port_midi_a2j_bg = QColor(101, 47, 17)
  435. self.port_midi_alsa_bg = QColor(63, 112, 19)
  436. self.port_audio_jack_bg_sel = self.port_audio_jack_bg.darker(150)
  437. self.port_midi_jack_bg_sel = self.port_midi_jack_bg.darker(150)
  438. self.port_midi_a2j_bg_sel = self.port_midi_a2j_bg.darker(150)
  439. self.port_midi_alsa_bg_sel = self.port_midi_alsa_bg.darker(150)
  440. self.port_audio_jack_text = self.port_text
  441. self.port_audio_jack_text_sel = self.port_text
  442. self.port_midi_jack_text = self.port_text
  443. self.port_midi_jack_text_sel = self.port_text
  444. self.port_midi_a2j_text = self.port_text
  445. self.port_midi_a2j_text_sel = self.port_text
  446. self.port_midi_alsa_text = self.port_text
  447. self.port_midi_alsa_text_sel = self.port_text
  448. self.port_text_padding = 1
  449. self.port_offset = 0
  450. self.port_spacing = 1
  451. self.port_spacingT = 0
  452. self.port_rounding = 4.0
  453. # Lines
  454. self.line_audio_jack = QColor(53, 78, 116)
  455. self.line_audio_jack_sel = self.line_audio_jack.lighter(200)
  456. self.line_audio_jack_glow = self.line_audio_jack.lighter(180)
  457. self.line_midi_jack = QColor(139, 32, 32)
  458. self.line_midi_jack_sel = self.line_midi_jack.lighter(200)
  459. self.line_midi_jack_glow = self.line_midi_jack.lighter(180)
  460. self.line_midi_a2j = QColor(120, 65, 33)
  461. self.line_midi_a2j_sel = self.line_midi_a2j.lighter(200)
  462. self.line_midi_a2j_glow = self.line_midi_a2j.lighter(180)
  463. self.line_midi_alsa = QColor(81, 130, 36)
  464. self.line_midi_alsa_sel = self.line_midi_alsa.lighter(200)
  465. self.line_midi_alsa_glow = self.line_midi_alsa.lighter(180)
  466. self.rubberband_pen = QPen(QColor.fromHsv(191, 100, 120, 170), 2, Qt.SolidLine)
  467. self.rubberband_brush = QColor.fromHsv(191, 100, 99, 100)
  468. elif idx == self.THEME_OOSTUDIO:
  469. # Canvas
  470. self.canvas_bg = QColor(11, 11, 11)
  471. # Boxes
  472. self.box_pen = QPen(QColor(76, 77, 78), 1, Qt.SolidLine)
  473. self.box_pen_sel = QPen(QColor(189, 122, 214), 1, Qt.DashLine)
  474. self.box_bg_1 = QColor(46, 46, 46)
  475. self.box_bg_2 = QColor(23, 23, 23)
  476. self.box_shadow = QColor(89, 89, 89, 180)
  477. self.box_hover = QColor(255, 255, 255, 60)
  478. self.box_header_pixmap = QPixmap(":/bitmaps/canvas/frame_node_header.png")
  479. self.box_header_height = 22
  480. self.box_header_spacing = 6
  481. self.box_rounding = 3.0
  482. self.box_text = QPen(QColor(144, 144, 144), 0)
  483. self.box_text_sel = QPen(QColor(189, 122, 214), 0)
  484. self.box_font_name = "Deja Vu Sans"
  485. self.box_font_size = 8
  486. self.box_font_state = QFont.Bold
  487. self.box_bg_type = self.THEME_BG_SOLID
  488. self.box_use_icon = False
  489. # Ports
  490. normalPortBG = QColor(46, 46, 46)
  491. selPortBG = QColor(23, 23, 23)
  492. self.port_text = QPen(QColor(155, 155, 155), 0)
  493. self.port_hover = QColor(255, 255, 255, 80)
  494. self.port_bg_pixmap = QPixmap(":/bitmaps/canvas/frame_port_bg.png")
  495. self.port_font_name = "Deja Vu Sans"
  496. self.port_font_size = 8
  497. self.port_font_state = QFont.Normal
  498. self.port_mode = self.THEME_PORT_SQUARE
  499. self.port_audio_jack_pen = QPen(selPortBG, 2)
  500. self.port_audio_jack_pen_sel = QPen(QColor(1, 230, 238), 1)
  501. self.port_midi_jack_pen = QPen(selPortBG, 2)
  502. self.port_midi_jack_pen_sel = QPen(QColor(252, 118, 118), 1)
  503. self.port_midi_a2j_pen = QPen(selPortBG, 2)
  504. self.port_midi_a2j_pen_sel = QPen(QColor(137, 76, 43), 1)
  505. self.port_midi_alsa_pen = QPen(selPortBG, 2)
  506. self.port_midi_alsa_pen_sel = QPen(QColor(129, 244, 118), 0)
  507. self.port_audio_jack_bg = normalPortBG
  508. self.port_audio_jack_bg_sel = selPortBG
  509. self.port_midi_jack_bg = normalPortBG
  510. self.port_midi_jack_bg_sel = selPortBG
  511. self.port_midi_a2j_bg = normalPortBG
  512. self.port_midi_a2j_bg_sel = selPortBG
  513. self.port_midi_alsa_bg = normalPortBG
  514. self.port_midi_alsa_bg_sel = selPortBG
  515. self.port_audio_jack_text = self.port_text
  516. self.port_audio_jack_text_sel = self.port_audio_jack_pen_sel
  517. self.port_midi_jack_text = self.port_text
  518. self.port_midi_jack_text_sel = self.port_midi_jack_pen_sel
  519. self.port_midi_a2j_text = self.port_text
  520. self.port_midi_a2j_text_sel = self.port_midi_a2j_pen_sel
  521. self.port_midi_alsa_text = self.port_text
  522. self.port_midi_alsa_text_sel = self.port_midi_alsa_pen_sel
  523. # missing, ports 2
  524. self.port_text_padding = 2
  525. self.port_offset = -1
  526. self.port_spacing = 5
  527. self.port_spacingT = 0
  528. self.port_rounding = 3.0
  529. # Lines
  530. self.line_audio_jack = QColor(64, 64, 64)
  531. self.line_audio_jack_sel = QColor(1, 230, 238)
  532. self.line_audio_jack_glow = QColor(100, 200, 100)
  533. self.line_midi_jack = QColor(64, 64, 64)
  534. self.line_midi_jack_sel = QColor(252, 118, 118)
  535. self.line_midi_jack_glow = QColor(200, 100, 100)
  536. self.line_midi_a2j = QColor(64, 64, 64)
  537. self.line_midi_a2j_sel = QColor(137+90, 76+90, 43+90)
  538. self.line_midi_a2j_glow = QColor(166, 133, 133)
  539. self.line_midi_alsa = QColor(64, 64, 64)
  540. self.line_midi_alsa_sel = QColor(129, 244, 118)
  541. self.line_midi_alsa_glow = QColor(100, 200, 100)
  542. self.rubberband_pen = QPen(QColor(1, 230, 238), 2, Qt.SolidLine)
  543. self.rubberband_brush = QColor(90, 90, 90, 100)
  544. # Font-dependant port height
  545. port_font = QFont(self.port_font_name, self.port_font_size, self.port_font_state)
  546. self.port_height = QFontMetrics(port_font).height() + 2 * self.port_text_padding
  547. def getDefaultTheme():
  548. return Theme.THEME_MODERN_DARK
  549. def getThemeName(idx):
  550. if idx == Theme.THEME_MODERN_DARK:
  551. return "Modern Dark"
  552. elif idx == Theme.THEME_MODERN_DARK_TINY:
  553. return "Modern Dark (Tiny)"
  554. elif idx == Theme.THEME_MODERN_LIGHT:
  555. return "Modern Light"
  556. elif idx == Theme.THEME_CLASSIC_DARK:
  557. return "Classic Dark"
  558. elif idx == Theme.THEME_NEOCLASSIC_DARK:
  559. return "Neoclassic Dark"
  560. elif idx == Theme.THEME_OOSTUDIO:
  561. return "OpenOctave Studio"
  562. else:
  563. return ""
  564. def getDefaultThemeName():
  565. return "Modern Dark"