Allow to pre-seed Tabbable detached state.
[ardour.git] / libs / gtkmm2ext / gtkmm2ext / tabbable.h
index e47c94f0953b97cda1715d9235cf491fd0df7b9a..d7e1429ada668a288d4458108f3266a45f3d1614 100644 (file)
@@ -25,6 +25,7 @@
 #include <gtkmm/button.h>
 #include <gtkmm/image.h>
 #include <gtkmm/label.h>
+#include <gtkmm/notebook.h>
 
 #include "gtkmm2ext/cairo_icon.h"
 #include "gtkmm2ext/window_proxy.h"
@@ -41,29 +42,29 @@ class VisibilityTracker;
 
 class LIBGTKMM2EXT_API Tabbable : public WindowProxy {
   public:
-       Tabbable (Gtk::Widget&, const std::string&);
+       Tabbable (Gtk::Widget&, const std::string&, bool tabbed_by_default = true);
        ~Tabbable ();
 
        void add_to_notebook (Gtk::Notebook& notebook, const std::string& tab_title);
        void make_visible ();
        void make_invisible ();
+       void change_visibility ();
        void attach ();
        void detach ();
-       
+
        Gtk::Widget& contents() const { return _contents; }
-       
+
        Gtk::Window* get (bool create = false);
-       Gtk::Window* own_window () { return get (false); } 
+       Gtk::Window* own_window () { return get (false); }
        virtual Gtk::Window* use_own_window (bool and_pack_it);
 
-       bool has_own_window () const;
-       bool is_tabbed () const;
+       void set_default_tabbed (bool yn);
 
-       void set_allow_hide (bool);
-       
        virtual void show_window ();
 
-       bool window_visible ();
+       bool window_visible () const;
+       bool tabbed() const;
+       bool tabbed_by_default () const;
 
        Gtk::Window* current_toplevel () const;
 
@@ -71,26 +72,27 @@ class LIBGTKMM2EXT_API Tabbable : public WindowProxy {
 
        int set_state (const XMLNode&, int version);
        XMLNode& get_state ();
-       
+
        static std::string xml_node_name();
-       
+
+       sigc::signal1<void,Tabbable&> StateChange;
+
   protected:
        bool delete_event_handler (GdkEventAny *ev);
-       
+
   private:
        Gtk::Widget&   _contents;
        Gtk::Notebook  _own_notebook;
        Gtk::Notebook* _parent_notebook;
        std::string    _tab_title;
-       Gtk::HBox      _tab_box;
-       Gtk::Label     _tab_label;
-       Gtk::Button    _tab_close_button;
-       CairoIcon       tab_close_image;
-       
+       bool            tab_requested_by_state;
+
        void show_tab ();
        void hide_tab ();
-       void tab_close_clicked ();
+       bool tab_close_clicked (GdkEventButton*);
        void show_own_window (bool and_pack_it);
+       void window_mapped ();
+       void window_unmapped ();
 };