2008-04-23 04:22:46 +02:00
# data file for the Fltk User Interface Designer (fluid)
version 1.0108
header_name {.H}
code_name {.C}
2008-05-22 02:40:25 +02:00
comment {//
// Copyright (C) 2008 Jonathan Moore Liles
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
} {in_source in_header
}
2008-04-23 07:35:49 +02:00
decl {const float STATUS_UPDATE_FREQ = 0.5f;} {}
2008-04-24 23:09:17 +02:00
decl {\#include "Fl_Menu_Settings.H"} {}
2008-04-24 22:52:30 +02:00
2008-04-23 04:22:46 +02:00
decl {\#include "Timeline.H"} {}
decl {\#include "Transport.H"} {}
2008-04-24 00:29:14 +02:00
decl {\#include "Loggable.H"} {}
2008-05-07 01:33:24 +02:00
decl {\#include "Project.H"} {}
2008-05-04 09:10:15 +02:00
2008-04-23 04:22:46 +02:00
decl {\#include "Clock.H"} {public
}
2008-04-26 10:42:30 +02:00
decl {\#include "Track.H" // for capture_format} {}
2008-04-26 07:33:04 +02:00
2008-04-23 22:43:17 +02:00
decl {\#include "Waveform.H" // for options} {}
2008-05-05 02:04:20 +02:00
decl {\#include "Audio_Region.H" // for options} {}
2008-04-26 11:01:54 +02:00
2008-04-23 22:43:17 +02:00
decl {\#include "Control_Sequence.H" // for options} {}
2008-05-25 06:31:41 +02:00
decl {\#include <FL/fl_ask.H>} {}
2008-04-24 00:29:14 +02:00
2008-05-04 03:28:36 +02:00
decl {\#include <FL/Fl_File_Chooser.H>} {}
2008-04-23 04:22:46 +02:00
decl {\#include <FL/Fl.H>} {}
2008-05-17 06:18:00 +02:00
decl {\#include <Fl/Fl_Shared_Image.H>} {}
2008-05-16 02:26:51 +02:00
2008-05-22 09:05:49 +02:00
decl {\#include "Engine/Engine.H"} {}
decl {\#include "Engine/Audio_File.H" // for supported formats} {}
2008-05-07 01:33:24 +02:00
decl {extern char project_display_name[256];} {global
2008-05-03 06:44:48 +02:00
}
2008-04-25 06:36:02 +02:00
decl {extern char *user_config_dir;} {global
2008-04-25 05:15:17 +02:00
}
2008-05-03 01:03:44 +02:00
class TLE {open
2008-04-23 04:22:46 +02:00
} {
2008-04-26 18:07:43 +02:00
decl {Fl_Color system_colors[3];} {public
2008-04-26 12:11:19 +02:00
}
2008-04-23 22:43:17 +02:00
decl {static void menubar_cb ( void *v )} {}
decl {void menubar_cb ( void )} {}
Function {menu_picked_value( const Fl_Menu_ *m )} {open return_type {static int}
} {
code {return m->menu()[ m->value() ].flags & FL_MENU_VALUE;} {}
}
2008-04-26 07:33:04 +02:00
Function {save()} {open
} {
code {const char options_filename[] = "options";
2008-04-26 10:42:30 +02:00
// const char state_filename[] = "state";
2008-04-26 07:33:04 +02:00
// save options
char *path;
asprintf( &path, "%s/%s", user_config_dir, options_filename );
2008-05-25 08:14:17 +02:00
((Fl_Menu_Settings*)menubar)->dump( menubar->find_item( "&Options/&Global" ), path );
free( path );} {}
2008-04-26 07:33:04 +02:00
}
Function {capture_format_cb( Fl_Widget *w, void *v )} {open private return_type {static void}
} {
code {((TLE*)v)->capture_format_cb();} {}
}
Function {capture_format_cb()} {open private return_type void
} {
code {Fl_Menu_ *o = menubar;
Track::capture_format = o->menu()[ o->value() ].label();} {}
2008-05-06 06:33:41 +02:00
}
Function {run()} {open
} {
code {update_menu();
main_window->show();
2008-05-19 07:07:42 +02:00
Fl::lock();
2008-06-06 04:30:34 +02:00
// Fl::run();} {}
2008-04-26 07:33:04 +02:00
}
2008-04-23 04:22:46 +02:00
Function {TLE()} {open
} {
2008-05-22 05:02:38 +02:00
code {Fl::visual( FL_DOUBLE | FL_RGB8 );
make_window();
2008-04-23 04:22:46 +02:00
Fl::visible_focus( 0 );
Fl::get_system_colors();
2008-04-23 07:35:49 +02:00
Fl::scheme( "plastic" );
2008-04-26 12:11:19 +02:00
system_colors[ 0 ] = (Fl_Color)Fl::get_color( FL_BACKGROUND_COLOR );
system_colors[ 1 ] = (Fl_Color)Fl::get_color( FL_FOREGROUND_COLOR );
system_colors[ 2 ] = (Fl_Color)Fl::get_color( FL_BACKGROUND2_COLOR );
2008-04-23 07:35:49 +02:00
2008-04-25 05:15:17 +02:00
Fl::add_timeout( STATUS_UPDATE_FREQ, update_cb, this );
2008-05-17 20:42:50 +02:00
fl_message_icon()->box( FL_RSHADOW_BOX );
fl_message_icon()->labelcolor( FL_BLACK );
fl_message_icon()->color( FL_RED );
fl_message_font( FL_HELVETICA, 18 );
2008-04-26 07:33:04 +02:00
std::list <const char *> formats;
Audio_File::all_supported_formats( formats );
for ( std::list <const char *>::const_iterator f = formats.begin(); f != formats.end(); ++f )
{
// capture_format_menu->add( *f, FL_MENU_RADIO, 0, 0, 0 );
//;
char pat[256];
2008-05-25 08:14:17 +02:00
snprintf( pat, sizeof( pat ), "&Options/&Project/&Timeline/Capture Format/%s", *f );
2008-04-26 07:33:04 +02:00
menubar->add( pat, 0, &TLE::capture_format_cb, this, FL_MENU_RADIO );
2008-04-26 10:42:30 +02:00
}
2008-05-25 08:14:17 +02:00
menubar->picked( menubar->find_item( "&Options/&Project/&Timeline/Capture Format/Wav 24" ) );
2008-05-06 22:13:52 +02:00
2008-04-26 10:42:30 +02:00
char *path;
asprintf( &path, "%s/options", user_config_dir );
2008-05-25 08:14:17 +02:00
((Fl_Menu_Settings*)menubar)->load( menubar->find_item( "&Options/&Global" ), path );
2008-05-25 22:48:37 +02:00
free( path );
2008-06-06 04:30:34 +02:00
menubar->add( "&Timeline", 0, 0, const_cast< Fl_Menu_Item *>( timeline->menu->menu() ), FL_SUBMENU_POINTER );
Loggable::progress_callback( &TLE::progress_cb, this );} {}
2008-04-23 04:22:46 +02:00
}
Function {make_window()} {open
} {
Fl_Window main_window {
2008-06-16 04:44:45 +02:00
label Timeline open
2008-06-14 06:51:15 +02:00
xywh {174 117 1025 770} type Double resizable xclass Non_DAW visible
2008-04-23 04:22:46 +02:00
} {
2008-06-16 04:44:45 +02:00
Fl_Menu_Bar menubar {open
2008-04-23 04:22:46 +02:00
xywh {0 0 1024 25}
} {
Submenu {} {
2008-05-07 01:33:24 +02:00
label {&Project} open
2008-04-23 04:22:46 +02:00
xywh {0 0 74 25}
} {
2008-05-05 00:20:38 +02:00
MenuItem {} {
label {&Info}
2008-06-11 05:43:13 +02:00
callback {Project_Info_Dialog pi;
pi.run();}
2008-05-05 00:20:38 +02:00
xywh {0 0 40 25} deactivate
}
2008-04-23 04:22:46 +02:00
MenuItem {} {
label {&New}
2008-05-06 22:13:52 +02:00
callback {save_timeline_settings();
2008-05-07 01:33:24 +02:00
new_project_chooser();
2008-05-06 22:13:52 +02:00
load_timeline_settings();
2008-05-06 06:33:41 +02:00
update_menu();
2008-05-04 03:28:36 +02:00
2008-05-06 06:33:41 +02:00
main_window->redraw();}
2008-05-04 00:50:32 +02:00
xywh {0 0 40 25}
2008-04-23 04:22:46 +02:00
}
MenuItem {} {
label {&Open}
2008-05-15 06:23:16 +02:00
callback {const char *name = fl_dir_chooser( "Open Project", NULL, NULL );
2008-05-06 05:50:57 +02:00
2008-05-17 06:18:00 +02:00
if ( ! name )
return;
2008-06-05 06:27:55 +02:00
2008-06-16 04:44:45 +02:00
int r = Project::open( name );
if ( r < 0 )
2008-05-06 05:50:57 +02:00
{
2008-06-16 04:44:45 +02:00
const char *s = "";
2008-05-06 05:50:57 +02:00
2008-06-16 04:44:45 +02:00
switch ( r )
{
case Project::E_LOCKED:
s = "Locked by another process";
break;
case Project::E_PERM:
s = "Access denied";
break;
case Project::E_INVALID:
s = "Not a Non-DAW project";
break;
}
fl_alert( "Could not open project \\"%s\\":\\n\\n\\t%s", name, s );
2008-05-07 01:33:24 +02:00
// we are in a somewhar ambiguous state now with no project open.
2008-06-19 04:23:59 +02:00
}}
2008-05-06 05:50:57 +02:00
xywh {10 10 40 25}
2008-04-23 04:22:46 +02:00
}
MenuItem {} {
label {&Compact}
2008-05-07 17:20:13 +02:00
callback {int n = fl_choice( "Compacting will replace the project history with a snapshot of the current state.\\nYou will not be able to use Undo to go back beyond this point.\\n\\nThis operation is irreversible!", NULL, "&Cancel", "Pr&ocede with compaction" );
2008-04-24 00:29:14 +02:00
if ( n != 2 )
return;
2008-06-19 06:14:14 +02:00
Project::compact();} selected
2008-04-23 04:22:46 +02:00
xywh {20 20 40 25}
}
Submenu {} {
2008-05-06 06:33:41 +02:00
label {&Export} open
2008-04-27 09:10:37 +02:00
xywh {0 0 74 25} deactivate
2008-04-23 04:22:46 +02:00
} {
MenuItem {} {
2008-05-19 02:31:27 +02:00
label Project
2008-04-23 04:22:46 +02:00
xywh {0 0 40 25}
}
MenuItem {} {
label Range
xywh {10 10 40 25}
}
}
MenuItem {} {
label {&Quit}
2008-05-15 06:23:16 +02:00
callback {quit()}
2008-04-23 04:22:46 +02:00
xywh {40 40 40 25} shortcut 0x40071
}
}
Submenu {} {
2008-04-27 12:18:03 +02:00
label {&Edit} open
2008-04-23 04:22:46 +02:00
xywh {0 0 74 25}
} {
MenuItem {} {
label Undo
2008-04-26 07:33:04 +02:00
callback {Loggable::undo();}
2008-04-29 23:16:09 +02:00
xywh {0 0 40 25} shortcut 0x4007a divider
}
MenuItem {} {
label {Select None}
callback {timeline->select_none();}
xywh {10 10 40 25} shortcut 0x50061
}
MenuItem {} {
label {Delete Selected}
2008-04-30 03:08:49 +02:00
callback {timeline->delete_selected();}
2008-04-29 23:16:09 +02:00
xywh {20 20 40 25} shortcut 0xffff
2008-04-23 04:22:46 +02:00
}
}
Submenu {} {
label Transport open
xywh {0 0 74 25}
} {
MenuItem {} {
2008-04-27 05:50:58 +02:00
label Start
2008-04-23 22:43:17 +02:00
callback {transport->locate( 0 );}
xywh {0 0 40 25} shortcut 0xff50
2008-04-23 04:22:46 +02:00
}
MenuItem {} {
label End
2008-04-23 22:43:17 +02:00
callback {transport->locate( timeline->length() );}
xywh {10 10 40 25} shortcut 0xff57
2008-04-23 04:22:46 +02:00
}
MenuItem {} {
2008-04-27 23:08:30 +02:00
label {Play/Stop}
callback {transport->toggle();}
xywh {20 20 40 25} shortcut 0x20
2008-04-23 04:22:46 +02:00
}
MenuItem {} {
label Record
2008-04-27 09:07:16 +02:00
callback {transport->toggle_record();}
2008-04-27 23:08:30 +02:00
xywh {40 40 40 25} shortcut 0x10072
2008-04-23 04:22:46 +02:00
}
}
2008-05-25 08:14:17 +02:00
MenuItem {} {
label {&Timeline}
2008-05-25 22:48:37 +02:00
xywh {0 0 40 25}
2008-05-25 08:14:17 +02:00
}
2008-04-23 04:22:46 +02:00
Submenu {} {
label {&View} open
xywh {0 0 74 25}
} {
Submenu {} {
2008-04-23 22:43:17 +02:00
label {&Zoom} open
2008-04-23 04:22:46 +02:00
xywh {0 0 74 25}
} {
MenuItem {} {
2008-04-23 22:43:17 +02:00
label {&In}
callback {timeline->zoom_in();}
2008-05-25 20:45:20 +02:00
xywh {20 20 40 25} shortcut 0x2b
2008-04-23 22:43:17 +02:00
}
MenuItem {} {
label {&Out}
callback {timeline->zoom_out();}
2008-05-25 20:45:20 +02:00
xywh {30 30 40 25} shortcut 0x5f
2008-04-23 22:43:17 +02:00
}
MenuItem {} {
label {&Fit}
2008-05-03 06:44:48 +02:00
callback {timeline->zoom_fit();}
2008-05-25 20:45:20 +02:00
xywh {10 10 40 25} shortcut 0x3d divider
2008-04-23 04:22:46 +02:00
}
MenuItem {} {
label {1 sec.}
2008-04-23 22:43:17 +02:00
callback {timeline->zoom( 1 );}
xywh {10 10 40 25} shortcut 0x31
2008-04-23 04:22:46 +02:00
}
MenuItem {} {
label {1 min.}
2008-04-23 22:43:17 +02:00
callback {timeline->zoom( 60 );}
xywh {20 20 40 25} shortcut 0x32
2008-04-23 04:22:46 +02:00
}
MenuItem {} {
label {1 hour.}
2008-04-23 22:43:17 +02:00
callback {timeline->zoom( 60 * 60 );}
xywh {30 30 40 25} shortcut 0x33
2008-04-23 04:22:46 +02:00
}
}
}
2008-04-26 10:42:30 +02:00
Submenu {} {
2008-04-26 11:01:54 +02:00
label {&Options} open
2008-04-23 04:22:46 +02:00
xywh {0 0 74 25} divider
} {
Submenu {} {
2008-05-25 08:14:17 +02:00
label {&Global} open
2008-04-23 04:22:46 +02:00
xywh {0 0 74 25}
} {
2008-04-25 04:48:44 +02:00
Submenu {} {
2008-05-25 08:14:17 +02:00
label {&Display} open
xywh {5 5 74 25}
2008-04-25 04:48:44 +02:00
} {
2008-05-25 08:14:17 +02:00
Submenu {} {
label {&Timeline} open
xywh {5 5 74 25}
} {
MenuItem {} {
label {&Measure lines}
callback {Timeline::draw_with_measure_lines = menu_picked_value( o );
2008-04-25 04:48:44 +02:00
2008-04-25 05:15:17 +02:00
timeline->redraw();}
2008-05-25 08:14:17 +02:00
xywh {5 5 40 25} type Toggle value 1
}
2008-04-25 04:48:44 +02:00
}
2008-05-25 08:14:17 +02:00
Submenu {} {
label {&Waveform} open
xywh {5 5 74 25}
} {
MenuItem {} {
label Fill
callback {Waveform::fill = menu_picked_value( o );
2008-04-23 22:43:17 +02:00
timeline->redraw();}
2008-05-25 08:14:17 +02:00
xywh {15 15 40 25} type Toggle value 1
}
MenuItem {} {
label Outline
callback {Waveform::outline = menu_picked_value( o );
2008-04-23 22:43:17 +02:00
timeline->redraw();}
2008-05-25 08:14:17 +02:00
xywh {35 35 40 25} type Toggle value 1
}
MenuItem {} {
label {Vary color}
callback {Waveform::vary_color = menu_picked_value( o );
2008-04-23 22:43:17 +02:00
timeline->redraw();}
2008-05-25 08:14:17 +02:00
xywh {25 25 40 25} type Toggle value 1
}
2008-04-23 04:22:46 +02:00
}
2008-05-25 08:14:17 +02:00
Submenu {} {
label {&Region} open
xywh {5 5 74 25}
} {
MenuItem {} {
label {Filled fades}
xywh {35 35 40 25} type Toggle value 1
}
MenuItem {} {
label {Inherit track color}
callback {Audio_Region::inherit_track_color = menu_picked_value( o );
2008-04-26 11:01:54 +02:00
timeline->redraw();}
2008-05-25 08:14:17 +02:00
xywh {45 45 40 25} type Toggle value 1
}
2008-04-26 11:01:54 +02:00
}
2008-05-25 08:14:17 +02:00
Submenu {} {
label {&Control Sequence} open
xywh {5 5 74 25}
} {
MenuItem {} {
label Polygon
callback {Control_Sequence::draw_with_polygon = menu_picked_value( o );
2008-04-23 22:43:17 +02:00
timeline->redraw();}
2008-05-25 08:14:17 +02:00
xywh {25 25 40 25} type Toggle value 1
}
MenuItem {} {
label Graded
callback {Control_Sequence::draw_with_gradient = menu_picked_value( o );
2008-04-23 22:43:17 +02:00
timeline->redraw();}
2008-05-25 08:14:17 +02:00
xywh {35 35 40 25} type Toggle value 1
}
MenuItem {} {
label Ruled
callback {Control_Sequence::draw_with_grid = menu_picked_value( o );
2008-04-23 22:43:17 +02:00
timeline->redraw();}
2008-05-25 08:14:17 +02:00
xywh {45 45 40 25} type Toggle value 1
}
2008-04-23 04:22:46 +02:00
}
2008-05-25 08:14:17 +02:00
Submenu {} {
label {&Style} open
xywh {5 5 74 25}
} {
MenuItem {} {
label Default
callback {Fl::scheme( "plastic" );}
xywh {5 5 40 25} type Radio value 1
}
MenuItem {} {
label Flat
callback {Fl::scheme( "gtk+" );}
xywh {15 15 40 25} type Radio
}
2008-04-23 04:22:46 +02:00
}
2008-05-25 08:14:17 +02:00
Submenu {} {
label {C&olors} open
xywh {5 5 74 25}
} {
MenuItem {} {
label System
callback {//Fl::get_system_colors();
2008-04-26 12:11:19 +02:00
unsigned char r, g, b;
Fl::get_color( system_colors[ 0 ], r, g, b );
Fl::background( r, g, b );
Fl::get_color( system_colors[ 1 ], r, g, b );
Fl::foreground( r, g, b );
Fl::get_color( system_colors[ 2 ], r, g, b );
Fl::background2( r, g, b );
2008-04-23 22:43:17 +02:00
Fl::scheme( Fl::scheme() );}
2008-05-25 08:14:17 +02:00
xywh {5 5 40 25} type Radio
}
MenuItem {} {
label Dark
callback {Fl::background2( 100, 100, 100 );
2008-04-23 22:43:17 +02:00
Fl::background( 50, 50, 50 );
Fl::foreground( 255, 255, 255 );
Fl::scheme( Fl::scheme() );}
2008-05-25 08:14:17 +02:00
xywh {15 15 40 25} type Radio value 1
}
MenuItem {} {
label Light
callback {Fl::background2( 192, 192, 192 );
2008-04-27 14:04:56 +02:00
Fl::background( 220, 220, 220 );
2008-04-23 22:43:17 +02:00
Fl::foreground( 0, 0, 0 );
2008-04-27 20:56:20 +02:00
Fl::scheme( Fl::scheme() );}
2008-05-25 08:14:17 +02:00
xywh {25 25 40 25} type Radio
}
}
}
}
Submenu {} {
label {&Project} open
xywh {0 0 74 25}
} {
Submenu {} {
label {&Timeline} open
xywh {10 10 74 25}
} {
MenuItem {} {
label {&Follow Playhead}
callback {Timeline::follow_playhead = menu_picked_value( o );}
xywh {30 30 40 25} type Toggle value 1
}
MenuItem {} {
label {&Center Playhead}
callback {Timeline::center_playhead = menu_picked_value( o );}
xywh {40 40 40 25} type Toggle value 1
}
Submenu {} {
label {&Snap to} open
xywh {10 10 74 25}
} {
MenuItem {} {
label Bars
callback {Timeline::snap_to = Timeline::Bars;}
xywh {10 10 40 25} type Radio value 1
}
MenuItem {} {
label Beats
callback {Timeline::snap_to = Timeline::Beats;}
xywh {20 20 40 25} type Radio
}
MenuItem {} {
label Off
callback {Timeline::snap_to = Timeline::None;}
xywh {30 30 40 25} type Radio
}
}
MenuItem {} {
label {Magnetic snap}
callback {Timeline::snap_magnetic = menu_picked_value( o );}
xywh {20 20 40 25} type Toggle value 1
2008-04-23 04:22:46 +02:00
}
2008-05-25 08:14:17 +02:00
Submenu {} {
label {Capture Format} open
xywh {10 10 74 25}
} {}
2008-04-23 04:22:46 +02:00
}
}
}
2008-04-27 09:07:16 +02:00
Submenu {} {
label {&Help} open
xywh {0 0 74 25}
} {
MenuItem {} {
label {&About}
callback {Fl_Window *win = make_about_dialog();
win->show();
while ( win->shown() )
Fl::wait();
delete win;}
xywh {0 0 40 25}
}
2008-04-23 04:22:46 +02:00
}
}
2008-04-24 04:10:20 +02:00
Fl_Group {} {open
2008-06-06 04:49:38 +02:00
xywh {0 23 1025 51}
2008-04-23 04:22:46 +02:00
} {
2008-04-24 22:52:30 +02:00
Fl_Pack {} {open
2008-06-06 04:49:38 +02:00
xywh {0 23 483 46} type HORIZONTAL
2008-04-24 04:10:20 +02:00
code0 {o->spacing( 10 );}
} {
Fl_Box {} {
2008-06-06 04:51:07 +02:00
label {<Transport>}
2008-06-06 04:49:38 +02:00
xywh {5 23 189 46} color 30
2008-04-24 04:10:20 +02:00
code0 {transport = o;}
code1 {o->labeltype( FL_NO_LABEL );}
class Transport
}
2008-04-25 06:36:02 +02:00
Fl_Pack clocks_pack {open
2008-06-06 04:49:38 +02:00
xywh {195 23 288 46} type HORIZONTAL
2008-04-24 04:10:20 +02:00
code0 {o->spacing( 2 );}
} {
Fl_Box playhead_clock {
label PLAYHEAD
2008-06-06 04:49:38 +02:00
xywh {195 29 137 40} box BORDER_BOX color 40
2008-04-24 04:10:20 +02:00
code0 {o->type( Clock::HMS );}
code1 {o->run( &transport->frame );}
class Clock
}
Fl_Box {} {
2008-04-25 08:34:08 +02:00
label PLAYHEAD
2008-06-06 04:49:38 +02:00
xywh {335 29 142 40} box BORDER_BOX color 40
2008-04-24 04:10:20 +02:00
code0 {o->type( Clock::BBT );}
2008-04-25 06:36:02 +02:00
code1 {o->run( &transport->frame );}
2008-04-24 04:10:20 +02:00
class Clock
}
}
2008-04-23 04:22:46 +02:00
}
Fl_Box {} {
2008-04-24 04:10:20 +02:00
label {<empty>}
2008-06-06 04:49:38 +02:00
xywh {487 27 378 42} resizable
2008-04-24 04:10:20 +02:00
code0 {o->labeltype( FL_NO_LABEL );}
}
2008-06-06 04:49:38 +02:00
Fl_Group {} {open
xywh {865 26 160 44}
2008-04-24 04:10:20 +02:00
} {
Fl_Box {} {
label {capture:}
2008-06-06 04:49:38 +02:00
xywh {865 26 56 14} labelsize 10 align 24
2008-04-24 04:10:20 +02:00
}
Fl_Box {} {
label {playback:}
2008-06-06 04:49:38 +02:00
xywh {865 42 56 14} labelsize 10 align 24
2008-04-24 04:10:20 +02:00
}
Fl_Box {} {
label {DSP:}
2008-06-06 04:49:38 +02:00
xywh {865 56 56 14} labelsize 10 align 24
2008-04-24 04:10:20 +02:00
}
Fl_Progress capture_buffer_progress {
label {50%}
2008-06-06 04:49:38 +02:00
xywh {921 26 104 14} labelsize 10
2008-04-24 04:10:20 +02:00
}
Fl_Progress cpu_load_progress {
label {50%}
2008-06-06 04:49:38 +02:00
xywh {921 56 104 14} labelsize 9
2008-04-24 04:10:20 +02:00
}
Fl_Progress playback_buffer_progress {
label {50%}
2008-06-06 04:49:38 +02:00
xywh {921 41 104 14} labelsize 10
2008-04-24 04:10:20 +02:00
}
2008-04-23 04:22:46 +02:00
}
}
2008-06-05 06:27:55 +02:00
Fl_Progress progress {
label {0%}
xywh {15 394 995 41} hide
}
2008-04-23 04:22:46 +02:00
Fl_Box {} {
2008-04-24 04:10:20 +02:00
label {<Timeline>}
xywh {0 72 1024 695} box FLAT_BOX color 47 labelsize 100 resizable
code0 {timeline = o;}
class Timeline
2008-04-23 04:22:46 +02:00
}
2008-05-15 06:23:16 +02:00
Fl_Box project_name {
2008-05-07 01:33:24 +02:00
label {<project name>}
2008-05-03 06:44:48 +02:00
xywh {450 0 475 22} labeltype SHADOW_LABEL labelfont 2
2008-05-07 01:33:24 +02:00
code0 {o->label( Project::name() );}
2008-05-03 06:44:48 +02:00
}
2008-04-29 19:18:27 +02:00
Fl_Value_Output xruns_output {
2008-04-29 23:16:09 +02:00
label {xruns:}
2008-04-29 19:18:27 +02:00
xywh {980 2 44 20} maximum 40000 step 1
}
2008-04-23 04:22:46 +02:00
}
}
2008-05-06 06:37:45 +02:00
Function {find_item( Fl_Menu_ *menu, const char *path )} {open return_type {static Fl_Menu_Item *}
2008-05-06 06:33:41 +02:00
} {
code {return const_cast<Fl_Menu_Item*>(menu->find_item( path ));} {}
}
Function {update_menu()} {open
} {
code {Fl_Menu_Bar *m = menubar;
2008-05-07 01:33:24 +02:00
if ( ! Project::open() )
2008-05-06 06:33:41 +02:00
{
2008-05-07 01:33:24 +02:00
find_item( m, "&Project/&Export" )->deactivate();
find_item( m, "&Project/&Compact" )->deactivate();
find_item( m, "&Project/&Info" )->deactivate();
2008-05-06 06:33:41 +02:00
2008-05-25 20:45:20 +02:00
find_item( m, "&Options/&Project/&Timeline" )->deactivate();
find_item( m, "&Timeline" )->deactivate();
2008-05-06 06:37:45 +02:00
2008-05-06 06:33:41 +02:00
timeline->deactivate();
transport->deactivate();
}
else
{
2008-05-07 01:33:24 +02:00
find_item( m, "&Project/&Export" )->activate();
find_item( m, "&Project/&Compact" )->activate();
find_item( m, "&Project/&Info" )->activate();
2008-05-06 06:37:45 +02:00
2008-05-25 08:14:17 +02:00
find_item( m, "&Options/&Project/&Timeline" )->activate();
2008-05-25 20:45:20 +02:00
find_item( m, "&Timeline" )->activate();
2008-05-06 06:33:41 +02:00
timeline->activate();
transport->activate();
2008-05-06 22:13:52 +02:00
}
2008-05-15 06:23:16 +02:00
m->redraw();
2008-05-25 22:48:37 +02:00
project_name->redraw();} {}
2008-05-06 06:33:41 +02:00
}
2008-04-24 04:10:20 +02:00
Function {update_progress( Fl_Progress *p, char *s, float v )} {open private return_type {static void}
} {
code {p->value( v );
snprintf( s, 5, "%d%%", (int)v );
2008-06-06 04:30:34 +02:00
p->label( s );} {}
2008-04-24 04:10:20 +02:00
}
2008-04-23 07:35:49 +02:00
Function {update_status()} {open
} {
2008-04-24 04:10:20 +02:00
code {static char cbp[5], pbp[5], clp[5];
2008-04-23 07:35:49 +02:00
2008-04-24 04:10:20 +02:00
update_progress( capture_buffer_progress, cbp, timeline->total_input_buffer_percent() );
update_progress( playback_buffer_progress, pbp, timeline->total_output_buffer_percent() );
2008-04-29 19:18:27 +02:00
update_progress( cpu_load_progress, clp, engine->cpu_load() );
2008-05-01 13:35:42 +02:00
if ( timeline->total_capture_xruns() )
capture_buffer_progress->selection_color( FL_RED );
if ( timeline->total_playback_xruns() )
playback_buffer_progress->selection_color( FL_RED );
2008-06-11 02:53:38 +02:00
xruns_output->value( engine->xruns() );
static bool zombie = false;
if ( engine->zombified() && ! zombie )
{
zombie = true;
fl_alert( "Disconnected from JACK!" );
2008-06-11 05:43:13 +02:00
}} {}
2008-04-23 07:35:49 +02:00
}
2008-05-04 03:28:36 +02:00
Function {update_cb( void *v )} {return_type {static void}
2008-04-23 07:35:49 +02:00
} {
code {Fl::repeat_timeout( STATUS_UPDATE_FREQ, update_cb, v );
((TLE*)v)->update_status();} {}
}
2008-06-11 06:50:18 +02:00
Function {make_about_dialog()} {} {
2008-05-19 02:31:27 +02:00
Fl_Window about_dialog_window {
2008-04-27 09:07:16 +02:00
label About open
2008-06-05 06:27:55 +02:00
private xywh {758 335 495 600} type Double xclass {Non-DAW} visible
2008-04-27 09:07:16 +02:00
} {
Fl_Tabs {} {open
2008-05-26 01:43:23 +02:00
xywh {0 213 497 392}
2008-04-27 09:07:16 +02:00
} {
Fl_Group {} {
2008-05-26 07:46:37 +02:00
label Credits open
2008-05-26 01:43:23 +02:00
xywh {2 237 492 362}
2008-04-27 09:07:16 +02:00
} {
Fl_Box {} {
label {Non-DAW was written from scratch by
Jonathan Moore Liles for his own use
(see the manual).
Nobody planned. Nobody helped.
You can help now by donating time, money,
and/or replacing the rest of Linux Audio
with fast, light, reliable alternatives.}
2008-05-26 01:43:23 +02:00
xywh {39 266 418 262} box ROUNDED_BOX color 46 labelsize 18
2008-04-27 09:07:16 +02:00
}
}
Fl_Group {} {
label License open
2008-05-26 01:43:23 +02:00
xywh {2 237 492 362} hide
2008-04-27 09:07:16 +02:00
} {
Fl_Box {} {
2008-05-19 02:31:27 +02:00
label {Copyright (C) 2008 Jonathan Moore Liles}
2008-05-26 01:43:23 +02:00
xywh {43 246 410 37} labeltype SHADOW_LABEL labelfont 1 labelsize 18
2008-05-19 02:31:27 +02:00
}
Fl_Box {} {
label {This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
2008-04-27 09:07:16 +02:00
2008-05-19 02:31:27 +02:00
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.}
2008-05-26 01:43:23 +02:00
xywh {10 295 475 233} box ROUNDED_BOX color 46 labelfont 1 labelsize 12 labelcolor 53 align 144
2008-04-27 09:07:16 +02:00
}
}
}
Fl_Box {} {
2008-05-26 01:43:23 +02:00
label VERSION
xywh {25 11 445 151} box ROUNDED_BOX color 48 labelfont 1 labelsize 18 align 16
2008-05-16 02:53:46 +02:00
code0 {o->image( Fl_Shared_Image::get( INSTALL_PREFIX "/share/pixmaps/non-daw/logo.png" ) );}
2008-05-26 01:43:23 +02:00
code1 {o->label( VERSION );}
2008-04-27 09:07:16 +02:00
}
2008-05-19 02:31:27 +02:00
Fl_Return_Button {} {
label Rock
callback {about_dialog_window->hide();}
2008-05-26 01:43:23 +02:00
xywh {400 558 76 30}
2008-05-19 02:31:27 +02:00
}
Fl_Button {} {
label {http://non-daw.tuxfamily.org}
callback {\#if ! ( FL_MAJOR_VERSION >= 1 && FL_MINOR_VERSION >= 1 && FL_PATCH_VERSION >= 8 )
// FIXME: got a better idea?
system( "x-www-browser http://non-daw.tuxfamily.org &" );
\#else
fl_open_uri( "http://non-daw.tuxfamily.org" );
\#endif}
2008-05-26 01:43:23 +02:00
xywh {125 558 245 30} color 14 labeltype SHADOW_LABEL labelcolor 6
}
Fl_Box {} {
label {The Non DAW (Digital Audio Workstation)}
xywh {32 176 430 29} labeltype SHADOW_LABEL labelfont 3 labelsize 17
2008-05-19 02:31:27 +02:00
}
2008-04-27 09:07:16 +02:00
}
}
2008-05-06 22:13:52 +02:00
Function {save_timeline_settings()} {open
} {
2008-05-07 01:33:24 +02:00
code {if ( Project::open() )
2008-05-06 22:13:52 +02:00
{
2008-05-07 01:33:24 +02:00
// save project local options (Timeline menu)
2008-05-25 08:14:17 +02:00
((Fl_Menu_Settings*)menubar)->dump( menubar->find_item( "&Options/&Project" ), "options" );
2008-05-06 22:13:52 +02:00
}} {}
}
Function {load_timeline_settings()} {open
} {
2008-05-07 01:33:24 +02:00
code {if ( Project::open() )
2008-05-06 22:13:52 +02:00
{
2008-05-25 08:14:17 +02:00
((Fl_Menu_Settings*)menubar)->load( menubar->find_item( "&Options/&Project" ), "options" );
2008-05-15 06:23:16 +02:00
}
update_menu();
project_name->redraw();} {}
}
Function {quit()} {open
} {
code {Project::close();
save();
2008-06-12 05:52:34 +02:00
while ( Fl::first_window() ) Fl::first_window()->hide();} {}
2008-05-06 22:13:52 +02:00
}
2008-06-05 06:27:55 +02:00
Function {progress_cb( int p, void *arg )} {open return_type {static void}
} {
2008-06-06 04:30:34 +02:00
code {((TLE*)arg)->progress_cb( p );} {}
}
Function {progress_cb( int p )} {open return_type void
} {
code {if ( ! progress->visible() )
{
timeline->hide();
progress->show();
}
else if ( 0 == p )
{
timeline->show();
progress->hide();
}
2008-06-05 06:27:55 +02:00
static char pat[10];
update_progress( progress, pat, p );
progress->redraw();
2008-06-11 02:53:38 +02:00
Fl::check();} {}
2008-06-05 06:27:55 +02:00
}
2008-04-23 04:22:46 +02:00
}
2008-05-04 03:28:36 +02:00
2008-05-07 01:33:24 +02:00
class New_Project_Dialog {open
2008-05-04 03:28:36 +02:00
} {
2008-05-07 01:33:24 +02:00
Function {New_Project_Dialog()} {open
2008-05-04 03:28:36 +02:00
} {
code {make_window();} {}
}
2008-05-06 06:33:41 +02:00
Function {run()} {open return_type void
2008-05-04 03:28:36 +02:00
} {
code {_window->show();
while ( _window->shown() )
2008-05-04 09:32:54 +02:00
Fl::wait();} {}
2008-05-04 03:28:36 +02:00
}
Function {make_window()} {open
} {
Fl_Window _window {
2008-06-19 06:14:14 +02:00
label {New Project} open
2008-06-19 04:23:59 +02:00
xywh {615 414 550 195} type Double modal xclass Non_DAW visible
2008-05-04 03:28:36 +02:00
} {
Fl_File_Input _name {
label {Named:}
xywh {75 140 375 35}
}
Fl_Button {} {
label Browse
2008-05-07 01:33:24 +02:00
callback {_directory->value( fl_dir_chooser( "Directory for new project", NULL, 0 ) );}
2008-05-05 00:20:38 +02:00
xywh {455 100 80 35}
2008-05-04 03:28:36 +02:00
}
Fl_Return_Button {} {
label Create
2008-05-04 09:32:54 +02:00
callback {if ( strlen( _directory->value() ) && strlen( _name->value() ) )
{
char pat[512];
snprintf( pat, sizeof( pat ), "%s/%s", _directory->value(), _name->value() );
2008-05-17 06:18:00 +02:00
if ( ! Project::create( pat, _template->text( _template->value() ) ) )
fl_alert( "Error creating project!" );
2008-05-04 09:32:54 +02:00
2008-05-17 06:18:00 +02:00
_window->hide();
2008-05-17 20:42:50 +02:00
}}
2008-05-04 03:28:36 +02:00
xywh {455 140 80 35}
}
2008-05-05 00:20:38 +02:00
Fl_File_Input _directory {
2008-05-04 03:28:36 +02:00
label {Where:}
2008-05-05 00:20:38 +02:00
callback {if ( ! fl_filename_isdir( o->value() ) )
{
fl_alert( "Must be a directory" );
o->value( "" );
}}
xywh {75 100 375 35}
code0 {\#include <FL/filename.H>}
2008-05-04 03:28:36 +02:00
}
Fl_Box {} {
2008-05-07 01:33:24 +02:00
label {New Project}
2008-05-04 03:28:36 +02:00
xywh {15 8 520 33} box RSHADOW_BOX color 133 labelsize 20 labelcolor 32
}
Fl_Choice _template {
label {Template:}
2008-06-19 04:23:59 +02:00
private xywh {310 60 225 25} down_box BORDER_BOX hide
2008-05-04 03:28:36 +02:00
} {
MenuItem {} {
label Default
xywh {0 0 40 25}
}
}
}
}
}
2008-05-07 01:33:24 +02:00
Function {new_project_chooser()} {open C return_type void
2008-05-04 03:28:36 +02:00
} {
2008-05-07 01:33:24 +02:00
code {New_Project_Dialog nsd;
2008-05-04 03:28:36 +02:00
2008-05-06 06:33:41 +02:00
nsd.run();} {}
2008-05-04 03:28:36 +02:00
}
2008-06-11 05:43:13 +02:00
class Project_Info_Dialog {open
} {
Function {Project_Info_Dialog()} {open
} {
code {make_window();} {}
}
Function {run()} {open return_type void
} {
2008-06-16 04:18:25 +02:00
code {window->show();
2008-06-11 05:43:13 +02:00
2008-06-16 04:18:25 +02:00
while ( window->shown() )
2008-06-11 05:43:13 +02:00
Fl::wait();} {}
}
Function {make_window()} {open
} {
2008-06-16 04:18:25 +02:00
Fl_Window window {
2008-06-16 04:44:45 +02:00
label {Project info} open
2008-06-16 04:18:25 +02:00
private xywh {649 226 520 625} type Double modal visible
2008-06-11 05:43:13 +02:00
} {
Fl_Value_Output {} {
label {Sample Rate}
2008-06-13 04:21:08 +02:00
xywh {40 80 90 25} labeltype SHADOW_LABEL align 1
2008-06-11 05:43:13 +02:00
code0 {o->value( timeline->sample_rate() );}
}
Fl_Output {} {
label {Size of Journal}
2008-06-13 04:21:08 +02:00
xywh {210 80 100 25} box UP_BOX labeltype SHADOW_LABEL align 1
2008-06-11 05:43:13 +02:00
code0 {static char pat[40];}
code1 {snprintf( pat, sizeof( pat ), "%.1fK", size( "history" ) / (float)1024 );}
code2 {o->value( pat );}
code3 {\#include "util/file.h"}
}
Fl_Output {} {
label {Created On}
2008-06-13 04:21:08 +02:00
xywh {350 80 135 25} box UP_BOX labeltype SHADOW_LABEL align 1
}
Fl_Output {} {
label Length
2008-06-16 04:18:25 +02:00
xywh {30 130 115 25} align 1
2008-06-13 04:21:08 +02:00
code0 {char pat[40];}
code1 {Clock::frame_to_HMS( pat, sizeof( pat ), timeline->length() );}
code2 {o->value( pat );}
}
Fl_Value_Output {} {
label Tracks
xywh {230 130 60 25} align 1
code0 {o->value( timeline->ntracks() );}
2008-06-11 05:43:13 +02:00
}
Fl_Box {} {
label {<LOGO>}
2008-06-13 04:21:08 +02:00
xywh {51 194 418 154} box ROUNDED_BOX color 53 labelfont 1 labelsize 18 align 16
2008-06-11 05:43:13 +02:00
code0 {o->image( Fl_Shared_Image::get( INSTALL_PREFIX "/share/pixmaps/non-daw/logo2.png" ) );}
code1 {o->label( NULL );}
}
2008-06-13 04:21:08 +02:00
Fl_Text_Editor notes_field {
label {Notes:}
private xywh {20 395 480 185} color 47 selection_color 31 textsize 18 textcolor 92
code0 {o->buffer( new Fl_Text_Buffer() );}
code1 {o->buffer()->loadfile( "notes" );}
}
2008-06-11 05:43:13 +02:00
Fl_Button {} {
2008-06-16 04:18:25 +02:00
label {&Save}
2008-06-11 05:43:13 +02:00
callback {notes_field->buffer()->savefile( "notes" );
2008-06-16 04:18:25 +02:00
window->hide();}
2008-06-13 04:21:08 +02:00
xywh {425 590 74 25}
2008-06-11 05:43:13 +02:00
}
2008-06-13 04:21:08 +02:00
Fl_Box {} {
label {Project Info}
xywh {40 18 405 27} box RSHADOW_BOX color 95 labeltype SHADOW_LABEL labelsize 18
2008-06-12 05:52:34 +02:00
}
2008-06-13 04:21:08 +02:00
Fl_Box {} {
label {Project Info}
xywh {25 18 470 33} box RSHADOW_BOX color 133 labelsize 20 labelcolor 32
2008-06-12 05:52:34 +02:00
}
2008-06-16 04:18:25 +02:00
Fl_Button {} {
label {&Discard}
callback {window->hide();}
xywh {330 590 74 25}
}
2008-06-11 05:43:13 +02:00
}
}
}