aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-glib/client.h
diff options
context:
space:
mode:
authorTed Gould <ted@canonical.com>2009-05-12 11:23:10 -0500
committerTed Gould <ted@canonical.com>2009-05-12 11:23:10 -0500
commit3d0e0276fd7856831dcc845a24a252ad304b3bad (patch)
tree5ec06325d34b0fdab498045aa911fb534eb2ca48 /libdbusmenu-glib/client.h
parentc5024e812fb046f6bccceafaf46ebbd966f465cf (diff)
parent53b4a13ca4541bcdf85ca3ee28cb6ffc81e6f5b0 (diff)
downloadlibdbusmenu-3d0e0276fd7856831dcc845a24a252ad304b3bad.tar.gz
libdbusmenu-3d0e0276fd7856831dcc845a24a252ad304b3bad.tar.bz2
libdbusmenu-3d0e0276fd7856831dcc845a24a252ad304b3bad.zip
Merging in my working branch that brings in basic object functionality passing across DBus.
Diffstat (limited to 'libdbusmenu-glib/client.h')
-rw-r--r--libdbusmenu-glib/client.h116
1 files changed, 116 insertions, 0 deletions
diff --git a/libdbusmenu-glib/client.h b/libdbusmenu-glib/client.h
new file mode 100644
index 0000000..d591ebb
--- /dev/null
+++ b/libdbusmenu-glib/client.h
@@ -0,0 +1,116 @@
+/*
+A library to communicate a menu object set accross DBus and
+track updates and maintain consistency.
+
+Copyright 2009 Canonical Ltd.
+
+Authors:
+ Ted Gould <ted@canonical.com>
+
+This program is free software: you can redistribute it and/or modify it
+under the terms of either or both of the following licenses:
+
+1) the GNU Lesser General Public License version 3, as published by the
+Free Software Foundation; and/or
+2) the GNU Lesser General Public License version 2.1, as published by
+the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranties of
+MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
+PURPOSE. See the applicable version of the GNU Lesser General Public
+License for more details.
+
+You should have received a copy of both the GNU Lesser General Public
+License version 3 and version 2.1 along with this program. If not, see
+<http://www.gnu.org/licenses/>
+*/
+
+#ifndef __DBUSMENU_CLIENT_H__
+#define __DBUSMENU_CLIENT_H__
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include "menuitem.h"
+
+G_BEGIN_DECLS
+
+#define DBUSMENU_TYPE_CLIENT (dbusmenu_client_get_type ())
+#define DBUSMENU_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DBUSMENU_TYPE_CLIENT, DbusmenuClient))
+#define DBUSMENU_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DBUSMENU_TYPE_CLIENT, DbusmenuClientClass))
+#define DBUSMENU_IS_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), DBUSMENU_TYPE_CLIENT))
+#define DBUSMENU_IS_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), DBUSMENU_TYPE_CLIENT))
+#define DBUSMENU_CLIENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DBUSMENU_TYPE_CLIENT, DbusmenuClientClass))
+
+#define DBUSMENU_CLIENT_SIGNAL_LAYOUT_UPDATED "layout-updated"
+
+#define DBUSMENU_CLIENT_PROP_DBUS_NAME "dbus-name"
+#define DBUSMENU_CLIENT_PROP_DBUS_OBJECT "dbus-object"
+
+/**
+ DbusmenuClientClass:
+ @parent_class: #GObjectClass
+ @layout_updated: Slot for #DbusmenuClient::layout-updated.
+ @reserved1: Reserved for future use.
+ @reserved2: Reserved for future use.
+ @reserved3: Reserved for future use.
+ @reserved4: Reserved for future use.
+
+ A simple class that takes all of the information from a
+ #DbusmenuServer over DBus and makes the same set of
+ #DbusmenuMenuitem objects appear on the other side.
+*/
+typedef struct _DbusmenuClientClass DbusmenuClientClass;
+struct _DbusmenuClientClass {
+ GObjectClass parent_class;
+
+ void (*layout_updated)(void);
+
+ /* Reserved for future use */
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+ void (*reserved4) (void);
+};
+
+/**
+ DbusmenuClient:
+ @parent: #GObject.
+
+ The client for a #DbusmenuServer creating a shared
+ object set of #DbusmenuMenuitem objects.
+*/
+typedef struct _DbusmenuClient DbusmenuClient;
+struct _DbusmenuClient {
+ GObject parent;
+};
+
+GType dbusmenu_client_get_type (void);
+DbusmenuClient * dbusmenu_client_new (const gchar * name, const gchar * object);
+DbusmenuMenuitem * dbusmenu_client_get_root (DbusmenuClient * client);
+
+/**
+ SECTION:client
+ @short_description: The catcher of all the server traffic
+ @stability: Unstable
+ @include: libdbusmenu-glib/client.h
+
+ The client exists as a mirror to the server. For most folks
+ all they will do with a client is set it up to connect to
+ a server and then watch as the menu items on their side
+ of the bus change. This is all they should need to know about
+ the client, that it magically makes their menuitems dance.
+
+ It does this by setting up signal watchers and adjusting
+ the menuitems appropriately. Most users should watch the
+ menu items and the signal #DbusmenuClient::layout-changed for
+ larger events so that they can be optimized. It is possible
+ with that signal that even the root node would change. If
+ that doesn't happen the normal signals on the individual
+ nodes should be enough for most users.
+*/
+
+G_END_DECLS
+
+#endif