1 /* 2 * Copyright (C) 2010 Canonical Ltd 3 * 4 * This program is free software: you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License version 3 as 6 * published by the Free Software Foundation. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details. 12 * 13 * You should have received a copy of the GNU General Public License 14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 15 * 16 * Authored by: Jason Smith <jason.smith@canonical.com> 17 * 18 */ 19 20 21 #ifndef __BAMFLEGACY_WINDOW_H__ 22 #define __BAMFLEGACY_WINDOW_H__ 23 24 #include "config.h" 25 26 #include "bamf-view.h" 27 #include <sys/types.h> 28 #include <glib.h> 29 #include <glib-object.h> 30 #include <libwnck/libwnck.h> 31 32 #define BAMF_TYPE_LEGACY_WINDOW (bamf_legacy_window_get_type ()) 33 #define BAMF_LEGACY_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BAMF_TYPE_LEGACY_WINDOW, BamfLegacyWindow)) 34 #define BAMF_IS_LEGACY_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BAMF_TYPE_LEGACY_WINDOW)) 35 #define BAMF_LEGACY_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BAMF_TYPE_LEGACY_WINDOW, BamfLegacyWindowClass)) 36 #define BAMF_IS_LEGACY_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BAMF_TYPE_LEGACY_WINDOW)) 37 #define BAMF_LEGACY_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BAMF_TYPE_LEGACY_WINDOW, BamfLegacyWindowClass)) 38 39 #define BAMF_LEGACY_WINDOW_SIGNAL_NAME_CHANGED "name-changed" 40 #define BAMF_LEGACY_WINDOW_SIGNAL_ROLE_CHANGED "role-changed" 41 #define BAMF_LEGACY_WINDOW_SIGNAL_CLASS_CHANGED "class-changed" 42 #define BAMF_LEGACY_WINDOW_SIGNAL_STATE_CHANGED "state-changed" 43 #define BAMF_LEGACY_WINDOW_SIGNAL_GEOMETRY_CHANGED "geometry-changed" 44 #define BAMF_LEGACY_WINDOW_SIGNAL_CLOSED "closed" 45 46 typedef struct _BamfLegacyWindow BamfLegacyWindow; 47 typedef struct _BamfLegacyWindowClass BamfLegacyWindowClass; 48 typedef struct _BamfLegacyWindowPrivate BamfLegacyWindowPrivate; 49 50 typedef enum 51 { 52 BAMF_WINDOW_NORMAL, /* document/app window */ 53 BAMF_WINDOW_DESKTOP, /* desktop background */ 54 BAMF_WINDOW_DOCK, /* panel */ 55 BAMF_WINDOW_DIALOG, /* dialog */ 56 BAMF_WINDOW_TOOLBAR, /* tearoff toolbar */ 57 BAMF_WINDOW_MENU, /* tearoff menu */ 58 BAMF_WINDOW_UTILITY, /* palette/toolbox window */ 59 BAMF_WINDOW_SPLASHSCREEN /* splash screen */ 60 } BamfWindowType; 61 62 typedef enum 63 { 64 BAMF_WINDOW_FLOATING, 65 BAMF_WINDOW_HORIZONTAL_MAXIMIZED, 66 BAMF_WINDOW_VERTICAL_MAXIMIZED, 67 BAMF_WINDOW_MAXIMIZED 68 } BamfWindowMaximizationType; 69 70 struct _BamfLegacyWindowClass 71 { 72 GObjectClass parent; 73 74 BamfLegacyWindow * (*get_transient) (BamfLegacyWindow *legacy_window); 75 const char * (*get_name) (BamfLegacyWindow *legacy_window); 76 const char * (*get_role) (BamfLegacyWindow *legacy_window); 77 const char * (*get_class_name) (BamfLegacyWindow *legacy_window); 78 const char * (*get_class_instance_name) (BamfLegacyWindow *legacy_window); 79 const char * (*get_exec_string) (BamfLegacyWindow *legacy_window); 80 const char * (*get_working_dir) (BamfLegacyWindow *legacy_window); 81 char * (*save_mini_icon) (BamfLegacyWindow *legacy_window); 82 char * (*get_process_name) (BamfLegacyWindow *legacy_window); 83 char * (*get_app_id) (BamfLegacyWindow *legacy_window); 84 char * (*get_unique_bus_name) (BamfLegacyWindow *legacy_window); 85 char * (*get_menu_object_path) (BamfLegacyWindow *legacy_window); 86 char * (*get_hint) (BamfLegacyWindow *legacy_window, 87 const gchar *name); 88 guint (*get_pid) (BamfLegacyWindow *legacy_window); 89 guint32 (*get_xid) (BamfLegacyWindow *legacy_window); 90 gboolean (*needs_attention) (BamfLegacyWindow *legacy_window); 91 gboolean (*is_active) (BamfLegacyWindow *legacy_window); 92 gboolean (*is_skip_tasklist) (BamfLegacyWindow *legacy_window); 93 gboolean (*is_desktop) (BamfLegacyWindow *legacy_window); 94 gboolean (*is_dialog) (BamfLegacyWindow *legacy_window); 95 gboolean (*is_closed) (BamfLegacyWindow *legacy_window); 96 BamfWindowMaximizationType (*maximized) (BamfLegacyWindow *legacy_window); 97 BamfWindowType (*get_window_type) (BamfLegacyWindow *legacy_window); 98 void (*get_geometry) (BamfLegacyWindow *legacy_window, 99 gint *x, gint *y, gint *w, gint *h); 100 void (*set_hint) (BamfLegacyWindow *legacy_window, 101 const gchar *name, const gchar *value); 102 GtkWidget * (*get_action_menu) (BamfLegacyWindow *legacy_window); 103 void (*show_action_menu) (BamfLegacyWindow *legacy_window, 104 guint32 time, guint button, gint x, gint y); 105 void (*reopen) (BamfLegacyWindow *legacy_window); 106 107 /*< signals >*/ 108 void (*name_changed) (BamfLegacyWindow *legacy_window); 109 void (*class_changed) (BamfLegacyWindow *legacy_window); 110 void (*role_changed) (BamfLegacyWindow *legacy_window); 111 void (*state_changed) (BamfLegacyWindow *legacy_window); 112 void (*geometry_changed) (BamfLegacyWindow *legacy_window); 113 void (*closed) (BamfLegacyWindow *legacy_window); 114 }; 115 116 struct _BamfLegacyWindow 117 { 118 GObject parent; 119 120 /* private */ 121 BamfLegacyWindowPrivate *priv; 122 }; 123 124 GType bamf_legacy_window_get_type (void) G_GNUC_CONST; 125 126 guint32 bamf_legacy_window_get_xid (BamfLegacyWindow *self); 127 128 guint bamf_legacy_window_get_pid (BamfLegacyWindow *self); 129 130 void bamf_legacy_window_get_geometry (BamfLegacyWindow *self, 131 gint *x, gint *y, 132 gint *width, gint *height); 133 134 gboolean bamf_legacy_window_is_active (BamfLegacyWindow *self); 135 136 gboolean bamf_legacy_window_is_skip_tasklist (BamfLegacyWindow *self); 137 138 gboolean bamf_legacy_window_needs_attention (BamfLegacyWindow *self); 139 140 gboolean bamf_legacy_window_is_closed (BamfLegacyWindow *self); 141 142 BamfWindowType bamf_legacy_window_get_window_type (BamfLegacyWindow *self); 143 144 BamfWindowMaximizationType bamf_legacy_window_maximized (BamfLegacyWindow *self); 145 146 const char * bamf_legacy_window_get_class_instance_name (BamfLegacyWindow *self); 147 148 const char * bamf_legacy_window_get_class_name (BamfLegacyWindow *self); 149 150 const char * bamf_legacy_window_get_name (BamfLegacyWindow *self); 151 152 const char * bamf_legacy_window_get_role (BamfLegacyWindow *self); 153 154 const char * bamf_legacy_window_get_exec_string (BamfLegacyWindow *self); 155 156 const char * bamf_legacy_window_get_working_dir (BamfLegacyWindow *self); 157 158 char * bamf_legacy_window_save_mini_icon (BamfLegacyWindow *self); 159 160 GFile * bamf_legacy_window_get_saved_mini_icon (BamfLegacyWindow *self); 161 162 char * bamf_legacy_window_get_process_name (BamfLegacyWindow *self); 163 164 BamfLegacyWindow * bamf_legacy_window_get_transient (BamfLegacyWindow *self); 165 166 char * bamf_legacy_window_get_hint (BamfLegacyWindow *self, 167 const char *name); 168 169 void bamf_legacy_window_set_hint (BamfLegacyWindow *self, 170 const char *name, 171 const char *value); 172 173 gint bamf_legacy_window_get_stacking_position (BamfLegacyWindow *self); 174 175 GtkWidget * bamf_legacy_window_get_action_menu (BamfLegacyWindow *self); 176 177 void bamf_legacy_window_show_action_menu (BamfLegacyWindow *self, 178 guint32 time, guint button, 179 gint x, gint y); 180 181 void bamf_legacy_window_reopen (BamfLegacyWindow *self); 182 183 BamfLegacyWindow * bamf_legacy_window_new (WnckWindow *legacy_window); 184 185 #endif 186 187