[gtkmm] Add Gdk::DeviceTool



commit 442619a338fa409e7dc91561272029271ab1bb16
Author: Kjell Ahlstedt <kjellahlstedt gmail com>
Date:   Fri Feb 9 19:23:49 2018 +0100

    Add Gdk::DeviceTool
    
    * .gitignore:
    * gdk/gdkmm.h:
    * gdk/src/filelist.am: Add new filenames.
    * gdk/src/devicetool.[ccg|hg]: New files.
    * gdk/src/device.[ccg|hg]: Add signal_tool_changed() and property_tool().
    * gdk/src/gdk_docs_override.xml: Add substitution for GdkDeviceToolType.
    * gdk/src/gdk_extra_objects.defs: Add GdkDeviceTool.
    * gdk/src/gdk_signals.defs: Add GdkDeviceTool's properties.
    * gdk/src/seat.[ccg|hg]: Add get_master_pointers(), signal_tool_added()
    and signal_tool_removed().
    * tools/extra_defs_gen/generate_defs_gdk.cc: Add GDK_TYPE_DEVICE_TOOL.
    * tools/m4/convert_gdk.m4: Add conversions for GdkDeviceToolType.

 .gitignore                                |    2 +
 gdk/gdkmm.h                               |    1 +
 gdk/src/device.ccg                        |    1 +
 gdk/src/device.hg                         |    7 ++--
 gdk/src/devicetool.ccg                    |   17 ++++++++++
 gdk/src/devicetool.hg                     |   50 +++++++++++++++++++++++++++++
 gdk/src/filelist.am                       |    1 +
 gdk/src/gdk_docs_override.xml             |    1 +
 gdk/src/gdk_extra_objects.defs            |    6 +++
 gdk/src/gdk_signals.defs                  |   42 ++++++++++++++++++++++++
 gdk/src/seat.ccg                          |    1 +
 gdk/src/seat.hg                           |    7 ++++
 tools/extra_defs_gen/generate_defs_gdk.cc |    1 +
 tools/m4/convert_gdk.m4                   |    1 +
 14 files changed, 135 insertions(+), 3 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index bb9adf1..6e3b3ae 100644
--- a/.gitignore
+++ b/.gitignore
@@ -63,6 +63,8 @@ gdk/gdkmm/cursor.cc
 gdk/gdkmm/cursor.h
 gdk/gdkmm/device.cc
 gdk/gdkmm/device.h
+gdk/gdkmm/devicetool.cc
+gdk/gdkmm/devicetool.h
 gdk/gdkmm/display.cc
 gdk/gdkmm/display.h
 gdk/gdkmm/displaymanager.cc
diff --git a/gdk/gdkmm.h b/gdk/gdkmm.h
index 0e948ef..88c8981 100644
--- a/gdk/gdkmm.h
+++ b/gdk/gdkmm.h
@@ -35,6 +35,7 @@
 #include <gdkmm/frameclock.h>
 #include <gdkmm/glcontext.h>
 #include <gdkmm/rectangle.h>
+#include <gdkmm/devicetool.h>
 #include <gdkmm/display.h>
 #include <gdkmm/displaymanager.h>
 #include <gdkmm/seat.h>
diff --git a/gdk/src/device.ccg b/gdk/src/device.ccg
index 63fd6b9..1300fd1 100644
--- a/gdk/src/device.ccg
+++ b/gdk/src/device.ccg
@@ -17,6 +17,7 @@
 
 #include <gdk/gdk.h>
 #include <gdkmm/cursor.h>
+#include <gdkmm/devicetool.h>
 #include <gdkmm/display.h>
 #include <gdkmm/seat.h>
 #include <gdkmm/window.h>
