1 /* 2 * window-tracker-window: A window tracked by window tracker. 3 * 4 * Copyright 2012-2016 Stephan Haller <nomad@froevel.de> 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 2 of the License, or 9 * (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 19 * MA 02110-1301, USA. 20 * 21 * 22 */ 23 24 #ifndef __LIBXFDASHBOARD_WINDOW_TRACKER_WINDOW__ 25 #define __LIBXFDASHBOARD_WINDOW_TRACKER_WINDOW__ 26 27 #if !defined(__LIBXFDASHBOARD_H_INSIDE__) && !defined(LIBXFDASHBOARD_COMPILATION) 28 #error "Only <libxfdashboard/libxfdashboard.h> can be included directly." 29 #endif 30 31 #include <clutter/clutter.h> 32 #include <glib-object.h> 33 #include <gdk/gdk.h> 34 35 #include <libxfdashboard/window-tracker-workspace.h> 36 #include <libxfdashboard/window-tracker-monitor.h> 37 38 G_BEGIN_DECLS 39 40 /* Public definitions */ 41 /** 42 * XfdashboardWindowTrackerWindowState: 43 * @XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE_HIDDEN: The window is not visible on its 44 * #XfdashboardWindowTrackerWorkspace, 45 * e.g. when minimized. 46 * @XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE_MINIMIZED: The window is minimized. 47 * @XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE_MAXIMIZED: The window is maximized. 48 * @XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE_FULLSCREEN: The window is fullscreen. 49 * @XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE_SKIP_PAGER: The window should not be included on pagers. 50 * @XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE_SKIP_TASKLIST: The window should not be included on tasklists. 51 * @XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE_PINNED: The window is on all workspaces. 52 * @XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE_URGENT: The window requires a response from the user. 53 * 54 * Type used as a bitmask to describe the state of a #XfdashboardWindowTrackerWindow. 55 */ 56 typedef enum /*< flags,prefix=XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE >*/ 57 { 58 XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE_HIDDEN=1 << 0, 59 XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE_MINIMIZED=1 << 1, 60 XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE_MAXIMIZED=1 << 2, 61 XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE_FULLSCREEN=1 << 3, 62 XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE_SKIP_PAGER=1 << 4, 63 XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE_SKIP_TASKLIST=1 << 5, 64 XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE_PINNED=1 << 6, 65 XFDASHBOARD_WINDOW_TRACKER_WINDOW_STATE_URGENT=1 << 7, 66 } XfdashboardWindowTrackerWindowState; 67 68 /** 69 * XfdashboardWindowTrackerWindowAction: 70 * @XFDASHBOARD_WINDOW_TRACKER_WINDOW_ACTION_CLOSE: The window may be closed. 71 * 72 * Type used as a bitmask to describe the actions that can be done for a #XfdashboardWindowTrackerWindow. 73 */ 74 typedef enum /*< flags,prefix=XFDASHBOARD_WINDOW_TRACKER_WINDOW_ACTION >*/ 75 { 76 XFDASHBOARD_WINDOW_TRACKER_WINDOW_ACTION_CLOSE=1 << 0, 77 } XfdashboardWindowTrackerWindowAction; 78 79 80 /* Object declaration */ 81 #define XFDASHBOARD_TYPE_WINDOW_TRACKER_WINDOW (xfdashboard_window_tracker_window_get_type()) 82 #define XFDASHBOARD_WINDOW_TRACKER_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), XFDASHBOARD_TYPE_WINDOW_TRACKER_WINDOW, XfdashboardWindowTrackerWindow)) 83 #define XFDASHBOARD_IS_WINDOW_TRACKER_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), XFDASHBOARD_TYPE_WINDOW_TRACKER_WINDOW)) 84 #define XFDASHBOARD_WINDOW_TRACKER_WINDOW_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE((obj), XFDASHBOARD_TYPE_WINDOW_TRACKER_WINDOW, XfdashboardWindowTrackerWindowInterface)) 85 86 typedef struct _XfdashboardWindowTrackerWindow XfdashboardWindowTrackerWindow; 87 typedef struct _XfdashboardWindowTrackerWindowInterface XfdashboardWindowTrackerWindowInterface; 88 89 struct _XfdashboardWindowTrackerWindowInterface 90 { 91 /*< private >*/ 92 /* Parent interface */ 93 GTypeInterface parent_interface; 94 95 /*< public >*/ 96 /* Virtual functions */ 97 gboolean (*is_equal)(XfdashboardWindowTrackerWindow *inLeft, XfdashboardWindowTrackerWindow *inRight); 98 99 gboolean (*is_visible)(XfdashboardWindowTrackerWindow *self); 100 void (*show)(XfdashboardWindowTrackerWindow *self); 101 void (*hide)(XfdashboardWindowTrackerWindow *self); 102 103 XfdashboardWindowTrackerWindow* (*get_parent)(XfdashboardWindowTrackerWindow *self); 104 105 XfdashboardWindowTrackerWindowState (*get_state)(XfdashboardWindowTrackerWindow *self); 106 XfdashboardWindowTrackerWindowAction (*get_actions)(XfdashboardWindowTrackerWindow *self); 107 108 const gchar* (*get_name)(XfdashboardWindowTrackerWindow *self); 109 110 GdkPixbuf* (*get_icon)(XfdashboardWindowTrackerWindow *self); 111 const gchar* (*get_icon_name)(XfdashboardWindowTrackerWindow *self); 112 113 XfdashboardWindowTrackerWorkspace* (*get_workspace)(XfdashboardWindowTrackerWindow *self); 114 gboolean (*is_on_workspace)(XfdashboardWindowTrackerWindow *self, XfdashboardWindowTrackerWorkspace *inWorkspace); 115 116 XfdashboardWindowTrackerMonitor* (*get_monitor)(XfdashboardWindowTrackerWindow *self); 117 gboolean (*is_on_monitor)(XfdashboardWindowTrackerWindow *self, XfdashboardWindowTrackerMonitor *inMonitor); 118 119 void (*get_geometry)(XfdashboardWindowTrackerWindow *self, gint *outX, gint *outY, gint *outWidth, gint *outHeight); 120 void (*set_geometry)(XfdashboardWindowTrackerWindow *self, gint inX, gint inY, gint inWidth, gint inHeight); 121 void (*move)(XfdashboardWindowTrackerWindow *self, gint inX, gint inY); 122 void (*resize)(XfdashboardWindowTrackerWindow *self, gint inWidth, gint inHeight); 123 void (*move_to_workspace)(XfdashboardWindowTrackerWindow *self, XfdashboardWindowTrackerWorkspace *inWorkspace); 124 void (*activate)(XfdashboardWindowTrackerWindow *self); 125 void (*close)(XfdashboardWindowTrackerWindow *self); 126 127 gint (*get_pid)(XfdashboardWindowTrackerWindow *self); 128 gchar** (*get_instance_names)(XfdashboardWindowTrackerWindow *self); 129 130 ClutterContent* (*get_content)(XfdashboardWindowTrackerWindow *self); 131 132 /* Signals */ 133 void (*name_changed)(XfdashboardWindowTrackerWindow *self); 134 void (*state_changed)(XfdashboardWindowTrackerWindow *self, 135 XfdashboardWindowTrackerWindowState inOldStates); 136 void (*actions_changed)(XfdashboardWindowTrackerWindow *self, 137 XfdashboardWindowTrackerWindowAction inOldActions); 138 void (*icon_changed)(XfdashboardWindowTrackerWindow *self); 139 void (*workspace_changed)(XfdashboardWindowTrackerWindow *self, 140 XfdashboardWindowTrackerWorkspace *inOldWorkspace); 141 void (*monitor_changed)(XfdashboardWindowTrackerWindow *self, 142 XfdashboardWindowTrackerMonitor *inOldMonitor); 143 void (*geometry_changed)(XfdashboardWindowTrackerWindow *self); 144 void (*closed)(XfdashboardWindowTrackerWindow *self); 145 }; 146 147 /* Public API */ 148 GType xfdashboard_window_tracker_window_get_type(void) G_GNUC_CONST; 149 150 gboolean xfdashboard_window_tracker_window_is_equal(XfdashboardWindowTrackerWindow *inLeft, 151 XfdashboardWindowTrackerWindow *inRight); 152 153 gboolean xfdashboard_window_tracker_window_is_visible(XfdashboardWindowTrackerWindow *self); 154 gboolean xfdashboard_window_tracker_window_is_visible_on_workspace(XfdashboardWindowTrackerWindow *self, 155 XfdashboardWindowTrackerWorkspace *inWorkspace); 156 gboolean xfdashboard_window_tracker_window_is_visible_on_monitor(XfdashboardWindowTrackerWindow *self, 157 XfdashboardWindowTrackerMonitor *inMonitor); 158 void xfdashboard_window_tracker_window_show(XfdashboardWindowTrackerWindow *self); 159 void xfdashboard_window_tracker_window_hide(XfdashboardWindowTrackerWindow *self); 160 161 XfdashboardWindowTrackerWindow* xfdashboard_window_tracker_window_get_parent(XfdashboardWindowTrackerWindow *self); 162 163 XfdashboardWindowTrackerWindowState xfdashboard_window_tracker_window_get_state(XfdashboardWindowTrackerWindow *self); 164 XfdashboardWindowTrackerWindowAction xfdashboard_window_tracker_window_get_actions(XfdashboardWindowTrackerWindow *self); 165 166 const gchar* xfdashboard_window_tracker_window_get_name(XfdashboardWindowTrackerWindow *self); 167 168 GdkPixbuf* xfdashboard_window_tracker_window_get_icon(XfdashboardWindowTrackerWindow *self); 169 const gchar* xfdashboard_window_tracker_window_get_icon_name(XfdashboardWindowTrackerWindow *self); 170 171 XfdashboardWindowTrackerWorkspace* xfdashboard_window_tracker_window_get_workspace(XfdashboardWindowTrackerWindow *self); 172 gboolean xfdashboard_window_tracker_window_is_on_workspace(XfdashboardWindowTrackerWindow *self, 173 XfdashboardWindowTrackerWorkspace *inWorkspace); 174 void xfdashboard_window_tracker_window_move_to_workspace(XfdashboardWindowTrackerWindow *self, 175 XfdashboardWindowTrackerWorkspace *inWorkspace); 176 177 XfdashboardWindowTrackerMonitor* xfdashboard_window_tracker_window_get_monitor(XfdashboardWindowTrackerWindow *self); 178 gboolean xfdashboard_window_tracker_window_is_on_monitor(XfdashboardWindowTrackerWindow *self, 179 XfdashboardWindowTrackerMonitor *inMonitor); 180 181 void xfdashboard_window_tracker_window_get_geometry(XfdashboardWindowTrackerWindow *self, 182 gint *outX, 183 gint *outY, 184 gint *outWidth, 185 gint *outHeight); 186 void xfdashboard_window_tracker_window_set_geometry(XfdashboardWindowTrackerWindow *self, 187 gint inX, 188 gint inY, 189 gint inWidth, 190 gint inHeight); 191 void xfdashboard_window_tracker_window_move(XfdashboardWindowTrackerWindow *self, 192 gint inX, 193 gint inY); 194 void xfdashboard_window_tracker_window_resize(XfdashboardWindowTrackerWindow *self, 195 gint inWidth, 196 gint inHeight); 197 198 void xfdashboard_window_tracker_window_activate(XfdashboardWindowTrackerWindow *self); 199 void xfdashboard_window_tracker_window_close(XfdashboardWindowTrackerWindow *self); 200 201 gboolean xfdashboard_window_tracker_window_is_stage(XfdashboardWindowTrackerWindow *self); 202 ClutterStage* xfdashboard_window_tracker_window_get_stage(XfdashboardWindowTrackerWindow *self); 203 void xfdashboard_window_tracker_window_show_stage(XfdashboardWindowTrackerWindow *self); 204 void xfdashboard_window_tracker_window_hide_stage(XfdashboardWindowTrackerWindow *self); 205 206 gint xfdashboard_window_tracker_window_get_pid(XfdashboardWindowTrackerWindow *self); 207 gchar** xfdashboard_window_tracker_window_get_instance_names(XfdashboardWindowTrackerWindow *self); 208 209 ClutterContent* xfdashboard_window_tracker_window_get_content(XfdashboardWindowTrackerWindow *self); 210 211 G_END_DECLS 212 213 #endif /* __LIBXFDASHBOARD_WINDOW_TRACKER_WINDOW__ */ 214