Bug 1884032 [wpt PR 44942] - [css-color] add missing colorscheme-aware tests, a=testonly
[gecko.git] / widget / gtk / DBusMenu.h
blobd288d023226b46942dfea10e8241ada60847d51a
1 /* -*- Mode: c++; tab-width: 2; indent-tabs-mode: nil; -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef mozilla_widget_DBusMenu_h
7 #define mozilla_widget_DBusMenu_h
9 #include <glib.h>
10 #include <gdk/gdk.h>
12 namespace mozilla {
14 namespace dom {
15 class Element;
18 namespace widget {
20 #define DBUSMENU_GLIB_FUNCTIONS \
21 FUNC(dbusmenu_menuitem_child_add_position, gboolean, \
22 (DbusmenuMenuitem * mi, DbusmenuMenuitem * child, guint position)) \
23 FUNC(dbusmenu_menuitem_set_root, void, \
24 (DbusmenuMenuitem * mi, gboolean root)) \
25 FUNC(dbusmenu_menuitem_child_append, gboolean, \
26 (DbusmenuMenuitem * mi, DbusmenuMenuitem * child)) \
27 FUNC(dbusmenu_menuitem_child_delete, gboolean, \
28 (DbusmenuMenuitem * mi, DbusmenuMenuitem * child)) \
29 FUNC(dbusmenu_menuitem_get_children, GList*, (DbusmenuMenuitem * mi)) \
30 FUNC(dbusmenu_menuitem_new, DbusmenuMenuitem*, (void)) \
31 FUNC(dbusmenu_menuitem_property_get, const gchar*, \
32 (DbusmenuMenuitem * mi, const gchar* property)) \
33 FUNC(dbusmenu_menuitem_property_get_bool, gboolean, \
34 (DbusmenuMenuitem * mi, const gchar* property)) \
35 FUNC(dbusmenu_menuitem_property_remove, void, \
36 (DbusmenuMenuitem * mi, const gchar* property)) \
37 FUNC(dbusmenu_menuitem_property_set, gboolean, \
38 (DbusmenuMenuitem * mi, const gchar* property, const gchar* value)) \
39 FUNC(dbusmenu_menuitem_property_set_bool, gboolean, \
40 (DbusmenuMenuitem * mi, const gchar* property, const gboolean value)) \
41 FUNC(dbusmenu_menuitem_property_set_int, gboolean, \
42 (DbusmenuMenuitem * mi, const gchar* property, const gint value)) \
43 FUNC(dbusmenu_menuitem_show_to_user, void, \
44 (DbusmenuMenuitem * mi, guint timestamp)) \
45 FUNC(dbusmenu_menuitem_take_children, GList*, (DbusmenuMenuitem * mi)) \
46 FUNC(dbusmenu_server_new, DbusmenuServer*, (const gchar* object)) \
47 FUNC(dbusmenu_server_set_root, void, \
48 (DbusmenuServer * server, DbusmenuMenuitem * root)) \
49 FUNC(dbusmenu_server_set_status, void, \
50 (DbusmenuServer * server, DbusmenuStatus status))
52 #define DBUSMENU_GTK_FUNCTIONS \
53 FUNC(dbusmenu_menuitem_property_set_image, gboolean, \
54 (DbusmenuMenuitem * menuitem, const gchar* property, \
55 const GdkPixbuf* data)) \
56 FUNC(dbusmenu_menuitem_property_set_shortcut, gboolean, \
57 (DbusmenuMenuitem * menuitem, guint key, GdkModifierType modifier))
59 typedef struct _DbusmenuMenuitem DbusmenuMenuitem;
60 typedef struct _DbusmenuServer DbusmenuServer;
62 enum DbusmenuStatus { DBUSMENU_STATUS_NORMAL, DBUSMENU_STATUS_NOTICE };
64 #define DBUSMENU_MENUITEM_CHILD_DISPLAY_SUBMENU "submenu"
65 #define DBUSMENU_MENUITEM_PROP_CHILD_DISPLAY "children-display"
66 #define DBUSMENU_MENUITEM_PROP_ENABLED "enabled"
67 #define DBUSMENU_MENUITEM_PROP_ICON_DATA "icon-data"
68 #define DBUSMENU_MENUITEM_PROP_LABEL "label"
69 #define DBUSMENU_MENUITEM_PROP_SHORTCUT "shortcut"
70 #define DBUSMENU_MENUITEM_PROP_TYPE "type"
71 #define DBUSMENU_MENUITEM_PROP_TOGGLE_STATE "toggle-state"
72 #define DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE "toggle-type"
73 #define DBUSMENU_MENUITEM_PROP_VISIBLE "visible"
74 #define DBUSMENU_MENUITEM_SIGNAL_ABOUT_TO_SHOW "about-to-show"
75 #define DBUSMENU_MENUITEM_SIGNAL_EVENT "event"
76 #define DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED "item-activated"
77 #define DBUSMENU_MENUITEM_TOGGLE_CHECK "checkmark"
78 #define DBUSMENU_MENUITEM_TOGGLE_RADIO "radio"
79 #define DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED 1
80 #define DBUSMENU_MENUITEM_TOGGLE_STATE_UNCHECKED 0
81 #define DBUSMENU_SERVER_PROP_DBUS_OBJECT "dbus-object"
83 class DBusMenuFunctions {
84 public:
85 DBusMenuFunctions() = delete;
87 static bool Init();
89 #define FUNC(name, type, params) \
90 typedef type(*_##name##_fn) params; \
91 static _##name##_fn s_##name;
92 DBUSMENU_GLIB_FUNCTIONS
93 DBUSMENU_GTK_FUNCTIONS
94 #undef FUNC
97 #define dbusmenu_menuitem_set_root \
98 DBusMenuFunctions::s_dbusmenu_menuitem_set_root
99 #define dbusmenu_menuitem_child_add_position \
100 DBusMenuFunctions::s_dbusmenu_menuitem_child_add_position
101 #define dbusmenu_menuitem_child_append \
102 DBusMenuFunctions::s_dbusmenu_menuitem_child_append
103 #define dbusmenu_menuitem_child_delete \
104 DBusMenuFunctions::s_dbusmenu_menuitem_child_delete
105 #define dbusmenu_menuitem_get_children \
106 DBusMenuFunctions::s_dbusmenu_menuitem_get_children
107 #define dbusmenu_menuitem_new DBusMenuFunctions::s_dbusmenu_menuitem_new
108 #define dbusmenu_menuitem_property_get \
109 DBusMenuFunctions::s_dbusmenu_menuitem_property_get
110 #define dbusmenu_menuitem_property_get_bool \
111 DBusMenuFunctions::s_dbusmenu_menuitem_property_get_bool
112 #define dbusmenu_menuitem_property_remove \
113 DBusMenuFunctions::s_dbusmenu_menuitem_property_remove
114 #define dbusmenu_menuitem_property_set \
115 DBusMenuFunctions::s_dbusmenu_menuitem_property_set
116 #define dbusmenu_menuitem_property_set_bool \
117 DBusMenuFunctions::s_dbusmenu_menuitem_property_set_bool
118 #define dbusmenu_menuitem_property_set_int \
119 DBusMenuFunctions::s_dbusmenu_menuitem_property_set_int
120 #define dbusmenu_menuitem_show_to_user \
121 DBusMenuFunctions::s_dbusmenu_menuitem_show_to_user
122 #define dbusmenu_menuitem_take_children \
123 DBusMenuFunctions::s_dbusmenu_menuitem_take_children
124 #define dbusmenu_server_new DBusMenuFunctions::s_dbusmenu_server_new
125 #define dbusmenu_server_set_root DBusMenuFunctions::s_dbusmenu_server_set_root
126 #define dbusmenu_server_set_status \
127 DBusMenuFunctions::s_dbusmenu_server_set_status
129 #define dbusmenu_menuitem_property_set_image \
130 DBusMenuFunctions::s_dbusmenu_menuitem_property_set_image
131 #define dbusmenu_menuitem_property_set_shortcut \
132 DBusMenuFunctions::s_dbusmenu_menuitem_property_set_shortcut
134 } // namespace widget
135 } // namespace mozilla
137 #endif