summaryrefslogtreecommitdiff
path: root/gtk2_ardour/location_ui.h
diff options
context:
space:
mode:
authorTaybin Rutkin <taybin@taybin.com>2005-09-25 18:42:24 +0000
committerTaybin Rutkin <taybin@taybin.com>2005-09-25 18:42:24 +0000
commit209d967b1bb80a9735d690d8f4f0455ecb9970ca (patch)
tree9d76ddcd7c1ac9d91bb2b1a33d31b66ce4ded5de /gtk2_ardour/location_ui.h
parente4b9aed743fc765219ac775905a221c017c88fba (diff)
Initial import of gtk2_ardour.
git-svn-id: svn://localhost/trunk/ardour2@24 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/location_ui.h')
-rw-r--r--gtk2_ardour/location_ui.h198
1 files changed, 198 insertions, 0 deletions
diff --git a/gtk2_ardour/location_ui.h b/gtk2_ardour/location_ui.h
new file mode 100644
index 0000000000..92ea933928
--- /dev/null
+++ b/gtk2_ardour/location_ui.h
@@ -0,0 +1,198 @@
+/*
+ Copyright (C) 1999-2002 Paul Davis
+
+ 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ $Id$
+*/
+
+#ifndef __ardour_location_ui_h__
+#define __ardour_location_ui_h__
+
+#include <gtk--.h>
+#include <ardour/location.h>
+#include <ardour/session.h>
+
+#include "ardour_dialog.h"
+#include "keyboard_target.h"
+
+namespace ARDOUR {
+ class LocationStack;
+ class Session;
+ class Location;
+}
+
+class LocationEditRow : public Gtk::HBox
+{
+ public:
+ LocationEditRow (ARDOUR::Session *sess=0, ARDOUR::Location *loc=0, int32_t num=-1);
+ virtual ~LocationEditRow();
+
+ void set_location (ARDOUR::Location*);
+ ARDOUR::Location * get_location() { return location; }
+
+ void set_session (ARDOUR::Session *);
+
+ void set_number (int);
+
+ SigC::Signal1<void,ARDOUR::Location*> remove_requested;
+ SigC::Signal0<void> redraw_ranges;
+
+ protected:
+
+ enum LocationPart {
+ LocStart,
+ LocEnd,
+ LocLength
+ };
+
+ ARDOUR::Location *location;
+ ARDOUR::Session *session;
+
+
+
+ Gtk::Table item_table;
+
+ Gtk::Entry name_entry;
+ Gtk::Label name_label;
+ Gtk::Label number_label;
+
+ Gtk::HBox start_hbox;
+ Gtk::Button start_set_button;
+ Gtk::Button start_go_button;
+ AudioClock start_clock;
+
+ Gtk::HBox end_hbox;
+ Gtk::Button end_set_button;
+ Gtk::Button end_go_button;
+ AudioClock end_clock;
+
+ AudioClock length_clock;
+ Gtk::CheckButton cd_check_button;
+ Gtk::CheckButton hide_check_button;
+
+ Gtk::Button remove_button;
+
+ Gtk::HBox cd_track_details_hbox;
+ Gtk::Entry isrc_entry;
+ Gtk::Label isrc_label;
+
+
+ Gtk::Label performer_label;
+ Gtk::Entry performer_entry;
+ Gtk::Label composer_label;
+ Gtk::Entry composer_entry;
+ Gtk::CheckButton scms_check_button;
+ Gtk::CheckButton preemph_check_button;
+
+
+ guint32 i_am_the_modifier;
+ int number;
+
+ void name_entry_changed ();
+ void isrc_entry_changed ();
+ void performer_entry_changed ();
+ void composer_entry_changed ();
+
+ void set_button_pressed (LocationPart part);
+ void go_button_pressed (LocationPart part);
+
+ void clock_changed (LocationPart part);
+
+ void cd_toggled ();
+ void hide_toggled ();
+ void remove_button_pressed ();
+
+ void scms_toggled ();
+ void preemph_toggled ();
+
+ gint entry_focus_event (GdkEventFocus* ev);
+
+ void end_changed (ARDOUR::Location *);
+ void start_changed (ARDOUR::Location *);
+ void name_changed (ARDOUR::Location *);
+ void location_changed (ARDOUR::Location *);
+ void flags_changed (ARDOUR::Location *, void *src);
+
+ SigC::Connection start_changed_connection;
+ SigC::Connection end_changed_connection;
+ SigC::Connection name_changed_connection;
+ SigC::Connection changed_connection;
+ SigC::Connection flags_changed_connection;
+
+};
+
+
+class LocationUI : public ArdourDialog
+{
+ public:
+ LocationUI ();
+ ~LocationUI ();
+
+ void set_session (ARDOUR::Session *);
+
+ private:
+
+
+ ARDOUR::LocationStack *locations;
+
+ void session_gone();
+
+
+ Gtk::VBox location_vpacker;
+ Gtk::HBox location_hpacker;
+
+ LocationEditRow loop_edit_row;
+ LocationEditRow punch_edit_row;
+
+ Gtk::VPaned loc_range_panes;
+
+ Gtk::Frame loc_frame;
+ Gtk::VBox loc_frame_box;
+ Gtk::Button add_location_button;
+ Gtk::ScrolledWindow location_rows_scroller;
+ Gtk::VBox location_rows;
+
+ Gtk::Frame range_frame;
+ Gtk::VBox range_frame_box;
+ Gtk::Button add_range_button;
+ Gtk::ScrolledWindow range_rows_scroller;
+ Gtk::VBox range_rows;
+
+
+ /* When any location changes it start
+ or end points, it sends a signal that is caught
+ by one of these functions
+ */
+
+ void location_remove_requested (ARDOUR::Location *);
+
+ void location_redraw_ranges ();
+
+ gint do_location_remove (ARDOUR::Location *);
+
+ guint32 i_am_the_modifier;
+
+ void add_new_location();
+ void add_new_range();
+
+ void refresh_location_list ();
+ void refresh_location_list_s (ARDOUR::Change);
+ void location_removed (ARDOUR::Location *);
+ void location_added (ARDOUR::Location *);
+ void map_locations (ARDOUR::Locations::LocationList&);
+};
+
+#endif // __ardour_location_ui_h__