diff --git a/gdk/src/device.hg b/gdk/src/device.hg
index 9b7bd59..3d7f34f 100644
--- a/gdk/src/device.hg
+++ b/gdk/src/device.hg
@@ -37,6 +37,7 @@ _WRAP_ENUM(InputSource, GdkInputSource)
 //_WRAP_ENUM(GrabOwnership, GdkGrabOwnership)
 _WRAP_ENUM(GrabStatus, GdkGrabStatus)
 
+class DeviceTool;
 class Display;
 class Seat;
 class Window;
@@ -180,10 +181,9 @@ public:
 
   // We use no_default_handler because _GdkDeviceClass is private.
   _WRAP_SIGNAL(void changed(), "changed", no_default_handler, newin "3,22")
+#m4 _CONVERSION(`GdkDeviceTool*',`const Glib::RefPtr<DeviceTool>&', Glib::wrap($3, true))
+  _WRAP_SIGNAL(void tool_changed(const Glib::RefPtr<DeviceTool>& tool), "tool-changed", no_default_handler, 
newin "3,94")
 
-  //TODO: Wrap or ignore the "tool" property and the "tool-changed" signal.
-  // GdkDeviceTool is not fully documented. It's not clear if it's meant to
-  // be used outside gtk+.
   _WRAP_PROPERTY("display", Glib::RefPtr<Display>, newin "3,22")
   _WRAP_PROPERTY("name", Glib::ustring, newin "3,22")
   _WRAP_PROPERTY("type", Type, newin "3,22")
@@ -197,6 +197,7 @@ public:
   _WRAP_PROPERTY("seat", Glib::RefPtr<Seat>, newin "3,22")
   _WRAP_PROPERTY("num-touches", guint, newin "3,22")
   _WRAP_PROPERTY("axes", AxisFlags)
+  _WRAP_PROPERTY("tool", Glib::RefPtr<DeviceTool>, newin "3,94")
 };
 
 } // namespace Gdk
diff --git a/gdk/src/devicetool.ccg b/gdk/src/devicetool.ccg
new file mode 100644
index 0000000..4e3ae20
--- /dev/null
+++ b/gdk/src/devicetool.ccg
@@ -0,0 +1,17 @@
+/* Copyright (C) 2018 The gtkmm 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, see <http://www.gnu.org/licenses/>.
+ */
+ 
+using Type = Gdk::DeviceTool::Type;
diff --git a/gdk/src/devicetool.hg b/gdk/src/devicetool.hg
new file mode 100644
index 0000000..9eb31a1
--- /dev/null
+++ b/gdk/src/devicetool.hg
@@ -0,0 +1,50 @@
+/* Copyright (C) 2018 The gtkmm 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <glibmm/object.h>
+#include <gdkmm/enums.h>
+
+_DEFS(gdkmm,gdk)
+_PINCLUDE(glibmm/private/object_p.h)
+
+_CC_INCLUDE(gdk/gdk.h)
+
+namespace Gdk
+{
+//TODO: Add class documentation when GdkDeviceTool is documented.
+/**
+ * @newin{3,94}
+ */
+class DeviceTool : public Glib::Object
+{
+  _CLASS_GOBJECT(DeviceTool, GdkDeviceTool, GDK_DEVICE_TOOL, Glib::Object, GObject)
+
+public:
+  _WRAP_ENUM(Type, GdkDeviceToolType)
+
+  _WRAP_METHOD(guint64 get_serial() const, gdk_device_tool_get_serial)
+  _WRAP_METHOD(guint64 get_hardware_id() const, gdk_device_tool_get_hardware_id)
+  _WRAP_METHOD(Type get_tool_type() const, gdk_device_tool_get_tool_type)
+
+  _WRAP_PROPERTY("serial", guint64)
+  _WRAP_PROPERTY("tool-type", Type)
+  _WRAP_PROPERTY("axes", AxisFlags)
+  _WRAP_PROPERTY("hardware-id", guint64)
+
+  // There are no signals or vfuncs.
+};
+
+} // namespace Gdk
diff --git a/gdk/src/filelist.am b/gdk/src/filelist.am
index eb7e959..a26545e 100644
--- a/gdk/src/filelist.am
+++ b/gdk/src/filelist.am
@@ -20,6 +20,7 @@ gdkmm_files_any_hg =          \
        contentprovider.hg              \
        cursor.hg               \
        device.hg               \
