Consolidate two more engine-checks
[ardour.git] / gtk2_ardour / transport_masters_dialog.h
index d8cab9f51de2a168e0d08e65b83f751e15a70e46..0030493f4757c0378de62260b7d7c75239948e35 100644 (file)
@@ -28,6 +28,7 @@
 #include <gtkmm/radiobutton.h>
 #include <gtkmm/label.h>
 #include <gtkmm/table.h>
+#include <gtkmm/entry.h>
 #include <gtkmm/treestore.h>
 
 #include "ardour_window.h"
@@ -49,6 +50,7 @@ class TransportMastersWidget : public Gtk::VBox, public ARDOUR::SessionHandlePtr
        ~TransportMastersWidget ();
 
        void update (ARDOUR::samplepos_t);
+       void set_transport_master (boost::shared_ptr<ARDOUR::TransportMaster>);
 
   protected:
        void on_map ();
@@ -56,7 +58,23 @@ class TransportMastersWidget : public Gtk::VBox, public ARDOUR::SessionHandlePtr
 
   private:
 
+       struct AddTransportMasterDialog : public ArdourDialog {
+         public:
+               AddTransportMasterDialog ();
+               std::string get_name () const;
+               ARDOUR::SyncSource get_type () const;
+
+         private:
+               Gtk::Label name_label;
+               Gtk::Label type_label;
+               Gtk::HBox name_hbox;
+               Gtk::HBox type_hbox;
+               Gtk::Entry name_entry;
+               Gtk::ComboBoxText type_combo;
+       };
+
        struct Row : sigc::trackable, PBD::ScopedConnectionList {
+               TransportMastersWidget& parent;
                Gtk::EventBox label_box;
                Gtk::Label label;
                Gtk::Label type;
@@ -82,7 +100,7 @@ class TransportMastersWidget : public Gtk::VBox, public ARDOUR::SessionHandlePtr
 
                void update (ARDOUR::Session*, ARDOUR::samplepos_t);
 
-               Row ();
+               Row (TransportMastersWidget& parent);
 
                struct PortColumns : public Gtk::TreeModel::ColumnRecord {
                        PortColumns() {
@@ -117,17 +135,21 @@ class TransportMastersWidget : public Gtk::VBox, public ARDOUR::SessionHandlePtr
 
        std::vector<Row*> rows;
 
-       Gtk::RadioButtonGroup use_button_group;
        Gtk::Table table;
        Gtk::Label col_title[14];
        Gtk::Button add_button;
 
        sigc::connection update_connection;
        PBD::ScopedConnection current_connection;
+       PBD::ScopedConnection add_connection;
+       PBD::ScopedConnection remove_connection;
 
        void rebuild ();
        void current_changed (boost::shared_ptr<ARDOUR::TransportMaster> old_master, boost::shared_ptr<ARDOUR::TransportMaster> new_master);
+       void add_master ();
 
+  public:
+       bool idle_remove (Row*);
 };
 
 class TransportMastersWindow : public ArdourWindow