diff options
author | Taybin Rutkin <taybin@taybin.com> | 2005-09-25 18:42:24 +0000 |
---|---|---|
committer | Taybin Rutkin <taybin@taybin.com> | 2005-09-25 18:42:24 +0000 |
commit | 209d967b1bb80a9735d690d8f4f0455ecb9970ca (patch) | |
tree | 9d76ddcd7c1ac9d91bb2b1a33d31b66ce4ded5de /gtk2_ardour/redirect_box.h | |
parent | e4b9aed743fc765219ac775905a221c017c88fba (diff) |
Initial import of gtk2_ardour.
git-svn-id: svn://localhost/trunk/ardour2@24 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/redirect_box.h')
-rw-r--r-- | gtk2_ardour/redirect_box.h | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/gtk2_ardour/redirect_box.h b/gtk2_ardour/redirect_box.h new file mode 100644 index 0000000000..8a8c58f717 --- /dev/null +++ b/gtk2_ardour/redirect_box.h @@ -0,0 +1,175 @@ +/* + Copyright (C) 2004 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_gtk_redirect_box__ +#define __ardour_gtk_redirect_box__ + +#include <vector> + +#include <cmath> +#include <gtk--.h> +#include <gtkmmext/auto_spin.h> +#include <gtkmmext/click_box.h> + +#include <ardour/types.h> +#include <ardour/ardour.h> +#include <ardour/io.h> +#include <ardour/insert.h> +#include <ardour/stateful.h> +#include <ardour/redirect.h> + +#include <pbd/fastlog.h> + +#include "route_ui.h" +#include "io_selector.h" +#include "enums.h" + +class MotionController; +class PluginSelector; +class RouteRedirectSelection; + +namespace ARDOUR { + class Route; + class Send; + class Insert; + class Session; + class PortInsert; + class Connection; + class Plugin; +} + + +class RedirectBox : public Gtk::HBox +{ + public: + RedirectBox (ARDOUR::Placement, ARDOUR::Session&, ARDOUR::Route &, PluginSelector &, RouteRedirectSelection &, bool owner_is_mixer = false); + ~RedirectBox (); + + void set_width (Width); + + void set_title (const std::string & title); + void set_title_shown (bool flag); + + void update(); + + void select_all_redirects (); + void deselect_all_redirects (); + void select_all_plugins (); + void select_all_inserts (); + void select_all_sends (); + + SigC::Signal1<void,ARDOUR::Redirect *> RedirectSelected; + SigC::Signal1<void,ARDOUR::Redirect *> RedirectUnselected; + + protected: + void set_stuff_from_route (); + + private: + ARDOUR::Route & _route; + ARDOUR::Session & _session; + bool _owner_is_mixer; + + ARDOUR::Placement _placement; + + PluginSelector & _plugin_selector; + RouteRedirectSelection & _rr_selection; + + + Gtk::EventBox redirect_eventbox; + Gtk::HBox redirect_hpacker; + Gtk::CList redirect_display; + Gtk::ScrolledWindow redirect_scroller; + + Width _width; + + SigC::Connection newplug_connection; + + Gtk::Menu *send_action_menu; + void build_send_action_menu (); + + void new_send (); + void show_send_controls (); + + Gtk::Menu *redirect_menu; + vector<Gtk::MenuItem*> selection_dependent_items; + Gtk::MenuItem* redirect_paste_item; + gint redirect_menu_map_handler (GdkEventAny *ev); + Gtk::Menu * build_redirect_menu (Gtk::CList&); + void build_redirect_tooltip (Gtk::CList&, Gtk::EventBox&, string); + void show_redirect_menu (gint arg); + + void choose_send (); + void send_io_finished (IOSelector::Result, ARDOUR::Redirect*, IOSelectorWindow*); + void choose_insert (); + void choose_plugin (); + void insert_plugin_chosen (ARDOUR::Plugin *); + + gint redirect_button (GdkEventButton *); + void redirects_changed (void *); + void show_redirect_active (ARDOUR::Redirect *, void *); + void show_redirect_name (void*, ARDOUR::Redirect *); + void add_redirect_to_display (ARDOUR::Redirect *); + + void show_plugin_selector (); + + + string redirect_name (ARDOUR::Redirect&); + + + void remove_redirect_gui (ARDOUR::Redirect *); + + void disconnect_newplug(); + + void redirects_reordered (gint, gint); + gint compute_redirect_sort_keys (); + vector<SigC::Connection> redirect_active_connections; + vector<SigC::Connection> redirect_name_connections; + + bool redirect_drag_in_progress; + void redirect_drag_begin (GdkDragContext*); + void redirect_drag_end (GdkDragContext*); + void all_redirects_active(bool state); + + void cut_redirects (); + void copy_redirects (); + void paste_redirects (); + void clear_redirects (); + void clone_redirects (); + void rename_redirects (); + + void for_selected_redirects (void (RedirectBox::*pmf)(ARDOUR::Redirect*)); + void get_selected_redirects (vector<ARDOUR::Redirect*>&); + + + void activate_redirect (ARDOUR::Redirect*); + void deactivate_redirect (ARDOUR::Redirect*); + void cut_redirect (ARDOUR::Redirect*); + void copy_redirect (ARDOUR::Redirect*); + void edit_redirect (ARDOUR::Redirect*); + void hide_redirect_editor (ARDOUR::Redirect*); + void rename_redirect (ARDOUR::Redirect*); + + gint idle_delete_redirect (ARDOUR::Redirect *); + + void wierd_plugin_dialog (ARDOUR::Plugin& p, uint32_t streams, ARDOUR::IO& io); + +}; + +#endif /* __ardour_gtk_redirect_box__ */ |