[gnote] Add abstract classes for embeding widgets



commit 113b393660a0ff53de24e6f9ad5e8b529f7e63d0
Author: Aurimas Äernius <aurisc4 gmail com>
Date:   Sat Oct 6 13:37:24 2012 +0300

    Add abstract classes for embeding widgets

 src/utils.hpp |   47 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 47 insertions(+), 0 deletions(-)
---
diff --git a/src/utils.hpp b/src/utils.hpp
index 82094c6..92b2657 100644
--- a/src/utils.hpp
+++ b/src/utils.hpp
@@ -243,6 +243,53 @@ namespace gnote {
       void release_button();        
     };
 
+    class EmbedableWidget;
+    class EmbedableWidgetHost
+    {
+    public:
+      virtual void embed_widget(EmbedableWidget &) = 0;
+      virtual void unembed_widget(EmbedableWidget &) = 0;
+      virtual void foreground_embeded(EmbedableWidget &) = 0;
+      virtual void background_embeded(EmbedableWidget &) = 0;
+    };
+
+    class EmbedableWidget
+    {
+    public:
+      EmbedableWidget() : m_host(NULL) {}
+      virtual std::string get_name() const = 0;
+      virtual void embed(EmbedableWidgetHost *h)
+        {
+          m_host = h;
+          signal_embeded();
+        }
+      virtual void unembed()
+        {
+          m_host = NULL;
+          signal_unembeded();
+        }
+      virtual void foreground()
+        {
+          signal_foregrounded();
+        }
+      virtual void background()
+        {
+          signal_backgrounded();
+        }
+      EmbedableWidgetHost *host() const
+        {
+          return m_host;
+        }
+
+      sigc::signal<void, const std::string &> signal_name_changed;
+      sigc::signal<void> signal_embeded;
+      sigc::signal<void> signal_unembeded;
+      sigc::signal<void> signal_foregrounded;
+      sigc::signal<void> signal_backgrounded;
+    private:
+      EmbedableWidgetHost *m_host;
+    };
+
 
   }
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]