1 #ifndef __GLADE_PROJECT_H__ 2 #define __GLADE_PROJECT_H__ 3 4 #include <gladeui/glade-widget.h> 5 #include <gladeui/glade-command.h> 6 #include <gladeui/glade-xml-utils.h> 7 8 G_BEGIN_DECLS 9 10 #define GLADE_TYPE_PROJECT (glade_project_get_type ()) 11 #define GLADE_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GLADE_TYPE_PROJECT, GladeProject)) 12 #define GLADE_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GLADE_TYPE_PROJECT, GladeProjectClass)) 13 #define GLADE_IS_PROJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GLADE_TYPE_PROJECT)) 14 #define GLADE_IS_PROJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GLADE_TYPE_PROJECT)) 15 #define GLADE_PROJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GLADE_TYPE_PROJECT, GladeProjectClass)) 16 17 typedef struct _GladeProjectPrivate GladeProjectPrivate; 18 typedef struct _GladeProjectClass GladeProjectClass; 19 20 /** 21 * GladePointerMode: 22 * @GLADE_POINTER_SELECT: Mouse pointer used for selecting widgets 23 * @GLADE_POINTER_ADD_WIDGET: Mouse pointer used for adding widgets 24 * @GLADE_POINTER_DRAG_RESIZE: Mouse pointer used for dragging and 25 * resizing widgets in containers 26 * @GLADE_POINTER_MARGIN_EDIT: Mouse pointer used to edit widget margins 27 * @GLADE_POINTER_ALIGN_EDIT: Mouse pointer used to edit widget alignment 28 * 29 * Indicates what the pointer is used for in the workspace. 30 */ 31 typedef enum 32 { 33 GLADE_POINTER_SELECT = 0, 34 GLADE_POINTER_ADD_WIDGET, 35 GLADE_POINTER_DRAG_RESIZE, 36 GLADE_POINTER_MARGIN_EDIT, 37 GLADE_POINTER_ALIGN_EDIT 38 } GladePointerMode; 39 40 typedef enum 41 { 42 GLADE_SUPPORT_OK = 0, 43 GLADE_SUPPORT_DEPRECATED = (0x01 << 0), 44 GLADE_SUPPORT_MISMATCH = (0x01 << 1) 45 } GladeSupportMask; 46 47 /** 48 * GladeProjectModelColumns: 49 * @GLADE_PROJECT_MODEL_COLUMN_ICON_NAME: name of the icon for the widget 50 * @GLADE_PROJECT_MODEL_COLUMN_NAME: Name of the widget 51 * @GLADE_PROJECT_MODEL_COLUMN_TYPE_NAME: The type name of the widget 52 * @GLADE_PROJECT_MODEL_COLUMN_OBJECT: the GObject of the widget 53 * @GLADE_PROJECT_MODEL_COLUMN_MISC: the auxilary text describing a widget's role 54 * @GLADE_PROJECT_MODEL_COLUMN_WARNING: the support warning text for this widget 55 * @GLADE_PROJECT_MODEL_N_COLUMNS: Number of columns 56 * 57 * The tree view columns provided by the GtkTreeModel implemented 58 * by GladeProject 59 * 60 **/ 61 typedef enum 62 { 63 GLADE_PROJECT_MODEL_COLUMN_ICON_NAME, 64 GLADE_PROJECT_MODEL_COLUMN_NAME, 65 GLADE_PROJECT_MODEL_COLUMN_TYPE_NAME, 66 GLADE_PROJECT_MODEL_COLUMN_OBJECT, 67 GLADE_PROJECT_MODEL_COLUMN_MISC, 68 GLADE_PROJECT_MODEL_COLUMN_WARNING, 69 GLADE_PROJECT_MODEL_N_COLUMNS 70 } GladeProjectModelColumns; 71 72 /** 73 * GladeVerifyFlags: 74 * @GLADE_VERIFY_VERSIONS: Verify version mismatches 75 * @GLADE_VERIFY_DEPRECATIONS: Verify deprecations 76 * @GLADE_VERIFY_UNRECOGNIZED: Verify unrecognized types 77 * 78 */ 79 typedef enum { 80 GLADE_VERIFY_VERSIONS = (1 << 0), 81 GLADE_VERIFY_DEPRECATIONS = (1 << 1), 82 GLADE_VERIFY_UNRECOGNIZED = (1 << 2) 83 } GladeVerifyFlags; 84 85 struct _GladeProject 86 { 87 GObject parent_instance; 88 89 GladeProjectPrivate *priv; 90 }; 91 92 struct _GladeProjectClass 93 { 94 GObjectClass parent_class; 95 96 void (*add_object) (GladeProject *project, 97 GladeWidget *widget); 98 void (*remove_object) (GladeProject *project, 99 GladeWidget *widget); 100 101 void (*undo) (GladeProject *project); 102 void (*redo) (GladeProject *project); 103 GladeCommand *(*next_undo_item) (GladeProject *project); 104 GladeCommand *(*next_redo_item) (GladeProject *project); 105 void (*push_undo) (GladeProject *project, 106 GladeCommand *command); 107 108 void (*changed) (GladeProject *project, 109 GladeCommand *command, 110 gboolean forward); 111 112 void (*widget_name_changed) (GladeProject *project, 113 GladeWidget *widget); 114 void (*selection_changed) (GladeProject *project); 115 void (*close) (GladeProject *project); 116 117 void (*parse_finished) (GladeProject *project); 118 119 void (* glade_reserved1) (void); 120 void (* glade_reserved2) (void); 121 void (* glade_reserved3) (void); 122 void (* glade_reserved4) (void); 123 void (* glade_reserved5) (void); 124 void (* glade_reserved6) (void); 125 void (* glade_reserved7) (void); 126 void (* glade_reserved8) (void); 127 }; 128 129 130 GType glade_project_get_type (void) G_GNUC_CONST; 131 132 GladeProject *glade_project_new (void); 133 GladeProject *glade_project_load (const gchar *path); 134 gboolean glade_project_load_from_file (GladeProject *project, 135 const gchar *path); 136 gboolean glade_project_save (GladeProject *project, 137 const gchar *path, 138 GError **error); 139 gboolean glade_project_save_verify (GladeProject *project, 140 const gchar *path, 141 GladeVerifyFlags flags, 142 GError **error); 143 gboolean glade_project_autosave (GladeProject *project, 144 GError **error); 145 gboolean glade_project_backup (GladeProject *project, 146 const gchar *path, 147 GError **error); 148 void glade_project_push_progress (GladeProject *project); 149 gboolean glade_project_load_cancelled (GladeProject *project); 150 void glade_project_cancel_load (GladeProject *project); 151 152 void glade_project_preview (GladeProject *project, 153 GladeWidget *gwidget); 154 void glade_project_properties (GladeProject *project); 155 gchar *glade_project_resource_fullpath (GladeProject *project, 156 const gchar *resource); 157 void glade_project_set_resource_path (GladeProject *project, 158 const gchar *path); 159 const gchar *glade_project_get_resource_path (GladeProject *project); 160 161 void glade_project_widget_visibility_changed (GladeProject *project, 162 GladeWidget *widget, 163 gboolean visible); 164 void glade_project_check_reordered (GladeProject *project, 165 GladeWidget *parent, 166 GList *old_order); 167 168 void glade_project_set_template (GladeProject *project, 169 GladeWidget *widget); 170 GladeWidget *glade_project_get_template (GladeProject *project); 171 172 void glade_project_set_license (GladeProject *project, 173 const gchar *license); 174 175 const gchar *glade_project_get_license (GladeProject *project); 176 177 /* Commands */ 178 void glade_project_undo (GladeProject *project); 179 void glade_project_redo (GladeProject *project); 180 GladeCommand *glade_project_next_undo_item (GladeProject *project); 181 GladeCommand *glade_project_next_redo_item (GladeProject *project); 182 void glade_project_push_undo (GladeProject *project, 183 GladeCommand *cmd); 184 GtkWidget *glade_project_undo_items (GladeProject *project); 185 GtkWidget *glade_project_redo_items (GladeProject *project); 186 187 /* Add/Remove Objects */ 188 const GList *glade_project_get_objects (GladeProject *project); 189 void glade_project_add_object (GladeProject *project, 190 GObject *object); 191 void glade_project_remove_object (GladeProject *project, 192 GObject *object); 193 gboolean glade_project_has_object (GladeProject *project, 194 GObject *object); 195 void glade_project_widget_changed (GladeProject *project, 196 GladeWidget *gwidget); 197 198 /* Widget names */ 199 GladeWidget *glade_project_get_widget_by_name (GladeProject *project, 200 const gchar *name); 201 void glade_project_set_widget_name (GladeProject *project, 202 GladeWidget *widget, 203 const gchar *name); 204 gchar *glade_project_new_widget_name (GladeProject *project, 205 GladeWidget *widget, 206 const gchar *base_name); 207 gboolean glade_project_available_widget_name(GladeProject *project, 208 GladeWidget *widget, 209 const gchar *name); 210 211 /* Selection */ 212 gboolean glade_project_is_selected (GladeProject *project, 213 GObject *object); 214 void glade_project_selection_set (GladeProject *project, 215 GObject *object, 216 gboolean emit_signal); 217 void glade_project_selection_add (GladeProject *project, 218 GObject *object, 219 gboolean emit_signal); 220 void glade_project_selection_remove (GladeProject *project, 221 GObject *object, 222 gboolean emit_signal); 223 void glade_project_selection_clear (GladeProject *project, 224 gboolean emit_signal); 225 void glade_project_selection_changed (GladeProject *project); 226 void glade_project_queue_selection_changed (GladeProject *project); 227 GList *glade_project_selection_get (GladeProject *project); 228 gboolean glade_project_get_has_selection (GladeProject *project); 229 230 /* Accessors */ 231 const gchar *glade_project_get_path (GladeProject *project); 232 gchar *glade_project_get_name (GladeProject *project); 233 void glade_project_reset_path (GladeProject *project); 234 gboolean glade_project_is_loading (GladeProject *project); 235 time_t glade_project_get_file_mtime (GladeProject *project); 236 gboolean glade_project_get_readonly (GladeProject *project); 237 gboolean glade_project_get_modified (GladeProject *project); 238 void glade_project_set_pointer_mode (GladeProject *project, 239 GladePointerMode mode); 240 GladePointerMode glade_project_get_pointer_mode (GladeProject *project); 241 void glade_project_set_add_item (GladeProject *project, 242 GladeWidgetAdaptor *adaptor); 243 GladeWidgetAdaptor *glade_project_get_add_item (GladeProject *project); 244 void glade_project_set_target_version (GladeProject *project, 245 const gchar *catalog, 246 gint major, 247 gint minor); 248 void glade_project_get_target_version (GladeProject *project, 249 const gchar *catalog, 250 gint *major, 251 gint *minor); 252 GList *glade_project_required_libs (GladeProject *project); 253 gchar *glade_project_display_dependencies (GladeProject *project); 254 255 GList *glade_project_toplevels (GladeProject *project); 256 257 void glade_project_set_translation_domain (GladeProject *project, 258 const gchar *domain); 259 const gchar *glade_project_get_translation_domain (GladeProject *project); 260 261 void glade_project_set_css_provider_path (GladeProject *project, 262 const gchar *path); 263 264 const gchar *glade_project_get_css_provider_path (GladeProject *project); 265 266 /* Verifications */ 267 gboolean glade_project_verify (GladeProject *project, 268 gboolean saving, 269 GladeVerifyFlags flags); 270 gchar *glade_project_verify_widget_adaptor(GladeProject *project, 271 GladeWidgetAdaptor *adaptor, 272 GladeSupportMask *mask); 273 void glade_project_verify_property (GladeProperty *property); 274 void glade_project_verify_signal (GladeWidget *widget, 275 GladeSignal *signal); 276 gboolean glade_project_writing_preview (GladeProject *project); 277 278 /* General selection driven commands */ 279 void glade_project_copy_selection (GladeProject *project); 280 void glade_project_command_cut (GladeProject *project); 281 void glade_project_command_paste (GladeProject *project, 282 GladePlaceholder *placeholder); 283 void glade_project_command_delete (GladeProject *project); 284 285 G_END_DECLS 286 287 #endif /* __GLADE_PROJECT_H__ */ 288