Assists music production by grouping standalone programs into sessions. Community version of "Non Session Manager".
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.

408 lines
11KB

  1. # data file for the Fltk User Interface Designer (fluid)
  2. version 1.0108
  3. header_name {.H}
  4. code_name {.C}
  5. decl {const float STATUS_UPDATE_FREQ = 0.5f;} {}
  6. decl {\#include "settings.H"} {}
  7. decl {\#include "Timeline.H"} {}
  8. decl {\#include "Engine.H"} {}
  9. decl {\#include "Transport.H"} {}
  10. decl {\#include "Loggable.H"} {}
  11. decl {\#include "Clock.H"} {public
  12. }
  13. decl {\#include "Waveform.H" // for options} {}
  14. decl {\#include "Control_Sequence.H" // for options} {}
  15. decl {\#include <FL/fl_ask.H>} {}
  16. decl {\#include <FL/Fl.H>} {}
  17. class TLE {open
  18. } {
  19. decl {static void menubar_cb ( void *v )} {}
  20. decl {void menubar_cb ( void )} {}
  21. Function {menu_picked_value( const Fl_Menu_ *m )} {open return_type {static int}
  22. } {
  23. code {return m->menu()[ m->value() ].flags & FL_MENU_VALUE;} {}
  24. }
  25. Function {TLE()} {open
  26. } {
  27. code {make_window();
  28. // Fl::visual( RGB8 );
  29. Fl::visible_focus( 0 );
  30. Fl::get_system_colors();
  31. Fl::scheme( "plastic" );
  32. Fl::add_timeout( STATUS_UPDATE_FREQ, update_cb, this );} {}
  33. }
  34. Function {make_window()} {open
  35. } {
  36. Fl_Window main_window {
  37. label {Non-DAW - Timeline} open
  38. xywh {522 141 1024 768} type Double resizable xclass {Non-DAW} visible
  39. } {
  40. Fl_Menu_Bar menubar {
  41. label {capture:\\nfoo} open
  42. xywh {0 0 1024 25}
  43. } {
  44. Submenu {} {
  45. label {&Session} open
  46. xywh {0 0 74 25}
  47. } {
  48. MenuItem {} {
  49. label {&New}
  50. xywh {0 0 40 25}
  51. }
  52. MenuItem {} {
  53. label {&Open}
  54. xywh {10 10 40 25}
  55. }
  56. MenuItem {} {
  57. label {&Compact}
  58. callback {int n = fl_choice( "Compacting will replace the session history with a snapshot of the current state.\\n You will not be able to use Undo to go back beyond this point.\\n This operation is irreversible!", NULL, "Abort", "Procede with compaction" );
  59. if ( n != 2 )
  60. return;
  61. Loggable::compact();}
  62. xywh {20 20 40 25}
  63. }
  64. Submenu {} {
  65. label Export open
  66. xywh {0 0 74 25}
  67. } {
  68. MenuItem {} {
  69. label Session
  70. xywh {0 0 40 25}
  71. }
  72. MenuItem {} {
  73. label Range
  74. xywh {10 10 40 25}
  75. }
  76. }
  77. MenuItem {} {
  78. label {&Quit}
  79. callback {exit( 0 );}
  80. xywh {40 40 40 25} shortcut 0x40071
  81. }
  82. MenuItem {} {
  83. label Dump
  84. callback {dump_to_file( menubar, options_menu, "foo.state" );} selected
  85. xywh {0 0 40 25}
  86. }
  87. }
  88. Submenu {} {
  89. label {&Edit} open
  90. xywh {0 0 74 25}
  91. } {
  92. MenuItem {} {
  93. label Preferences
  94. xywh {0 0 40 25}
  95. }
  96. MenuItem {} {
  97. label Undo
  98. xywh {0 0 40 25} shortcut 0x4007a
  99. }
  100. }
  101. Submenu {} {
  102. label Transport open
  103. xywh {0 0 74 25}
  104. } {
  105. MenuItem {} {
  106. label Home
  107. callback {transport->locate( 0 );}
  108. xywh {0 0 40 25} shortcut 0xff50
  109. }
  110. MenuItem {} {
  111. label End
  112. callback {transport->locate( timeline->length() );}
  113. xywh {10 10 40 25} shortcut 0xff57
  114. }
  115. MenuItem {} {
  116. label Stop
  117. callback {transport->stop();}
  118. xywh {20 20 40 25} shortcut 0x50073
  119. }
  120. MenuItem {} {
  121. label Play
  122. callback {transport->start();}
  123. xywh {30 30 40 25} shortcut 0x50070
  124. }
  125. MenuItem {} {
  126. label Record
  127. xywh {40 40 40 25} shortcut 0x50072
  128. }
  129. }
  130. Submenu {} {
  131. label {&View} open
  132. xywh {0 0 74 25}
  133. } {
  134. Submenu {} {
  135. label {&Zoom} open
  136. xywh {0 0 74 25}
  137. } {
  138. MenuItem {} {
  139. label {&In}
  140. callback {timeline->zoom_in();}
  141. xywh {20 20 40 25}
  142. }
  143. MenuItem {} {
  144. label {&Out}
  145. callback {timeline->zoom_out();}
  146. xywh {30 30 40 25}
  147. }
  148. MenuItem {} {
  149. label {&Fit}
  150. xywh {10 10 40 25} divider
  151. }
  152. MenuItem {} {
  153. label {1 sec.}
  154. callback {timeline->zoom( 1 );}
  155. xywh {10 10 40 25} shortcut 0x31
  156. }
  157. MenuItem {} {
  158. label {1 min.}
  159. callback {timeline->zoom( 60 );}
  160. xywh {20 20 40 25} shortcut 0x32
  161. }
  162. MenuItem {} {
  163. label {1 hour.}
  164. callback {timeline->zoom( 60 * 60 );}
  165. xywh {30 30 40 25} shortcut 0x33
  166. }
  167. }
  168. }
  169. Submenu options_menu {
  170. label {&Options} open
  171. xywh {0 0 74 25} divider
  172. } {
  173. Submenu {} {
  174. label {&Display} open
  175. xywh {0 0 74 25}
  176. } {
  177. Submenu {} {
  178. label {&Waveforms} open
  179. xywh {0 0 74 25}
  180. } {
  181. MenuItem {} {
  182. label Fill
  183. callback {Waveform::fill = menu_picked_value( o );
  184. timeline->redraw();}
  185. xywh {10 10 40 25} type Toggle value 1
  186. }
  187. MenuItem {} {
  188. label Outline
  189. callback {Waveform::outline = menu_picked_value( o );
  190. timeline->redraw();}
  191. xywh {30 30 40 25} type Toggle value 1
  192. }
  193. MenuItem {} {
  194. label {Vary color}
  195. callback {Waveform::vary_color = menu_picked_value( o );
  196. timeline->redraw();}
  197. xywh {20 20 40 25} type Toggle value 1
  198. }
  199. }
  200. Submenu {} {
  201. label {&Region} open
  202. xywh {0 0 74 25}
  203. } {
  204. MenuItem {} {
  205. label {Filled fades}
  206. xywh {30 30 40 25} type Toggle value 1
  207. }
  208. }
  209. Submenu {} {
  210. label {&Control Sequence} open
  211. xywh {0 0 74 25}
  212. } {
  213. MenuItem {} {
  214. label Polygon
  215. callback {Control_Sequence::draw_with_polygon = menu_picked_value( o );
  216. timeline->redraw();}
  217. xywh {20 20 40 25} type Toggle value 1
  218. }
  219. MenuItem {} {
  220. label Graded
  221. callback {Control_Sequence::draw_with_gradient = menu_picked_value( o );
  222. timeline->redraw();}
  223. xywh {30 30 40 25} type Toggle value 1
  224. }
  225. MenuItem {} {
  226. label Ruled
  227. callback {Control_Sequence::draw_with_grid = menu_picked_value( o );
  228. timeline->redraw();}
  229. xywh {40 40 40 25} type Toggle value 1
  230. }
  231. }
  232. Submenu {} {
  233. label {&Style} open
  234. xywh {0 0 74 25}
  235. } {
  236. MenuItem {} {
  237. label Default
  238. callback {Fl::scheme( "plastic" );}
  239. xywh {0 0 40 25} type Radio value 1
  240. }
  241. MenuItem {} {
  242. label Flat
  243. callback {Fl::scheme( "gtk+" );}
  244. xywh {10 10 40 25} type Radio
  245. }
  246. }
  247. Submenu {} {
  248. label {C&olors} open
  249. xywh {0 0 74 25}
  250. } {
  251. MenuItem {} {
  252. label System
  253. callback {Fl::get_system_colors();
  254. Fl::scheme( Fl::scheme() );}
  255. xywh {0 0 40 25} type Radio
  256. }
  257. MenuItem {} {
  258. label Dark
  259. callback {Fl::background2( 100, 100, 100 );
  260. Fl::background( 50, 50, 50 );
  261. Fl::foreground( 255, 255, 255 );
  262. Fl::scheme( Fl::scheme() );}
  263. xywh {10 10 40 25} type Radio value 1
  264. }
  265. MenuItem {} {
  266. label Light
  267. callback {Fl::background2( 255, 255, 255 );
  268. Fl::background( 172, 172, 172 );
  269. Fl::foreground( 0, 0, 0 );
  270. Fl::scheme( Fl::scheme() );}
  271. xywh {20 20 40 25} type Radio
  272. }
  273. }
  274. }
  275. }
  276. MenuItem {} {
  277. label {&Help}
  278. xywh {0 0 40 25}
  279. }
  280. }
  281. Fl_Group {} {open
  282. xywh {0 23 1024 48}
  283. } {
  284. Fl_Pack {} {open
  285. xywh {0 23 473 46} type HORIZONTAL
  286. code0 {o->spacing( 10 );}
  287. } {
  288. Fl_Box {} {
  289. label {<Transport>}
  290. xywh {0 23 184 46} color 30
  291. code0 {transport = o;}
  292. code1 {o->labeltype( FL_NO_LABEL );}
  293. class Transport
  294. }
  295. Fl_Pack clocks_pack {
  296. xywh {185 23 288 46} type HORIZONTAL
  297. code0 {o->spacing( 2 );}
  298. } {
  299. Fl_Box playhead_clock {
  300. label PLAYHEAD
  301. xywh {185 29 137 40} box BORDER_BOX color 46
  302. code0 {o->type( Clock::HMS );}
  303. code1 {o->run( &transport->frame );}
  304. class Clock
  305. }
  306. Fl_Box {} {
  307. label PLAYHEAD
  308. xywh {325 29 142 40} box BORDER_BOX color 46
  309. code0 {o->type( Clock::BBT );}
  310. class Clock
  311. }
  312. }
  313. }
  314. Fl_Box {} {
  315. label {<empty>}
  316. xywh {477 27 387 42} resizable
  317. code0 {o->labeltype( FL_NO_LABEL );}
  318. }
  319. Fl_Group {} {
  320. xywh {869 25 155 44}
  321. } {
  322. Fl_Box {} {
  323. label {capture:}
  324. xywh {869 25 56 14} labelsize 10 align 24
  325. }
  326. Fl_Box {} {
  327. label {playback:}
  328. xywh {869 41 56 14} labelsize 10 align 24
  329. }
  330. Fl_Box {} {
  331. label {DSP:}
  332. xywh {869 55 56 14} labelsize 10 align 24
  333. }
  334. Fl_Progress capture_buffer_progress {
  335. label {50%}
  336. xywh {925 25 99 14} labelsize 10
  337. }
  338. Fl_Progress cpu_load_progress {
  339. label {50%}
  340. xywh {925 55 99 14} labelsize 9
  341. }
  342. Fl_Progress playback_buffer_progress {
  343. label {50%}
  344. xywh {925 40 99 14} labelsize 10
  345. }
  346. }
  347. }
  348. Fl_Box {} {
  349. label {<Timeline>}
  350. xywh {0 72 1024 695} box FLAT_BOX color 47 labelsize 100 resizable
  351. code0 {timeline = o;}
  352. class Timeline
  353. }
  354. }
  355. }
  356. Function {update_progress( Fl_Progress *p, char *s, float v )} {open private return_type {static void}
  357. } {
  358. code {p->value( v );
  359. snprintf( s, 5, "%d%%", (int)v );
  360. p->label( s );} {}
  361. }
  362. Function {update_status()} {open
  363. } {
  364. code {static char cbp[5], pbp[5], clp[5];
  365. update_progress( capture_buffer_progress, cbp, timeline->total_input_buffer_percent() );
  366. update_progress( playback_buffer_progress, pbp, timeline->total_output_buffer_percent() );
  367. update_progress( cpu_load_progress, clp, engine->cpu_load() );} {}
  368. }
  369. Function {update_cb( void *v )} {open return_type {static void}
  370. } {
  371. code {Fl::repeat_timeout( STATUS_UPDATE_FREQ, update_cb, v );
  372. ((TLE*)v)->update_status();} {}
  373. }
  374. }
  375. Function {make_window()} {open
  376. } {}