From fd1d7777fd523b32e34837fe164678dfa52fd5c7 Mon Sep 17 00:00:00 2001 From: Valeriy Kamyshniy Date: Thu, 15 May 2014 08:25:23 -0500 Subject: [PATCH] Arranging tool pannel [git-p4: depot-paths = "//Abdaw/dev_main/tracks/": change = 460869] --- gtk2_ardour/ardour_ui.cc | 52 +++- gtk2_ardour/ardour_ui.h | 6 + gtk2_ardour/ardour_ui2.cc | 247 +++++++++++++++++- gtk2_ardour/icons/inspector_on.png | Bin 0 -> 968 bytes gtk2_ardour/icons/inspector_on_active.png | Bin 0 -> 1673 bytes gtk2_ardour/icons/inspector_on_prelight.png | Bin 0 -> 1440 bytes gtk2_ardour/icons/mixer_on.png | Bin 0 -> 1221 bytes gtk2_ardour/icons/mixer_on_active.png | Bin 0 -> 457 bytes gtk2_ardour/icons/mixer_on_prelight.png | Bin 0 -> 1327 bytes gtk2_ardour/icons/transport_end.png | Bin 497 -> 1823 bytes gtk2_ardour/icons/transport_end_active.png | Bin 0 -> 1638 bytes gtk2_ardour/icons/transport_end_prelight.png | Bin 0 -> 1563 bytes gtk2_ardour/icons/transport_loop.png | Bin 1160 -> 1558 bytes gtk2_ardour/icons/transport_loop_active.png | Bin 0 -> 1372 bytes gtk2_ardour/icons/transport_loop_prelight.png | Bin 0 -> 1323 bytes gtk2_ardour/icons/transport_play.png | Bin 558 -> 1346 bytes gtk2_ardour/icons/transport_play_active.png | Bin 0 -> 1217 bytes gtk2_ardour/icons/transport_play_prelight.png | Bin 0 -> 1157 bytes gtk2_ardour/icons/transport_record.png | Bin 610 -> 1321 bytes gtk2_ardour/icons/transport_record_active.png | Bin 0 -> 1439 bytes .../icons/transport_record_prelight.png | Bin 0 -> 1222 bytes gtk2_ardour/icons/transport_start.png | Bin 493 -> 1813 bytes gtk2_ardour/icons/transport_start_active.png | Bin 0 -> 1646 bytes .../icons/transport_start_prelight.png | Bin 0 -> 1590 bytes gtk2_ardour/icons/transport_stop.png | Bin 189 -> 996 bytes gtk2_ardour/icons/transport_stop_active.png | Bin 0 -> 905 bytes gtk2_ardour/icons/transport_stop_prelight.png | Bin 0 -> 872 bytes gtk2_ardour/ui/tracks_tools.xml | 47 ++++ gtk2_ardour/waves_button.h | 17 +- gtk2_ardour/waves_icon_button.cc | 145 ++++++++++ gtk2_ardour/waves_icon_button.h | 45 ++++ gtk2_ardour/waves_ui.cc | 54 +++- gtk2_ardour/waves_ui.h | 1 + gtk2_ardour/wscript | 1 + 34 files changed, 580 insertions(+), 35 deletions(-) create mode 100644 gtk2_ardour/icons/inspector_on.png create mode 100644 gtk2_ardour/icons/inspector_on_active.png create mode 100644 gtk2_ardour/icons/inspector_on_prelight.png create mode 100644 gtk2_ardour/icons/mixer_on.png create mode 100644 gtk2_ardour/icons/mixer_on_active.png create mode 100644 gtk2_ardour/icons/mixer_on_prelight.png create mode 100644 gtk2_ardour/icons/transport_end_active.png create mode 100644 gtk2_ardour/icons/transport_end_prelight.png create mode 100644 gtk2_ardour/icons/transport_loop_active.png create mode 100644 gtk2_ardour/icons/transport_loop_prelight.png create mode 100644 gtk2_ardour/icons/transport_play_active.png create mode 100644 gtk2_ardour/icons/transport_play_prelight.png create mode 100644 gtk2_ardour/icons/transport_record_active.png create mode 100644 gtk2_ardour/icons/transport_record_prelight.png create mode 100644 gtk2_ardour/icons/transport_start_active.png create mode 100644 gtk2_ardour/icons/transport_start_prelight.png create mode 100644 gtk2_ardour/icons/transport_stop_active.png create mode 100644 gtk2_ardour/icons/transport_stop_prelight.png create mode 100644 gtk2_ardour/ui/tracks_tools.xml create mode 100644 gtk2_ardour/waves_icon_button.cc create mode 100644 gtk2_ardour/waves_icon_button.h diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 90e4c54635..b718bc26fc 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -245,13 +245,36 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) session_loaded = false; ignore_dual_punch = false; + const XMLTree* layout = WavesUI::load_layout("tracks_tools.xml"); + if (layout == NULL) { + return; + } + + XMLNode* root = layout->root(); + if ((root == NULL) || strcasecmp(root->name().c_str(), "layout")) { + return; + } + + WavesUI::create_ui(layout, tracks_tools_packer, _tools); + roll_button.set_controllable (roll_controllable); + _tools.get_waves_button ("transport_play_button").set_controllable (roll_controllable); + stop_button.set_controllable (stop_controllable); + _tools.get_waves_button ("transport_stop_button").set_controllable (stop_controllable); + goto_start_button.set_controllable (goto_start_controllable); + _tools.get_waves_button ("transport_start_button").set_controllable (goto_start_controllable); + goto_end_button.set_controllable (goto_end_controllable); + _tools.get_waves_button ("transport_end_button").set_controllable (goto_end_controllable); + auto_loop_button.set_controllable (auto_loop_controllable); + _tools.get_waves_button ("transport_loop_button").set_controllable (auto_loop_controllable); + play_selection_button.set_controllable (play_selection_controllable); rec_button.set_controllable (rec_controllable); + _tools.get_waves_button ("transport_record_button").set_controllable (rec_controllable); roll_button.set_name ("transport button"); stop_button.set_name ("transport button"); @@ -2120,9 +2143,12 @@ ARDOUR_UI::map_transport_state () { if (!_session) { auto_loop_button.unset_active_state (); + _tools.get_waves_button ("transport_loop_button").set_active (false); play_selection_button.unset_active_state (); roll_button.unset_active_state (); + _tools.get_waves_button ("transport_play_button").set_active (false); stop_button.set_active_state (Gtkmm2ext::ExplicitActive); + _tools.get_waves_button ("transport_stop_button").set_active (true); return; } @@ -2138,23 +2164,29 @@ ARDOUR_UI::map_transport_state () play_selection_button.set_active_state (Gtkmm2ext::ExplicitActive); roll_button.unset_active_state (); + _tools.get_waves_button ("transport_play_button").set_active (true); auto_loop_button.unset_active_state (); - + _tools.get_waves_button ("transport_loop_button").set_active (false); } else if (_session->get_play_loop ()) { auto_loop_button.set_active (true); + _tools.get_waves_button ("transport_loop_button").set_active (true); play_selection_button.set_active (false); if (Config->get_loop_is_mode()) { roll_button.set_active (true); + _tools.get_waves_button ("transport_play_button").set_active (true); } else { roll_button.set_active (false); + _tools.get_waves_button ("transport_play_button").set_active (false); } } else { roll_button.set_active (true); + _tools.get_waves_button ("transport_play_button").set_active (true); play_selection_button.set_active (false); auto_loop_button.set_active (false); + _tools.get_waves_button ("transport_loop_button").set_active (false); } if (Config->get_always_play_range()) { @@ -2164,16 +2196,22 @@ ARDOUR_UI::map_transport_state () } stop_button.set_active (false); + _tools.get_waves_button ("transport_stop_button").set_active (false); } else { stop_button.set_active (true); + _tools.get_waves_button ("transport_stop_button").set_active (true); roll_button.set_active (false); + _tools.get_waves_button ("transport_play_button").set_active (false); + play_selection_button.set_active (false); if (Config->get_loop_is_mode ()) { auto_loop_button.set_active (_session->get_play_loop()); + _tools.get_waves_button ("transport_loop_button").set_active (_session->get_play_loop()); } else { auto_loop_button.set_active (false); + _tools.get_waves_button ("transport_loop_button").set_active (false); } update_disk_space (); } @@ -2452,13 +2490,17 @@ ARDOUR_UI::transport_rec_enable_blink (bool onoff) if (r == Session::Enabled || (r == Session::Recording && !h)) { if (onoff) { rec_button.set_active_state (Gtkmm2ext::ExplicitActive); + _tools.get_waves_button ("transport_record_button").set_active (true); } else { rec_button.set_active_state (Gtkmm2ext::ImplicitActive); - } + _tools.get_waves_button ("transport_record_button").set_active (false); + } } else if (r == Session::Recording && h) { rec_button.set_active_state (Gtkmm2ext::ExplicitActive); + _tools.get_waves_button ("transport_record_button").set_active (true); } else { rec_button.unset_active_state (); + _tools.get_waves_button ("transport_record_button").set_active (false); } } @@ -4130,10 +4172,14 @@ ARDOUR_UI::step_edit_status_change (bool yn) if (yn) { rec_button.set_active_state (Gtkmm2ext::ImplicitActive); + _tools.get_waves_button ("transport_record_button").set_active (true); rec_button.set_sensitive (false); + _tools.get_waves_button ("transport_record_button").set_sensitive (false); } else { - rec_button.unset_active_state ();; + rec_button.unset_active_state (); + _tools.get_waves_button ("transport_record_button").set_active (false); rec_button.set_sensitive (true); + _tools.get_waves_button ("transport_record_button").set_sensitive (true); } } diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index eca63e3f2b..0f466336c7 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -93,6 +93,8 @@ #include "speaker_dialog.h" #include "theme_manager.h" +#include "waves_ui.h" + class VideoTimeLine; class ArdourKeyboard; class AudioClock; @@ -331,6 +333,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr int setup_windows (); void setup_transport (); + void setup_transport_trx (); void setup_clock (); static ARDOUR_UI *theArdourUI; @@ -363,6 +366,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void about_signal_response(int response); Gtk::VBox top_packer; + Gtk::VBox tracks_tools_packer; sigc::connection clock_signal_connection; void update_clocks (); @@ -438,6 +442,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr ArdourButton play_selection_button; ArdourButton rec_button; + WavesUI::WidgetMap _tools; + void toggle_external_sync (); void toggle_time_master (); void toggle_video_sync (); diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc index 8dee90182d..8a0ae989df 100644 --- a/gtk2_ardour/ardour_ui2.cc +++ b/gtk2_ardour/ardour_ui2.cc @@ -110,8 +110,11 @@ ARDOUR_UI::setup_windows () #else top_packer.pack_start (menu_bar_base, false, false); #endif - - top_packer.pack_start (transport_frame, false, false); + if (ARDOUR::Profile->get_trx()) { + top_packer.pack_start (tracks_tools_packer, false, false); + } else { + top_packer.pack_start (transport_frame, false, false); + } editor->add_toplevel_controls (top_packer); @@ -210,9 +213,229 @@ ARDOUR_UI::tearoff_settings (const char* name) const return 0; } +void +ARDOUR_UI::setup_transport_trx () +{ + RefPtr act; + + transport_tearoff_hbox.set_border_width (3); + transport_tearoff_hbox.set_spacing (3); + + transport_tearoff = manage (new TearOff (transport_tearoff_hbox)); + transport_tearoff->set_name ("TransportBase"); + transport_tearoff->tearoff_window().signal_key_press_event().connect (sigc::bind (sigc::ptr_fun (relay_key_press), &transport_tearoff->tearoff_window()), false); + transport_tearoff->set_can_be_torn_off (false); + + transport_hbox.pack_start (*transport_tearoff, true, false); + + transport_base.set_name ("TransportBase"); + transport_base.add (transport_hbox); + + transport_frame.set_shadow_type (SHADOW_OUT); + transport_frame.set_name ("BaseFrame"); + transport_frame.add (transport_base); + + transport_tearoff->Detach.connect (sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::detach_tearoff), static_cast(&top_packer), + static_cast(&transport_frame))); + transport_tearoff->Attach.connect (sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::reattach_tearoff), static_cast (&top_packer), + static_cast (&transport_frame), 1)); + transport_tearoff->Hidden.connect (sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::detach_tearoff), static_cast(&top_packer), + static_cast(&transport_frame))); + transport_tearoff->Visible.connect (sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::reattach_tearoff), static_cast (&top_packer), + static_cast (&transport_frame), 1)); + + auto_return_button.set_text(_("Auto Return")); + + follow_edits_button.set_text(_("Follow Edits")); + + click_button.set_image (get_icon (X_("metronome"))); + act = ActionManager::get_action ("Transport", "ToggleClick"); + click_button.set_related_action (act); + click_button.signal_button_press_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::click_button_clicked), false); + + auto_return_button.set_name ("transport option button"); + follow_edits_button.set_name ("transport option button"); + auto_input_button.set_name ("transport option button"); + + /* these have to provide a clear indication of active state */ + + click_button.set_name ("transport button"); + + stop_button.set_active (true); + _tools.get_waves_button ("transport_stop_button").set_active (true); + + goto_start_button.set_image (get_icon (X_("transport_start"))); + goto_end_button.set_image (get_icon (X_("transport_end"))); + roll_button.set_image (get_icon (X_("transport_play"))); + stop_button.set_image (get_icon (X_("transport_stop"))); + play_selection_button.set_image (get_icon (X_("transport_range"))); + rec_button.set_image (get_icon (X_("transport_record"))); + auto_loop_button.set_image (get_icon (X_("transport_loop"))); + + midi_panic_button.set_image (get_icon (X_("midi_panic"))); + /* the icon for this has an odd aspect ratio, so fatten up the button */ + midi_panic_button.set_size_request (25, -1); + + act = ActionManager::get_action (X_("Transport"), X_("Stop")); + stop_button.set_related_action (act); + _tools.get_waves_button ("transport_stop_button").set_related_action (act); + + act = ActionManager::get_action (X_("Transport"), X_("Roll")); + roll_button.set_related_action (act); + _tools.get_waves_button ("transport_play_button").set_related_action (act); + + act = ActionManager::get_action (X_("Transport"), X_("Record")); + rec_button.set_related_action (act); + _tools.get_waves_button ("transport_record_button").set_related_action (act); + + act = ActionManager::get_action (X_("Transport"), X_("GotoStart")); + goto_start_button.set_related_action (act); + _tools.get_waves_button ("transport_start_button").set_related_action (act); + + act = ActionManager::get_action (X_("Transport"), X_("GotoEnd")); + goto_end_button.set_related_action (act); + _tools.get_waves_button ("transport_end_button").set_related_action (act); + + act = ActionManager::get_action (X_("Transport"), X_("Loop")); + auto_loop_button.set_related_action (act); + _tools.get_waves_button ("transport_loop_button").set_related_action (act); + act = ActionManager::get_action (X_("Transport"), X_("PlaySelection")); + play_selection_button.set_related_action (act); + act = ActionManager::get_action (X_("MIDI"), X_("panic")); + midi_panic_button.set_related_action (act); + act = ActionManager::get_action (X_("Transport"), X_("ToggleExternalSync")); + + /* clocks, etc. */ + + ARDOUR_UI::Clock.connect (sigc::mem_fun (primary_clock, &AudioClock::set)); + ARDOUR_UI::Clock.connect (sigc::mem_fun (secondary_clock, &AudioClock::set)); + + primary_clock->ValueChanged.connect (sigc::mem_fun(*this, &ARDOUR_UI::primary_clock_value_changed)); + secondary_clock->ValueChanged.connect (sigc::mem_fun(*this, &ARDOUR_UI::secondary_clock_value_changed)); + big_clock->ValueChanged.connect (sigc::mem_fun(*this, &ARDOUR_UI::big_clock_value_changed)); + + act = ActionManager::get_action ("Transport", "ToggleAutoReturn"); + auto_return_button.set_related_action (act); + act = ActionManager::get_action (X_("Transport"), X_("ToggleFollowEdits")); + follow_edits_button.set_related_action (act); + act = ActionManager::get_action ("Transport", "ToggleAutoInput"); + auto_input_button.set_related_action (act); + + /* alerts */ + + /* CANNOT sigc::bind these to clicked or toggled, must use pressed or released */ + + solo_alert_button.set_name ("rude solo"); + solo_alert_button.signal_button_press_event().connect (sigc::mem_fun(*this,&ARDOUR_UI::solo_alert_press), false); + auditioning_alert_button.set_name ("rude audition"); + auditioning_alert_button.signal_button_press_event().connect (sigc::mem_fun(*this,&ARDOUR_UI::audition_alert_press), false); + feedback_alert_button.set_name ("feedback alert"); + feedback_alert_button.signal_button_press_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::feedback_alert_press), false); + + alert_box.pack_start (solo_alert_button, true, false); + alert_box.pack_start (auditioning_alert_button, true, false); + alert_box.pack_start (feedback_alert_button, true, false); + + /* all transport buttons should be the same size vertically and + * horizontally + */ + + Glib::RefPtr transport_button_size_group = SizeGroup::create (SIZE_GROUP_BOTH); + transport_button_size_group->add_widget (goto_start_button); + transport_button_size_group->add_widget (goto_end_button); + transport_button_size_group->add_widget (auto_loop_button); + transport_button_size_group->add_widget (rec_button); + transport_button_size_group->add_widget (play_selection_button); + transport_button_size_group->add_widget (roll_button); + transport_button_size_group->add_widget (stop_button); + + goto_start_button.set_size_request (33, 25); + + HBox* tbox1 = manage (new HBox); + HBox* tbox2 = manage (new HBox); + HBox* tbox = manage (new HBox); + + VBox* vbox1 = manage (new VBox); + VBox* vbox2 = manage (new VBox); + + Alignment* a1 = manage (new Alignment); + Alignment* a2 = manage (new Alignment); + + tbox1->set_spacing (2); + tbox2->set_spacing (2); + tbox->set_spacing (2); + + tbox1->pack_start (goto_start_button, false, false); + tbox1->pack_start (goto_end_button, false, false); + tbox1->pack_start (auto_loop_button, false, false); + + tbox2->pack_start (roll_button, false, false); + tbox2->pack_start (stop_button, false, false); + tbox2->pack_start (rec_button, false, false, 5); + + vbox1->pack_start (*tbox1, false, false); + vbox2->pack_start (*tbox2, false, false); + + a1->add (*vbox1); + a1->set (0.5, 1.0, 0.0, 0.0); + a2->add (*vbox2); + a2->set (0.5, 1.0, 0.0, 0.0); + + tbox->pack_start (*a1, false, false); + tbox->pack_start (*a2, false, false); + + HBox* clock_box = manage (new HBox); + + clock_box->pack_start (*primary_clock, false, false); + if (!ARDOUR::Profile->get_small_screen() && !ARDOUR::Profile->get_trx()) { + clock_box->pack_start (*secondary_clock, false, false); + } + + clock_box->set_spacing (3); + + shuttle_box = new ShuttleControl; + shuttle_box->show (); + + VBox* transport_vbox = manage (new VBox); + transport_vbox->set_name ("TransportBase"); + transport_vbox->set_border_width (0); + transport_vbox->set_spacing (3); + transport_vbox->pack_start (*tbox, true, true, 0); + + time_info_box = manage (new TimeInfoBox); + VBox& tv_box = *manage (new VBox); + HBox& th_box = *manage (new HBox); + transport_tearoff_hbox.pack_start (tv_box, false, false); + tv_box.pack_start (th_box, false, false); + th_box.pack_start (*time_info_box, false, false); + th_box.pack_start (*clock_box, false, false); + tv_box.pack_start (*transport_vbox, false, false); + + + /* transport related toggle controls */ + + VBox* auto_box = manage (new VBox); + auto_box->set_homogeneous (true); + auto_box->set_spacing (2); + transport_tearoff_hbox.pack_start (*auto_box, false, false); + // NO NEED TO HAVE IT: auto_box->pack_start (sync_button, false, false); + if (ARDOUR::Profile->get_small_screen()) { + transport_tearoff_hbox.pack_start (_editor_transport_box, false, false); + } + + /* desensitize */ + + set_transport_sensitivity (false); +} + void ARDOUR_UI::setup_transport () { + if (Profile->get_trx()) { + setup_transport_trx(); + return; + } + RefPtr act; transport_tearoff_hbox.set_border_width (3); @@ -331,17 +554,17 @@ ARDOUR_UI::setup_transport () /* all transport buttons should be the same size vertically and * horizontally */ + int width = 33; + int height = 25; + goto_start_button.set_size_request (width, height); + goto_end_button.set_size_request (width, height); + auto_loop_button.set_size_request (width, height); + rec_button.set_size_request (width, height); + play_selection_button.set_size_request (width, height); + roll_button.set_size_request (width, height); + stop_button.set_size_request (width, height); - Glib::RefPtr transport_button_size_group = SizeGroup::create (SIZE_GROUP_BOTH); - transport_button_size_group->add_widget (goto_start_button); - transport_button_size_group->add_widget (goto_end_button); - transport_button_size_group->add_widget (auto_loop_button); - transport_button_size_group->add_widget (rec_button); - transport_button_size_group->add_widget (play_selection_button); - transport_button_size_group->add_widget (roll_button); - transport_button_size_group->add_widget (stop_button); - - goto_start_button.set_size_request (-1, 40); + goto_start_button.set_size_request (width, height); HBox* tbox1 = manage (new HBox); HBox* tbox2 = manage (new HBox); diff --git a/gtk2_ardour/icons/inspector_on.png b/gtk2_ardour/icons/inspector_on.png new file mode 100644 index 0000000000000000000000000000000000000000..cbcc1fa48f4db9b74c1a0db72351e5135d3b686e GIT binary patch literal 968 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 literal 0 HcmV?d00001 diff --git a/gtk2_ardour/icons/mixer_on_active.png b/gtk2_ardour/icons/mixer_on_active.png new file mode 100644 index 0000000000000000000000000000000000000000..6e9c63610b395156e83fc1d14799dc36c2dd99a4 GIT binary patch literal 457 zcmV;)0XF`LP)Wys7-sC)3dY0&f*t@FitKO@pAdklfq4cQ zfIJ4n=m3<2oQ&-mGCaJYB7_0aF@P=o;sP)aW77lj94rQ?0SI~k6wR<$ASU!-Aq&$( zipQ(xP6uOBJV#OyNl4yYOf zFiVNGoEl*GC!xU(@Ooe%k_4%MsxbhofY2)B zAaDUv)Q{$Yfd*uGfYc;`3sA$H(dP8P0tN;EKn1kCbX`mp00000NkvXXu0mjf5M-q= literal 0 HcmV?d00001 diff --git a/gtk2_ardour/icons/mixer_on_prelight.png b/gtk2_ardour/icons/mixer_on_prelight.png new file mode 100644 index 0000000000000000000000000000000000000000..01a0fab721b30746668ae5fd77ee9ce8f64ff69c GIT binary patch literal 1327 zcmV+~1WdKxYbs#Y{AWdO;ATls9G$1iHIx#ppH8dbAFfuSOc;HCT00007bV*G` z2i^q_4HFZY>f6Qu000SaNLh0L01FZT01FZU(%pXi00004XF*Lt006O%3;baP000Dr zNkl9(E6u#$mrY%#6NQ|NeNwhzq(ix`Igz=|QS-7(jwZXViU;~LU8h5Y* zc0^4ScF?UcLD0k{ku)j`X=^e3wOv|b+z`{5i8FNG;oQG-&zpH~>W16S%YFBqbMJS* z^PO`q96tS}LO`WJDWsm#f7C@(0J`_^npq-r=t(W7Fj`vuD}qSFQ3e>8FZfWwq&I?< zqvazo>}W!On4#ysi3u9Hd~J@N`Fwt|v^$PlKhMvT&%TKluim^_uh$BNLS^)YD+}|j zRyi8y^|^{Db$SsK;m|rR7Wr5iCh&XJAy+YPE<1dZpQ0aSZO0hHE{^ z;Oh$)KRq!0$@F{8X4BB=ba3|4kF{Ej6{z*0)E`UBtN;967%1$2?Tt;F`pF;@knuz> zE{AMkX{9_ebotuvef|A&x9;rRvE9KH&h>hI;m$H``ipPBvoW&cNB2(=TzWZk@e&cK zr&VhEGdrGo^66)v*!o|iQLWap5+;|Bl$JB{Vm(px=H5!P(V&p0xkF!HFQK8{>*M90 ze)-k1YsvWS#tj-@UtbR_=}4GRAVyJOx(lF?>SQ~&vb=foBjw?ttJnYRh_?&w$M3#V ztJmjl-JaYtzP45+wb~it*s(?G(Nt*+_`~cKlL`Z$9hjD(PZhP;Mv%59iQZ`$4}oEU zO*dNan+xC1E?!@&R$nfcqR8eezEm2cRq6l8)LS+c*pu+lGOrek8F&;NKK<3o>RmaK zQG$3J1WBp(sWbdfvm`^jl7%lfAsEI^dow$97=V}o<%GVqYq_-F!+ zkflUPBW;A45k{j!f6RDUGkZQ9KXg#eoC1i?5u3VJn7kRqXPdF)15U4`pC3y8y%$&^ z+A_gq#jl0g!tf#UtMER!-Z)Qj&*ScuwUEn6FYO;Wq=K|*MG8NDftR& zgNs(w;faa&c5h_df?B5)6hmooX%l|8klCsg2;gw=71I_N6AtvWb#IzB5g=#-(d{g= zpL}RK_ZMoE0Nq(@@s!=hx$}x+&GpUK9=p{O=Vr2Ylqig80dheQqG$uHSZ}HBRs_B_ za^24))-mK#Sdb)-cUy7XH(>)|cI0I+Awr3LLqU5$!rBq*FARYpO*OzNo#ZSy$&hkN z2arWy7X=-}8Oe9|=B^)}BwKYQGu{ l@t90`5YbP3&A3q|+5>QfWSvYnheH4W002ovPDHLkV1g$!bVvXI literal 0 HcmV?d00001 diff --git a/gtk2_ardour/icons/transport_end.png b/gtk2_ardour/icons/transport_end.png index ccba11809fe93a65d2aa1487cc212830deb97296..ba20d49d9beaf66db65ce253558e182f76902649 100644 GIT binary patch delta 1790 zcmVMJRs;e@R3^ zR7gveR!wh}MHGJC@7q%FBf&@n5-7yRpur$5K|oCmOBOEFt-%d-sVi3`t_b=EOi=%T z!KF$xVPS&NXrh)#r64hs(n2V=+zUxn&I%Suam-{NU{9osf5;+)__1}_a&X<$n=KFr# z2L^%XBM1W6z(?puZmbrCaNl7VyK%rijskwy`s!sT2&kidUg*A?_E3NNkqj2#A!PGy z1S5k85c}Fd)P6`OTn$Em#L$W7oJD?sN)E$TA1vpB5JALE1nLFay9$3|7);}vnyaD- zOQW?{Mov91s`D5q^r)&M=6uU*!H;5iApu1E=48MYMG+m-X-Gh1RJu{0AqBM_L?aGJ zv*4Ovxdkgc+USw?FmXml{E?dOm`(^RVxL4UI#1X}>M@yUF;y-d(&d_S>evg``sz2y z1|ZG=!-xe#G%F+-Vf25Z+NbjV~?xIeZD-77N)+Z|-R6iY83N5M4tFi4-G z&cRpE-n<#r+$_*-*Xf~OkH=A$sj)nrzJWDD%FA;YNJD?uFpzGqhg*kVXSMRqAVHR? z3t7-zI=ge|DB96xw3hzC;!B5l0TQgd`1Q4&J-rP}ldmBi*#!UkEWB>!PLb!8E-2UW zyE5w-X>!(#b&K}W9_9(e@P2Tc`D+M+_M0ER`N)(THd4aWs;SWmq7=#W1Wg3#+K0F8(w zOPuXJd(j==hcegw!b$FlOhjD=f34^>9DXH-fz%-R3@8-$6!1i}SFq>X^N6#8Yb-|7 zuQ$Rq0z;i-rH$RxnL76gp1JlLvrHdcw**Ycykmb@2F?TJVNbLoQ>`>29goIK?(%yp z82|1(4t{nPJ1+lBb2&9CrZ5@kCfy#!FMNf`FV0~1>q82fKr#h#rz-79Q)=O}tl;L``#^~2XV^!XV~%>98U z#pA!HdrUDBeA>Y|A+%(N-oyGimD`KI&P#l>tg)U_c(U$ES~%8 z7wp*jBt}O^fjsA4>hK5zy$ri9UBFSMVBgG-*gE>SyNN-YWy!#3uQUaFIxtM5<3M8u zJUKaeI!#j-tph~YR*zLxaimj3hFB8MU-*9#+ZJwOY|{u|ROX+Pby4OnvMMdGpE}!@ zZemM|_X$%}7Acce!SVuBy;QW>Fx@b(UgBz``H*nQMJdLlNHf^`>qU%m9O^{m#=SXJ zp7Cbwy6ay5$R;lTgvSU_Z%1SUt(yZ$7II@U&F)5XDXv&oOYG81X5*+uy&@g@=o?^ka?H$V(9@La-ATxE>4vaXO#9DKkJ)gq!CT1 zfLwJ~iRMHP*j6!QJXdiA`;>n z4@8UA3-B!jPSs1emvB&!NC@o?LP9~yT#kOf9~cFGTbD{Dve_(BN~+ara1_9@EZXfhwrykEc5t-SYQ3h@ zX_Qiw%Vkojlz-H5oPSSU*DLXOe52Fpkk984Ld@LnIZ(RYZcR$LrIdOGt^v#I%)F*w zx~^BE(de2|>JqpD243LIroCS8T}rvxY&Pq_3Gne3Y+f8q(^||PD2{2GlZDIBcDw%l wa5y{y9{sj*yZ(h=Y@C0Y{QvUfTb}#?xhQ?(M|G^R00000Ne4wvM6N<$f*3Z*s{jB1 diff --git a/gtk2_ardour/icons/transport_end_active.png b/gtk2_ardour/icons/transport_end_active.png new file mode 100644 index 0000000000000000000000000000000000000000..dec7761b9823f17a6ebde9ff2621cc20de8bdf01 GIT binary patch literal 1638 zcmV-s2ATPZP)cBr1W+`(aO?l!PM7YCD@}-rQ8$vfGrBV| z?%WWKxG_e90zzp;NhR=T`{--?e$33h*YC{0w1whr+Rn_Kd%ydA=bY~hEi5cdPftft zB!uwZi~R->?fd+3?^jdKx#4h#>zSDu-EOyAt=7IfK5qB_$9o7Hx8vjEIt;^lyXu0Z zC8vcXOTu{N$>AaHyfgSmB6A{8WF0o}SbTm@5uReNeFWql(7!EYF=Njs^e z}0utdoB&7Eb@E_pid9HU$9_xg+!pl9J@K;v=)ezDOC$R_rk~WGd8X0?% zq%F>^ByTN*W0i1e3)~ci0~<^_n?n$+wvVL79vBG$G>|3q5*ip-Yox?3N;^e(=$NVZ z7QieGKk}!y0$e#%WxT66?Zls9AQd7^5^8O4Z!W9gR_D%WkZC}Kq_sd=Y8`af zS1%QA<@QRyZv!NeX3jWJdBORDwAu+oIn>aFk8Uiw z)m5XDC^8UFDRuMaKZ|d@cdvbTxcqyux)Er??uZwr$}D@hdXgm3d)R=S)4CExnrGQFSLLB{!p*mnw*TAp+!D8F*tT|`RU_#fBvC$;k&7g?E?o67-RUTTCs+X zD=B9%j*yz4pWnqss&W8uqu1-4eAUMd#3_4XX7%{#u5i7pmuX|GzqQqU>GdLRfOURk zcI|~T_ehNXy6*d%#L6MYh$xj2bBJb|#yc>Tlobpp_ck~0oOqeW#yNYC#U>g(HQzmP z>Ru+q%JRmkGa?;>Gzd5aL2-0u{rD?=x?*wnt}suf0Kyw3MBF1L8m;5$Ms;XV(`_Z{l`kDN$Ub>b>| zrCZqtGZH2vxODMLsKC-M*#3~XmFblWVL78-yWMLa84YkMl#?-ZG zeT4_ru$7Y8(lyn&O<$g)H{YS>o+k%=0`PQHWH+ws)wS@OFQ&SkiHUJ)HmwV}kl{>T z>wVqZap9N#cE7${|Jr3*?_{5RAXhtFAwDBv9jZzA;pK~Z{cir*S=n8S$0vfx7IFw> z4D$gY2$b7_uHCH~b@g%)l~ehRC0gs)kKT8;ZZ^|K+HPmV!7xn0H@|vGbUWFnXERJS z8qJA`v1T(2!a&7r-|TIu42Z0CU9KfafnFk|FPw#iA(piKr}_Nj{NgXE*3H9*(zKbx z@pgav-$>ajm*lw*iz|PmMyHcgNh4~c%|_Bd87sqH1yAC5;>S8&Gr;k208H7uz_eCk z^8B~@r}LxDEt;AN!yrjgkcnfR4x5`_e-&T7SPc4dx^03e4#Oyo;vfm)5I$1%Fbr#L zrIxPUjYEP?k!3#60<4sLa`Crenr0@%GANP6Q4j~AilQWcrgt}MwMJQv@(WB5MjB2E zyF(diZUk<3v)O^EIKe1j;w~rlSYaZQK>sK~qoc%xDufsTGTGQDZR#u-Lb&K)wj0y>0(Bu|pUQS8kgWkXJA##Rw_(F_1*!#&#svW^Huow-=k_c) zmSZt$m>YuMJ7mA#uXCC^Ka$XfNDmwbro%>v)=!KM>RB;zH1b(d%B;~?mBT@Zql_j7 z7b`%-*Hm`c)KRL+1$B!`@MU>AS9VHS;ONMlTx_w0<@oT)u?UUUl?N}p1$*>2d^MEK za94d)fx(!aojrK)V3id`QGThQ!%~24rDG!8x;cdW;R33%yd;?c59Tc_U~jIx@c;k- literal 0 HcmV?d00001 diff --git a/gtk2_ardour/icons/transport_end_prelight.png b/gtk2_ardour/icons/transport_end_prelight.png new file mode 100644 index 0000000000000000000000000000000000000000..9c0de57adf5320f893066bb666b2af07a00419fb GIT binary patch literal 1563 zcmV+$2ITpPP)~000SaNLh0L01|Wn01|Wo-ewAbB^HAD6290DVanNx25g3q~Wv zMDPL%!tOb9&(~-1uqeq;yPPw#)8F*h-CvKqapQ&%LP{ydM$UPB=7ZH{q?G=DX=DfA z8lUa$?ISJzmx+%Dj2!vgylPpGal4YDOj?kPQkbl=Oqj%5P6q#^a7h$O#+3KZnnvqc z)DvlBw*lMtX5V!EO@QEEn5d;rq$u%bsfk1uMK(@HEu>Ldc}ZGQP5~Pgkf>%U2`MP& z+;G+Kug59MQehrg20KjVcddi;N)#exlI>(DiwIC9WNpd7M;r|%NhX{pCXu7a^r26B z1h7vXMUe;nh?J?ZBG@qznLTBQjb^K5wVf z5_Nz%AJ~I!Gt*NSm)-?tJ${@#?v`eT%jSZPUs{%ML9?<(x~% zdl4INh)GZSpj`H&Lz-04HeK0uDZl<~VROE>@M87&@*UdQY`@|CrfV(DfaRLm^04UzUz zDC5Iec{X6!%noVJg&g2DXb?fheu+{P6KCgFX69R{E9+S|_^kQ&J=TDD;i{eOoqn|3 zx%qP!suftIR(TB!k8{!&8OLXr6OaTVtZ@$UQudGT83 z!Cgre@`3iDV1!U~&d}6w@Xhu=Kb^e%09ncG7m%GK!(zwi-NA+a zuSI{UtcFQP?{!Wdm4HgqN2+&>&?*qtXdi2&E_c6Oe|CEF#bi)50zS(+R zLfMo&r-bp<_0_fZgT61z%6jjttz7adWg8`2ksMD_x=H04BqXT-Q`w4052CoL{PnfR zC!gGx0a8W7m|ay3%3&q^nLuCtb^pxMl~nEpCx+#2<-9Fj^pJ!A$q zIe*X1e)kk(ogd*M=VHs?K#2Nm|CZAo7WXVd;x>~gxw1utIREf=Fa=n(&IRv7vd}ab z_t9~it;cva=_W8(08tR}=#U&-yhvdy_ed+84NVRh=q8>#IRoFVwUD?ND%LMN07ga} z$3g?%!!$^G95ZG(O@f9wa_@p7D>jUNjXkv{DZ$-RK>$2^pF;w_>;S)kE5%t8xBw0h zJzg|a*9T=Z5@e*;8llulmZ+Tw0m>%C5)z`EN{X4rV@+oAIgYLz2oCnY_aq-`(#=b% zgNg)o%%Mg$y+_nX0m4rXw4-r<3o8<>3|1Wm-Jqc1+z^woP N002ovPDHLkV1k)%;}rk^ literal 0 HcmV?d00001 diff --git a/gtk2_ardour/icons/transport_loop.png b/gtk2_ardour/icons/transport_loop.png index c2831c1012f5491a0b12386a6f847c2c4105d4ae..6501814c957214dc5140f78b9632a7089f2241f5 100644 GIT binary patch literal 1558 zcmV+x2I={UP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&00(qQO+^RY0T%%n zC$tHq!TaUy{OxhuvJ3j9LEFGPGm^2`VD z5BvZh5D6i8-~q$~hzG<2ATA;xz;>L(8!zkiuDv^#p5au__Rup~3yxIkp6;%y(^b{o zyXwJ%2RQ-H^N?j3lu|}4Y`@+L>TAW0ZEfG;v^nV;JNNJ3&-?wp85A;hqFgXT1h$<8 z>quHFv%Uqk@15pANcp}`3E2-QfKQQeFYpm~GRHOu%$gu*a4a-qVc0D6RbfN=V%O+S z#riDgjMp0MB0;V)5}@RamN-`d9a52G3Ze=j8A=;8C|m<%2>e#X;Vf}c60sBRLc<=(N~*Lxn)Ven=u=K+=qw-$X;!1}VoHWduZAxI~PvX}G}q*uL(0nb(BB;5*LQc&o$F(C%=ub0 ztkh8<;x4cXp3+PQjloAWIYD==kNvv`+w}e6ijF%~-0|r67<+f0L-RN*FUL#YwXylZ6>RiO zV1BO!O%>gV@ci`w#^bR$VWquOP>G1-OcuKeiWgrVWIQQA+=wwgH!=0l?1#Aa=>{%d zIFGe+XK{AzJl2;l;N{QOOu7VrUmqe()3Od++wScus1TV2b2l&=Nt|PJp7kO(CBHk5 zI%u;Pn{)FZPeXL2-NDlCg3(Fk{+TO^a+Y&s1@O>Gp z6oX60tltd1n*)SL9`?8P(c`ggYy+3N>sa|^87C{pxcuch78O%P=kDEMMeIvk5}8a` zfR1y4?fcxBFX82IqtQZRM{(Co!y;3|y69gWkQ9H*cp3+{hKQ2{uk5a4?Z;)3=l7NM~3I+Sqz{1MSC4AV+9credvV-Zd%joZgiY4x2s9 z&$Ec9B&==eyKw!LL~K!6rBYdQEK3pb`VLculTlc}65jgo1~xx=73)8*G9ru|eXNq) z8xOByIa(zHaa@gtYrl?4L|l{#I)yeCW2C%I^MrZjc@2UVF7BPf=I7Vok9}PH;R4?L zXbVgpjrxfB(;>}RxKkpQOlh}bjY%rTshV1{;gj#_eT6%s}; zk($ZI#1om*ekQ&l8NVnkxjPBuBy{hZN| zbVxaArb(O`VJZ^7vPHTI5*bq?>(f;Js8LtuN;`#E+f@Mn0DWM`5%e8PDgXcg07*qo IM6N<$f^$yZhX4Qo literal 1160 zcmV;31b6$1P)O-y4|6#n||d+lv` zR9gxZgaSetP@00Ki5kfy#9;yk2%v_z0OHC8hJ?i6swHL?1h?oyV_axZ7wm8rlSzaj zkPtf%IuKf5q(GpPRIvZ;>%A}ILZ+5R32|q(D`Z*DZ7PZazu%AP>FHE381yF+i9rCttID@iN*_5K4o7EaC++L&gHETr z+zU~J)oR7Sz<|U#FZKC+AF8Ul`V5#9^tYZ;dbhQ;^#zm3M3$GA(b3U?;^N}JEk~o# zz~yoYjg5`c($dn~jIl2OFmlm?dH`=!RaJdiS6A26)6=6F92`U_6vFZGFP;f1LpMp{}m(&5@Cj z=N%3QOePaVQG_UpFq_S|fB!xX4-Y?2r_=q6v3W&NzG95sU0GRq$8NV9YHMo&0F+Xk zotEWz0a=!@u&@A&#iG&abZwMU zR{Pf)&R-D$r~sY-sH~`{0OuT>b7-|%%+Aj8va&Lts;cFLkPiT? z0Z8ZQLdb3~7_>GuH30x@HXD-3WVw(R@c8uf6gr&_I-L%TF@(cm_Z%&6cxIPEKGj7{WQwL?ZDZ5D2KxY^_!cr_-5{B&jl;PJhf8dkettd6=&O zD6!k^ImhnqE+k3X5b|#IZf>cz?rSFwA>A9x6#v&gu92c|0C} zkpK5fDW$*8&(F*GB|Uuj5EBy^nS0^VY4gLN7n!HNU)zy`ZL?SmY z2?`-(yt%pg&fMIbtkL|nl}@Lzv9WtXYSp*_hT}d94%BS zL6+r>@$vDNp`jt+x)QmzwuZ5>vGYtO^CEy~p-Mf?X0wZ4ulM~}EJj=|mq^IfIzBfy zr@GzlbS9G-00=*{Dq4GXanE?@EE`^0Am0B a5&Z{7aGm_0-?ZxLk>tp zLIT7lq68+%WR~u>yY04X;VW0iF?Qx1YN~6>?|a`{iyj{z9~>M+QDlrEEuoZl*7iB1 zx!?ZK?cJ)BDvAR8qoX6SzrVk?w}(^47>=ODtsUur_4PXG?A_1tcr1b-XufwFRtu%P zK2Z#3lo3X`p@x#$jv83wuf{c{D!XSyYuy;yAUU0)V`F1GR0t^5Omil1jp=8=Kw}n9 z5Tm#82b`ADNX~o$ zPPJZeYIHV)LINgi2iJl_`y)N{S$408}E-W($I~Wx&A3AvF%PP9rap zno#X1<}*u#7-6#2W|^)wLoFvcK8_xRi5LvVNyKA83q@GtrAB)rqQm2PY5|FOaFgJI zFq2-U4{tpF_v7>Jv@jLIgP`j1z4)cC=hMMxGESIbjnf*JG{B-mqQT?H9Jrj@th-z; z{(9r#$p;HKh!ajd4hJIkmxpQg+UDlx`((*RaniB1O^EgDZkGjAc~}T9^7Z4{`IGn0 zSYZD1My6SI^3hXSN|EsR zPB6M1_#T(aC%4t+Q<2}&@{eu)u3Fq%pbW_s@|;am{5x|D!j2R$g(&iCg_uRbrI&mW zth02nT&%P8I85Tt7*o`LJ-oP;E|<&AW&=)*t!<}?tME~Pg2-}9(mkyt>O#gpjeVbN zOA!c<`(9a;Xmaw&CKahtGM(k? zyNk_ti|{mdwdte}!_lQ(_v{Gc+;+ygoLAX;Nml%TXK&@=l$^hPzJ5o_yPN4^;{D9l zX-2;)lQ6+F@qOR(yvAb3Y%myfVOn)#P&3E_&OP&>TFqA5vz)%-r^jnF7R}UZwka>R z*VAj`i)0i{27?G50}SW9?HH`X;gI#+YwztU+)hdgg2fZ z498L6htvz;VW?_?eOdp@~MjCcz+NR0z+%^@#gx-yg9-G(=y;a6pzd z-*&*9bnB+|X0THOtn8j)F8IE#_)v3^M3t|n5+{fR6Bu{4s&=lfF9CTXC|i6s=0@ z9x7-EcA@ZW;xMB$!Tf8F=MI>4nrn7_d`c=^6V#wYxqWY-wb4@BhYsxbT-9U9N>!Dt ze(3b#?>6wQI6OR@PNz^M7P^7-A0OwHK(Y60j e3Qb`?pZ^Cl7gqs+aUe$k0000WtU` literal 0 HcmV?d00001 diff --git a/gtk2_ardour/icons/transport_loop_prelight.png b/gtk2_ardour/icons/transport_loop_prelight.png new file mode 100644 index 0000000000000000000000000000000000000000..bb4b30a7cc106a89c820c246e0bfdb45625e8ba2 GIT binary patch literal 1323 zcmV+`1=RY9P)fx%4e(W^gmi?z*I%?VauJ)2HfGRrBrbZRZ>jS!;P|th8!Se^vuO#;WRB z4aU91081pkE-o(c8%Wiw>e;Y5Sl#OT4v+l=In01c<6M+)4B;IoMqD`VI4jRlF0uHA z1B5ZE7!!j({6RfZ^;0%Z=TWhR#HN<4Ac@nEC6eU?piznEoFQ$E6tQKQWp0?R=Oi1E zs0?h1NtUrdaFQS-L`VgWFaeiX&PnT>D3mNy)^G|LIFC1lVU;y zBqa-j5M)g8aXg;1POFSdr4#US#mRtCsmTZbIyP*Sm4r%1iAV?$OA$Do$b)F0FCBM5j+2C;_Eg-Rg3mZjo)C!s9=|g+?xR=Zf2KovMTRiCQ z-=F@j#hi{Yfl;34mD7fGFB>F0o*)Kig@KHsNEv(eQMU8=Xg}Ry1BOU3uALSA)ujE! z^uw=L?HL6D*IN6mXb_SO3=c!xNQx18C_$~b!>yy;bhjJao4e?Ak5^5Q{n6deMV7d$ zgHKQ1|8j-mP$>l}#u&ee504y~@TJqBXAwwdtoiSg^SbBMpy0-6o-GPO(lEV#vWBftButtqol6p}UZlCz zjJwF(WZRqF>$JwglnX*kjdD~1gT?7Y28=vSPtSYFV1TU5T&8gzhwzzUe~fk-yIomP zQCL~IsYfh#$e@FJ&rRC|LA>+XaS|t4mR!vDBOb2DE5TVymu5?ABn?b#ZEYnz4Ub?LD1)_Sy|*gF7c{7e<-R!Bp#+lzC*dss!x``Mz-D zv_^M=8Dt>JuVVca=j7dQ?{>~QA4Kn>m~rd&)KSW^Uib2hpFm?)fl2N$>QT6H8rW1K zxm`W+${?*ngK}U=hf9Yu3xl}_a!q$!n@=zF+8f_2%Ryie6XmqgNX)v&M%1**k9B4o z%K&9EMcknR$B9d#Xh+QN&V-+b^Lw4uAC{7|?+i;d8czxib$5*|osE`mITRqVi{i>^ zNrNjDz%?<6Wc90s$+M{|{Sq=(I%7swG%5_Qv^rk15!B*VI2o*pmBLDg(wL=ThO#aG zaVfvV+d{#ZVg?lzk1@7M*Do8_2SLMR22WRH9#UPQ`|y-<3CS9i=*(Jyh?w$PV0Cq% zVRyZaO*OPAYmTAiVC1l$fCEFyk@RGEUX(mmsLG+aIgWDRHTJgHG>|w`wj_u`1E}Jn zg92wWQwjz55yp`7P$B}Oaw;!6qb_NqB~WWe96f+x7oa#@UTDxlk+1ld9Mk0ms>m(; hWef0I`B;}O?0*D1uaTDJN~{0?002ovPDHLkV1o4MYzqJY literal 0 HcmV?d00001 diff --git a/gtk2_ardour/icons/transport_play.png b/gtk2_ardour/icons/transport_play.png index 07e89695e5b7f52e7b2f1ad99ead19aa57e931ca..397467d9e468fafcf416b57dacafe812ade5de62 100644 GIT binary patch delta 1309 zcmV+&1>*Xy1i}g-iBL{Q4GJ0x0000DNk~Le0000Y0000Q2nGNE0Mc%b0+AsTE&+2= zM?wIu&K&6g000DMK}|sb0I`n?{9y$E000SaNLh0L01|Wn01|Wo-ew<>MJRs+qDe$S zR7gvWRZWW>MHD?%UEOcSpiF+ipe8y|$ij^vs6QZE7mB(P5@Eo#uEeFF8@D3pZ*Z%N zpuz}(1QX3H+!)c_jN==fab9;3hl z2oj9OKK1_izxl~A-Ww1Rn8H}#qc9+unFcD#3Z*MGJ3_!$0U-ob>au@Rol*#=V(8}# z42VemL~=tlX28O)>!~}QbjGweWB-0CWIV`O146%v~=oAbjSXd$k(SblEW0G z97Tv)idk8p?jp0nQN_7(Z9{GEptkzCP8+$U0LKsE>#Cnvb~ z`gPoW>mB@daRdAN2i!|o3u|!FD`X^{hYd7%wg#vqfe4?w2 zt50xg=PSJM*@w7t_ZBuTRD5@++ctwkjbSkcJu+4_<4(%J)Qhe>S}rlLk`WFyF7JGU zmp=a(TR-h!-7}b9+q2QjgP9{&FmbU!j16yvT;qVvJ3rv%FFwK5 z@4v>Q+|v(SSCeQ$Y+AH!i$-pXyeIr<=f2LuWT)naA~DrULV_jM<7sAMRxem!zMkxx z7~?=Bi@BJe^ROafin)O~P!f@;X1b;M+NMJdp1glq=;=+)BV@iz%)jA*84)LPeZfzE ziVHM+w4$upFKtIs+#eIjN#sFIrZ7pwV1|+1-?ClBvDAHmBPF2qXHQsg$x2SZMw9dK zP(31VhTNDaH-W)I3F7&2#@b21N2db0f6u4PM*U@xA7IQnP8L zZzMrak}V5t!N=<{CcibyaT4N09fJ>8Oz@3IluLtlyVAVLy TIVwX(00000NkvXXu0mjf$yj_$ delta 515 zcmV+e0{s2L3a$hpiBL{Q4GJ0x0000DNk~Le0000L0000Q2nGNE09Zj6Ly;j95eaZe zS#tmY4c7nw4c7reD4UUDD1QN~Nklzv1=1i9LGO*DZ!Ql;SM)(t575$m_R4D zBqXF`R-up~o0Dc0jDJ9I3OGo~BxI;r3~1@X2ai135@LoJ40=8nD`!kg za#uk=@Rr~E@!|V>!~4PiOc_|cY^ef{fLneA`n+PR)%t8%)@$HCpnv(5dr?wKC4`Xi zc)Sg~1guMu{yg8x!A6mo#OiwfqArlgd=6^6rMJCR6SlTtnd9s}-0(z$Osi)os- zo6Y8GHk(ZYZ-DE8r2x9Fo261ITCG;Ka5#JjY@OG;(D<{A$Ky^qonGtpdb_|wVCpNW z7sD_%Y}+>T`Fs>O0Do=@+xK8HrR~FyD$qyjXtOf=>E~5Yd002ovPDHLk FV1g*O=H>tZ diff --git a/gtk2_ardour/icons/transport_play_active.png b/gtk2_ardour/icons/transport_play_active.png new file mode 100644 index 0000000000000000000000000000000000000000..617026f0162a8c14c0a9a5cfe070a0484cf0308b GIT binary patch literal 1217 zcmV;y1U~zTP);>n}O1y2gTheQ01MkAA^X{+}V z9J48Ig%t(-=b(eeHgTbZ@H&1b!Lz3jz1QKEx1}G`x@9Vi3*V$2{3$XVB*1$h%?7T6 zQJxe_5Ij=FpDaPC9G;(_o7FPV!f@ji+;S2DaYFD(5n5apl=k9Oj@@W7;(}oD6*XIg zDc>>kA_y6LPvnI|M(m7X@mK%^P6ffv(;6FOYk5A;Q<9Ka zLP@mK0t6AMAaO!sgL0@8BVbjS(v=jkx#7AN1Ezv9iLqy==YMzBpFTUzUraTNA;#Xd z0aEM(h_pdw=~bLGt5mLqF-VYNJ)2G+e)g$;{&f4t8vMryZPwYlT$- zstTE?i4{N>k?uN+fY$-u%z|bo`(H@^k;!gMKd?4%d6#zDASK zK$@cKRGDbXQ>cmYB8H$>#?B&6qQb3Jhj;b2U%A`+84(cl`&oZ&u+~Gk9$T%ni=BGe z$s%bSmSU6)xvY)$ArG;k*x^s#rw6xYCr7feVXe)wtlRD47vstpgB6w2){)xm0`=8C z%;O|e4q@JTc=xQ+IoGcNo=I$4m?^A2#I73Krh%jWjSr%|adEUbtCP+eCpkpO#>VZJ z0V;hU$zj>*v~EXJex@-XF@4eOF`IRoY4$b_hjJ$2x7BYu1zKU24ScIL$aBsOabOJr#UQSWK7kT|R19EGQOp05hHpt}|mbkX@@6BSi<$XD#W f4iW4hkH`N5JWTB9ZQ7Az-1Ha67)n5_BMm+WU0dZM(Lc z90k#hZZaPF6j?1S&@N=Og=(=XkkTxSORD+s8kN36J7CvgtVmK&P^(jlre_2s5pFoZ zd=uC!2Wt#j_QH60%4usb?LDpa1qfNZuVJvEEp5C_Dfsw6U?;mPt8YOiD|>zo}2t`jH@$|FE<91|yk4J-g)r@B=Ib7Be%RQE7+3@{~I zS>}QiAMK>`vnw{&m#D66>1uXfd+`)G*hoi!+9uA}ZaYrp4#t=yNhr;8a{m7JKYUOv zzI^g9J$aLut;;Gb%0*pP3%&?qjSu&}xJ5q-mPjw8^ehCqG~R z^zqlTJ10l8rw{YvH^{P37Rb7ysE9-RVjp1Tv{(}(LMtSsu2$Mmnq-z@2BJVb@rhGE zUf;g?&F<%~4nKZ;Prp18rEQ9`)osAX5wg)Yo61vVLMTX;nAi&tU{s|g6`D}Lbk*^P zvuoeYZol~b+OI#!`SHNkK9UylQ8O|@EKtSga*~yhD{oOyFUOjkJF8(RFMiIKI?CcwR?;*{Zhp51tUP|e>Kb-hGFmxXhsaKb!|6xjqCa$I3>Z1h1GHCQIPP_!-8S4W4p zo*#ty`MeHgIj?Hxsyf6E2j%+nrUP3!&Bz)?%W?IP*N&>n0EG6QJ=%M5Xx(z|*+F?# z;nz0;gCyWjZK5*K1v(QTL25L2S1)nplY77Xs}j_W1n+_mjqti`!nlCxc=QJ!Jf^&@ zViqi2r6n;K0jil}onr^Ted(w5G#k}4aDxQVaEGf5rcH)n!z!R$IxPd$gQ&dEX?-vZ z6vmuGE+|#f!iE%8sxWXg4eV|4)YRPkA2v~R({srv_Eu-ni(m)L5IV!x3ScxnCt&)4 zS;fg4#)Kwk1KLjA96%74cnVPKho&)!K~H<1({O}{Ck~vB3@S*)6B0!XrlGx?)}8zZ Xf|rRlja^Z800000NkvXXu0mjfJP8vy literal 0 HcmV?d00001 diff --git a/gtk2_ardour/icons/transport_record.png b/gtk2_ardour/icons/transport_record.png index f92b60730d745a0dbcb2256b1c71d073f17306c2..14ec665991bdfa654799cfe469c1b9b3b381133b 100644 GIT binary patch delta 1284 zcmV+f1^fEq1gQ!kiBL{Q4GJ0x0000DNk~Le0000Y0000Q2nGNE0Mc%b0+AsTE&+2= zM?wIu&K&6g000DMK}|sb0I`n?{9y$E000SaNLh0L01|Wn01|Wo-ew<>MJRs+iAh93 zR7gvOmP>LYMG%IwpOOcM&BFoViP^A#%fLOrUa{aBY`6s*PQU@!aRC+sOau^yk+7`5 z-RiF9|FTq~rY%7_GAcVCe`aN6m0aB3-cBI|E6dWRX|kdy3`#46Jpay#IOvofLY{x) zPj1J*xw)Cv>-8H>Zpc89DKvjkZqNOogfmY}!u)$~KcFXY5=QV~RUx@54@H!9<#Jgy zR@b$-wWdKXouk~k4IlSajK_j2EHJ@Nxm=GNlSWE1YgN=^c40?->PI*bRYzj3if*rl_nDaNU2X3ou=w8{QRl zW3R^tUt)*_11vDXp3})f)Udd!b$$$VpwiLM>Nd81A@+o|Is!{Zhs}NDON@6&7+^W3 zuqiC3CxzgUxD|j7&-DZY4B)aDYfWIuw#uh^#lyuNim0 z#ia9{G>n_o);`<*X|jmbE#9O;*~Q4{uzmipvdwxE-wDOFl#`0VmmK??tVfT=iNx}Q z19xAZRX5njyV0J9UV5Fi!m(2T?EbC`c0G0WQ750rQHe%vOE2l(w?dfF$wG=S`szob z8xYj?zsJt51!#Yht|zafcur9l^jF%o(EDkpZ#p5Hc0Ordh9hw&3n8&0{Wk*QF>2MN zPLI>b8Be^9@rQCyaWJw&$~I}&y^=P<@kddXVvH-Bo72fcNw=vXW=&PxL45M(a~d-+V0p_oGF5rn}oPx}td=|6uuVm7il?Pi(;th_wU-Nifh z{rR&vr0k7$GcWrAbe(KJoLyRf{5W2S(mk`Qz!jzfwUo*v*NfJ^ zy?W1nUM_u?P@$uMA#~Wj`QS?L$Rch+x{6~_ybrVMd?yDw6f!rE9A>bXlfLL}(04rz zR-a$m*Drsb+jmzN_Mj;YDjG&chpjq)SGPma!)T*cfjHJQ%9C$V+BD??RE#hV~OFMo)j{7h5<=CN;`ktje~VN9alfvZV1lE=&Dt=jK*5v5f~5v0000%6ON1-D9F(?$FSaEO=9pXPA(m`+&4RqDP6bhZrUvv^XHI`PAI5dIggx2d&XrjG) zTzcie=VB8lp`YaoU%vO^o`<_HoaDdHY2YF70jL5$4(og10ni=xpnn$9zX?1ug-BjE zO@?}UFuJ;^?d|c|wpl2Z__n*d4cr4>9S69&5e%g*G%)TAV6;- zL87BWvo<#`122FEKz}4KGksnNF_Xz03-mLa$zTeR0;c_55FMN9?^oVov&141ruzB- z##HFQrF6O_(9gwG3SdBm3K5UDg(h_!AgMxkoO-=2bZ37bU|WTLU8&XDLRV}XU_*s2 z=1V19DO&;$JdcHP8DLR`=8BF}%M}VOq0d)WDLYOD$oakC$9Vq}sC=weCx#6}JJ%h$ zFOKrAQsJ&;Nl(fd;EM_cSa+ptyeSs1Bz0Z8kWLc``S)KI3f!?Q`OEXN!MB9)Ep-EU zY6@|-$(FK#`zW?lvz!8Efw#bSKps{LxD9l+f}P~w@*D1on{x21%SHeI002ovPDHLk FV1nXW`)L3G diff --git a/gtk2_ardour/icons/transport_record_active.png b/gtk2_ardour/icons/transport_record_active.png new file mode 100644 index 0000000000000000000000000000000000000000..2b92d11b54212e4f4a529d0534a42563a4e3f9e3 GIT binary patch literal 1439 zcmV;Q1z`G#P)bh|000SaNLh0L01|Wn01|Wo-ewZPc3@y7pCNoJk35Wm(!~yNzR@&QMIC9``b3uX&5(vZr#04z~X_aI$o1X5j zvUzq*&u-9)Nh_-EuJW^=pY5g>&!1mkUvD-WR*k`a_#ahCBof&b0*8=@@QQqcs@mG0 zs6VNy;_F$p;Wcw3np@kC<1F&UvuEkrf9xk=jz!WtrjujCUdN*assGfkhRczGG!tRn z{2`vzvonqHgR`?#O6jh33^xa)#H3jaBgGi;JaA+L>M@w>IAgxGpiM#}QKktiJYtGU zlh#JeMCw5&W{yi7(IbektXcp}VGVSVj7@lD80G}o2^f^-NR?!xjlxtfF7@)}Jh;LY}jDq^S9&_qlHu844iiGGoDg`9}UNsM?G8PQ-N zDbloi7`NNcrEal7^@-@8oYIr?^=5;6;V8+N0F!&;2FX^>WjMeXW6RI9i%dW*kQq}V z&fq%nu-#s5cVD)4E;YLZCTVvf-`w2Xw`p^J8MT37pfo$k$>>sE%<|ECI0giYML-=^ zmM19nVfW;I`g*RHfl5pSc0*jn^dZHs=9+JZH@iD_CJ;Vo#Bs=-7l1CGjzhephu{Sg zft(v8fN8kjzZ`c034m=-O|W7)$L+4ki)sIGcOM!OMp=vs`$6|zDlVBv5_lUKc^5&~ zh!p4cacv*56ozoP1K3NeQ~qpScpNr^&cj3-vc%#vYBcz3)kmZ~g7LC40%14MDD$a+ zcf=+X0%27O&!tH!_9V3(H-6e2D&?Xju z-oTv;Y3NsKf1b|3x%^u4A0hm*d*jJVWCVuqZ*G6A^)G4Y2f^Ag_m&C;fWEfm|4^P7 z3A$9MjSZAIh7!XP#MvS^jFe8#zni8{hT)(4T3W*#+YE}*4bFYrwqBbRb=c1|hQ^@stC&6yLeN?xs~6i`yh za?(tS9z^%Mlh)PKdqK7GLvJ?+P|Klf+ArK{!Em603O`v#kPIh*jp3Ry7Q&Wh^yq4> zN~Ei4NzWk~>}x(fdqCKRX&5?^4_cd^5K~4kjTt*F(drY9;Zb)SUQTRd6bpbIKMIU0 z^&1x*TDkOqX6s2}VsH}FG(iwLMpaC#OXsc5s`zJ(nMTF9h2{@yC!^1sVHhqhE{?}A zC~cB2NaCYYoyOVQKwCbVI-irZF5{psrkj=Lfv(nN470V?uq28X>W)a(TL9+8h6&yH z?bn*Ym@AfW_0KZ{Lt=b=_=dtQ_LY*JK7D$1bp<=J-*e*rO*;Sp002ovPDHLkV1oZHo>2e* literal 0 HcmV?d00001 diff --git a/gtk2_ardour/icons/transport_record_prelight.png b/gtk2_ardour/icons/transport_record_prelight.png new file mode 100644 index 0000000000000000000000000000000000000000..9872def26d0970c2659b910aa0ee4aea27ce3d5f GIT binary patch literal 1222 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

