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.

495 lines
13KB

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