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.

413 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 "Fl_Menu_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 {((Fl_Menu_Settings*)menubar)->dump( options_menu, "foo.state" );}
  85. xywh {0 0 40 25}
  86. }
  87. MenuItem {} {
  88. label Load
  89. callback {((Fl_Menu_Settings*)menubar)->load( options_menu, "foo.state" );} selected
  90. xywh {10 10 40 25}
  91. }
  92. }
  93. Submenu {} {
  94. label {&Edit} open
  95. xywh {0 0 74 25}
  96. } {
  97. MenuItem {} {
  98. label Preferences
  99. xywh {0 0 40 25}
  100. }
  101. MenuItem {} {
  102. label Undo
  103. xywh {0 0 40 25} shortcut 0x4007a
  104. }
  105. }
  106. Submenu {} {
  107. label Transport open
  108. xywh {0 0 74 25}
  109. } {
  110. MenuItem {} {
  111. label Home
  112. callback {transport->locate( 0 );}
  113. xywh {0 0 40 25} shortcut 0xff50
  114. }
  115. MenuItem {} {
  116. label End
  117. callback {transport->locate( timeline->length() );}
  118. xywh {10 10 40 25} shortcut 0xff57
  119. }
  120. MenuItem {} {
  121. label Stop
  122. callback {transport->stop();}
  123. xywh {20 20 40 25} shortcut 0x50073
  124. }
  125. MenuItem {} {
  126. label Play
  127. callback {transport->start();}
  128. xywh {30 30 40 25} shortcut 0x50070
  129. }
  130. MenuItem {} {
  131. label Record
  132. xywh {40 40 40 25} shortcut 0x50072
  133. }
  134. }
  135. Submenu {} {
  136. label {&View} open
  137. xywh {0 0 74 25}
  138. } {
  139. Submenu {} {
  140. label {&Zoom} open
  141. xywh {0 0 74 25}
  142. } {
  143. MenuItem {} {
  144. label {&In}
  145. callback {timeline->zoom_in();}
  146. xywh {20 20 40 25}
  147. }
  148. MenuItem {} {
  149. label {&Out}
  150. callback {timeline->zoom_out();}
  151. xywh {30 30 40 25}
  152. }
  153. MenuItem {} {
  154. label {&Fit}
  155. xywh {10 10 40 25} divider
  156. }
  157. MenuItem {} {
  158. label {1 sec.}
  159. callback {timeline->zoom( 1 );}
  160. xywh {10 10 40 25} shortcut 0x31
  161. }
  162. MenuItem {} {
  163. label {1 min.}
  164. callback {timeline->zoom( 60 );}
  165. xywh {20 20 40 25} shortcut 0x32
  166. }
  167. MenuItem {} {
  168. label {1 hour.}
  169. callback {timeline->zoom( 60 * 60 );}
  170. xywh {30 30 40 25} shortcut 0x33
  171. }
  172. }
  173. }
  174. Submenu options_menu {
  175. label {&Options} open
  176. xywh {0 0 74 25} divider
  177. } {
  178. Submenu {} {
  179. label {&Display} open
  180. xywh {0 0 74 25}
  181. } {
  182. Submenu {} {
  183. label {&Waveforms} open
  184. xywh {0 0 74 25}
  185. } {
  186. MenuItem {} {
  187. label Fill
  188. callback {Waveform::fill = menu_picked_value( o );
  189. timeline->redraw();}
  190. xywh {10 10 40 25} type Toggle value 1
  191. }
  192. MenuItem {} {
  193. label Outline
  194. callback {Waveform::outline = menu_picked_value( o );
  195. timeline->redraw();}
  196. xywh {30 30 40 25} type Toggle value 1
  197. }
  198. MenuItem {} {
  199. label {Vary color}
  200. callback {Waveform::vary_color = menu_picked_value( o );
  201. timeline->redraw();}
  202. xywh {20 20 40 25} type Toggle value 1
  203. }
  204. }
  205. Submenu {} {
  206. label {&Region} open
  207. xywh {0 0 74 25}
  208. } {
  209. MenuItem {} {
  210. label {Filled fades}
  211. xywh {30 30 40 25} type Toggle value 1
  212. }
  213. }
  214. Submenu {} {
  215. label {&Control Sequence} open
  216. xywh {0 0 74 25}
  217. } {
  218. MenuItem {} {
  219. label Polygon
  220. callback {Control_Sequence::draw_with_polygon = menu_picked_value( o );
  221. timeline->redraw();}
  222. xywh {20 20 40 25} type Toggle value 1
  223. }
  224. MenuItem {} {
  225. label Graded
  226. callback {Control_Sequence::draw_with_gradient = menu_picked_value( o );
  227. timeline->redraw();}
  228. xywh {30 30 40 25} type Toggle value 1
  229. }
  230. MenuItem {} {
  231. label Ruled
  232. callback {Control_Sequence::draw_with_grid = menu_picked_value( o );
  233. timeline->redraw();}
  234. xywh {40 40 40 25} type Toggle value 1
  235. }
  236. }
  237. Submenu {} {
  238. label {&Style} open
  239. xywh {0 0 74 25}
  240. } {
  241. MenuItem {} {
  242. label Default
  243. callback {Fl::scheme( "plastic" );}
  244. xywh {0 0 40 25} type Radio value 1
  245. }
  246. MenuItem {} {
  247. label Flat
  248. callback {Fl::scheme( "gtk+" );}
  249. xywh {10 10 40 25} type Radio
  250. }
  251. }
  252. Submenu {} {
  253. label {C&olors} open
  254. xywh {0 0 74 25}
  255. } {
  256. MenuItem {} {
  257. label System
  258. callback {Fl::get_system_colors();
  259. Fl::scheme( Fl::scheme() );}
  260. xywh {0 0 40 25} type Radio
  261. }
  262. MenuItem {} {
  263. label Dark
  264. callback {Fl::background2( 100, 100, 100 );
  265. Fl::background( 50, 50, 50 );
  266. Fl::foreground( 255, 255, 255 );
  267. Fl::scheme( Fl::scheme() );}
  268. xywh {10 10 40 25} type Radio value 1
  269. }
  270. MenuItem {} {
  271. label Light
  272. callback {Fl::background2( 255, 255, 255 );
  273. Fl::background( 172, 172, 172 );
  274. Fl::foreground( 0, 0, 0 );
  275. Fl::scheme( Fl::scheme() );}
  276. xywh {20 20 40 25} type Radio
  277. }
  278. }
  279. }
  280. }
  281. MenuItem {} {
  282. label {&Help}
  283. xywh {0 0 40 25}
  284. }
  285. }
  286. Fl_Group {} {open
  287. xywh {0 23 1024 48}
  288. } {
  289. Fl_Pack {} {open
  290. xywh {0 23 473 46} type HORIZONTAL
  291. code0 {o->spacing( 10 );}
  292. } {
  293. Fl_Box {} {
  294. label {<Transport>}
  295. xywh {0 23 184 46} color 30
  296. code0 {transport = o;}
  297. code1 {o->labeltype( FL_NO_LABEL );}
  298. class Transport
  299. }
  300. Fl_Pack clocks_pack {
  301. xywh {185 23 288 46} type HORIZONTAL
  302. code0 {o->spacing( 2 );}
  303. } {
  304. Fl_Box playhead_clock {
  305. label PLAYHEAD
  306. xywh {185 29 137 40} box BORDER_BOX color 46
  307. code0 {o->type( Clock::HMS );}
  308. code1 {o->run( &transport->frame );}
  309. class Clock
  310. }
  311. Fl_Box {} {
  312. label PLAYHEAD
  313. xywh {325 29 142 40} box BORDER_BOX color 46
  314. code0 {o->type( Clock::BBT );}
  315. class Clock
  316. }
  317. }
  318. }
  319. Fl_Box {} {
  320. label {<empty>}
  321. xywh {477 27 387 42} resizable
  322. code0 {o->labeltype( FL_NO_LABEL );}
  323. }
  324. Fl_Group {} {
  325. xywh {869 25 155 44}
  326. } {
  327. Fl_Box {} {
  328. label {capture:}
  329. xywh {869 25 56 14} labelsize 10 align 24
  330. }
  331. Fl_Box {} {
  332. label {playback:}
  333. xywh {869 41 56 14} labelsize 10 align 24
  334. }
  335. Fl_Box {} {
  336. label {DSP:}
  337. xywh {869 55 56 14} labelsize 10 align 24
  338. }
  339. Fl_Progress capture_buffer_progress {
  340. label {50%}
  341. xywh {925 25 99 14} labelsize 10
  342. }
  343. Fl_Progress cpu_load_progress {
  344. label {50%}
  345. xywh {925 55 99 14} labelsize 9
  346. }
  347. Fl_Progress playback_buffer_progress {
  348. label {50%}
  349. xywh {925 40 99 14} labelsize 10
  350. }
  351. }
  352. }
  353. Fl_Box {} {
  354. label {<Timeline>}
  355. xywh {0 72 1024 695} box FLAT_BOX color 47 labelsize 100 resizable
  356. code0 {timeline = o;}
  357. class Timeline
  358. }
  359. }
  360. }
  361. Function {update_progress( Fl_Progress *p, char *s, float v )} {open private return_type {static void}
  362. } {
  363. code {p->value( v );
  364. snprintf( s, 5, "%d%%", (int)v );
  365. p->label( s );} {}
  366. }
  367. Function {update_status()} {open
  368. } {
  369. code {static char cbp[5], pbp[5], clp[5];
  370. update_progress( capture_buffer_progress, cbp, timeline->total_input_buffer_percent() );
  371. update_progress( playback_buffer_progress, pbp, timeline->total_output_buffer_percent() );
  372. update_progress( cpu_load_progress, clp, engine->cpu_load() );} {}
  373. }
  374. Function {update_cb( void *v )} {open return_type {static void}
  375. } {
  376. code {Fl::repeat_timeout( STATUS_UPDATE_FREQ, update_cb, v );
  377. ((TLE*)v)->update_status();} {}
  378. }
  379. }
  380. Function {make_window()} {open
  381. } {}