tPLc2f* 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 literal 0 HcmV?d00001 diff --git a/gtk2_ardour/icons/transport_stop_prelight.png b/gtk2_ardour/icons/transport_stop_prelight.png new file mode 100644 index 0000000000000000000000000000000000000000..8da755cace5f1053bba19031d056ae0f3ea1a8c2 GIT binary patch literal 872 zcmV-u1DE`XP)e(2u;auu%P(G10Dd1 z>U=&crKplJlt~$;lu92RSt^q$i!5O##waZ&4L+~0uUi0>MLG?3BTxj5HJF%E>@ZvH z(lRqTj1l9I(G1&It8y4CI;B7{MM`LuRv`ptijivnF5b``DHtmro3*b=C1q7dd^J<8 z8Y!`g9!(0)Y7-I;hT4_V*?|$3_#(+@B5gW05v~#Z@hN+&LW;?UXu%k9hnANRZ{xQE zqi&^uDBD@X+S(4ZktMyl=_!~9G(t?4#jS3+5v{kRe2`=jynS!3ey}kHAcxcObUfPr z*c&W?x4@(klHkMQmw9r-G=fYwPC8IwwPeIc2p%w|HGHtgW1oB+hmnFu*b!vS76&!0 z!J|OqG^QmU4u{?z7#?4PT9?FsNL#(>pPV26eE$&%p(zQZ6=S4U!y`=QZ@+)qzF*v& zr*AYM{XR(BR;Z8$Z%)*wHIG%nz|@zoFN)GMI6cpi*BZK;X*E)9j?Dsf zus$akT%kxhZ`7-zq@GU4Wm%Zp(w4euW7AMqat%J!M%4Gph5EeVQqH+;yxD=-!m{St zh{mRpzFXDx=1;(6`Ww~l2IdE=pM}YnT6(Zyy(%7W*iNNNkTWqLpOTo_`~~Dl%p#q; zFts@~3{q&G=Xyh(0wplmX@T5yDBqL#GUPGo?=GCMtJhL)8mN)HO2#-xOKn1a1GG y+h>?~_TT|k^V7VW=-!iK7pb`!cclT?*3CbmhzG&YFbyaG0000 + + + + + + + + + + + + + + diff --git a/gtk2_ardour/waves_button.h b/gtk2_ardour/waves_button.h index 4c953f7f11..9dcc7c3f75 100644 --- a/gtk2_ardour/waves_button.h +++ b/gtk2_ardour/waves_button.h @@ -16,8 +16,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifndef __gtk2_waves_ardour_button_h__ -#define __gtk2_waves_ardour_button_h__ +#ifndef __gtk2_waves_button_h__ +#define __gtk2_waves_button_h__ #include #include @@ -74,11 +74,6 @@ class WavesButton : public CairoWidget , public Gtkmm2ext::Activatable void controllable_changed (); PBD::ScopedConnection watch_connection; - private: - Glib::RefPtr _layout; - std::string _text; - BindingProxy binding_proxy; - int _text_width; int _text_height; float _corner_radius; @@ -101,6 +96,12 @@ class WavesButton : public CairoWidget , public Gtkmm2ext::Activatable void action_sensitivity_changed (); void action_visibility_changed (); void action_tooltip_changed (); + +private: + Glib::RefPtr _layout; + std::string _text; + BindingProxy binding_proxy; + }; -#endif /* __gtk2_waves_ardour_button_h__ */ +#endif /* __gtk2_waves_button_h__ */ diff --git a/gtk2_ardour/waves_icon_button.cc b/gtk2_ardour/waves_icon_button.cc new file mode 100644 index 0000000000..1b303e8998 --- /dev/null +++ b/gtk2_ardour/waves_icon_button.cc @@ -0,0 +1,145 @@ +/* + Copyright (C) 2010 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. + +*/ + +#include "gtkmm2ext/utils.h" +#include "gtkmm2ext/rgb_macros.h" +#include "gtkmm2ext/gui_thread.h" + +#include "ardour/rc_configuration.h" // for widget prelight preference + +#include "waves_icon_button.h" +#include "ardour_ui.h" +#include "global_signals.h" + +#include "i18n.h" + +#define REFLECTION_HEIGHT 2 + +using namespace Gdk; +using namespace Gtk; +using namespace Glib; +using namespace PBD; +using std::max; +using std::min; +using namespace std; + +WavesIconButton::WavesIconButton () + : WavesButton() +{ +} + +WavesIconButton::~WavesIconButton() +{ +} + + +void +WavesIconButton::render (cairo_t* cr) +{ + void (*rounded_function)(cairo_t*, double, double, double, double, double); + + switch (_corner_mask) { + case 0x1: /* upper left only */ + rounded_function = Gtkmm2ext::rounded_top_left_rectangle; + break; + case 0x2: /* upper right only */ + rounded_function = Gtkmm2ext::rounded_top_right_rectangle; + break; + case 0x3: /* upper only */ + rounded_function = Gtkmm2ext::rounded_top_rectangle; + break; + /* should really have functions for lower right, lower left, + lower only, but for now, we don't + */ + default: + rounded_function = Gtkmm2ext::rounded_rectangle; + } + + Glib::RefPtr style = get_style(); + + Gdk::Color bgcolor = style->get_bg ((get_state() == Gtk::STATE_INSENSITIVE) ? Gtk::STATE_INSENSITIVE : + (_hovering ? + (_pushed ? + Gtk::STATE_ACTIVE : + Gtk::STATE_PRELIGHT ) : + (get_active() ? + Gtk::STATE_ACTIVE : + Gtk::STATE_NORMAL))); + + Glib::RefPtr pixbuf = (get_state() == Gtk::STATE_INSENSITIVE) ? (_inactive_pixbuf ? _inactive_pixbuf : _normal_pixbuf) : + (_hovering ? + (_pushed ? + (_active_pixbuf ? _active_pixbuf : _normal_pixbuf) : + (_prelight_pixbuf ? _prelight_pixbuf : _normal_pixbuf)) : + (get_active() ? + (_active_pixbuf ? _active_pixbuf : _normal_pixbuf) : + _normal_pixbuf)); + + if ((_left_border_width != 0) || + (_top_border_width != 0) || + (_right_border_width != 0) || + (_bottom_border_width != 0)) { + cairo_set_source_rgba (cr, _border_color.get_red_p(), _border_color.get_blue_p(), _border_color.get_green_p(), 1); + rounded_function (cr, 0, 0, get_width(), get_height(), _corner_radius); + cairo_fill (cr); + } + + rounded_function (cr, _left_border_width, _top_border_width, get_width()-_left_border_width-_right_border_width, get_height()-_top_border_width-_bottom_border_width, _corner_radius); + cairo_set_source_rgba (cr, bgcolor.get_red_p(), bgcolor.get_green_p(), bgcolor.get_blue_p(), 1); + cairo_fill (cr); + + // pixbuf, if any + if (pixbuf) { + double x,y; + x = (get_width() - pixbuf->get_width())/2.0; + y = (get_height() - pixbuf->get_height())/2.0; + + cairo_rectangle (cr, x, y, pixbuf->get_width(), pixbuf->get_height()); + gdk_cairo_set_source_pixbuf (cr, pixbuf->gobj(), x, y); + cairo_fill (cr); + } +} + +void +WavesIconButton::set_normal_image (const RefPtr& img) +{ + _normal_pixbuf = img; + queue_draw (); +} + +void +WavesIconButton::set_active_image (const RefPtr& img) +{ + _active_pixbuf = img; + queue_draw (); +} + +void +WavesIconButton::set_inactive_image (const RefPtr& img) +{ + _inactive_pixbuf = img; + queue_draw (); +} + +void +WavesIconButton::set_prelight_image (const RefPtr& img) +{ + _prelight_pixbuf = img; + queue_draw (); +} diff --git a/gtk2_ardour/waves_icon_button.h b/gtk2_ardour/waves_icon_button.h new file mode 100644 index 0000000000..15b8352d0a --- /dev/null +++ b/gtk2_ardour/waves_icon_button.h @@ -0,0 +1,45 @@ +/* + Copyright (C) 2010 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. +*/ + +#ifndef __gtk2_waves_icon_button_h__ +#define __gtk2_waves_icon_button_h__ + +#include "waves_button.h" + +class WavesIconButton : public WavesButton +{ + public: + WavesIconButton (); + virtual ~WavesIconButton (); + + void set_normal_image (const Glib::RefPtr& img); + void set_active_image (const Glib::RefPtr& img); + void set_inactive_image (const Glib::RefPtr& img); + void set_prelight_image (const Glib::RefPtr& img); + + protected: + void render (cairo_t *); + + private: + Glib::RefPtr _normal_pixbuf; + Glib::RefPtr _active_pixbuf; + Glib::RefPtr _inactive_pixbuf; + Glib::RefPtr _prelight_pixbuf; +}; + +#endif /* __gtk2_waves_icon_button_h__ */ diff --git a/gtk2_ardour/waves_ui.cc b/gtk2_ardour/waves_ui.cc index 3cd849dfa2..870b952e32 100644 --- a/gtk2_ardour/waves_ui.cc +++ b/gtk2_ardour/waves_ui.cc @@ -22,6 +22,7 @@ #include "waves_ui.h" #include "pbd/file_utils.h" #include "ardour/filesystem_paths.h" +#include "utils.h" #include "pbd/convert.h" #include "dbg_msg.h" @@ -42,9 +43,32 @@ WavesUI::create_widget (const XMLNode& definition, const XMLNodeMap& styles, std std::transform(widget_type.begin(), widget_type.end(), widget_type.begin(), ::toupper); if (widget_type == "BUTTON") { - child = manage (new WavesButton(text)); - ((WavesButton*)child)->set_border_width (xml_property (definition, "borderwidth", styles, "0").c_str()); - ((WavesButton*)child)->set_border_color (xml_property (definition, "bordercolor", styles, "#000000").c_str()); + WavesButton& button = *manage (new WavesButton(text)); + child = &button; + button.set_border_width (xml_property (definition, "borderwidth", styles, "0").c_str()); + button.set_border_color (xml_property (definition, "bordercolor", styles, "#000000").c_str()); + } else if (widget_type == "ICONBUTTON") { + WavesIconButton& iconbutton = *manage (new WavesIconButton); + child = &iconbutton; + iconbutton.set_border_width (xml_property (definition, "borderwidth", styles, "0").c_str()); + iconbutton.set_border_color (xml_property (definition, "bordercolor", styles, "#000000").c_str()); + + std::string property = xml_property (definition, "normalicon", styles, ""); + if (!property.empty ()) { + iconbutton.set_normal_image(get_icon(property.c_str())); + } + property = xml_property (definition, "activeicon", styles, ""); + if (!property.empty ()) { + iconbutton.set_active_image(get_icon(property.c_str())); + } + property = xml_property (definition, "prelighticon", styles, ""); + if (!property.empty ()) { + iconbutton.set_prelight_image(get_icon(property.c_str())); + } + property = xml_property (definition, "inactiveicon", styles, ""); + if (!property.empty ()) { + iconbutton.set_inactive_image(get_icon(property.c_str())); + } } else if (widget_type == "COMBOBOXTEXT") { child = manage (new Gtk::ComboBoxText); } else if (widget_type == "LABEL") { @@ -212,47 +236,47 @@ WavesUI::set_attributes (Gtk::Widget& widget, const XMLNode& definition, const X widget.set_size_request (width, height); std::string property = xml_property (definition, "bgnormal", styles, ""); - if (!property.empty()) { + if (!property.empty ()) { widget.modify_bg(Gtk::STATE_NORMAL, Gdk::Color(property)); } property = xml_property (definition, "bgdisabled", styles, property); - if (!property.empty()) { + if (!property.empty ()) { widget.modify_bg(Gtk::STATE_INSENSITIVE, Gdk::Color(property)); } property = xml_property (definition, "bgactive", styles, ""); - if (!property.empty()) { + if (!property.empty ()) { widget.modify_bg(Gtk::STATE_ACTIVE, Gdk::Color(property)); } property = xml_property (definition, "bghover", styles, ""); - if (!property.empty()) { + if (!property.empty ()) { widget.modify_bg(Gtk::STATE_PRELIGHT, Gdk::Color(property)); } property = xml_property (definition, "fgnormal", styles, ""); - if (!property.empty()) { + if (!property.empty ()) { widget.modify_fg(Gtk::STATE_NORMAL, Gdk::Color(property)); } property = xml_property (definition, "fgdisabled", styles, property); - if (!property.empty()) { + if (!property.empty ()) { widget.modify_fg(Gtk::STATE_INSENSITIVE, Gdk::Color(property)); } property = xml_property (definition, "fgactive", styles, ""); - if (!property.empty()) { + if (!property.empty ()) { widget.modify_fg(Gtk::STATE_ACTIVE, Gdk::Color(property)); } property = xml_property (definition, "fghover", styles, ""); - if (!property.empty()) { + if (!property.empty ()) { widget.modify_fg(Gtk::STATE_PRELIGHT, Gdk::Color(property)); } property = xml_property (definition, "font", styles, ""); - if (!property.empty()) { + if (!property.empty ()) { widget.modify_font(Pango::FontDescription(property)); } @@ -261,6 +285,12 @@ WavesUI::set_attributes (Gtk::Widget& widget, const XMLNode& definition, const X } else { widget.hide(); } + + Gtk::Box* box = dynamic_cast (&widget); + if (box) + { + box->set_spacing(xml_property (definition, "spacing", styles, 0)); + } } diff --git a/gtk2_ardour/waves_ui.h b/gtk2_ardour/waves_ui.h index f460c3474f..ebaab4906d 100644 --- a/gtk2_ardour/waves_ui.h +++ b/gtk2_ardour/waves_ui.h @@ -30,6 +30,7 @@ #include "canvas/canvas.h" #include "canvas/xml_ui.h" #include "waves_button.h" +#include "waves_icon_button.h" using namespace ArdourCanvas::XMLUI; namespace WavesUI { diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript index e48c4805f0..84b4a734ac 100644 --- a/gtk2_ardour/wscript +++ b/gtk2_ardour/wscript @@ -35,6 +35,7 @@ gtk2_ardour_sources = [ 'analysis_window.cc', 'ardour_button.cc', 'waves_button.cc', + 'waves_icon_button.cc', 'ardour_dialog.cc', 'waves_dialog.cc', 'ardour_ui.cc',