[glibmm] giomm: Add SimpleAction, an implementation of the Action interface.



commit 27d6d6ec92f4c527d878c56b541ba11e8bc0f8a6
Author: Josà Alburquerque <jaalburqu svn gnome org>
Date:   Wed Sep 21 18:08:26 2011 -0400

    giomm: Add SimpleAction, an implementation of the Action interface.
    
    	* gio/src/simpleaction.{ccg,hg}:
    	* gio/src/filelist.am: Add the sources and include them in the list of
    	files that should be processed.
    
    	* tools/extra_defs_gen/generate_defs_gio.cc: Add G_SIMPLE_ACTION_TYPE
    	to the list of types for which properties and signals should be
    	generated.
    	* gio/src/gio_signals.defs: Regenerate with above to get the
    	properties and signals of new class.

 ChangeLog                                 |   14 ++++++
 gio/src/filelist.am                       |    1 +
 gio/src/gio_signals.defs                  |   69 ++++++++++++++++++++++++++-
 gio/src/simpleaction.ccg                  |   23 +++++++++
 gio/src/simpleaction.hg                   |   73 +++++++++++++++++++++++++++++
 tools/extra_defs_gen/generate_defs_gio.cc |    1 +
 6 files changed, 179 insertions(+), 2 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index a3d69ce..30aac09 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2011-09-21  Josà Alburquerque  <jaalburqu svn gnome org>
+
+	giomm: Add SimpleAction, an implementation of the Action interface.
+
+	* gio/src/simpleaction.{ccg,hg}:
+	* gio/src/filelist.am: Add the sources and include them in the list of
+	files that should be processed.
+
+	* tools/extra_defs_gen/generate_defs_gio.cc: Add G_SIMPLE_ACTION_TYPE
+	to the list of types for which properties and signals should be
+	generated.
+	* gio/src/gio_signals.defs: Regenerate with above to get the
+	properties and signals of new class.
+
 2011-09-20  Josà Alburquerque  <jaalburqu svn gnome org>
 
 	ActionGroup: Wrap remaining methods.
diff --git a/gio/src/filelist.am b/gio/src/filelist.am
index 371a0f3..803f442 100644
--- a/gio/src/filelist.am
+++ b/gio/src/filelist.am
@@ -79,6 +79,7 @@ giomm_files_any_hg =			\
 	resolver.hg			\
 	seekable.hg			\
 	settings.hg			\
+	simpleaction.hg			\
 	socket.hg			\
 	socketaddress.hg		\
 	socketaddressenumerator.hg	\
diff --git a/gio/src/gio_signals.defs b/gio/src/gio_signals.defs
index 2f3c2f0..595b5e3 100644
--- a/gio/src/gio_signals.defs
+++ b/gio/src/gio_signals.defs
@@ -89,13 +89,13 @@
 
 ;; From GApplication
 
