1
/* related-applet.c generated by valac 0.9.7, the Vala compiler
2
* generated from related-applet.vala, do not modify */
5
* Copyright (C) 2010 Michal Hruby <michal.mhr@gmail.com>
7
* This program is free software; you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation; either version 2 of the License, or
10
* (at your option) any later version.
12
* This program is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
17
* You should have received a copy of the GNU General Public License
18
* along with this program; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
21
* Author : Michal Hruby <michal.mhr@gmail.com>
25
#include <glib-object.h>
28
#include <dbus/dbus-glib-lowlevel.h>
29
#include <dbus/dbus-glib.h>
30
#include <dbus/dbus.h>
31
#include <libawn/libawn.h>
32
#include <libwnck/libwnck.h>
33
#include <awn-desktop-lookup-cached.h>
34
#include <zeitgeist.h>
37
#include <pango/pango.h>
38
#include <gio/gdesktopappinfo.h>
42
#define TYPE_WNCK_SYNC_MATCHER (wnck_sync_matcher_get_type ())
43
#define WNCK_SYNC_MATCHER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_WNCK_SYNC_MATCHER, WnckSyncMatcher))
44
#define IS_WNCK_SYNC_MATCHER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_WNCK_SYNC_MATCHER))
45
#define WNCK_SYNC_MATCHER_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_WNCK_SYNC_MATCHER, WnckSyncMatcherIface))
47
typedef struct _WnckSyncMatcher WnckSyncMatcher;
48
typedef struct _WnckSyncMatcherIface WnckSyncMatcherIface;
49
typedef struct _DBusObjectVTable _DBusObjectVTable;
50
#define _g_free0(var) (var = (g_free (var), NULL))
51
typedef struct _WnckSyncMatcherDBusProxy WnckSyncMatcherDBusProxy;
52
typedef DBusGProxyClass WnckSyncMatcherDBusProxyClass;
54
#define TYPE_DESKTOP_FILE_INFO (desktop_file_info_get_type ())
55
typedef struct _DesktopFileInfo DesktopFileInfo;
57
#define TYPE_RELATED_APPLET (related_applet_get_type ())
58
#define RELATED_APPLET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_RELATED_APPLET, RelatedApplet))
59
#define RELATED_APPLET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_RELATED_APPLET, RelatedAppletClass))
60
#define IS_RELATED_APPLET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_RELATED_APPLET))
61
#define IS_RELATED_APPLET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_RELATED_APPLET))
62
#define RELATED_APPLET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_RELATED_APPLET, RelatedAppletClass))
64
typedef struct _RelatedApplet RelatedApplet;
65
typedef struct _RelatedAppletClass RelatedAppletClass;
66
typedef struct _RelatedAppletPrivate RelatedAppletPrivate;
67
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
68
#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
69
#define _dbus_g_connection_unref0(var) ((var == NULL) ? NULL : (var = (dbus_g_connection_unref (var), NULL)))
70
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
71
#define _g_key_file_free0(var) ((var == NULL) ? NULL : (var = (g_key_file_free (var), NULL)))
72
#define __g_list_free_g_object_unref0(var) ((var == NULL) ? NULL : (var = (_g_list_free_g_object_unref (var), NULL)))
73
#define _g_ptr_array_free0(var) ((var == NULL) ? NULL : (var = (g_ptr_array_free (var, TRUE), NULL)))
74
#define _g_array_free0(var) ((var == NULL) ? NULL : (var = (g_array_free (var, TRUE), NULL)))
75
typedef struct _RelatedAppletUpdateStarData RelatedAppletUpdateStarData;
76
typedef struct _RelatedAppletGetRecentByMimetypeData RelatedAppletGetRecentByMimetypeData;
77
typedef struct _RelatedAppletGetEventsForActorData RelatedAppletGetEventsForActorData;
78
typedef struct _RelatedAppletBuildDialogData RelatedAppletBuildDialogData;
79
#define __g_list_free_g_free0(var) ((var == NULL) ? NULL : (var = (_g_list_free_g_free (var), NULL)))
80
typedef struct _Block1Data Block1Data;
82
struct _WnckSyncMatcherIface {
83
GTypeInterface parent_iface;
84
char* (*desktop_file_for_xid) (WnckSyncMatcher* self, guint32 xid, GError** error);
85
gboolean (*window_match_is_ready) (WnckSyncMatcher* self, guint32 xid, GError** error);
86
void (*register_desktop_file_for_pid) (WnckSyncMatcher* self, const char* filename, gint32 pid, GError** error);
87
guint32* (*xids_for_desktop_file) (WnckSyncMatcher* self, const char* filename, int* result_length1, GError** error);
90
struct _DBusObjectVTable {
91
void (*register_object) (DBusConnection*, const char*, void*);
94
struct _WnckSyncMatcherDBusProxy {
95
DBusGProxy parent_instance;
99
struct _DesktopFileInfo {
102
gint mimetypes_length1;
103
gint _mimetypes_size_;
106
struct _RelatedApplet {
107
AwnAppletSimple parent_instance;
108
RelatedAppletPrivate * priv;
111
struct _RelatedAppletClass {
112
AwnAppletSimpleClass parent_class;
115
struct _RelatedAppletPrivate {
116
WnckScreen* wnck_screen;
117
AwnDesktopLookupCached* lookup;
118
ZeitgeistLog* zg_log;
119
AwnOverlay* throbber;
120
AwnOverlay* star_overlay;
121
GHashTable* desktop_file_info;
124
char* current_desktop_file_path;
127
struct _RelatedAppletUpdateStarData {
130
GSimpleAsyncResult* _async_result;
133
GPtrArray* ptr_array;
135
ZeitgeistEvent* event;
136
GList* helper_event_list;
138
DesktopFileInfo* df_data;
140
ZeitgeistEvent* mime_event;
141
ZeitgeistSubject* subject;
142
char** mimetype_collection;
143
int mimetype_collection_length1;
145
const char* mimetype;
147
ZeitgeistTimeRange* _tmp2_;
153
GError * _inner_error_;
156
struct _RelatedAppletGetRecentByMimetypeData {
159
GSimpleAsyncResult* _async_result;
162
gint mimetypes_length1;
164
GList* helper_event_list;
165
GPtrArray* ptr_array;
166
ZeitgeistEvent* event;
167
ZeitgeistSubject* subject;
168
char** mimetype_collection;
169
int mimetype_collection_length1;
171
const char* mimetype;
172
ZeitgeistResultSet* events;
173
ZeitgeistTimeRange* _tmp0_;
175
ZeitgeistResultSet* _tmp2_;
177
ZeitgeistResultSet* _e_it;
181
GError * _inner_error_;
184
struct _RelatedAppletGetEventsForActorData {
187
GSimpleAsyncResult* _async_result;
191
GPtrArray* ptr_array;
192
ZeitgeistEvent* event;
194
ZeitgeistResultSet* events;
195
ZeitgeistTimeRange* _tmp1_;
197
ZeitgeistResultSet* _tmp3_;
199
ZeitgeistResultSet* _e_it;
203
GError * _inner_error_;
206
struct _RelatedAppletBuildDialogData {
209
GSimpleAsyncResult* _async_result;
216
DesktopFileInfo* df_data;
221
GtkHSeparator* _tmp5_;
231
RelatedApplet * self;
237
static gpointer related_applet_parent_class = NULL;
239
WnckSyncMatcher* wnck_sync_matcher_dbus_proxy_new (DBusGConnection* connection, const char* name, const char* path);
240
GType wnck_sync_matcher_get_type (void) G_GNUC_CONST;
241
char* wnck_sync_matcher_desktop_file_for_xid (WnckSyncMatcher* self, guint32 xid, GError** error);
242
gboolean wnck_sync_matcher_window_match_is_ready (WnckSyncMatcher* self, guint32 xid, GError** error);
243
void wnck_sync_matcher_register_desktop_file_for_pid (WnckSyncMatcher* self, const char* filename, gint32 pid, GError** error);
244
guint32* wnck_sync_matcher_xids_for_desktop_file (WnckSyncMatcher* self, const char* filename, int* result_length1, GError** error);
245
static void _vala_dbus_register_object (DBusConnection* connection, const char* path, void* object);
246
static void _vala_dbus_unregister_object (gpointer connection, GObject* object);
247
void wnck_sync_matcher_dbus_register_object (DBusConnection* connection, const char* path, void* object);
248
void _wnck_sync_matcher_dbus_unregister (DBusConnection* connection, void* _user_data_);
249
DBusHandlerResult wnck_sync_matcher_dbus_message (DBusConnection* connection, DBusMessage* message, void* object);
250
static DBusHandlerResult _dbus_wnck_sync_matcher_introspect (WnckSyncMatcher* self, DBusConnection* connection, DBusMessage* message);
251
static DBusHandlerResult _dbus_wnck_sync_matcher_property_get_all (WnckSyncMatcher* self, DBusConnection* connection, DBusMessage* message);
252
static DBusHandlerResult _dbus_wnck_sync_matcher_desktop_file_for_xid (WnckSyncMatcher* self, DBusConnection* connection, DBusMessage* message);
253
static DBusHandlerResult _dbus_wnck_sync_matcher_window_match_is_ready (WnckSyncMatcher* self, DBusConnection* connection, DBusMessage* message);
254
static DBusHandlerResult _dbus_wnck_sync_matcher_register_desktop_file_for_pid (WnckSyncMatcher* self, DBusConnection* connection, DBusMessage* message);
255
static DBusHandlerResult _dbus_wnck_sync_matcher_xids_for_desktop_file (WnckSyncMatcher* self, DBusConnection* connection, DBusMessage* message);
256
GType wnck_sync_matcher_dbus_proxy_get_type (void) G_GNUC_CONST;
257
DBusHandlerResult wnck_sync_matcher_dbus_proxy_filter (DBusConnection* connection, DBusMessage* message, void* user_data);
259
WNCK_SYNC_MATCHER_DBUS_PROXY_DUMMY_PROPERTY
261
static char* wnck_sync_matcher_dbus_proxy_desktop_file_for_xid (WnckSyncMatcher* self, guint32 xid, GError** error);
262
static gboolean wnck_sync_matcher_dbus_proxy_window_match_is_ready (WnckSyncMatcher* self, guint32 xid, GError** error);
263
static void wnck_sync_matcher_dbus_proxy_register_desktop_file_for_pid (WnckSyncMatcher* self, const char* filename, gint32 pid, GError** error);
264
static guint32* wnck_sync_matcher_dbus_proxy_xids_for_desktop_file (WnckSyncMatcher* self, const char* filename, int* result_length1, GError** error);
265
static void wnck_sync_matcher_dbus_proxy_wnck_sync_matcher__interface_init (WnckSyncMatcherIface* iface);
266
static void wnck_sync_matcher_dbus_proxy_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
267
static void wnck_sync_matcher_dbus_proxy_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
268
GType desktop_file_info_get_type (void) G_GNUC_CONST;
269
DesktopFileInfo* desktop_file_info_dup (const DesktopFileInfo* self);
270
void desktop_file_info_free (DesktopFileInfo* self);
271
void desktop_file_info_copy (const DesktopFileInfo* self, DesktopFileInfo* dest);
272
void desktop_file_info_destroy (DesktopFileInfo* self);
273
static char** _vala_array_dup1 (char** self, int length);
274
GType related_applet_get_type (void) G_GNUC_CONST;
275
#define RELATED_APPLET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_RELATED_APPLET, RelatedAppletPrivate))
277
RELATED_APPLET_DUMMY_PROPERTY
279
RelatedApplet* related_applet_new (const char* canonical_name, const char* uid, gint panel_id);
280
RelatedApplet* related_applet_construct (GType object_type, const char* canonical_name, const char* uid, gint panel_id);
281
static void related_applet_window_opened (RelatedApplet* self, WnckWindow* window);
282
static void _related_applet_window_opened_wnck_screen_window_opened (WnckScreen* _sender, WnckWindow* window, gpointer self);
283
static void related_applet_window_changed (RelatedApplet* self, WnckWindow* old_window);
284
static void _related_applet_window_changed_wnck_screen_active_window_changed (WnckScreen* _sender, WnckWindow* previous_window, gpointer self);
285
static void related_applet_on_clicked (RelatedApplet* self);
286
static void _related_applet_on_clicked_awn_applet_simple_clicked (AwnAppletSimple* _sender, gpointer self);
287
static void related_applet_update_star (RelatedApplet* self, const char* desktop_file, GAsyncReadyCallback _callback_, gpointer _user_data_);
288
static void related_applet_update_star_finish (RelatedApplet* self, GAsyncResult* _res_);
289
static void related_applet_update_star_data_free (gpointer _data);
290
static void related_applet_update_star_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
291
static gboolean related_applet_update_star_co (RelatedAppletUpdateStarData* data);
292
static void _g_list_free_g_object_unref (GList* self);
293
static void related_applet_get_recent_by_mimetype_data_free (gpointer _data);
294
static char** _vala_array_dup2 (char** self, int length);
295
static void related_applet_get_recent_by_mimetype_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
296
static void related_applet_get_recent_by_mimetype (RelatedApplet* self, char** mimetypes, int mimetypes_length1, GAsyncReadyCallback _callback_, gpointer _user_data_);
297
static gboolean related_applet_get_recent_by_mimetype_finish (RelatedApplet* self, GAsyncResult* _res_);
298
static gboolean related_applet_get_recent_by_mimetype_co (RelatedAppletGetRecentByMimetypeData* data);
299
static gboolean related_applet_push_result (RelatedApplet* self, ZeitgeistEvent* event, ZeitgeistSubject* subject);
300
static void related_applet_get_events_for_actor_data_free (gpointer _data);
301
static void related_applet_get_events_for_actor_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
302
static void related_applet_get_events_for_actor (RelatedApplet* self, const char* actor, GAsyncReadyCallback _callback_, gpointer _user_data_);
303
static gboolean related_applet_get_events_for_actor_finish (RelatedApplet* self, GAsyncResult* _res_);
304
static gboolean related_applet_get_events_for_actor_co (RelatedAppletGetEventsForActorData* data);
305
static void related_applet_build_dialog_data_free (gpointer _data);
306
static void related_applet_build_dialog_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
307
static void related_applet_build_dialog (RelatedApplet* self, const char* desktop_file, GAsyncReadyCallback _callback_, gpointer _user_data_);
308
static void related_applet_build_dialog_finish (RelatedApplet* self, GAsyncResult* _res_);
309
static gboolean related_applet_build_dialog_co (RelatedAppletBuildDialogData* data);
310
static void _lambda0_ (Block1Data* _data1_);
311
static void _g_list_free_g_free (GList* self);
312
static void __lambda0__gtk_button_clicked (GtkButton* _sender, gpointer self);
313
static Block1Data* block1_data_ref (Block1Data* _data1_);
314
static void block1_data_unref (Block1Data* _data1_);
315
static GObject * related_applet_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
316
static void related_applet_finalize (GObject* obj);
317
AwnApplet* awn_applet_factory_initp (const char* canonical_name, const char* uid, gint panel_id);
318
static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
319
static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
320
static int _vala_strcmp0 (const char * str1, const char * str2);
322
static const DBusObjectPathVTable _wnck_sync_matcher_dbus_path_vtable = {_wnck_sync_matcher_dbus_unregister, wnck_sync_matcher_dbus_message};
323
static const _DBusObjectVTable _wnck_sync_matcher_dbus_vtable = {wnck_sync_matcher_dbus_register_object};
326
char* wnck_sync_matcher_desktop_file_for_xid (WnckSyncMatcher* self, guint32 xid, GError** error) {
327
return WNCK_SYNC_MATCHER_GET_INTERFACE (self)->desktop_file_for_xid (self, xid, error);
331
gboolean wnck_sync_matcher_window_match_is_ready (WnckSyncMatcher* self, guint32 xid, GError** error) {
332
return WNCK_SYNC_MATCHER_GET_INTERFACE (self)->window_match_is_ready (self, xid, error);
336
void wnck_sync_matcher_register_desktop_file_for_pid (WnckSyncMatcher* self, const char* filename, gint32 pid, GError** error) {
337
WNCK_SYNC_MATCHER_GET_INTERFACE (self)->register_desktop_file_for_pid (self, filename, pid, error);
341
guint32* wnck_sync_matcher_xids_for_desktop_file (WnckSyncMatcher* self, const char* filename, int* result_length1, GError** error) {
342
return WNCK_SYNC_MATCHER_GET_INTERFACE (self)->xids_for_desktop_file (self, filename, result_length1, error);
346
static void _vala_dbus_register_object (DBusConnection* connection, const char* path, void* object) {
347
const _DBusObjectVTable * vtable;
348
vtable = g_type_get_qdata (G_TYPE_FROM_INSTANCE (object), g_quark_from_static_string ("DBusObjectVTable"));
350
vtable->register_object (connection, path, object);
352
g_warning ("Object does not implement any D-Bus interface");
357
static void _vala_dbus_unregister_object (gpointer connection, GObject* object) {
359
path = g_object_steal_data ((GObject*) object, "dbus_object_path");
360
dbus_connection_unregister_object_path (connection, path);
365
void _wnck_sync_matcher_dbus_unregister (DBusConnection* connection, void* _user_data_) {
369
static DBusHandlerResult _dbus_wnck_sync_matcher_introspect (WnckSyncMatcher* self, DBusConnection* connection, DBusMessage* message) {
371
DBusMessageIter iter;
375
reply = dbus_message_new_method_return (message);
376
dbus_message_iter_init_append (reply, &iter);
377
xml_data = g_string_new ("<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\" \"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\n");
378
g_string_append (xml_data, "<node>\n<interface name=\"org.freedesktop.DBus.Introspectable\">\n <method name=\"Introspect\">\n <arg name=\"data\" direction=\"out\" type=\"s\"/>\n </method>\n</interface>\n<interface name=\"org.freedesktop.DBus.Properties\">\n <method name=\"Get\">\n <arg name=\"interface\" direction=\"in\" type=\"s\"/>\n <arg name=\"propname\" direction=\"in\" type=\"s\"/>\n <arg name=\"value\" direction=\"out\" type=\"v\"/>\n </method>\n <method name=\"Set\">\n <arg name=\"interface\" direction=\"in\" type=\"s\"/>\n <arg name=\"propname\" direction=\"in\" type=\"s\"/>\n <arg name=\"value\" direction=\"in\" type=\"v\"/>\n </method>\n <method name=\"GetAll\">\n <arg name=\"interface\" direction=\"in\" type=\"s\"/>\n <arg name=\"props\" direction=\"out\" type=\"a{sv}\"/>\n </method>\n</interface>\n<interface name=\"org.wncksync.Matcher\">\n <method name=\"DesktopFileForXid\">\n <arg name=\"xid\" type=\"u\" direction=\"in\"/>\n <arg name=\"result\" type=\"s\" direction=\"out\"/>\n </method>\n <method name=\"WindowMatchIsReady\">\n <arg name=\"xid\" type=\"u\" direction=\"in\"/>\n <arg name=\"result\" type=\"b\" direction=\"out\"/>\n </method>\n <method name=\"RegisterDesktopFileForPid\">\n <arg name=\"filename\" type=\"s\" direction=\"in\"/>\n <arg name=\"pid\" type=\"i\" direction=\"in\"/>\n </method>\n <method name=\"XidsForDesktopFile\">\n <arg name=\"filename\" type=\"s\" direction=\"in\"/>\n <arg name=\"result\" type=\"au\" direction=\"out\"/>\n </method>\n</interface>\n");
379
dbus_connection_list_registered (connection, g_object_get_data ((GObject *) self, "dbus_object_path"), &children);
380
for (i = 0; children[i]; i++) {
381
g_string_append_printf (xml_data, "<node name=\"%s\"/>\n", children[i]);
383
dbus_free_string_array (children);
384
g_string_append (xml_data, "</node>\n");
385
dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &xml_data->str);
386
g_string_free (xml_data, TRUE);
388
dbus_connection_send (connection, reply, NULL);
389
dbus_message_unref (reply);
390
return DBUS_HANDLER_RESULT_HANDLED;
392
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
397
static DBusHandlerResult _dbus_wnck_sync_matcher_property_get_all (WnckSyncMatcher* self, DBusConnection* connection, DBusMessage* message) {
399
DBusMessageIter iter, reply_iter, subiter;
400
char* interface_name;
402
if (strcmp (dbus_message_get_signature (message), "s")) {
403
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
405
dbus_message_iter_init (message, &iter);
406
reply = dbus_message_new_method_return (message);
407
dbus_message_iter_init_append (reply, &reply_iter);
408
dbus_message_iter_get_basic (&iter, &_tmp0_);
409
dbus_message_iter_next (&iter);
410
interface_name = g_strdup (_tmp0_);
411
if (strcmp (interface_name, "org.wncksync.Matcher") == 0) {
412
dbus_message_iter_open_container (&reply_iter, DBUS_TYPE_ARRAY, "{sv}", &subiter);
413
dbus_message_iter_close_container (&reply_iter, &subiter);
415
dbus_message_unref (reply);
418
g_free (interface_name);
420
dbus_connection_send (connection, reply, NULL);
421
dbus_message_unref (reply);
422
return DBUS_HANDLER_RESULT_HANDLED;
424
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
429
static DBusHandlerResult _dbus_wnck_sync_matcher_desktop_file_for_xid (WnckSyncMatcher* self, DBusConnection* connection, DBusMessage* message) {
430
DBusMessageIter iter;
433
dbus_uint32_t _tmp1_;
438
if (strcmp (dbus_message_get_signature (message), "u")) {
439
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
441
dbus_message_iter_init (message, &iter);
442
dbus_message_iter_get_basic (&iter, &_tmp1_);
443
dbus_message_iter_next (&iter);
445
result = wnck_sync_matcher_desktop_file_for_xid (self, xid, &error);
447
if (error->domain == DBUS_GERROR) {
448
switch (error->code) {
449
case DBUS_GERROR_FAILED:
450
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Failed", error->message);
452
case DBUS_GERROR_NO_MEMORY:
453
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NoMemory", error->message);
455
case DBUS_GERROR_SERVICE_UNKNOWN:
456
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.ServiceUnknown", error->message);
458
case DBUS_GERROR_NAME_HAS_NO_OWNER:
459
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NameHasNoOwner", error->message);
461
case DBUS_GERROR_NO_REPLY:
462
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NoReply", error->message);
464
case DBUS_GERROR_IO_ERROR:
465
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.IOError", error->message);
467
case DBUS_GERROR_BAD_ADDRESS:
468
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.BadAddress", error->message);
470
case DBUS_GERROR_NOT_SUPPORTED:
471
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NotSupported", error->message);
473
case DBUS_GERROR_LIMITS_EXCEEDED:
474
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.LimitsExceeded", error->message);
476
case DBUS_GERROR_ACCESS_DENIED:
477
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.AccessDenied", error->message);
479
case DBUS_GERROR_AUTH_FAILED:
480
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.AuthFailed", error->message);
482
case DBUS_GERROR_NO_SERVER:
483
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NoServer", error->message);
485
case DBUS_GERROR_TIMEOUT:
486
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Timeout", error->message);
488
case DBUS_GERROR_NO_NETWORK:
489
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NoNetwork", error->message);
491
case DBUS_GERROR_ADDRESS_IN_USE:
492
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.AddressInUse", error->message);
494
case DBUS_GERROR_DISCONNECTED:
495
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Disconnected", error->message);
497
case DBUS_GERROR_INVALID_ARGS:
498
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.InvalidArgs", error->message);
500
case DBUS_GERROR_FILE_NOT_FOUND:
501
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.FileNotFound", error->message);
503
case DBUS_GERROR_FILE_EXISTS:
504
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.FileExists", error->message);
506
case DBUS_GERROR_UNKNOWN_METHOD:
507
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.UnknownMethod", error->message);
509
case DBUS_GERROR_TIMED_OUT:
510
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.TimedOut", error->message);
512
case DBUS_GERROR_MATCH_RULE_NOT_FOUND:
513
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.MatchRuleNotFound", error->message);
515
case DBUS_GERROR_MATCH_RULE_INVALID:
516
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.MatchRuleInvalid", error->message);
518
case DBUS_GERROR_SPAWN_EXEC_FAILED:
519
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Spawn.ExecFailed", error->message);
521
case DBUS_GERROR_SPAWN_FORK_FAILED:
522
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Spawn.ForkFailed", error->message);
524
case DBUS_GERROR_SPAWN_CHILD_EXITED:
525
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Spawn.ChildExited", error->message);
527
case DBUS_GERROR_SPAWN_CHILD_SIGNALED:
528
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Spawn.ChildSignaled", error->message);
530
case DBUS_GERROR_SPAWN_FAILED:
531
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Spawn.Failed", error->message);
533
case DBUS_GERROR_UNIX_PROCESS_ID_UNKNOWN:
534
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.UnixProcessIdUnknown", error->message);
536
case DBUS_GERROR_INVALID_SIGNATURE:
537
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.InvalidSignature", error->message);
539
case DBUS_GERROR_INVALID_FILE_CONTENT:
540
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.InvalidFileContent", error->message);
542
case DBUS_GERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN:
543
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.SELinuxSecurityContextUnknown", error->message);
545
case DBUS_GERROR_REMOTE_EXCEPTION:
546
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.RemoteException", error->message);
550
dbus_connection_send (connection, reply, NULL);
551
dbus_message_unref (reply);
552
return DBUS_HANDLER_RESULT_HANDLED;
554
reply = dbus_message_new_method_return (message);
555
dbus_message_iter_init_append (reply, &iter);
557
dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp2_);
560
dbus_connection_send (connection, reply, NULL);
561
dbus_message_unref (reply);
562
return DBUS_HANDLER_RESULT_HANDLED;
564
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
569
static DBusHandlerResult _dbus_wnck_sync_matcher_window_match_is_ready (WnckSyncMatcher* self, DBusConnection* connection, DBusMessage* message) {
570
DBusMessageIter iter;
573
dbus_uint32_t _tmp3_;
578
if (strcmp (dbus_message_get_signature (message), "u")) {
579
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
581
dbus_message_iter_init (message, &iter);
582
dbus_message_iter_get_basic (&iter, &_tmp3_);
583
dbus_message_iter_next (&iter);
585
result = wnck_sync_matcher_window_match_is_ready (self, xid, &error);
587
if (error->domain == DBUS_GERROR) {
588
switch (error->code) {
589
case DBUS_GERROR_FAILED:
590
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Failed", error->message);
592
case DBUS_GERROR_NO_MEMORY:
593
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NoMemory", error->message);
595
case DBUS_GERROR_SERVICE_UNKNOWN:
596
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.ServiceUnknown", error->message);
598
case DBUS_GERROR_NAME_HAS_NO_OWNER:
599
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NameHasNoOwner", error->message);
601
case DBUS_GERROR_NO_REPLY:
602
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NoReply", error->message);
604
case DBUS_GERROR_IO_ERROR:
605
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.IOError", error->message);
607
case DBUS_GERROR_BAD_ADDRESS:
608
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.BadAddress", error->message);
610
case DBUS_GERROR_NOT_SUPPORTED:
611
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NotSupported", error->message);
613
case DBUS_GERROR_LIMITS_EXCEEDED:
614
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.LimitsExceeded", error->message);
616
case DBUS_GERROR_ACCESS_DENIED:
617
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.AccessDenied", error->message);
619
case DBUS_GERROR_AUTH_FAILED:
620
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.AuthFailed", error->message);
622
case DBUS_GERROR_NO_SERVER:
623
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NoServer", error->message);
625
case DBUS_GERROR_TIMEOUT:
626
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Timeout", error->message);
628
case DBUS_GERROR_NO_NETWORK:
629
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NoNetwork", error->message);
631
case DBUS_GERROR_ADDRESS_IN_USE:
632
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.AddressInUse", error->message);
634
case DBUS_GERROR_DISCONNECTED:
635
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Disconnected", error->message);
637
case DBUS_GERROR_INVALID_ARGS:
638
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.InvalidArgs", error->message);
640
case DBUS_GERROR_FILE_NOT_FOUND:
641
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.FileNotFound", error->message);
643
case DBUS_GERROR_FILE_EXISTS:
644
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.FileExists", error->message);
646
case DBUS_GERROR_UNKNOWN_METHOD:
647
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.UnknownMethod", error->message);
649
case DBUS_GERROR_TIMED_OUT:
650
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.TimedOut", error->message);
652
case DBUS_GERROR_MATCH_RULE_NOT_FOUND:
653
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.MatchRuleNotFound", error->message);
655
case DBUS_GERROR_MATCH_RULE_INVALID:
656
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.MatchRuleInvalid", error->message);
658
case DBUS_GERROR_SPAWN_EXEC_FAILED:
659
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Spawn.ExecFailed", error->message);
661
case DBUS_GERROR_SPAWN_FORK_FAILED:
662
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Spawn.ForkFailed", error->message);
664
case DBUS_GERROR_SPAWN_CHILD_EXITED:
665
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Spawn.ChildExited", error->message);
667
case DBUS_GERROR_SPAWN_CHILD_SIGNALED:
668
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Spawn.ChildSignaled", error->message);
670
case DBUS_GERROR_SPAWN_FAILED:
671
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Spawn.Failed", error->message);
673
case DBUS_GERROR_UNIX_PROCESS_ID_UNKNOWN:
674
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.UnixProcessIdUnknown", error->message);
676
case DBUS_GERROR_INVALID_SIGNATURE:
677
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.InvalidSignature", error->message);
679
case DBUS_GERROR_INVALID_FILE_CONTENT:
680
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.InvalidFileContent", error->message);
682
case DBUS_GERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN:
683
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.SELinuxSecurityContextUnknown", error->message);
685
case DBUS_GERROR_REMOTE_EXCEPTION:
686
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.RemoteException", error->message);
690
dbus_connection_send (connection, reply, NULL);
691
dbus_message_unref (reply);
692
return DBUS_HANDLER_RESULT_HANDLED;
694
reply = dbus_message_new_method_return (message);
695
dbus_message_iter_init_append (reply, &iter);
697
dbus_message_iter_append_basic (&iter, DBUS_TYPE_BOOLEAN, &_tmp4_);
699
dbus_connection_send (connection, reply, NULL);
700
dbus_message_unref (reply);
701
return DBUS_HANDLER_RESULT_HANDLED;
703
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
708
static DBusHandlerResult _dbus_wnck_sync_matcher_register_desktop_file_for_pid (WnckSyncMatcher* self, DBusConnection* connection, DBusMessage* message) {
709
DBusMessageIter iter;
711
char* filename = NULL;
717
if (strcmp (dbus_message_get_signature (message), "si")) {
718
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
720
dbus_message_iter_init (message, &iter);
721
dbus_message_iter_get_basic (&iter, &_tmp5_);
722
dbus_message_iter_next (&iter);
723
filename = g_strdup (_tmp5_);
724
dbus_message_iter_get_basic (&iter, &_tmp6_);
725
dbus_message_iter_next (&iter);
727
wnck_sync_matcher_register_desktop_file_for_pid (self, filename, pid, &error);
729
if (error->domain == DBUS_GERROR) {
730
switch (error->code) {
731
case DBUS_GERROR_FAILED:
732
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Failed", error->message);
734
case DBUS_GERROR_NO_MEMORY:
735
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NoMemory", error->message);
737
case DBUS_GERROR_SERVICE_UNKNOWN:
738
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.ServiceUnknown", error->message);
740
case DBUS_GERROR_NAME_HAS_NO_OWNER:
741
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NameHasNoOwner", error->message);
743
case DBUS_GERROR_NO_REPLY:
744
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NoReply", error->message);
746
case DBUS_GERROR_IO_ERROR:
747
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.IOError", error->message);
749
case DBUS_GERROR_BAD_ADDRESS:
750
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.BadAddress", error->message);
752
case DBUS_GERROR_NOT_SUPPORTED:
753
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NotSupported", error->message);
755
case DBUS_GERROR_LIMITS_EXCEEDED:
756
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.LimitsExceeded", error->message);
758
case DBUS_GERROR_ACCESS_DENIED:
759
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.AccessDenied", error->message);
761
case DBUS_GERROR_AUTH_FAILED:
762
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.AuthFailed", error->message);
764
case DBUS_GERROR_NO_SERVER:
765
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NoServer", error->message);
767
case DBUS_GERROR_TIMEOUT:
768
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Timeout", error->message);
770
case DBUS_GERROR_NO_NETWORK:
771
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NoNetwork", error->message);
773
case DBUS_GERROR_ADDRESS_IN_USE:
774
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.AddressInUse", error->message);
776
case DBUS_GERROR_DISCONNECTED:
777
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Disconnected", error->message);
779
case DBUS_GERROR_INVALID_ARGS:
780
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.InvalidArgs", error->message);
782
case DBUS_GERROR_FILE_NOT_FOUND:
783
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.FileNotFound", error->message);
785
case DBUS_GERROR_FILE_EXISTS:
786
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.FileExists", error->message);
788
case DBUS_GERROR_UNKNOWN_METHOD:
789
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.UnknownMethod", error->message);
791
case DBUS_GERROR_TIMED_OUT:
792
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.TimedOut", error->message);
794
case DBUS_GERROR_MATCH_RULE_NOT_FOUND:
795
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.MatchRuleNotFound", error->message);
797
case DBUS_GERROR_MATCH_RULE_INVALID:
798
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.MatchRuleInvalid", error->message);
800
case DBUS_GERROR_SPAWN_EXEC_FAILED:
801
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Spawn.ExecFailed", error->message);
803
case DBUS_GERROR_SPAWN_FORK_FAILED:
804
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Spawn.ForkFailed", error->message);
806
case DBUS_GERROR_SPAWN_CHILD_EXITED:
807
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Spawn.ChildExited", error->message);
809
case DBUS_GERROR_SPAWN_CHILD_SIGNALED:
810
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Spawn.ChildSignaled", error->message);
812
case DBUS_GERROR_SPAWN_FAILED:
813
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Spawn.Failed", error->message);
815
case DBUS_GERROR_UNIX_PROCESS_ID_UNKNOWN:
816
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.UnixProcessIdUnknown", error->message);
818
case DBUS_GERROR_INVALID_SIGNATURE:
819
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.InvalidSignature", error->message);
821
case DBUS_GERROR_INVALID_FILE_CONTENT:
822
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.InvalidFileContent", error->message);
824
case DBUS_GERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN:
825
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.SELinuxSecurityContextUnknown", error->message);
827
case DBUS_GERROR_REMOTE_EXCEPTION:
828
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.RemoteException", error->message);
832
dbus_connection_send (connection, reply, NULL);
833
dbus_message_unref (reply);
834
return DBUS_HANDLER_RESULT_HANDLED;
836
reply = dbus_message_new_method_return (message);
837
dbus_message_iter_init_append (reply, &iter);
840
dbus_connection_send (connection, reply, NULL);
841
dbus_message_unref (reply);
842
return DBUS_HANDLER_RESULT_HANDLED;
844
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
849
static DBusHandlerResult _dbus_wnck_sync_matcher_xids_for_desktop_file (WnckSyncMatcher* self, DBusConnection* connection, DBusMessage* message) {
850
DBusMessageIter iter;
852
char* filename = NULL;
858
DBusMessageIter _tmp9_;
861
if (strcmp (dbus_message_get_signature (message), "s")) {
862
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
864
dbus_message_iter_init (message, &iter);
865
dbus_message_iter_get_basic (&iter, &_tmp7_);
866
dbus_message_iter_next (&iter);
867
filename = g_strdup (_tmp7_);
869
result = wnck_sync_matcher_xids_for_desktop_file (self, filename, &result_length1, &error);
871
if (error->domain == DBUS_GERROR) {
872
switch (error->code) {
873
case DBUS_GERROR_FAILED:
874
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Failed", error->message);
876
case DBUS_GERROR_NO_MEMORY:
877
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NoMemory", error->message);
879
case DBUS_GERROR_SERVICE_UNKNOWN:
880
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.ServiceUnknown", error->message);
882
case DBUS_GERROR_NAME_HAS_NO_OWNER:
883
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NameHasNoOwner", error->message);
885
case DBUS_GERROR_NO_REPLY:
886
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NoReply", error->message);
888
case DBUS_GERROR_IO_ERROR:
889
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.IOError", error->message);
891
case DBUS_GERROR_BAD_ADDRESS:
892
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.BadAddress", error->message);
894
case DBUS_GERROR_NOT_SUPPORTED:
895
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NotSupported", error->message);
897
case DBUS_GERROR_LIMITS_EXCEEDED:
898
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.LimitsExceeded", error->message);
900
case DBUS_GERROR_ACCESS_DENIED:
901
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.AccessDenied", error->message);
903
case DBUS_GERROR_AUTH_FAILED:
904
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.AuthFailed", error->message);
906
case DBUS_GERROR_NO_SERVER:
907
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NoServer", error->message);
909
case DBUS_GERROR_TIMEOUT:
910
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Timeout", error->message);
912
case DBUS_GERROR_NO_NETWORK:
913
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.NoNetwork", error->message);
915
case DBUS_GERROR_ADDRESS_IN_USE:
916
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.AddressInUse", error->message);
918
case DBUS_GERROR_DISCONNECTED:
919
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Disconnected", error->message);
921
case DBUS_GERROR_INVALID_ARGS:
922
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.InvalidArgs", error->message);
924
case DBUS_GERROR_FILE_NOT_FOUND:
925
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.FileNotFound", error->message);
927
case DBUS_GERROR_FILE_EXISTS:
928
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.FileExists", error->message);
930
case DBUS_GERROR_UNKNOWN_METHOD:
931
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.UnknownMethod", error->message);
933
case DBUS_GERROR_TIMED_OUT:
934
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.TimedOut", error->message);
936
case DBUS_GERROR_MATCH_RULE_NOT_FOUND:
937
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.MatchRuleNotFound", error->message);
939
case DBUS_GERROR_MATCH_RULE_INVALID:
940
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.MatchRuleInvalid", error->message);
942
case DBUS_GERROR_SPAWN_EXEC_FAILED:
943
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Spawn.ExecFailed", error->message);
945
case DBUS_GERROR_SPAWN_FORK_FAILED:
946
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Spawn.ForkFailed", error->message);
948
case DBUS_GERROR_SPAWN_CHILD_EXITED:
949
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Spawn.ChildExited", error->message);
951
case DBUS_GERROR_SPAWN_CHILD_SIGNALED:
952
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Spawn.ChildSignaled", error->message);
954
case DBUS_GERROR_SPAWN_FAILED:
955
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.Spawn.Failed", error->message);
957
case DBUS_GERROR_UNIX_PROCESS_ID_UNKNOWN:
958
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.UnixProcessIdUnknown", error->message);
960
case DBUS_GERROR_INVALID_SIGNATURE:
961
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.InvalidSignature", error->message);
963
case DBUS_GERROR_INVALID_FILE_CONTENT:
964
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.InvalidFileContent", error->message);
966
case DBUS_GERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN:
967
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.SELinuxSecurityContextUnknown", error->message);
969
case DBUS_GERROR_REMOTE_EXCEPTION:
970
reply = dbus_message_new_error (message, "org.freedesktop.DBus.Error.RemoteException", error->message);
974
dbus_connection_send (connection, reply, NULL);
975
dbus_message_unref (reply);
976
return DBUS_HANDLER_RESULT_HANDLED;
978
reply = dbus_message_new_method_return (message);
979
dbus_message_iter_init_append (reply, &iter);
982
dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "u", &_tmp9_);
983
for (_tmp10_ = 0; _tmp10_ < result_length1; _tmp10_++) {
984
dbus_uint32_t _tmp11_;
986
dbus_message_iter_append_basic (&_tmp9_, DBUS_TYPE_UINT32, &_tmp11_);
989
dbus_message_iter_close_container (&iter, &_tmp9_);
990
result = (g_free (result), NULL);
992
dbus_connection_send (connection, reply, NULL);
993
dbus_message_unref (reply);
994
return DBUS_HANDLER_RESULT_HANDLED;
996
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
1001
DBusHandlerResult wnck_sync_matcher_dbus_message (DBusConnection* connection, DBusMessage* message, void* object) {
1002
DBusHandlerResult result;
1003
result = DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
1004
if (dbus_message_is_method_call (message, "org.freedesktop.DBus.Introspectable", "Introspect")) {
1005
result = _dbus_wnck_sync_matcher_introspect (object, connection, message);
1006
} else if (dbus_message_is_method_call (message, "org.freedesktop.DBus.Properties", "GetAll")) {
1007
result = _dbus_wnck_sync_matcher_property_get_all (object, connection, message);
1008
} else if (dbus_message_is_method_call (message, "org.wncksync.Matcher", "DesktopFileForXid")) {
1009
result = _dbus_wnck_sync_matcher_desktop_file_for_xid (object, connection, message);
1010
} else if (dbus_message_is_method_call (message, "org.wncksync.Matcher", "WindowMatchIsReady")) {
1011
result = _dbus_wnck_sync_matcher_window_match_is_ready (object, connection, message);
1012
} else if (dbus_message_is_method_call (message, "org.wncksync.Matcher", "RegisterDesktopFileForPid")) {
1013
result = _dbus_wnck_sync_matcher_register_desktop_file_for_pid (object, connection, message);
1014
} else if (dbus_message_is_method_call (message, "org.wncksync.Matcher", "XidsForDesktopFile")) {
1015
result = _dbus_wnck_sync_matcher_xids_for_desktop_file (object, connection, message);
1017
if (result == DBUS_HANDLER_RESULT_HANDLED) {
1020
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
1025
void wnck_sync_matcher_dbus_register_object (DBusConnection* connection, const char* path, void* object) {
1026
if (!g_object_get_data (object, "dbus_object_path")) {
1027
g_object_set_data (object, "dbus_object_path", g_strdup (path));
1028
dbus_connection_register_object_path (connection, path, &_wnck_sync_matcher_dbus_path_vtable, object);
1029
g_object_weak_ref (object, _vala_dbus_unregister_object, connection);
1034
static void wnck_sync_matcher_base_init (WnckSyncMatcherIface * iface) {
1035
static gboolean initialized = FALSE;
1038
g_type_set_qdata (TYPE_WNCK_SYNC_MATCHER, g_quark_from_static_string ("DBusObjectVTable"), (void*) (&_wnck_sync_matcher_dbus_vtable));
1043
GType wnck_sync_matcher_get_type (void) {
1044
static volatile gsize wnck_sync_matcher_type_id__volatile = 0;
1045
if (g_once_init_enter (&wnck_sync_matcher_type_id__volatile)) {
1046
static const GTypeInfo g_define_type_info = { sizeof (WnckSyncMatcherIface), (GBaseInitFunc) wnck_sync_matcher_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
1047
GType wnck_sync_matcher_type_id;
1048
wnck_sync_matcher_type_id = g_type_register_static (G_TYPE_INTERFACE, "WnckSyncMatcher", &g_define_type_info, 0);
1049
g_type_interface_add_prerequisite (wnck_sync_matcher_type_id, G_TYPE_OBJECT);
1050
g_type_set_qdata (wnck_sync_matcher_type_id, g_quark_from_string ("ValaDBusInterfaceProxyType"), &wnck_sync_matcher_dbus_proxy_get_type);
1051
g_once_init_leave (&wnck_sync_matcher_type_id__volatile, wnck_sync_matcher_type_id);
1053
return wnck_sync_matcher_type_id__volatile;
1057
G_DEFINE_TYPE_EXTENDED (WnckSyncMatcherDBusProxy, wnck_sync_matcher_dbus_proxy, DBUS_TYPE_G_PROXY, 0, G_IMPLEMENT_INTERFACE (TYPE_WNCK_SYNC_MATCHER, wnck_sync_matcher_dbus_proxy_wnck_sync_matcher__interface_init) );
1058
WnckSyncMatcher* wnck_sync_matcher_dbus_proxy_new (DBusGConnection* connection, const char* name, const char* path) {
1059
WnckSyncMatcher* self;
1060
self = g_object_new (wnck_sync_matcher_dbus_proxy_get_type (), "connection", connection, "name", name, "path", path, "interface", "org.wncksync.Matcher", NULL);
1065
static GObject* wnck_sync_matcher_dbus_proxy_construct (GType gtype, guint n_properties, GObjectConstructParam* properties) {
1067
DBusGConnection *connection;
1070
self = G_OBJECT_CLASS (wnck_sync_matcher_dbus_proxy_parent_class)->constructor (gtype, n_properties, properties);
1071
g_object_get (self, "connection", &connection, NULL);
1072
g_object_get (self, "path", &path, NULL);
1073
dbus_connection_add_filter (dbus_g_connection_get_connection (connection), wnck_sync_matcher_dbus_proxy_filter, self, NULL);
1074
filter = g_strdup_printf ("type='signal',path='%s'", path);
1075
dbus_bus_add_match (dbus_g_connection_get_connection (connection), filter, NULL);
1076
dbus_g_connection_unref (connection);
1083
DBusHandlerResult wnck_sync_matcher_dbus_proxy_filter (DBusConnection* connection, DBusMessage* message, void* user_data) {
1084
if (dbus_message_has_path (message, dbus_g_proxy_get_path (user_data))) {
1086
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
1090
static void wnck_sync_matcher_dbus_proxy_dispose (GObject* self) {
1091
DBusGConnection *connection;
1092
if (((WnckSyncMatcherDBusProxy*) self)->disposed) {
1095
((WnckSyncMatcherDBusProxy*) self)->disposed = TRUE;
1096
g_object_get (self, "connection", &connection, NULL);
1097
dbus_connection_remove_filter (dbus_g_connection_get_connection (connection), wnck_sync_matcher_dbus_proxy_filter, self);
1098
G_OBJECT_CLASS (wnck_sync_matcher_dbus_proxy_parent_class)->dispose (self);
1102
static void wnck_sync_matcher_dbus_proxy_class_init (WnckSyncMatcherDBusProxyClass* klass) {
1103
G_OBJECT_CLASS (klass)->constructor = wnck_sync_matcher_dbus_proxy_construct;
1104
G_OBJECT_CLASS (klass)->dispose = wnck_sync_matcher_dbus_proxy_dispose;
1105
G_OBJECT_CLASS (klass)->get_property = wnck_sync_matcher_dbus_proxy_get_property;
1106
G_OBJECT_CLASS (klass)->set_property = wnck_sync_matcher_dbus_proxy_set_property;
1110
static void wnck_sync_matcher_dbus_proxy_init (WnckSyncMatcherDBusProxy* self) {
1114
static char* wnck_sync_matcher_dbus_proxy_desktop_file_for_xid (WnckSyncMatcher* self, guint32 xid, GError** error) {
1115
DBusError _dbus_error;
1116
DBusGConnection *_connection;
1117
DBusMessage *_message, *_reply;
1118
DBusMessageIter _iter;
1119
dbus_uint32_t _tmp0_;
1122
if (((WnckSyncMatcherDBusProxy*) self)->disposed) {
1123
g_set_error (error, DBUS_GERROR, DBUS_GERROR_DISCONNECTED, "%s", "Connection is closed");
1126
_message = dbus_message_new_method_call (dbus_g_proxy_get_bus_name ((DBusGProxy*) self), dbus_g_proxy_get_path ((DBusGProxy*) self), "org.wncksync.Matcher", "DesktopFileForXid");
1127
dbus_message_iter_init_append (_message, &_iter);
1129
dbus_message_iter_append_basic (&_iter, DBUS_TYPE_UINT32, &_tmp0_);
1130
g_object_get (self, "connection", &_connection, NULL);
1131
dbus_error_init (&_dbus_error);
1132
_reply = dbus_connection_send_with_reply_and_block (dbus_g_connection_get_connection (_connection), _message, -1, &_dbus_error);
1133
dbus_g_connection_unref (_connection);
1134
dbus_message_unref (_message);
1135
if (dbus_error_is_set (&_dbus_error)) {
1138
if (strstr (_dbus_error.name, "org.freedesktop.DBus.Error") == _dbus_error.name) {
1140
_edomain = DBUS_GERROR;
1141
_tmp2_ = _dbus_error.name + 27;
1142
if (strcmp (_tmp2_, "Failed") == 0) {
1143
_ecode = DBUS_GERROR_FAILED;
1144
} else if (strcmp (_tmp2_, "NoMemory") == 0) {
1145
_ecode = DBUS_GERROR_NO_MEMORY;
1146
} else if (strcmp (_tmp2_, "ServiceUnknown") == 0) {
1147
_ecode = DBUS_GERROR_SERVICE_UNKNOWN;
1148
} else if (strcmp (_tmp2_, "NameHasNoOwner") == 0) {
1149
_ecode = DBUS_GERROR_NAME_HAS_NO_OWNER;
1150
} else if (strcmp (_tmp2_, "NoReply") == 0) {
1151
_ecode = DBUS_GERROR_NO_REPLY;
1152
} else if (strcmp (_tmp2_, "IOError") == 0) {
1153
_ecode = DBUS_GERROR_IO_ERROR;
1154
} else if (strcmp (_tmp2_, "BadAddress") == 0) {
1155
_ecode = DBUS_GERROR_BAD_ADDRESS;
1156
} else if (strcmp (_tmp2_, "NotSupported") == 0) {
1157
_ecode = DBUS_GERROR_NOT_SUPPORTED;
1158
} else if (strcmp (_tmp2_, "LimitsExceeded") == 0) {
1159
_ecode = DBUS_GERROR_LIMITS_EXCEEDED;
1160
} else if (strcmp (_tmp2_, "AccessDenied") == 0) {
1161
_ecode = DBUS_GERROR_ACCESS_DENIED;
1162
} else if (strcmp (_tmp2_, "AuthFailed") == 0) {
1163
_ecode = DBUS_GERROR_AUTH_FAILED;
1164
} else if (strcmp (_tmp2_, "NoServer") == 0) {
1165
_ecode = DBUS_GERROR_NO_SERVER;
1166
} else if (strcmp (_tmp2_, "Timeout") == 0) {
1167
_ecode = DBUS_GERROR_TIMEOUT;
1168
} else if (strcmp (_tmp2_, "NoNetwork") == 0) {
1169
_ecode = DBUS_GERROR_NO_NETWORK;
1170
} else if (strcmp (_tmp2_, "AddressInUse") == 0) {
1171
_ecode = DBUS_GERROR_ADDRESS_IN_USE;
1172
} else if (strcmp (_tmp2_, "Disconnected") == 0) {
1173
_ecode = DBUS_GERROR_DISCONNECTED;
1174
} else if (strcmp (_tmp2_, "InvalidArgs") == 0) {
1175
_ecode = DBUS_GERROR_INVALID_ARGS;
1176
} else if (strcmp (_tmp2_, "FileNotFound") == 0) {
1177
_ecode = DBUS_GERROR_FILE_NOT_FOUND;
1178
} else if (strcmp (_tmp2_, "FileExists") == 0) {
1179
_ecode = DBUS_GERROR_FILE_EXISTS;
1180
} else if (strcmp (_tmp2_, "UnknownMethod") == 0) {
1181
_ecode = DBUS_GERROR_UNKNOWN_METHOD;
1182
} else if (strcmp (_tmp2_, "TimedOut") == 0) {
1183
_ecode = DBUS_GERROR_TIMED_OUT;
1184
} else if (strcmp (_tmp2_, "MatchRuleNotFound") == 0) {
1185
_ecode = DBUS_GERROR_MATCH_RULE_NOT_FOUND;
1186
} else if (strcmp (_tmp2_, "MatchRuleInvalid") == 0) {
1187
_ecode = DBUS_GERROR_MATCH_RULE_INVALID;
1188
} else if (strcmp (_tmp2_, "Spawn.ExecFailed") == 0) {
1189
_ecode = DBUS_GERROR_SPAWN_EXEC_FAILED;
1190
} else if (strcmp (_tmp2_, "Spawn.ForkFailed") == 0) {
1191
_ecode = DBUS_GERROR_SPAWN_FORK_FAILED;
1192
} else if (strcmp (_tmp2_, "Spawn.ChildExited") == 0) {
1193
_ecode = DBUS_GERROR_SPAWN_CHILD_EXITED;
1194
} else if (strcmp (_tmp2_, "Spawn.ChildSignaled") == 0) {
1195
_ecode = DBUS_GERROR_SPAWN_CHILD_SIGNALED;
1196
} else if (strcmp (_tmp2_, "Spawn.Failed") == 0) {
1197
_ecode = DBUS_GERROR_SPAWN_FAILED;
1198
} else if (strcmp (_tmp2_, "UnixProcessIdUnknown") == 0) {
1199
_ecode = DBUS_GERROR_UNIX_PROCESS_ID_UNKNOWN;
1200
} else if (strcmp (_tmp2_, "InvalidSignature") == 0) {
1201
_ecode = DBUS_GERROR_INVALID_SIGNATURE;
1202
} else if (strcmp (_tmp2_, "InvalidFileContent") == 0) {
1203
_ecode = DBUS_GERROR_INVALID_FILE_CONTENT;
1204
} else if (strcmp (_tmp2_, "SELinuxSecurityContextUnknown") == 0) {
1205
_ecode = DBUS_GERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN;
1206
} else if (strcmp (_tmp2_, "RemoteException") == 0) {
1207
_ecode = DBUS_GERROR_REMOTE_EXCEPTION;
1210
g_set_error (error, _edomain, _ecode, "%s", _dbus_error.message);
1211
dbus_error_free (&_dbus_error);
1214
if (strcmp (dbus_message_get_signature (_reply), "s")) {
1215
g_set_error (error, DBUS_GERROR, DBUS_GERROR_INVALID_SIGNATURE, "Invalid signature, expected \"%s\", got \"%s\"", "s", dbus_message_get_signature (_reply));
1216
dbus_message_unref (_reply);
1219
dbus_message_iter_init (_reply, &_iter);
1220
dbus_message_iter_get_basic (&_iter, &_tmp1_);
1221
dbus_message_iter_next (&_iter);
1222
_result = g_strdup (_tmp1_);
1223
dbus_message_unref (_reply);
1228
static gboolean wnck_sync_matcher_dbus_proxy_window_match_is_ready (WnckSyncMatcher* self, guint32 xid, GError** error) {
1229
DBusError _dbus_error;
1230
DBusGConnection *_connection;
1231
DBusMessage *_message, *_reply;
1232
DBusMessageIter _iter;
1233
dbus_uint32_t _tmp3_;
1236
if (((WnckSyncMatcherDBusProxy*) self)->disposed) {
1237
g_set_error (error, DBUS_GERROR, DBUS_GERROR_DISCONNECTED, "%s", "Connection is closed");
1240
_message = dbus_message_new_method_call (dbus_g_proxy_get_bus_name ((DBusGProxy*) self), dbus_g_proxy_get_path ((DBusGProxy*) self), "org.wncksync.Matcher", "WindowMatchIsReady");
1241
dbus_message_iter_init_append (_message, &_iter);
1243
dbus_message_iter_append_basic (&_iter, DBUS_TYPE_UINT32, &_tmp3_);
1244
g_object_get (self, "connection", &_connection, NULL);
1245
dbus_error_init (&_dbus_error);
1246
_reply = dbus_connection_send_with_reply_and_block (dbus_g_connection_get_connection (_connection), _message, -1, &_dbus_error);
1247
dbus_g_connection_unref (_connection);
1248
dbus_message_unref (_message);
1249
if (dbus_error_is_set (&_dbus_error)) {
1252
if (strstr (_dbus_error.name, "org.freedesktop.DBus.Error") == _dbus_error.name) {
1254
_edomain = DBUS_GERROR;
1255
_tmp5_ = _dbus_error.name + 27;
1256
if (strcmp (_tmp5_, "Failed") == 0) {
1257
_ecode = DBUS_GERROR_FAILED;
1258
} else if (strcmp (_tmp5_, "NoMemory") == 0) {
1259
_ecode = DBUS_GERROR_NO_MEMORY;
1260
} else if (strcmp (_tmp5_, "ServiceUnknown") == 0) {
1261
_ecode = DBUS_GERROR_SERVICE_UNKNOWN;
1262
} else if (strcmp (_tmp5_, "NameHasNoOwner") == 0) {
1263
_ecode = DBUS_GERROR_NAME_HAS_NO_OWNER;
1264
} else if (strcmp (_tmp5_, "NoReply") == 0) {
1265
_ecode = DBUS_GERROR_NO_REPLY;
1266
} else if (strcmp (_tmp5_, "IOError") == 0) {
1267
_ecode = DBUS_GERROR_IO_ERROR;
1268
} else if (strcmp (_tmp5_, "BadAddress") == 0) {
1269
_ecode = DBUS_GERROR_BAD_ADDRESS;
1270
} else if (strcmp (_tmp5_, "NotSupported") == 0) {
1271
_ecode = DBUS_GERROR_NOT_SUPPORTED;
1272
} else if (strcmp (_tmp5_, "LimitsExceeded") == 0) {
1273
_ecode = DBUS_GERROR_LIMITS_EXCEEDED;
1274
} else if (strcmp (_tmp5_, "AccessDenied") == 0) {
1275
_ecode = DBUS_GERROR_ACCESS_DENIED;
1276
} else if (strcmp (_tmp5_, "AuthFailed") == 0) {
1277
_ecode = DBUS_GERROR_AUTH_FAILED;
1278
} else if (strcmp (_tmp5_, "NoServer") == 0) {
1279
_ecode = DBUS_GERROR_NO_SERVER;
1280
} else if (strcmp (_tmp5_, "Timeout") == 0) {
1281
_ecode = DBUS_GERROR_TIMEOUT;
1282
} else if (strcmp (_tmp5_, "NoNetwork") == 0) {
1283
_ecode = DBUS_GERROR_NO_NETWORK;
1284
} else if (strcmp (_tmp5_, "AddressInUse") == 0) {
1285
_ecode = DBUS_GERROR_ADDRESS_IN_USE;
1286
} else if (strcmp (_tmp5_, "Disconnected") == 0) {
1287
_ecode = DBUS_GERROR_DISCONNECTED;
1288
} else if (strcmp (_tmp5_, "InvalidArgs") == 0) {
1289
_ecode = DBUS_GERROR_INVALID_ARGS;
1290
} else if (strcmp (_tmp5_, "FileNotFound") == 0) {
1291
_ecode = DBUS_GERROR_FILE_NOT_FOUND;
1292
} else if (strcmp (_tmp5_, "FileExists") == 0) {
1293
_ecode = DBUS_GERROR_FILE_EXISTS;
1294
} else if (strcmp (_tmp5_, "UnknownMethod") == 0) {
1295
_ecode = DBUS_GERROR_UNKNOWN_METHOD;
1296
} else if (strcmp (_tmp5_, "TimedOut") == 0) {
1297
_ecode = DBUS_GERROR_TIMED_OUT;
1298
} else if (strcmp (_tmp5_, "MatchRuleNotFound") == 0) {
1299
_ecode = DBUS_GERROR_MATCH_RULE_NOT_FOUND;
1300
} else if (strcmp (_tmp5_, "MatchRuleInvalid") == 0) {
1301
_ecode = DBUS_GERROR_MATCH_RULE_INVALID;
1302
} else if (strcmp (_tmp5_, "Spawn.ExecFailed") == 0) {
1303
_ecode = DBUS_GERROR_SPAWN_EXEC_FAILED;
1304
} else if (strcmp (_tmp5_, "Spawn.ForkFailed") == 0) {
1305
_ecode = DBUS_GERROR_SPAWN_FORK_FAILED;
1306
} else if (strcmp (_tmp5_, "Spawn.ChildExited") == 0) {
1307
_ecode = DBUS_GERROR_SPAWN_CHILD_EXITED;
1308
} else if (strcmp (_tmp5_, "Spawn.ChildSignaled") == 0) {
1309
_ecode = DBUS_GERROR_SPAWN_CHILD_SIGNALED;
1310
} else if (strcmp (_tmp5_, "Spawn.Failed") == 0) {
1311
_ecode = DBUS_GERROR_SPAWN_FAILED;
1312
} else if (strcmp (_tmp5_, "UnixProcessIdUnknown") == 0) {
1313
_ecode = DBUS_GERROR_UNIX_PROCESS_ID_UNKNOWN;
1314
} else if (strcmp (_tmp5_, "InvalidSignature") == 0) {
1315
_ecode = DBUS_GERROR_INVALID_SIGNATURE;
1316
} else if (strcmp (_tmp5_, "InvalidFileContent") == 0) {
1317
_ecode = DBUS_GERROR_INVALID_FILE_CONTENT;
1318
} else if (strcmp (_tmp5_, "SELinuxSecurityContextUnknown") == 0) {
1319
_ecode = DBUS_GERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN;
1320
} else if (strcmp (_tmp5_, "RemoteException") == 0) {
1321
_ecode = DBUS_GERROR_REMOTE_EXCEPTION;
1324
g_set_error (error, _edomain, _ecode, "%s", _dbus_error.message);
1325
dbus_error_free (&_dbus_error);
1328
if (strcmp (dbus_message_get_signature (_reply), "b")) {
1329
g_set_error (error, DBUS_GERROR, DBUS_GERROR_INVALID_SIGNATURE, "Invalid signature, expected \"%s\", got \"%s\"", "b", dbus_message_get_signature (_reply));
1330
dbus_message_unref (_reply);
1333
dbus_message_iter_init (_reply, &_iter);
1334
dbus_message_iter_get_basic (&_iter, &_tmp4_);
1335
dbus_message_iter_next (&_iter);
1337
dbus_message_unref (_reply);
1342
static void wnck_sync_matcher_dbus_proxy_register_desktop_file_for_pid (WnckSyncMatcher* self, const char* filename, gint32 pid, GError** error) {
1343
DBusError _dbus_error;
1344
DBusGConnection *_connection;
1345
DBusMessage *_message, *_reply;
1346
DBusMessageIter _iter;
1348
dbus_int32_t _tmp7_;
1349
if (((WnckSyncMatcherDBusProxy*) self)->disposed) {
1350
g_set_error (error, DBUS_GERROR, DBUS_GERROR_DISCONNECTED, "%s", "Connection is closed");
1353
_message = dbus_message_new_method_call (dbus_g_proxy_get_bus_name ((DBusGProxy*) self), dbus_g_proxy_get_path ((DBusGProxy*) self), "org.wncksync.Matcher", "RegisterDesktopFileForPid");
1354
dbus_message_iter_init_append (_message, &_iter);
1356
dbus_message_iter_append_basic (&_iter, DBUS_TYPE_STRING, &_tmp6_);
1358
dbus_message_iter_append_basic (&_iter, DBUS_TYPE_INT32, &_tmp7_);
1359
g_object_get (self, "connection", &_connection, NULL);
1360
dbus_error_init (&_dbus_error);
1361
_reply = dbus_connection_send_with_reply_and_block (dbus_g_connection_get_connection (_connection), _message, -1, &_dbus_error);
1362
dbus_g_connection_unref (_connection);
1363
dbus_message_unref (_message);
1364
if (dbus_error_is_set (&_dbus_error)) {
1367
if (strstr (_dbus_error.name, "org.freedesktop.DBus.Error") == _dbus_error.name) {
1369
_edomain = DBUS_GERROR;
1370
_tmp8_ = _dbus_error.name + 27;
1371
if (strcmp (_tmp8_, "Failed") == 0) {
1372
_ecode = DBUS_GERROR_FAILED;
1373
} else if (strcmp (_tmp8_, "NoMemory") == 0) {
1374
_ecode = DBUS_GERROR_NO_MEMORY;
1375
} else if (strcmp (_tmp8_, "ServiceUnknown") == 0) {
1376
_ecode = DBUS_GERROR_SERVICE_UNKNOWN;
1377
} else if (strcmp (_tmp8_, "NameHasNoOwner") == 0) {
1378
_ecode = DBUS_GERROR_NAME_HAS_NO_OWNER;
1379
} else if (strcmp (_tmp8_, "NoReply") == 0) {
1380
_ecode = DBUS_GERROR_NO_REPLY;
1381
} else if (strcmp (_tmp8_, "IOError") == 0) {
1382
_ecode = DBUS_GERROR_IO_ERROR;
1383
} else if (strcmp (_tmp8_, "BadAddress") == 0) {
1384
_ecode = DBUS_GERROR_BAD_ADDRESS;
1385
} else if (strcmp (_tmp8_, "NotSupported") == 0) {
1386
_ecode = DBUS_GERROR_NOT_SUPPORTED;
1387
} else if (strcmp (_tmp8_, "LimitsExceeded") == 0) {
1388
_ecode = DBUS_GERROR_LIMITS_EXCEEDED;
1389
} else if (strcmp (_tmp8_, "AccessDenied") == 0) {
1390
_ecode = DBUS_GERROR_ACCESS_DENIED;
1391
} else if (strcmp (_tmp8_, "AuthFailed") == 0) {
1392
_ecode = DBUS_GERROR_AUTH_FAILED;
1393
} else if (strcmp (_tmp8_, "NoServer") == 0) {
1394
_ecode = DBUS_GERROR_NO_SERVER;
1395
} else if (strcmp (_tmp8_, "Timeout") == 0) {
1396
_ecode = DBUS_GERROR_TIMEOUT;
1397
} else if (strcmp (_tmp8_, "NoNetwork") == 0) {
1398
_ecode = DBUS_GERROR_NO_NETWORK;
1399
} else if (strcmp (_tmp8_, "AddressInUse") == 0) {
1400
_ecode = DBUS_GERROR_ADDRESS_IN_USE;
1401
} else if (strcmp (_tmp8_, "Disconnected") == 0) {
1402
_ecode = DBUS_GERROR_DISCONNECTED;
1403
} else if (strcmp (_tmp8_, "InvalidArgs") == 0) {
1404
_ecode = DBUS_GERROR_INVALID_ARGS;
1405
} else if (strcmp (_tmp8_, "FileNotFound") == 0) {
1406
_ecode = DBUS_GERROR_FILE_NOT_FOUND;
1407
} else if (strcmp (_tmp8_, "FileExists") == 0) {
1408
_ecode = DBUS_GERROR_FILE_EXISTS;
1409
} else if (strcmp (_tmp8_, "UnknownMethod") == 0) {
1410
_ecode = DBUS_GERROR_UNKNOWN_METHOD;
1411
} else if (strcmp (_tmp8_, "TimedOut") == 0) {
1412
_ecode = DBUS_GERROR_TIMED_OUT;
1413
} else if (strcmp (_tmp8_, "MatchRuleNotFound") == 0) {
1414
_ecode = DBUS_GERROR_MATCH_RULE_NOT_FOUND;
1415
} else if (strcmp (_tmp8_, "MatchRuleInvalid") == 0) {
1416
_ecode = DBUS_GERROR_MATCH_RULE_INVALID;
1417
} else if (strcmp (_tmp8_, "Spawn.ExecFailed") == 0) {
1418
_ecode = DBUS_GERROR_SPAWN_EXEC_FAILED;
1419
} else if (strcmp (_tmp8_, "Spawn.ForkFailed") == 0) {
1420
_ecode = DBUS_GERROR_SPAWN_FORK_FAILED;
1421
} else if (strcmp (_tmp8_, "Spawn.ChildExited") == 0) {
1422
_ecode = DBUS_GERROR_SPAWN_CHILD_EXITED;
1423
} else if (strcmp (_tmp8_, "Spawn.ChildSignaled") == 0) {
1424
_ecode = DBUS_GERROR_SPAWN_CHILD_SIGNALED;
1425
} else if (strcmp (_tmp8_, "Spawn.Failed") == 0) {
1426
_ecode = DBUS_GERROR_SPAWN_FAILED;
1427
} else if (strcmp (_tmp8_, "UnixProcessIdUnknown") == 0) {
1428
_ecode = DBUS_GERROR_UNIX_PROCESS_ID_UNKNOWN;
1429
} else if (strcmp (_tmp8_, "InvalidSignature") == 0) {
1430
_ecode = DBUS_GERROR_INVALID_SIGNATURE;
1431
} else if (strcmp (_tmp8_, "InvalidFileContent") == 0) {
1432
_ecode = DBUS_GERROR_INVALID_FILE_CONTENT;
1433
} else if (strcmp (_tmp8_, "SELinuxSecurityContextUnknown") == 0) {
1434
_ecode = DBUS_GERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN;
1435
} else if (strcmp (_tmp8_, "RemoteException") == 0) {
1436
_ecode = DBUS_GERROR_REMOTE_EXCEPTION;
1439
g_set_error (error, _edomain, _ecode, "%s", _dbus_error.message);
1440
dbus_error_free (&_dbus_error);
1443
if (strcmp (dbus_message_get_signature (_reply), "")) {
1444
g_set_error (error, DBUS_GERROR, DBUS_GERROR_INVALID_SIGNATURE, "Invalid signature, expected \"%s\", got \"%s\"", "", dbus_message_get_signature (_reply));
1445
dbus_message_unref (_reply);
1448
dbus_message_iter_init (_reply, &_iter);
1449
dbus_message_unref (_reply);
1453
static guint32* wnck_sync_matcher_dbus_proxy_xids_for_desktop_file (WnckSyncMatcher* self, const char* filename, int* result_length1, GError** error) {
1454
DBusError _dbus_error;
1455
DBusGConnection *_connection;
1456
DBusMessage *_message, *_reply;
1457
DBusMessageIter _iter;
1460
int _result_length1;
1464
int _tmp10__length1;
1465
DBusMessageIter _tmp11_;
1466
if (((WnckSyncMatcherDBusProxy*) self)->disposed) {
1467
g_set_error (error, DBUS_GERROR, DBUS_GERROR_DISCONNECTED, "%s", "Connection is closed");
1470
_message = dbus_message_new_method_call (dbus_g_proxy_get_bus_name ((DBusGProxy*) self), dbus_g_proxy_get_path ((DBusGProxy*) self), "org.wncksync.Matcher", "XidsForDesktopFile");
1471
dbus_message_iter_init_append (_message, &_iter);
1473
dbus_message_iter_append_basic (&_iter, DBUS_TYPE_STRING, &_tmp9_);
1474
g_object_get (self, "connection", &_connection, NULL);
1475
dbus_error_init (&_dbus_error);
1476
_reply = dbus_connection_send_with_reply_and_block (dbus_g_connection_get_connection (_connection), _message, -1, &_dbus_error);
1477
dbus_g_connection_unref (_connection);
1478
dbus_message_unref (_message);
1479
if (dbus_error_is_set (&_dbus_error)) {
1482
if (strstr (_dbus_error.name, "org.freedesktop.DBus.Error") == _dbus_error.name) {
1483
const char* _tmp13_;
1484
_edomain = DBUS_GERROR;
1485
_tmp13_ = _dbus_error.name + 27;
1486
if (strcmp (_tmp13_, "Failed") == 0) {
1487
_ecode = DBUS_GERROR_FAILED;
1488
} else if (strcmp (_tmp13_, "NoMemory") == 0) {
1489
_ecode = DBUS_GERROR_NO_MEMORY;
1490
} else if (strcmp (_tmp13_, "ServiceUnknown") == 0) {
1491
_ecode = DBUS_GERROR_SERVICE_UNKNOWN;
1492
} else if (strcmp (_tmp13_, "NameHasNoOwner") == 0) {
1493
_ecode = DBUS_GERROR_NAME_HAS_NO_OWNER;
1494
} else if (strcmp (_tmp13_, "NoReply") == 0) {
1495
_ecode = DBUS_GERROR_NO_REPLY;
1496
} else if (strcmp (_tmp13_, "IOError") == 0) {
1497
_ecode = DBUS_GERROR_IO_ERROR;
1498
} else if (strcmp (_tmp13_, "BadAddress") == 0) {
1499
_ecode = DBUS_GERROR_BAD_ADDRESS;
1500
} else if (strcmp (_tmp13_, "NotSupported") == 0) {
1501
_ecode = DBUS_GERROR_NOT_SUPPORTED;
1502
} else if (strcmp (_tmp13_, "LimitsExceeded") == 0) {
1503
_ecode = DBUS_GERROR_LIMITS_EXCEEDED;
1504
} else if (strcmp (_tmp13_, "AccessDenied") == 0) {
1505
_ecode = DBUS_GERROR_ACCESS_DENIED;
1506
} else if (strcmp (_tmp13_, "AuthFailed") == 0) {
1507
_ecode = DBUS_GERROR_AUTH_FAILED;
1508
} else if (strcmp (_tmp13_, "NoServer") == 0) {
1509
_ecode = DBUS_GERROR_NO_SERVER;
1510
} else if (strcmp (_tmp13_, "Timeout") == 0) {
1511
_ecode = DBUS_GERROR_TIMEOUT;
1512
} else if (strcmp (_tmp13_, "NoNetwork") == 0) {
1513
_ecode = DBUS_GERROR_NO_NETWORK;
1514
} else if (strcmp (_tmp13_, "AddressInUse") == 0) {
1515
_ecode = DBUS_GERROR_ADDRESS_IN_USE;
1516
} else if (strcmp (_tmp13_, "Disconnected") == 0) {
1517
_ecode = DBUS_GERROR_DISCONNECTED;
1518
} else if (strcmp (_tmp13_, "InvalidArgs") == 0) {
1519
_ecode = DBUS_GERROR_INVALID_ARGS;
1520
} else if (strcmp (_tmp13_, "FileNotFound") == 0) {
1521
_ecode = DBUS_GERROR_FILE_NOT_FOUND;
1522
} else if (strcmp (_tmp13_, "FileExists") == 0) {
1523
_ecode = DBUS_GERROR_FILE_EXISTS;
1524
} else if (strcmp (_tmp13_, "UnknownMethod") == 0) {
1525
_ecode = DBUS_GERROR_UNKNOWN_METHOD;
1526
} else if (strcmp (_tmp13_, "TimedOut") == 0) {
1527
_ecode = DBUS_GERROR_TIMED_OUT;
1528
} else if (strcmp (_tmp13_, "MatchRuleNotFound") == 0) {
1529
_ecode = DBUS_GERROR_MATCH_RULE_NOT_FOUND;
1530
} else if (strcmp (_tmp13_, "MatchRuleInvalid") == 0) {
1531
_ecode = DBUS_GERROR_MATCH_RULE_INVALID;
1532
} else if (strcmp (_tmp13_, "Spawn.ExecFailed") == 0) {
1533
_ecode = DBUS_GERROR_SPAWN_EXEC_FAILED;
1534
} else if (strcmp (_tmp13_, "Spawn.ForkFailed") == 0) {
1535
_ecode = DBUS_GERROR_SPAWN_FORK_FAILED;
1536
} else if (strcmp (_tmp13_, "Spawn.ChildExited") == 0) {
1537
_ecode = DBUS_GERROR_SPAWN_CHILD_EXITED;
1538
} else if (strcmp (_tmp13_, "Spawn.ChildSignaled") == 0) {
1539
_ecode = DBUS_GERROR_SPAWN_CHILD_SIGNALED;
1540
} else if (strcmp (_tmp13_, "Spawn.Failed") == 0) {
1541
_ecode = DBUS_GERROR_SPAWN_FAILED;
1542
} else if (strcmp (_tmp13_, "UnixProcessIdUnknown") == 0) {
1543
_ecode = DBUS_GERROR_UNIX_PROCESS_ID_UNKNOWN;
1544
} else if (strcmp (_tmp13_, "InvalidSignature") == 0) {
1545
_ecode = DBUS_GERROR_INVALID_SIGNATURE;
1546
} else if (strcmp (_tmp13_, "InvalidFileContent") == 0) {
1547
_ecode = DBUS_GERROR_INVALID_FILE_CONTENT;
1548
} else if (strcmp (_tmp13_, "SELinuxSecurityContextUnknown") == 0) {
1549
_ecode = DBUS_GERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN;
1550
} else if (strcmp (_tmp13_, "RemoteException") == 0) {
1551
_ecode = DBUS_GERROR_REMOTE_EXCEPTION;
1554
g_set_error (error, _edomain, _ecode, "%s", _dbus_error.message);
1555
dbus_error_free (&_dbus_error);
1558
if (strcmp (dbus_message_get_signature (_reply), "au")) {
1559
g_set_error (error, DBUS_GERROR, DBUS_GERROR_INVALID_SIGNATURE, "Invalid signature, expected \"%s\", got \"%s\"", "au", dbus_message_get_signature (_reply));
1560
dbus_message_unref (_reply);
1563
dbus_message_iter_init (_reply, &_iter);
1564
_result_length1 = 0;
1565
_tmp10_ = g_new (guint32, 5);
1568
_tmp10__length1 = 0;
1569
dbus_message_iter_recurse (&_iter, &_tmp11_);
1570
for (; dbus_message_iter_get_arg_type (&_tmp11_); _tmp10__length1++) {
1571
dbus_uint32_t _tmp12_;
1572
if (_tmp10__size == _tmp10__length) {
1573
_tmp10__size = 2 * _tmp10__size;
1574
_tmp10_ = g_renew (guint32, _tmp10_, _tmp10__size + 1);
1576
dbus_message_iter_get_basic (&_tmp11_, &_tmp12_);
1577
dbus_message_iter_next (&_tmp11_);
1578
_tmp10_[_tmp10__length++] = _tmp12_;
1580
_result_length1 = _tmp10__length1;
1581
dbus_message_iter_next (&_iter);
1583
*result_length1 = _result_length1;
1584
dbus_message_unref (_reply);
1589
static void wnck_sync_matcher_dbus_proxy_wnck_sync_matcher__interface_init (WnckSyncMatcherIface* iface) {
1590
iface->desktop_file_for_xid = wnck_sync_matcher_dbus_proxy_desktop_file_for_xid;
1591
iface->window_match_is_ready = wnck_sync_matcher_dbus_proxy_window_match_is_ready;
1592
iface->register_desktop_file_for_pid = wnck_sync_matcher_dbus_proxy_register_desktop_file_for_pid;
1593
iface->xids_for_desktop_file = wnck_sync_matcher_dbus_proxy_xids_for_desktop_file;
1597
static void wnck_sync_matcher_dbus_proxy_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
1601
static void wnck_sync_matcher_dbus_proxy_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
1605
static char** _vala_array_dup1 (char** self, int length) {
1608
result = g_new0 (char*, length + 1);
1609
for (i = 0; i < length; i++) {
1610
result[i] = g_strdup (self[i]);
1616
void desktop_file_info_copy (const DesktopFileInfo* self, DesktopFileInfo* dest) {
1618
dest->name = g_strdup (self->name);
1619
dest->mimetypes = (_tmp0_ = self->mimetypes, (_tmp0_ == NULL) ? ((gpointer) _tmp0_) : _vala_array_dup1 (_tmp0_, (*self).mimetypes_length1));
1620
dest->mimetypes_length1 = self->mimetypes_length1;
1624
void desktop_file_info_destroy (DesktopFileInfo* self) {
1625
_g_free0 (self->name);
1626
self->mimetypes = (_vala_array_free (self->mimetypes, (*self).mimetypes_length1, (GDestroyNotify) g_free), NULL);
1630
DesktopFileInfo* desktop_file_info_dup (const DesktopFileInfo* self) {
1631
DesktopFileInfo* dup;
1632
dup = g_new0 (DesktopFileInfo, 1);
1633
desktop_file_info_copy (self, dup);
1638
void desktop_file_info_free (DesktopFileInfo* self) {
1639
desktop_file_info_destroy (self);
1644
GType desktop_file_info_get_type (void) {
1645
static volatile gsize desktop_file_info_type_id__volatile = 0;
1646
if (g_once_init_enter (&desktop_file_info_type_id__volatile)) {
1647
GType desktop_file_info_type_id;
1648
desktop_file_info_type_id = g_boxed_type_register_static ("DesktopFileInfo", (GBoxedCopyFunc) desktop_file_info_dup, (GBoxedFreeFunc) desktop_file_info_free);
1649
g_once_init_leave (&desktop_file_info_type_id__volatile, desktop_file_info_type_id);
1651
return desktop_file_info_type_id__volatile;
1655
static void _related_applet_window_opened_wnck_screen_window_opened (WnckScreen* _sender, WnckWindow* window, gpointer self) {
1656
related_applet_window_opened (self, window);
1660
static void _related_applet_window_changed_wnck_screen_active_window_changed (WnckScreen* _sender, WnckWindow* previous_window, gpointer self) {
1661
related_applet_window_changed (self, previous_window);
1665
static void _related_applet_on_clicked_awn_applet_simple_clicked (AwnAppletSimple* _sender, gpointer self) {
1666
related_applet_on_clicked (self);
1670
RelatedApplet* related_applet_construct (GType object_type, const char* canonical_name, const char* uid, gint panel_id) {
1671
RelatedApplet * self;
1674
g_return_val_if_fail (canonical_name != NULL, NULL);
1675
g_return_val_if_fail (uid != NULL, NULL);
1676
self = (RelatedApplet*) g_object_new (object_type, "canonical-name", canonical_name, "uid", uid, "panel-id", panel_id, NULL);
1677
self->priv->desktop_file_info = (_tmp0_ = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, desktop_file_info_free), _g_hash_table_unref0 (self->priv->desktop_file_info), _tmp0_);
1678
self->priv->wnck_screen = wnck_screen_get_default ();
1679
wnck_set_client_type (WNCK_CLIENT_TYPE_PAGER);
1680
g_signal_connect_object (self->priv->wnck_screen, "window-opened", (GCallback) _related_applet_window_opened_wnck_screen_window_opened, self, 0);
1681
g_signal_connect_object (self->priv->wnck_screen, "active-window-changed", (GCallback) _related_applet_window_changed_wnck_screen_active_window_changed, self, 0);
1682
awn_overlayable_add_overlay ((AwnOverlayable*) self, self->priv->throbber);
1683
awn_overlayable_add_overlay ((AwnOverlayable*) self, self->priv->star_overlay);
1684
awn_applet_simple_set_icon_name ((AwnAppletSimple*) self, "zeitgeist-logo");
1685
g_signal_connect_object ((AwnAppletSimple*) self, "clicked", (GCallback) _related_applet_on_clicked_awn_applet_simple_clicked, self, 0);
1686
self->priv->dialog = (_tmp1_ = g_object_ref_sink ((AwnDialog*) awn_dialog_new_for_widget ((GtkWidget*) self)), _g_object_unref0 (self->priv->dialog), _tmp1_);
1691
RelatedApplet* related_applet_new (const char* canonical_name, const char* uid, gint panel_id) {
1692
return related_applet_construct (TYPE_RELATED_APPLET, canonical_name, uid, panel_id);
1696
static gpointer _desktop_file_info_dup0 (gpointer self) {
1697
return self ? desktop_file_info_dup (self) : NULL;
1701
static void related_applet_window_opened (RelatedApplet* self, WnckWindow* window) {
1703
GError * _inner_error_ = NULL;
1704
g_return_if_fail (self != NULL);
1705
g_return_if_fail (window != NULL);
1706
desktop_file = g_strdup (awn_desktop_lookup_search_by_wnck_window (self->priv->lookup, window));
1707
if (desktop_file == NULL) {
1709
DBusGConnection* con;
1710
WnckSyncMatcher* matcher;
1712
gboolean _tmp0_ = FALSE;
1713
con = dbus_g_bus_get (DBUS_BUS_SESSION, &_inner_error_);
1714
if (_inner_error_ != NULL) {
1715
goto __catch0_g_error;
1717
matcher = wnck_sync_matcher_dbus_proxy_new (con, "org.wncksync.Matcher", "/org/wncksync/Matcher");
1718
df = wnck_sync_matcher_desktop_file_for_xid (matcher, (guint32) wnck_window_get_xid (window), &_inner_error_);
1719
if (_inner_error_ != NULL) {
1720
_g_object_unref0 (matcher);
1721
_dbus_g_connection_unref0 (con);
1722
goto __catch0_g_error;
1725
_tmp0_ = _vala_strcmp0 (df, "") != 0;
1731
g_debug ("related-applet.vala:107: wncksync found match: %s", df);
1732
desktop_file = (_tmp1_ = g_strdup (df), _g_free0 (desktop_file), _tmp1_);
1735
_g_object_unref0 (matcher);
1736
_dbus_g_connection_unref0 (con);
1742
err = _inner_error_;
1743
_inner_error_ = NULL;
1745
_g_error_free0 (err);
1749
if (_inner_error_ != NULL) {
1750
_g_free0 (desktop_file);
1751
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
1752
g_clear_error (&_inner_error_);
1756
if (desktop_file != NULL) {
1757
DesktopFileInfo* df_data = NULL;
1758
df_data = (DesktopFileInfo*) g_hash_table_lookup (self->priv->desktop_file_info, desktop_file);
1759
if (df_data == NULL) {
1761
gint mimetypes_length1;
1762
gint _mimetypes_size_;
1764
char** _tmp2_ = NULL;
1767
DesktopFileInfo w = {0};
1772
keyfile = g_key_file_new ();
1773
mimetypes = (_tmp3_ = (_tmp2_ = g_new0 (char*, 0 + 1), _tmp2_), mimetypes_length1 = 0, _mimetypes_size_ = mimetypes_length1, _tmp3_);
1774
app_name = g_strdup ("");
1778
gint _tmp7__length1;
1784
g_key_file_load_from_file (keyfile, desktop_file, G_KEY_FILE_NONE, &_inner_error_);
1785
if (_inner_error_ != NULL) {
1786
goto __catch1_g_error;
1788
_tmp4_ = g_key_file_get_locale_string (keyfile, "Desktop Entry", "Name", NULL, &_inner_error_);
1789
if (_inner_error_ != NULL) {
1790
goto __catch1_g_error;
1792
app_name = (_tmp5_ = _tmp4_, _g_free0 (app_name), _tmp5_);
1793
_tmp7_ = (_tmp8_ = g_key_file_get_string_list (keyfile, "Desktop Entry", "MimeType", &_tmp6_, &_inner_error_), _tmp7__length1 = _tmp6_, __tmp7__size_ = _tmp7__length1, _tmp8_);
1794
if (_inner_error_ != NULL) {
1795
goto __catch1_g_error;
1797
mimetypes = (_tmp9_ = _tmp7_, mimetypes = (_vala_array_free (mimetypes, mimetypes_length1, (GDestroyNotify) g_free), NULL), mimetypes_length1 = _tmp7__length1, _mimetypes_size_ = mimetypes_length1, _tmp9_);
1803
err = _inner_error_;
1804
_inner_error_ = NULL;
1806
_g_error_free0 (err);
1810
if (_inner_error_ != NULL) {
1811
_g_free0 (app_name);
1812
mimetypes = (_vala_array_free (mimetypes, mimetypes_length1, (GDestroyNotify) g_free), NULL);
1813
_g_key_file_free0 (keyfile);
1814
_g_free0 (desktop_file);
1815
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
1816
g_clear_error (&_inner_error_);
1819
memset (&w, 0, sizeof (DesktopFileInfo));
1820
w.name = (_tmp11_ = (_tmp10_ = app_name, app_name = NULL, _tmp10_), _g_free0 (w.name), _tmp11_);
1821
w.mimetypes = (_tmp13_ = (_tmp12_ = mimetypes, mimetypes = NULL, _tmp12_), w.mimetypes = (_vala_array_free (w.mimetypes, w.mimetypes_length1, (GDestroyNotify) g_free), NULL), w.mimetypes_length1 = mimetypes_length1, w._mimetypes_size_ = w.mimetypes_length1, _tmp13_);
1822
g_hash_table_insert (self->priv->desktop_file_info, g_strdup (desktop_file), _desktop_file_info_dup0 (&w));
1823
desktop_file_info_destroy (&w);
1824
_g_free0 (app_name);
1825
mimetypes = (_vala_array_free (mimetypes, mimetypes_length1, (GDestroyNotify) g_free), NULL);
1826
_g_key_file_free0 (keyfile);
1829
g_object_set_data_full ((GObject*) window, "desktop-file-path", g_strdup (desktop_file), g_free);
1830
_g_free0 (desktop_file);
1834
static gpointer _g_object_ref0 (gpointer self) {
1835
return self ? g_object_ref (self) : NULL;
1839
static void related_applet_window_changed (RelatedApplet* self, WnckWindow* old_window) {
1841
g_return_if_fail (self != NULL);
1842
active = _g_object_ref0 (wnck_screen_get_active_window (self->priv->wnck_screen));
1843
if (active != NULL) {
1845
desktop_file = g_strdup ((const char*) g_object_get_data ((GObject*) active, "desktop-file-path"));
1846
if (desktop_file != NULL) {
1847
related_applet_update_star (self, desktop_file, NULL, NULL);
1849
g_object_set (self->priv->star_overlay, "active", FALSE, NULL);
1851
_g_free0 (desktop_file);
1853
_g_object_unref0 (active);
1857
static void related_applet_update_star_data_free (gpointer _data) {
1858
RelatedAppletUpdateStarData* data;
1860
_g_free0 (data->desktop_file);
1861
g_object_unref (data->self);
1862
g_slice_free (RelatedAppletUpdateStarData, data);
1866
static void related_applet_update_star (RelatedApplet* self, const char* desktop_file, GAsyncReadyCallback _callback_, gpointer _user_data_) {
1867
RelatedAppletUpdateStarData* _data_;
1868
_data_ = g_slice_new0 (RelatedAppletUpdateStarData);
1869
_data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, related_applet_update_star);
1870
g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, related_applet_update_star_data_free);
1871
_data_->self = g_object_ref (self);
1872
_data_->desktop_file = g_strdup (desktop_file);
1873
related_applet_update_star_co (_data_);
1877
static void related_applet_update_star_finish (RelatedApplet* self, GAsyncResult* _res_) {
1878
RelatedAppletUpdateStarData* _data_;
1879
_data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
1883
static void related_applet_update_star_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
1884
RelatedAppletUpdateStarData* data;
1886
data->_res_ = _res_;
1887
related_applet_update_star_co (data);
1891
static void _g_list_free_g_object_unref (GList* self) {
1892
g_list_foreach (self, (GFunc) g_object_unref, NULL);
1897
static gboolean related_applet_update_star_co (RelatedAppletUpdateStarData* data) {
1898
switch (data->_state_) {
1902
g_assert_not_reached ();
1907
data->ptr_array = g_ptr_array_new ();
1908
data->actor = g_utf8_offset_to_pointer (g_utf8_strrchr (data->desktop_file, (gssize) (-1), (gunichar) '/'), (glong) 1);
1909
data->event = g_object_ref_sink (zeitgeist_event_new ());
1910
data->helper_event_list = NULL;
1911
zeitgeist_event_set_actor (data->event, data->_tmp0_ = g_strconcat ("application://", data->actor, NULL));
1912
_g_free0 (data->_tmp0_);
1913
g_ptr_array_add (data->ptr_array, data->event);
1914
data->df_data = (DesktopFileInfo*) g_hash_table_lookup (data->self->priv->desktop_file_info, data->desktop_file);
1915
if (data->df_data != NULL) {
1916
data->_tmp1_ = (*data->df_data).mimetypes_length1 > 0;
1918
data->_tmp1_ = FALSE;
1922
data->mimetype_collection = (*data->df_data).mimetypes;
1923
data->mimetype_collection_length1 = (*data->df_data).mimetypes_length1;
1924
for (data->mimetype_it = 0; data->mimetype_it < (*data->df_data).mimetypes_length1; data->mimetype_it = data->mimetype_it + 1) {
1925
data->mimetype = data->mimetype_collection[data->mimetype_it];
1927
data->mime_event = g_object_ref_sink (zeitgeist_event_new ());
1928
data->subject = g_object_ref_sink (zeitgeist_subject_new ());
1929
zeitgeist_subject_set_mimetype (data->subject, data->mimetype);
1930
zeitgeist_event_add_subject (data->mime_event, data->subject);
1931
data->helper_event_list = g_list_prepend (data->helper_event_list, _g_object_ref0 (data->mime_event));
1932
g_ptr_array_add (data->ptr_array, data->mime_event);
1933
_g_object_unref0 (data->subject);
1934
_g_object_unref0 (data->mime_event);
1940
zeitgeist_log_find_event_ids (data->self->priv->zg_log, data->_tmp2_ = g_object_ref_sink (zeitgeist_time_range_new_to_now ()), (data->_tmp3_ = data->ptr_array, data->ptr_array = NULL, data->_tmp3_), ZEITGEIST_STORAGE_STATE_ANY, (guint32) 1, ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, NULL, related_applet_update_star_ready, data);
1943
data->events = (data->_tmp4_ = zeitgeist_log_find_event_ids_finish (data->self->priv->zg_log, data->_res_, &data->_inner_error_), _g_object_unref0 (data->_tmp2_), data->_tmp4_);
1944
if (data->_inner_error_ != NULL) {
1945
__g_list_free_g_object_unref0 (data->helper_event_list);
1946
_g_object_unref0 (data->event);
1947
_g_ptr_array_free0 (data->ptr_array);
1948
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, data->_inner_error_->message, g_quark_to_string (data->_inner_error_->domain), data->_inner_error_->code);
1949
g_clear_error (&data->_inner_error_);
1952
g_object_set (data->self->priv->star_overlay, "active", data->events->len > 0, NULL);
1953
if (data->events->len > 0) {
1954
data->_tmp5_ = (data->_tmp6_ = g_strdup_printf ("Show items related to %s", (*data->df_data).name), _g_free0 (data->_tmp5_), data->_tmp6_);
1956
data->_tmp5_ = (data->_tmp7_ = NULL, _g_free0 (data->_tmp5_), data->_tmp7_);
1958
awn_applet_simple_set_tooltip_text ((AwnAppletSimple*) data->self, data->_tmp5_);
1959
_g_free0 (data->_tmp5_);
1960
_g_array_free0 (data->events);
1961
__g_list_free_g_object_unref0 (data->helper_event_list);
1962
_g_object_unref0 (data->event);
1963
_g_ptr_array_free0 (data->ptr_array);
1965
if (data->_state_ == 0) {
1966
g_simple_async_result_complete_in_idle (data->_async_result);
1968
g_simple_async_result_complete (data->_async_result);
1970
g_object_unref (data->_async_result);
1976
static void related_applet_get_recent_by_mimetype_data_free (gpointer _data) {
1977
RelatedAppletGetRecentByMimetypeData* data;
1979
data->mimetypes = (_vala_array_free (data->mimetypes, data->mimetypes_length1, (GDestroyNotify) g_free), NULL);
1980
g_object_unref (data->self);
1981
g_slice_free (RelatedAppletGetRecentByMimetypeData, data);
1985
static char** _vala_array_dup2 (char** self, int length) {
1988
result = g_new0 (char*, length + 1);
1989
for (i = 0; i < length; i++) {
1990
result[i] = g_strdup (self[i]);
1996
static void related_applet_get_recent_by_mimetype (RelatedApplet* self, char** mimetypes, int mimetypes_length1, GAsyncReadyCallback _callback_, gpointer _user_data_) {
1997
RelatedAppletGetRecentByMimetypeData* _data_;
1999
_data_ = g_slice_new0 (RelatedAppletGetRecentByMimetypeData);
2000
_data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, related_applet_get_recent_by_mimetype);
2001
g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, related_applet_get_recent_by_mimetype_data_free);
2002
_data_->self = g_object_ref (self);
2003
_data_->mimetypes = (_tmp0_ = mimetypes, (_tmp0_ == NULL) ? ((gpointer) _tmp0_) : _vala_array_dup2 (_tmp0_, mimetypes_length1));
2004
_data_->mimetypes_length1 = mimetypes_length1;
2005
related_applet_get_recent_by_mimetype_co (_data_);
2009
static gboolean related_applet_get_recent_by_mimetype_finish (RelatedApplet* self, GAsyncResult* _res_) {
2011
RelatedAppletGetRecentByMimetypeData* _data_;
2012
_data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
2013
result = _data_->result;
2018
static void related_applet_get_recent_by_mimetype_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
2019
RelatedAppletGetRecentByMimetypeData* data;
2021
data->_res_ = _res_;
2022
related_applet_get_recent_by_mimetype_co (data);
2026
static gboolean related_applet_get_recent_by_mimetype_co (RelatedAppletGetRecentByMimetypeData* data) {
2027
switch (data->_state_) {
2031
g_assert_not_reached ();
2036
data->helper_event_list = NULL;
2037
data->ptr_array = g_ptr_array_new ();
2039
data->mimetype_collection = data->mimetypes;
2040
data->mimetype_collection_length1 = data->mimetypes_length1;
2041
for (data->mimetype_it = 0; data->mimetype_it < data->mimetypes_length1; data->mimetype_it = data->mimetype_it + 1) {
2042
data->mimetype = data->mimetype_collection[data->mimetype_it];
2044
data->event = g_object_ref_sink (zeitgeist_event_new ());
2045
data->subject = g_object_ref_sink (zeitgeist_subject_new ());
2046
zeitgeist_subject_set_mimetype (data->subject, data->mimetype);
2047
zeitgeist_event_add_subject (data->event, data->subject);
2048
data->helper_event_list = g_list_prepend (data->helper_event_list, _g_object_ref0 (data->event));
2049
g_ptr_array_add (data->ptr_array, data->event);
2050
_g_object_unref0 (data->subject);
2051
_g_object_unref0 (data->event);
2056
zeitgeist_log_find_events (data->self->priv->zg_log, data->_tmp0_ = g_object_ref_sink (zeitgeist_time_range_new_to_now ()), (data->_tmp1_ = data->ptr_array, data->ptr_array = NULL, data->_tmp1_), ZEITGEIST_STORAGE_STATE_ANY, (guint32) 16, ZEITGEIST_RESULT_TYPE_MOST_RECENT_SUBJECTS, NULL, related_applet_get_recent_by_mimetype_ready, data);
2059
data->events = (data->_tmp2_ = zeitgeist_log_find_events_finish (data->self->priv->zg_log, data->_res_, &data->_inner_error_), _g_object_unref0 (data->_tmp0_), data->_tmp2_);
2060
if (data->_inner_error_ != NULL) {
2061
_g_ptr_array_free0 (data->ptr_array);
2062
__g_list_free_g_object_unref0 (data->helper_event_list);
2063
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, data->_inner_error_->message, g_quark_to_string (data->_inner_error_->domain), data->_inner_error_->code);
2064
g_clear_error (&data->_inner_error_);
2067
data->results_pushed = 0;
2069
data->_e_it = _vala_zeitgeist_result_set_iterator (data->events);
2071
if (!((data->e = _vala_zeitgeist_result_set_next_value (data->_e_it)) != NULL)) {
2074
if (zeitgeist_event_num_subjects (data->e) > 0) {
2075
data->s = _g_object_ref0 (zeitgeist_event_get_subject (data->e, 0));
2076
if (data->results_pushed < 3) {
2077
data->_tmp3_ = related_applet_push_result (data->self, data->e, data->s);
2079
data->_tmp3_ = FALSE;
2082
data->results_pushed++;
2084
_g_object_unref0 (data->s);
2087
_g_object_unref0 (data->_e_it);
2089
data->result = zeitgeist_result_set_size (data->events) > 0;
2090
_g_object_unref0 (data->events);
2091
_g_ptr_array_free0 (data->ptr_array);
2092
__g_list_free_g_object_unref0 (data->helper_event_list);
2094
if (data->_state_ == 0) {
2095
g_simple_async_result_complete_in_idle (data->_async_result);
2097
g_simple_async_result_complete (data->_async_result);
2099
g_object_unref (data->_async_result);
2102
_g_object_unref0 (data->events);
2103
_g_ptr_array_free0 (data->ptr_array);
2104
__g_list_free_g_object_unref0 (data->helper_event_list);
2106
if (data->_state_ == 0) {
2107
g_simple_async_result_complete_in_idle (data->_async_result);
2109
g_simple_async_result_complete (data->_async_result);
2111
g_object_unref (data->_async_result);
2117
static void related_applet_get_events_for_actor_data_free (gpointer _data) {
2118
RelatedAppletGetEventsForActorData* data;
2120
_g_free0 (data->actor);
2121
g_object_unref (data->self);
2122
g_slice_free (RelatedAppletGetEventsForActorData, data);
2126
static void related_applet_get_events_for_actor (RelatedApplet* self, const char* actor, GAsyncReadyCallback _callback_, gpointer _user_data_) {
2127
RelatedAppletGetEventsForActorData* _data_;
2128
_data_ = g_slice_new0 (RelatedAppletGetEventsForActorData);
2129
_data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, related_applet_get_events_for_actor);
2130
g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, related_applet_get_events_for_actor_data_free);
2131
_data_->self = g_object_ref (self);
2132
_data_->actor = g_strdup (actor);
2133
related_applet_get_events_for_actor_co (_data_);
2137
static gboolean related_applet_get_events_for_actor_finish (RelatedApplet* self, GAsyncResult* _res_) {
2139
RelatedAppletGetEventsForActorData* _data_;
2140
_data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
2141
result = _data_->result;
2146
static void related_applet_get_events_for_actor_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
2147
RelatedAppletGetEventsForActorData* data;
2149
data->_res_ = _res_;
2150
related_applet_get_events_for_actor_co (data);
2154
static gboolean related_applet_get_events_for_actor_co (RelatedAppletGetEventsForActorData* data) {
2155
switch (data->_state_) {
2159
g_assert_not_reached ();
2164
data->ptr_array = g_ptr_array_new ();
2165
data->event = g_object_ref_sink (zeitgeist_event_new ());
2166
if (data->actor != NULL) {
2167
zeitgeist_event_set_actor (data->event, data->_tmp0_ = g_strconcat ("application://", data->actor, NULL));
2168
_g_free0 (data->_tmp0_);
2170
g_ptr_array_add (data->ptr_array, data->event);
2172
zeitgeist_log_find_events (data->self->priv->zg_log, data->_tmp1_ = g_object_ref_sink (zeitgeist_time_range_new_to_now ()), (data->_tmp2_ = data->ptr_array, data->ptr_array = NULL, data->_tmp2_), ZEITGEIST_STORAGE_STATE_ANY, (guint32) 16, ZEITGEIST_RESULT_TYPE_MOST_POPULAR_SUBJECTS, NULL, related_applet_get_events_for_actor_ready, data);
2175
data->events = (data->_tmp3_ = zeitgeist_log_find_events_finish (data->self->priv->zg_log, data->_res_, &data->_inner_error_), _g_object_unref0 (data->_tmp1_), data->_tmp3_);
2176
if (data->_inner_error_ != NULL) {
2177
_g_object_unref0 (data->event);
2178
_g_ptr_array_free0 (data->ptr_array);
2179
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, data->_inner_error_->message, g_quark_to_string (data->_inner_error_->domain), data->_inner_error_->code);
2180
g_clear_error (&data->_inner_error_);
2183
data->results_pushed = 0;
2185
data->_e_it = _vala_zeitgeist_result_set_iterator (data->events);
2187
if (!((data->e = _vala_zeitgeist_result_set_next_value (data->_e_it)) != NULL)) {
2190
if (zeitgeist_event_num_subjects (data->e) > 0) {
2191
data->s = _g_object_ref0 (zeitgeist_event_get_subject (data->e, 0));
2192
if (data->results_pushed < 4) {
2193
data->_tmp4_ = related_applet_push_result (data->self, data->e, data->s);
2195
data->_tmp4_ = FALSE;
2198
data->results_pushed++;
2200
_g_object_unref0 (data->s);
2203
_g_object_unref0 (data->_e_it);
2205
data->result = zeitgeist_result_set_size (data->events) > 0;
2206
_g_object_unref0 (data->events);
2207
_g_object_unref0 (data->event);
2208
_g_ptr_array_free0 (data->ptr_array);
2210
if (data->_state_ == 0) {
2211
g_simple_async_result_complete_in_idle (data->_async_result);
2213
g_simple_async_result_complete (data->_async_result);
2215
g_object_unref (data->_async_result);
2218
_g_object_unref0 (data->events);
2219
_g_object_unref0 (data->event);
2220
_g_ptr_array_free0 (data->ptr_array);
2222
if (data->_state_ == 0) {
2223
g_simple_async_result_complete_in_idle (data->_async_result);
2225
g_simple_async_result_complete (data->_async_result);
2227
g_object_unref (data->_async_result);
2233
static void related_applet_build_dialog_data_free (gpointer _data) {
2234
RelatedAppletBuildDialogData* data;
2236
_g_free0 (data->desktop_file);
2237
g_object_unref (data->self);
2238
g_slice_free (RelatedAppletBuildDialogData, data);
2242
static void related_applet_build_dialog (RelatedApplet* self, const char* desktop_file, GAsyncReadyCallback _callback_, gpointer _user_data_) {
2243
RelatedAppletBuildDialogData* _data_;
2244
_data_ = g_slice_new0 (RelatedAppletBuildDialogData);
2245
_data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, related_applet_build_dialog);
2246
g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, related_applet_build_dialog_data_free);
2247
_data_->self = g_object_ref (self);
2248
_data_->desktop_file = g_strdup (desktop_file);
2249
related_applet_build_dialog_co (_data_);
2253
static void related_applet_build_dialog_finish (RelatedApplet* self, GAsyncResult* _res_) {
2254
RelatedAppletBuildDialogData* _data_;
2255
_data_ = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (_res_));
2259
static void related_applet_build_dialog_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
2260
RelatedAppletBuildDialogData* data;
2262
data->_res_ = _res_;
2263
related_applet_build_dialog_co (data);
2267
static gboolean related_applet_build_dialog_co (RelatedAppletBuildDialogData* data) {
2268
switch (data->_state_) {
2272
g_assert_not_reached ();
2281
if (data->self->priv->vbox != NULL) {
2282
gtk_object_destroy ((GtkObject*) data->self->priv->vbox);
2284
data->self->priv->vbox = (data->_tmp0_ = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 3)), _g_object_unref0 (data->self->priv->vbox), data->_tmp0_);
2285
gtk_container_add ((GtkContainer*) data->self->priv->dialog, (GtkWidget*) data->self->priv->vbox);
2286
data->found1 = FALSE;
2287
data->found2 = FALSE;
2288
data->self->priv->current_desktop_file_path = (data->_tmp1_ = g_strdup (data->desktop_file), _g_free0 (data->self->priv->current_desktop_file_path), data->_tmp1_);
2289
g_object_set (data->self->priv->throbber, "active", TRUE, NULL);
2290
if (data->desktop_file != NULL) {
2291
data->df_data = (DesktopFileInfo*) g_hash_table_lookup (data->self->priv->desktop_file_info, data->desktop_file);
2292
if (data->df_data != NULL) {
2293
data->_tmp2_ = (*data->df_data).mimetypes_length1 > 0;
2295
data->_tmp2_ = FALSE;
2299
related_applet_get_recent_by_mimetype (data->self, (*data->df_data).mimetypes, (*data->df_data).mimetypes_length1, related_applet_build_dialog_ready, data);
2302
data->found1 = related_applet_get_recent_by_mimetype_finish (data->self, data->_res_);
2305
data->_tmp3_ = NULL;
2307
related_applet_get_recent_by_mimetype (data->self, (data->_tmp4_ = (data->_tmp3_ = g_new0 (char*, 0 + 1), data->_tmp3_), data->_tmp4__length1 = 0, data->_tmp4_), 0, related_applet_build_dialog_ready, data);
2310
data->found1 = related_applet_get_recent_by_mimetype_finish (data->self, data->_res_);
2311
data->_tmp4_ = (_vala_array_free (data->_tmp4_, data->_tmp4__length1, (GDestroyNotify) g_free), NULL);
2314
gtk_container_add ((GtkContainer*) data->self->priv->vbox, (GtkWidget*) (data->_tmp5_ = g_object_ref_sink ((GtkHSeparator*) gtk_hseparator_new ())));
2315
_g_object_unref0 (data->_tmp5_);
2318
if (data->desktop_file != NULL) {
2319
data->actor = g_utf8_offset_to_pointer (g_utf8_strrchr (data->desktop_file, (gssize) (-1), (gunichar) '/'), (glong) 1);
2322
related_applet_get_events_for_actor (data->self, data->actor, related_applet_build_dialog_ready, data);
2325
data->found2 = related_applet_get_events_for_actor_finish (data->self, data->_res_);
2326
if (data->desktop_file != NULL) {
2327
data->_tmp7_ = !data->found1;
2329
data->_tmp7_ = FALSE;
2332
data->_tmp6_ = !data->found2;
2334
data->_tmp6_ = FALSE;
2337
related_applet_build_dialog (data->self, NULL, NULL, NULL);
2339
if (data->_state_ == 0) {
2340
g_simple_async_result_complete_in_idle (data->_async_result);
2342
g_simple_async_result_complete (data->_async_result);
2344
g_object_unref (data->_async_result);
2348
g_object_set (data->self->priv->throbber, "active", FALSE, NULL);
2349
if (!data->found1) {
2350
data->_tmp8_ = !data->found2;
2352
data->_tmp8_ = FALSE;
2355
data->l = g_object_ref_sink ((GtkLabel*) gtk_label_new ("There are no items to display..."));
2356
gtk_container_add ((GtkContainer*) data->self->priv->vbox, (GtkWidget*) data->l);
2357
_g_object_unref0 (data->l);
2359
gtk_widget_show_all ((GtkWidget*) data->self->priv->dialog);
2361
if (data->_state_ == 0) {
2362
g_simple_async_result_complete_in_idle (data->_async_result);
2364
g_simple_async_result_complete (data->_async_result);
2366
g_object_unref (data->_async_result);
2372
static void related_applet_on_clicked (RelatedApplet* self) {
2373
GtkWidgetFlags dialog_flags;
2376
g_return_if_fail (self != NULL);
2377
dialog_flags = GTK_WIDGET_FLAGS ((GtkWidget*) self->priv->dialog) & GTK_VISIBLE;
2378
if (dialog_flags != 0) {
2379
gtk_widget_hide ((GtkWidget*) self->priv->dialog);
2382
g_object_set (self->priv->dialog, "hide-on-unfocus", TRUE, NULL);
2383
active = _g_object_ref0 (wnck_screen_get_active_window (self->priv->wnck_screen));
2384
desktop_file = g_strdup ((const char*) g_object_get_data ((GObject*) active, "desktop-file-path"));
2385
related_applet_build_dialog (self, desktop_file, NULL, NULL);
2386
_g_free0 (desktop_file);
2387
_g_object_unref0 (active);
2391
static void _g_list_free_g_free (GList* self) {
2392
g_list_foreach (self, (GFunc) g_free, NULL);
2397
static void _lambda0_ (Block1Data* _data1_) {
2398
RelatedApplet * self;
2399
GAppLaunchContext* context;
2400
GError * _inner_error_ = NULL;
2401
self = _data1_->self;
2402
context = g_app_launch_context_new ();
2403
if (_data1_->desktop_file == NULL) {
2405
g_app_info_launch_default_for_uri (_tmp0_ = g_file_get_uri (_data1_->f), context, &_inner_error_);
2407
if (_inner_error_ != NULL) {
2408
_g_object_unref0 (context);
2409
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
2410
g_clear_error (&_inner_error_);
2414
GDesktopAppInfo* app_info;
2415
app_info = g_desktop_app_info_new_from_filename (_data1_->desktop_file);
2416
if (g_app_info_supports_uris ((GAppInfo*) app_info)) {
2419
l = g_list_append (l, g_file_get_uri (_data1_->f));
2420
g_app_info_launch_uris ((GAppInfo*) app_info, l, context, &_inner_error_);
2421
if (_inner_error_ != NULL) {
2422
__g_list_free_g_free0 (l);
2423
_g_object_unref0 (app_info);
2424
_g_object_unref0 (context);
2425
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
2426
g_clear_error (&_inner_error_);
2429
__g_list_free_g_free0 (l);
2433
l = g_list_append (l, _g_object_ref0 (_data1_->f));
2434
g_app_info_launch ((GAppInfo*) app_info, l, context, &_inner_error_);
2435
if (_inner_error_ != NULL) {
2436
__g_list_free_g_object_unref0 (l);
2437
_g_object_unref0 (app_info);
2438
_g_object_unref0 (context);
2439
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
2440
g_clear_error (&_inner_error_);
2443
__g_list_free_g_object_unref0 (l);
2445
_g_object_unref0 (app_info);
2447
gtk_widget_hide ((GtkWidget*) self->priv->dialog);
2448
_g_object_unref0 (context);
2452
static void __lambda0__gtk_button_clicked (GtkButton* _sender, gpointer self) {
2457
static Block1Data* block1_data_ref (Block1Data* _data1_) {
2458
g_atomic_int_inc (&_data1_->_ref_count_);
2463
static void block1_data_unref (Block1Data* _data1_) {
2464
if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) {
2465
_g_object_unref0 (_data1_->self);
2466
_g_free0 (_data1_->desktop_file);
2467
_g_object_unref0 (_data1_->f);
2468
g_slice_free (Block1Data, _data1_);
2473
static gboolean related_applet_push_result (RelatedApplet* self, ZeitgeistEvent* event, ZeitgeistSubject* subject) {
2474
gboolean result = FALSE;
2475
Block1Data* _data1_;
2476
gboolean _tmp0_ = FALSE;
2484
GError * _inner_error_ = NULL;
2485
g_return_val_if_fail (self != NULL, FALSE);
2486
g_return_val_if_fail (event != NULL, FALSE);
2487
g_return_val_if_fail (subject != NULL, FALSE);
2488
_data1_ = g_slice_new0 (Block1Data);
2489
_data1_->_ref_count_ = 1;
2490
_data1_->self = g_object_ref (self);
2491
_data1_->f = g_file_new_for_uri (zeitgeist_subject_get_uri (subject));
2492
if (g_file_is_native (_data1_->f)) {
2493
_tmp0_ = !g_file_query_exists (_data1_->f, NULL);
2499
block1_data_unref (_data1_);
2502
text = g_strdup (zeitgeist_subject_get_text (subject));
2505
text = (_tmp1_ = g_file_get_basename (_data1_->f), _g_free0 (text), _tmp1_);
2508
if (g_file_is_native (_data1_->f)) {
2511
fi = g_file_query_info (_data1_->f, G_FILE_ATTRIBUTE_STANDARD_ICON, 0, NULL, &_inner_error_);
2512
if (_inner_error_ != NULL) {
2513
_g_object_unref0 (icon);
2515
block1_data_unref (_data1_);
2516
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
2517
g_clear_error (&_inner_error_);
2520
icon = (_tmp2_ = _g_object_ref0 (g_file_info_get_icon (fi)), _g_object_unref0 (icon), _tmp2_);
2521
_g_object_unref0 (fi);
2524
icon = (_tmp3_ = g_content_type_get_icon (zeitgeist_subject_get_mimetype (subject)), _g_object_unref0 (icon), _tmp3_);
2526
button = g_object_ref_sink ((GtkButton*) gtk_button_new ());
2527
hbox = g_object_ref_sink ((GtkHBox*) gtk_hbox_new (FALSE, 6));
2528
image = g_object_ref_sink ((GtkImage*) gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_BUTTON));
2529
label = g_object_ref_sink ((GtkLabel*) gtk_label_new (text));
2530
gtk_label_set_ellipsize (label, PANGO_ELLIPSIZE_MIDDLE);
2531
gtk_label_set_max_width_chars (label, 35);
2532
g_object_set ((GtkMisc*) label, "xalign", 0.0f, NULL);
2533
gtk_box_pack_start ((GtkBox*) hbox, (GtkWidget*) image, FALSE, TRUE, (guint) 0);
2534
gtk_box_pack_start ((GtkBox*) hbox, (GtkWidget*) label, TRUE, TRUE, (guint) 0);
2535
gtk_button_set_relief (button, GTK_RELIEF_NONE);
2536
gtk_button_set_focus_on_click (button, FALSE);
2537
gtk_container_add ((GtkContainer*) button, (GtkWidget*) hbox);
2539
if (g_file_is_native (_data1_->f)) {
2541
_tmp4_ = (_tmp5_ = g_file_get_path (_data1_->f), _g_free0 (_tmp4_), _tmp5_);
2544
_tmp4_ = (_tmp6_ = g_file_get_uri (_data1_->f), _g_free0 (_tmp4_), _tmp6_);
2546
gtk_widget_set_tooltip_text ((GtkWidget*) button, _tmp4_);
2547
_data1_->desktop_file = g_strdup (self->priv->current_desktop_file_path);
2548
g_signal_connect_data (button, "clicked", (GCallback) __lambda0__gtk_button_clicked, block1_data_ref (_data1_), (GClosureNotify) block1_data_unref, 0);
2549
gtk_container_add ((GtkContainer*) self->priv->vbox, (GtkWidget*) button);
2552
_g_object_unref0 (label);
2553
_g_object_unref0 (image);
2554
_g_object_unref0 (hbox);
2555
_g_object_unref0 (button);
2556
_g_object_unref0 (icon);
2558
block1_data_unref (_data1_);
2563
static GObject * related_applet_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
2565
GObjectClass * parent_class;
2566
RelatedApplet * self;
2567
parent_class = G_OBJECT_CLASS (related_applet_parent_class);
2568
obj = parent_class->constructor (type, n_construct_properties, construct_properties);
2569
self = RELATED_APPLET (obj);
2573
g_object_set (self->priv->star_overlay, "active", FALSE, NULL);
2574
g_object_set (self->priv->star_overlay, "gravity", GDK_GRAVITY_SOUTH_EAST, NULL);
2575
g_object_set ((_tmp1_ = self->priv->star_overlay, AWN_IS_OVERLAY_THEMED_ICON (_tmp1_) ? ((AwnOverlayThemedIcon*) _tmp1_) : NULL), "scale", 0.3, NULL);
2576
g_object_set (self->priv->throbber, "gravity", GDK_GRAVITY_SOUTH_WEST, NULL);
2577
g_object_set ((_tmp2_ = self->priv->throbber, AWN_IS_OVERLAY_THROBBER (_tmp2_) ? ((AwnOverlayThrobber*) _tmp2_) : NULL), "scale", 0.3, NULL);
2583
static void related_applet_class_init (RelatedAppletClass * klass) {
2584
related_applet_parent_class = g_type_class_peek_parent (klass);
2585
g_type_class_add_private (klass, sizeof (RelatedAppletPrivate));
2586
G_OBJECT_CLASS (klass)->constructor = related_applet_constructor;
2587
G_OBJECT_CLASS (klass)->finalize = related_applet_finalize;
2591
static void related_applet_instance_init (RelatedApplet * self) {
2592
self->priv = RELATED_APPLET_GET_PRIVATE (self);
2593
self->priv->lookup = awn_desktop_lookup_cached_new ();
2594
self->priv->zg_log = zeitgeist_log_new ();
2595
self->priv->throbber = (AwnOverlay*) g_object_ref_sink ((AwnOverlayThrobber*) awn_overlay_throbber_new ());
2596
self->priv->star_overlay = (AwnOverlay*) g_object_ref_sink (awn_overlay_themed_icon_new (GTK_STOCK_ABOUT));
2600
static void related_applet_finalize (GObject* obj) {
2601
RelatedApplet * self;
2602
self = RELATED_APPLET (obj);
2603
_g_object_unref0 (self->priv->lookup);
2604
_g_object_unref0 (self->priv->zg_log);
2605
_g_object_unref0 (self->priv->throbber);
2606
_g_object_unref0 (self->priv->star_overlay);
2607
_g_hash_table_unref0 (self->priv->desktop_file_info);
2608
_g_object_unref0 (self->priv->dialog);
2609
_g_object_unref0 (self->priv->vbox);
2610
_g_free0 (self->priv->current_desktop_file_path);
2611
G_OBJECT_CLASS (related_applet_parent_class)->finalize (obj);
2615
GType related_applet_get_type (void) {
2616
static volatile gsize related_applet_type_id__volatile = 0;
2617
if (g_once_init_enter (&related_applet_type_id__volatile)) {
2618
static const GTypeInfo g_define_type_info = { sizeof (RelatedAppletClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) related_applet_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (RelatedApplet), 0, (GInstanceInitFunc) related_applet_instance_init, NULL };
2619
GType related_applet_type_id;
2620
related_applet_type_id = g_type_register_static (AWN_TYPE_APPLET_SIMPLE, "RelatedApplet", &g_define_type_info, 0);
2621
g_once_init_leave (&related_applet_type_id__volatile, related_applet_type_id);
2623
return related_applet_type_id__volatile;
2627
AwnApplet* awn_applet_factory_initp (const char* canonical_name, const char* uid, gint panel_id) {
2628
AwnApplet* result = NULL;
2629
g_return_val_if_fail (canonical_name != NULL, NULL);
2630
g_return_val_if_fail (uid != NULL, NULL);
2631
result = (AwnApplet*) g_object_ref_sink (related_applet_new (canonical_name, uid, panel_id));
2636
static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
2637
if ((array != NULL) && (destroy_func != NULL)) {
2639
for (i = 0; i < array_length; i = i + 1) {
2640
if (((gpointer*) array)[i] != NULL) {
2641
destroy_func (((gpointer*) array)[i]);
2648
static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
2649
_vala_array_destroy (array, array_length, destroy_func);
2654
static int _vala_strcmp0 (const char * str1, const char * str2) {
2656
return -(str1 != str2);
2659
return str1 != str2;
2661
return strcmp (str1, str2);