+       devicetool.hg           \
        display.hg              \
        displaymanager.hg       \
        dragcontext.hg          \
diff --git a/gdk/src/gdk_docs_override.xml b/gdk/src/gdk_docs_override.xml
index 74c914b..c9418c6 100644
--- a/gdk/src/gdk_docs_override.xml
+++ b/gdk/src/gdk_docs_override.xml
@@ -19,6 +19,7 @@
 <substitute_enumerator_name from_prefix="CAIRO_FORMAT_" to_prefix="Cairo::Surface::Format::" />
 <substitute_enumerator_name from_prefix="GDK_TOUCH_" to_prefix="Gdk::Event::Type::TOUCH_" />
 <substitute_enumerator_name from_prefix="GDK_DEVICE_TYPE_" to_prefix="Gdk::Device::Type::" />
+<substitute_enumerator_name from_prefix="GDK_DEVICE_TOOL_TYPE_" to_prefix="Gdk::DeviceTool::Type::" />
 <substitute_enumerator_name from_prefix="GDK_ACTION_" to_prefix="Gdk::DragAction::" />
 <substitute_enumerator_name from_prefix="GDK_WINDOW_" to_prefix="Gdk::Window::Type::" />
 <substitute_enumerator_name from_prefix="GDK_WINDOW_STATE_" to_prefix="Gdk::Window::State::" />
diff --git a/gdk/src/gdk_extra_objects.defs b/gdk/src/gdk_extra_objects.defs
index b179599..4ac1214 100644
--- a/gdk/src/gdk_extra_objects.defs
+++ b/gdk/src/gdk_extra_objects.defs
@@ -42,6 +42,12 @@
   (gtype-id "GDK_TYPE_DEVICE")
 )
 
