Fix crash when closing session, recursive mon-section removal
[ardour.git] / gtk2_ardour / transport_masters_dialog.h
index f90854b1eb36e5b539b35b3bbe4a3b9858e3aa26..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"
@@ -57,6 +58,21 @@ 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;
@@ -125,10 +141,15 @@ class TransportMastersWidget : public Gtk::VBox, public ARDOUR::SessionHandlePtr
 
        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