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.

452 lines
12KB

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