+(define-object DeviceTool
+  (in-module "Gdk")
+  (c-name "GdkDeviceTool")
+  (gtype-id "GDK_TYPE_DEVICE_TOOL")
+)
+
 (define-object Display
   (in-module "Gdk")
   (c-name "GdkDisplay")
diff --git a/gdk/src/gdk_signals.defs b/gdk/src/gdk_signals.defs
index 8da5020..a30e89c 100644
--- a/gdk/src/gdk_signals.defs
+++ b/gdk/src/gdk_signals.defs
@@ -345,6 +345,48 @@
   (construct-only #f)
 )
 
+;; From GdkDeviceTool
+
+(define-property serial
+  (of-object "GdkDeviceTool")
+  (prop-type "GParamUInt64")
+  (docs "Serial number")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+  (default-value "0")
+)
+
+(define-property tool-type
+  (of-object "GdkDeviceTool")
+  (prop-type "GParamEnum")
+  (docs "Tool type")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+  (default-value "GDK_DEVICE_TOOL_TYPE_UNKNOWN")
+)
+
+(define-property axes
+  (of-object "GdkDeviceTool")
+  (prop-type "GParamFlags")
+  (docs "Tool axes")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+  (default-value "0")
+)
+
+(define-property hardware-id
+  (of-object "GdkDeviceTool")
+  (prop-type "GParamUInt64")
+  (docs "Hardware ID")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+  (default-value "0")
+)
+
 ;; From GdkDisplay
 
 (define-signal opened
diff --git a/gdk/src/seat.ccg b/gdk/src/seat.ccg
index ff5107f..4f293c9 100644
--- a/gdk/src/seat.ccg
+++ b/gdk/src/seat.ccg
@@ -14,6 +14,7 @@
  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <gdkmm/devicetool.h>
 #include <gdkmm/display.h>
 #include <gdkmm/window.h>
 
diff --git a/gdk/src/seat.hg b/gdk/src/seat.hg
index 540245e..d0e02c0 100644
--- a/gdk/src/seat.hg
+++ b/gdk/src/seat.hg
@@ -26,6 +26,7 @@ _PINCLUDE(glibmm/private/object_p.h)
 namespace Gdk
 {
 
+class DeviceTool;
 class Display;
 class Window;
 
@@ -78,12 +79,18 @@ public:
   _WRAP_METHOD(Glib::RefPtr<const Device> get_pointer() const, gdk_seat_get_pointer, refreturn, constversion)
   _WRAP_METHOD(Glib::RefPtr<Device> get_keyboard(), gdk_seat_get_keyboard, refreturn)
   _WRAP_METHOD(Glib::RefPtr<const Device> get_keyboard() const, gdk_seat_get_keyboard, refreturn, 
constversion)
+  _WRAP_METHOD(std::vector<Glib::RefPtr<Device>> get_master_pointers(Capabilities capabilities), 
gdk_seat_get_master_pointers)
+  _WRAP_METHOD(std::vector<Glib::RefPtr<const Device>> get_master_pointers(Capabilities capabilities) const, 
gdk_seat_get_master_pointers)
 
   // We use no_default_handler because GdkSeatClass is private.
 #m4 _CONVERSION(`GdkDevice*',`const Glib::RefPtr<Device>&', Glib::wrap($3, true))
   _WRAP_SIGNAL(void device_added(const Glib::RefPtr<Device>& device), "device-added", no_default_handler)
   _WRAP_SIGNAL(void device_removed(const Glib::RefPtr<Device>& device), "device-removed", no_default_handler)
 
+#m4 _CONVERSION(`GdkDeviceTool*',`const Glib::RefPtr<DeviceTool>&', Glib::wrap($3, true))
+  _WRAP_SIGNAL(void tool_added(const Glib::RefPtr<DeviceTool>& device), "tool-added", no_default_handler, 
newin "3,94")
+  _WRAP_SIGNAL(void tool_removed(const Glib::RefPtr<DeviceTool>& device), "tool-removed", 
no_default_handler, newin "3,94")
+
   _WRAP_PROPERTY("display", Glib::RefPtr<Display>)
 };
 
diff --git a/tools/extra_defs_gen/generate_defs_gdk.cc b/tools/extra_defs_gen/generate_defs_gdk.cc
index b130a2f..fc9b7ab 100644
--- a/tools/extra_defs_gen/generate_defs_gdk.cc
+++ b/tools/extra_defs_gen/generate_defs_gdk.cc
@@ -41,6 +41,7 @@ int main(int /* argc */, char** /* argv */)
             << get_defs( GDK_TYPE_DRAG_CONTEXT )
             << get_defs( GDK_TYPE_CURSOR )
             << get_defs( GDK_TYPE_DEVICE )
+            << get_defs( GDK_TYPE_DEVICE_TOOL )
             << get_defs( GDK_TYPE_DISPLAY )
 #if !defined(G_OS_WIN32)
             << get_defs( GDK_TYPE_DISPLAY_MANAGER )
diff --git a/tools/m4/convert_gdk.m4 b/tools/m4/convert_gdk.m4
index 9fb7f64..b0f2d26 100644
--- a/tools/m4/convert_gdk.m4
+++ b/tools/m4/convert_gdk.m4
@@ -33,6 +33,7 @@ _CONV_ENUM(Gdk,CapStyle)
 _CONV_ENUM(Gdk,Colorspace)
 _CONV_ENUM(Gdk,CrossingMode)
 _CONV_INCLASS_ENUM(Gdk,Device,Type)
+_CONV_INCLASS_ENUM(Gdk,DeviceTool,Type)
 _CONV_ENUM(Gdk,DragAction)
 _CONV_ENUM(Gdk,DragProtocol)
 _CONV_ENUM(Gdk,EventMask)


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