-(define-signal startup
+(define-signal activate
   (of-object "GApplication")
   (return-type "void")
   (when "last")
 )
 
-(define-signal activate
+(define-signal startup
   (of-object "GApplication")
   (return-type "void")
   (when "last")
@@ -818,6 +818,71 @@
 
 ;; From GSimpleAsyncResult
 
+;; From GSimpleAction
+
+(define-signal activate
+  (of-object "GSimpleAction")
+  (return-type "void")
+  (when "last")
+  (parameters
+    '("GVariant*" "p0")
+  )
+)
+
+(define-signal change-state
+  (of-object "GSimpleAction")
+  (return-type "void")
+  (when "last")
+  (parameters
+    '("GVariant*" "p0")
+  )
+)
+
+(define-property name
+  (of-object "GSimpleAction")
+  (prop-type "GParamString")
+  (docs "The name used to invoke the action")
+  (readable #t)
+  (writable #f)
+  (construct-only #f)
+)
+
+(define-property parameter-type
+  (of-object "GSimpleAction")
+  (prop-type "GParamBoxed")
+  (docs "The type of GVariant passed to activate()")
+  (readable #t)
+  (writable #f)
+  (construct-only #f)
+)
+
+(define-property enabled
+  (of-object "GSimpleAction")
+  (prop-type "GParamBoolean")
+  (docs "If the action can be activated")
+  (readable #t)
+  (writable #f)
+  (construct-only #f)
+)
+
+(define-property state-type
+  (of-object "GSimpleAction")
+  (prop-type "GParamBoxed")
+  (docs "The type of the state kept by the action")
+  (readable #t)
+  (writable #f)
+  (construct-only #f)
+)
+
+(define-property state
+  (of-object "GSimpleAction")
+  (prop-type "GParamVariant")
+  (docs "The state the action is in")
+  (readable #t)
+  (writable #f)
+  (construct-only #f)
+)
+
 ;; From GThemedIcon
 
 (define-property name
diff --git a/gio/src/simpleaction.ccg b/gio/src/simpleaction.ccg
new file mode 100644
index 0000000..eaf0b62
--- /dev/null
+++ b/gio/src/simpleaction.ccg
@@ -0,0 +1,23 @@
+/* Copyright (C) 2011 The giomm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <gio/gio.h>
+
+namespace Gio
+{
+
+}// namespace Gio
diff --git a/gio/src/simpleaction.hg b/gio/src/simpleaction.hg
new file mode 100644
index 0000000..a67c524
--- /dev/null
+++ b/gio/src/simpleaction.hg
@@ -0,0 +1,73 @@
+/* Copyright (C) 2011 The giomm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/object.h>
+#include <giomm/action.h>
+
+_DEFS(giomm,gio)
+_PINCLUDE(glibmm/private/object_p.h)
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+typedef struct _GSimpleAction GSimpleAction;
+typedef GObjectClass GSimpleActionClass;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+namespace Gio
+{
+
+/** A SimpleAction is the obvious simple implementation of the Action
+ * interface. This is the easiest way to create an action for purposes of
+ * adding it to a SimpleActionGroup.
+ *
+ * See also Gtk::Action.
+ *
+ * @newin{2,30}
+ */
+class SimpleAction : public Glib::Object, public Action
+{
+  _CLASS_GOBJECT(SimpleAction, GSimpleAction, G_SIMPLE_ACTION, Glib::Object, GObject)
+  _IMPLEMENTS_INTERFACE(Action)
+  _STRUCT_NOT_HIDDEN
+
+protected:
+#m4 _CONVERSION(`const Glib::VariantType&',`const GVariantType*',`$3.gobj()')
+
+  _WRAP_CTOR(SimpleAction(const Glib::ustring& name, const Glib::VariantType& parameter_type), g_simple_action_new)
+  _WRAP_CTOR(SimpleAction(const Glib::ustring& name, const Glib::VariantType& parameter_type, const Glib::VariantBase& sate), g_simple_action_new_stateful)
+
+public:
+  _WRAP_METHOD(void set_enabled(bool enabled), g_simple_action_set_enabled)
+  _WRAP_METHOD(void set_state(const Glib::VariantBase& value), g_simple_action_set_state)
+
+  /* These properties are already wrapped in the Action interface.
+  _WRAP_PROPERTY("enabled", bool)
+  _WRAP_PROPERTY("name", Glib::ustring)
+  _WRAP_PROPERTY("parameter-type", Glib::VariantType)
+  _WRAP_PROPERTY("state", Glib::VariantBase)
+  _WRAP_PROPERTY("state-type", Glib::VariantType)
+  */
+
+/* TODO: Signals are not wrapped because GSimpleAction does not declare a
+ * standard _GSimpleActionClass structure.
+#m4 _CONVERSION(`GVariant*',`const Glib::VariantBase&',`Glib::wrap($3, true)')
+
+  _WRAP_SIGNAL(void activate(const Glib::VariantBase& parameter), "activate")
+  _WRAP_SIGNAL(void change_state(const Glib::VariantBase& value), "change-state")
+*/
+};
+
+} // namespace Gio
diff --git a/tools/extra_defs_gen/generate_defs_gio.cc b/tools/extra_defs_gen/generate_defs_gio.cc
index bbcfd00..7003c63 100644
--- a/tools/extra_defs_gen/generate_defs_gio.cc
+++ b/tools/extra_defs_gen/generate_defs_gio.cc
@@ -82,6 +82,7 @@ int main(int, char**)
             << get_defs(G_TYPE_SETTINGS)
             << get_defs(G_TYPE_SETTINGS_BACKEND)
             << get_defs(G_TYPE_SIMPLE_ASYNC_RESULT)
+            << get_defs(G_TYPE_SIMPLE_ACTION)
             << get_defs(G_TYPE_THEMED_ICON)
 
             //TODO: This causes a g_warning:



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