X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fbundle_manager.h;h=c2c30d47bbcdb32201977de8693271fd055de951;hb=d8e93be2ee68fc6a18a7ca17d36ffc67c94207b3;hp=4d4d44074f2e7339e058c6026234cffb1150bd12;hpb=77f16522e0b396262bc272c1637753faa9da0ba7;p=ardour.git diff --git a/gtk2_ardour/bundle_manager.h b/gtk2_ardour/bundle_manager.h index 4d4d44074f..c2c30d47bb 100644 --- a/gtk2_ardour/bundle_manager.h +++ b/gtk2_ardour/bundle_manager.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2007 Paul Davis + Copyright (C) 2007 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 @@ -22,6 +22,7 @@ #include #include +#include #include "ardour_dialog.h" #include "port_matrix.h" @@ -33,27 +34,37 @@ namespace ARDOUR { class BundleEditorMatrix : public PortMatrix { public: - BundleEditorMatrix (ARDOUR::Session &, boost::shared_ptr); - - void set_state (int, std::string const &, bool); - bool get_state (int, std::string const &) const; - uint32_t n_rows () const; - uint32_t maximum_rows () const; - uint32_t minimum_rows () const; - std::string row_name (int) const; - void add_row (); - void remove_row (int); - std::string row_descriptor () const; + BundleEditorMatrix (Gtk::Window *, ARDOUR::Session *, boost::shared_ptr); + + void set_state (ARDOUR::BundleChannel c[2], bool s); + PortMatrixNode::State get_state (ARDOUR::BundleChannel c[2]) const; + + bool can_add_channel (boost::shared_ptr) const; + + void add_channel (boost::shared_ptr); + bool can_remove_channels (boost::shared_ptr) const; + void remove_channel (ARDOUR::BundleChannel); + bool can_rename_channels (boost::shared_ptr) const; + void rename_channel (ARDOUR::BundleChannel); + void setup_ports (int); + bool list_is_global (int) const; + + std::string disassociation_verb () const; private: + enum { + OTHER = 0, + OURS = 1 + }; - boost::shared_ptr _bundle; + boost::shared_ptr _port_group; + boost::shared_ptr _bundle; }; class BundleEditor : public ArdourDialog { public: - BundleEditor (ARDOUR::Session &, boost::shared_ptr, bool); + BundleEditor (ARDOUR::Session *, boost::shared_ptr); protected: void on_map (); @@ -62,7 +73,8 @@ class BundleEditor : public ArdourDialog void name_changed (); void input_or_output_changed (); void type_changed (); - + void on_show (); + BundleEditorMatrix _matrix; boost::shared_ptr _bundle; Gtk::Entry _name; @@ -73,7 +85,7 @@ class BundleEditor : public ArdourDialog class BundleManager : public ArdourDialog { public: - BundleManager (ARDOUR::Session &); + BundleManager (ARDOUR::Session *); private: @@ -81,8 +93,9 @@ class BundleManager : public ArdourDialog void edit_clicked (); void delete_clicked (); void add_bundle (boost::shared_ptr); - void bundle_name_changed (boost::shared_ptr); + void bundle_changed (ARDOUR::Bundle::Change, boost::shared_ptr); void set_button_sensitivity (); + void row_activated (Gtk::TreeModel::Path const & p, Gtk::TreeViewColumn* c); class ModelColumns : public Gtk::TreeModelColumnRecord { @@ -91,17 +104,35 @@ class BundleManager : public ArdourDialog add (name); add (bundle); } - + Gtk::TreeModelColumn name; Gtk::TreeModelColumn > bundle; }; - + Gtk::TreeView _tree_view; Glib::RefPtr _list_model; ModelColumns _list_model_columns; - ARDOUR::Session& _session; Gtk::Button edit_button; Gtk::Button delete_button; + PBD::ScopedConnectionList bundle_connections; +}; + +class NameChannelDialog : public ArdourDialog +{ +public: + NameChannelDialog (); + NameChannelDialog (boost::shared_ptr, uint32_t); + + std::string get_name () const; + +private: + + void setup (); + + boost::shared_ptr _bundle; + uint32_t _channel; + Gtk::Entry _name; + bool _adding; }; #endif