diff --git a/app/widgets/gimpcontrollerinfo.c b/app/widgets/gimpcontrollerinfo.c index 2da006a482..38fc19ec0d 100644 --- a/app/widgets/gimpcontrollerinfo.c +++ b/app/widgets/gimpcontrollerinfo.c @@ -459,11 +459,18 @@ gimp_controller_info_event (GimpController *controller, if (info->debug_events) { + gchar *controller_name; + + g_object_get (controller, "name", &controller_name, NULL); + g_print ("Received '%s' (class '%s')\n" " controller event '%s (%s)'\n", - controller->name, GIMP_CONTROLLER_GET_CLASS (controller)->name, + controller_name, GIMP_CONTROLLER_GET_CLASS (controller)->name, event_name, event_blurb); + if (controller_name) + g_free (controller_name); + switch (event->any.type) { case GIMP_CONTROLLER_EVENT_TRIGGER: diff --git a/libgimpwidgets/gimpcontroller.c b/libgimpwidgets/gimpcontroller.c index 000b863788..2bd47edb87 100644 --- a/libgimpwidgets/gimpcontroller.c +++ b/libgimpwidgets/gimpcontroller.c @@ -61,6 +61,14 @@ enum LAST_SIGNAL }; +typedef struct _GimpControllerPrivate +{ + gchar *name; + gchar *state; +} GimpControllerPrivate; + +#define GET_PRIVATE(obj) ((GimpControllerPrivate *) gimp_controller_get_instance_private ((GimpController *) (obj))) + static void gimp_controller_finalize (GObject *object); static void gimp_controller_set_property (GObject *object, @@ -74,6 +82,7 @@ static void gimp_controller_get_property (GObject *object, G_DEFINE_TYPE_WITH_CODE (GimpController, gimp_controller, G_TYPE_OBJECT, + G_ADD_PRIVATE (GimpController) G_IMPLEMENT_INTERFACE (GIMP_TYPE_CONFIG, NULL)) #define parent_class gimp_controller_parent_class @@ -134,10 +143,11 @@ gimp_controller_init (GimpController *controller) static void gimp_controller_finalize (GObject *object) { - GimpController *controller = GIMP_CONTROLLER (object); + GimpController *controller = GIMP_CONTROLLER (object); + GimpControllerPrivate *priv = GET_PRIVATE (controller); - g_clear_pointer (&controller->name, g_free); - g_clear_pointer (&controller->state, g_free); + g_clear_pointer (&priv->name, g_free); + g_clear_pointer (&priv->state, g_free); G_OBJECT_CLASS (parent_class)->finalize (object); } @@ -148,19 +158,20 @@ gimp_controller_set_property (GObject *object, const GValue *value, GParamSpec *pspec) { - GimpController *controller = GIMP_CONTROLLER (object); + GimpController *controller = GIMP_CONTROLLER (object); + GimpControllerPrivate *priv = GET_PRIVATE (controller); switch (property_id) { case PROP_NAME: - if (controller->name) - g_free (controller->name); - controller->name = g_value_dup_string (value); + if (priv->name) + g_free (priv->name); + priv->name = g_value_dup_string (value); break; case PROP_STATE: - if (controller->state) - g_free (controller->state); - controller->state = g_value_dup_string (value); + if (priv->state) + g_free (priv->state); + priv->state = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -174,15 +185,16 @@ gimp_controller_get_property (GObject *object, GValue *value, GParamSpec *pspec) { - GimpController *controller = GIMP_CONTROLLER (object); + GimpController *controller = GIMP_CONTROLLER (object); + GimpControllerPrivate *priv = GET_PRIVATE (controller); switch (property_id) { case PROP_NAME: - g_value_set_string (value, controller->name); + g_value_set_string (value, priv->name); break; case PROP_STATE: - g_value_set_string (value, controller->state); + g_value_set_string (value, priv->state); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); diff --git a/libgimpwidgets/gimpcontroller.h b/libgimpwidgets/gimpcontroller.h index 4a9708d58b..b78adfddea 100644 --- a/libgimpwidgets/gimpcontroller.h +++ b/libgimpwidgets/gimpcontroller.h @@ -116,27 +116,8 @@ union _GimpControllerEvent }; -#define GIMP_TYPE_CONTROLLER (gimp_controller_get_type ()) -#define GIMP_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_CONTROLLER, GimpController)) -#define GIMP_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_CONTROLLER, GimpControllerClass)) -#define GIMP_IS_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_CONTROLLER)) -#define GIMP_IS_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_CONTROLLER)) -#define GIMP_CONTROLLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_CONTROLLER, GimpControllerClass)) - - -typedef struct _GimpControllerPrivate GimpControllerPrivate; -typedef struct _GimpControllerClass GimpControllerClass; - -struct _GimpController -{ - GObject parent_instance; - - GimpControllerPrivate *priv; - - /* FIXME MOVE TO PRIVATE */ - gchar *name; - gchar *state; -}; +#define GIMP_TYPE_CONTROLLER (gimp_controller_get_type ()) +G_DECLARE_DERIVABLE_TYPE (GimpController, gimp_controller, GIMP, CONTROLLER, GObject) struct _GimpControllerClass { @@ -170,7 +151,6 @@ struct _GimpControllerClass }; -GType gimp_controller_get_type (void) G_GNUC_CONST; GimpController * gimp_controller_new (GType controller_type); gint gimp_controller_get_n_events (GimpController *controller); diff --git a/libgimpwidgets/gimppatheditor.c b/libgimpwidgets/gimppatheditor.c index 39856f461c..f4dbfcf874 100644 --- a/libgimpwidgets/gimppatheditor.c +++ b/libgimpwidgets/gimppatheditor.c @@ -76,22 +76,46 @@ enum }; -static void gimp_path_editor_new_clicked (GtkWidget *widget, - GimpPathEditor *editor); -static void gimp_path_editor_move_clicked (GtkWidget *widget, - GimpPathEditor *editor); -static void gimp_path_editor_delete_clicked (GtkWidget *widget, - GimpPathEditor *editor); -static void gimp_path_editor_file_entry_changed (GtkWidget *widget, - GimpPathEditor *editor); -static void gimp_path_editor_selection_changed (GtkTreeSelection *sel, - GimpPathEditor *editor); +typedef struct _GimpPathEditorPrivate +{ + GtkWidget *upper_hbox; + + GtkWidget *new_button; + GtkWidget *up_button; + GtkWidget *down_button; + GtkWidget *delete_button; + + GtkWidget *file_entry; + + GtkListStore *dir_list; + + GtkTreeSelection *sel; + GtkTreePath *sel_path; + + GtkTreeViewColumn *writable_column; + + gint num_items; +} GimpPathEditorPrivate; + +#define GET_PRIVATE(obj) ((GimpPathEditorPrivate *) gimp_path_editor_get_instance_private ((GimpPathEditor *) (obj))) + + +static void gimp_path_editor_new_clicked (GtkWidget *widget, + GimpPathEditor *editor); +static void gimp_path_editor_move_clicked (GtkWidget *widget, + GimpPathEditor *editor); +static void gimp_path_editor_delete_clicked (GtkWidget *widget, + GimpPathEditor *editor); +static void gimp_path_editor_file_entry_changed (GtkWidget *widget, + GimpPathEditor *editor); +static void gimp_path_editor_selection_changed (GtkTreeSelection *sel, + GimpPathEditor *editor); static void gimp_path_editor_writable_toggled (GtkCellRendererToggle *toggle, - gchar *path_str, - GimpPathEditor *editor); + gchar *path_str, + GimpPathEditor *editor); -G_DEFINE_TYPE (GimpPathEditor, gimp_path_editor, GTK_TYPE_BOX) +G_DEFINE_TYPE_WITH_PRIVATE (GimpPathEditor, gimp_path_editor, GTK_TYPE_BOX) #define parent_class gimp_path_editor_parent_class @@ -137,31 +161,32 @@ gimp_path_editor_class_init (GimpPathEditorClass *klass) static void gimp_path_editor_init (GimpPathEditor *editor) { - GtkWidget *button_box; - GtkWidget *button; - GtkWidget *image; - GtkWidget *scrolled_window; - GtkWidget *tv; - GtkTreeViewColumn *col; - GtkCellRenderer *renderer; + GimpPathEditorPrivate *priv = GET_PRIVATE (editor); + GtkWidget *button_box; + GtkWidget *button; + GtkWidget *image; + GtkWidget *scrolled_window; + GtkWidget *tv; + GtkTreeViewColumn *col; + GtkCellRenderer *renderer; - editor->file_entry = NULL; - editor->sel_path = NULL; - editor->num_items = 0; + priv->file_entry = NULL; + priv->sel_path = NULL; + priv->num_items = 0; gtk_orientable_set_orientation (GTK_ORIENTABLE (editor), GTK_ORIENTATION_VERTICAL); - editor->upper_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); - gtk_box_pack_start (GTK_BOX (editor), editor->upper_hbox, FALSE, TRUE, 0); - gtk_widget_show (editor->upper_hbox); + priv->upper_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); + gtk_box_pack_start (GTK_BOX (editor), priv->upper_hbox, FALSE, TRUE, 0); + gtk_widget_show (priv->upper_hbox); button_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_set_homogeneous (GTK_BOX (button_box), TRUE); - gtk_box_pack_start (GTK_BOX (editor->upper_hbox), button_box, FALSE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (priv->upper_hbox), button_box, FALSE, TRUE, 0); gtk_widget_show (button_box); - editor->new_button = button = gtk_button_new (); + priv->new_button = button = gtk_button_new (); gtk_box_pack_start (GTK_BOX (button_box), button, TRUE, TRUE, 0); gtk_widget_show (button); @@ -174,11 +199,11 @@ gimp_path_editor_init (GimpPathEditor *editor) G_CALLBACK (gimp_path_editor_new_clicked), editor); - gimp_help_set_help_data (editor->new_button, + gimp_help_set_help_data (priv->new_button, _("Add a new folder"), NULL); - editor->up_button = button = gtk_button_new (); + priv->up_button = button = gtk_button_new (); gtk_widget_set_sensitive (button, FALSE); gtk_box_pack_start (GTK_BOX (button_box), button, TRUE, TRUE, 0); gtk_widget_show (button); @@ -192,11 +217,11 @@ gimp_path_editor_init (GimpPathEditor *editor) G_CALLBACK (gimp_path_editor_move_clicked), editor); - gimp_help_set_help_data (editor->up_button, + gimp_help_set_help_data (priv->up_button, _("Move the selected folder up"), NULL); - editor->down_button = button = gtk_button_new (); + priv->down_button = button = gtk_button_new (); gtk_widget_set_sensitive (button, FALSE); gtk_box_pack_start (GTK_BOX (button_box), button, TRUE, TRUE, 0); gtk_widget_show (button); @@ -210,11 +235,11 @@ gimp_path_editor_init (GimpPathEditor *editor) G_CALLBACK (gimp_path_editor_move_clicked), editor); - gimp_help_set_help_data (editor->down_button, + gimp_help_set_help_data (priv->down_button, _("Move the selected folder down"), NULL); - editor->delete_button = button = gtk_button_new (); + priv->delete_button = button = gtk_button_new (); gtk_widget_set_sensitive (button, FALSE); gtk_box_pack_start (GTK_BOX (button_box), button, TRUE, TRUE, 0); gtk_widget_show (button); @@ -228,7 +253,7 @@ gimp_path_editor_init (GimpPathEditor *editor) G_CALLBACK (gimp_path_editor_delete_clicked), editor); - gimp_help_set_help_data (editor->delete_button, + gimp_help_set_help_data (priv->delete_button, _("Remove the selected folder from the list"), NULL); @@ -241,12 +266,12 @@ gimp_path_editor_init (GimpPathEditor *editor) gtk_box_pack_start (GTK_BOX (editor), scrolled_window, TRUE, TRUE, 2); gtk_widget_show (scrolled_window); - editor->dir_list = gtk_list_store_new (NUM_COLUMNS, - G_TYPE_STRING, - G_TYPE_STRING, - G_TYPE_BOOLEAN); - tv = gtk_tree_view_new_with_model (GTK_TREE_MODEL (editor->dir_list)); - g_object_unref (editor->dir_list); + priv->dir_list = gtk_list_store_new (NUM_COLUMNS, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_BOOLEAN); + tv = gtk_tree_view_new_with_model (GTK_TREE_MODEL (priv->dir_list)); + g_object_unref (priv->dir_list); renderer = gtk_cell_renderer_toggle_new (); @@ -254,7 +279,7 @@ gimp_path_editor_init (GimpPathEditor *editor) G_CALLBACK (gimp_path_editor_writable_toggled), editor); - editor->writable_column = col = gtk_tree_view_column_new (); + priv->writable_column = col = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (col, _("Writable")); gtk_tree_view_column_pack_start (col, renderer, FALSE); gtk_tree_view_column_add_attribute (col, renderer, "active", COLUMN_WRITABLE); @@ -274,8 +299,8 @@ gimp_path_editor_init (GimpPathEditor *editor) gtk_container_add (GTK_CONTAINER (scrolled_window), tv); gtk_widget_show (tv); - editor->sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (tv)); - g_signal_connect (editor->sel, "changed", + priv->sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (tv)); + g_signal_connect (priv->sel, "changed", G_CALLBACK (gimp_path_editor_selection_changed), editor); } @@ -296,19 +321,21 @@ GtkWidget * gimp_path_editor_new (const gchar *title, const gchar *path) { - GimpPathEditor *editor; + GimpPathEditor *editor; + GimpPathEditorPrivate *priv; g_return_val_if_fail (title != NULL, NULL); editor = g_object_new (GIMP_TYPE_PATH_EDITOR, NULL); + priv = GET_PRIVATE (editor); - editor->file_entry = gimp_file_entry_new (title, "", TRUE, TRUE); - gtk_widget_set_sensitive (editor->file_entry, FALSE); - gtk_box_pack_start (GTK_BOX (editor->upper_hbox), editor->file_entry, + priv->file_entry = gimp_file_entry_new (title, "", TRUE, TRUE); + gtk_widget_set_sensitive (priv->file_entry, FALSE); + gtk_box_pack_start (GTK_BOX (priv->upper_hbox), priv->file_entry, TRUE, TRUE, 0); - gtk_widget_show (editor->file_entry); + gtk_widget_show (priv->file_entry); - g_signal_connect (editor->file_entry, "filename-changed", + g_signal_connect (priv->file_entry, "filename-changed", G_CALLBACK (gimp_path_editor_file_entry_changed), editor); @@ -332,14 +359,17 @@ gimp_path_editor_new (const gchar *title, gchar * gimp_path_editor_get_path (GimpPathEditor *editor) { - GtkTreeModel *model; - GString *path; - GtkTreeIter iter; - gboolean iter_valid; + GimpPathEditorPrivate *priv; + GtkTreeModel *model; + GString *path; + GtkTreeIter iter; + gboolean iter_valid; g_return_val_if_fail (GIMP_IS_PATH_EDITOR (editor), g_strdup ("")); - model = GTK_TREE_MODEL (editor->dir_list); + priv = GET_PRIVATE (editor); + + model = GTK_TREE_MODEL (priv->dir_list); path = g_string_new (""); @@ -376,12 +406,14 @@ void gimp_path_editor_set_path (GimpPathEditor *editor, const gchar *path) { - gchar *old_path; - GList *path_list; - GList *list; + GimpPathEditorPrivate *priv; + gchar *old_path; + GList *path_list; + GList *list; g_return_if_fail (GIMP_IS_PATH_EDITOR (editor)); + priv = GET_PRIVATE (editor); old_path = gimp_path_editor_get_path (editor); if (old_path && path && strcmp (old_path, path) == 0) @@ -394,7 +426,7 @@ gimp_path_editor_set_path (GimpPathEditor *editor, path_list = gimp_path_parse (path, 256, FALSE, NULL); - gtk_list_store_clear (editor->dir_list); + gtk_list_store_clear (priv->dir_list); for (list = path_list; list; list = g_list_next (list)) { @@ -404,8 +436,8 @@ gimp_path_editor_set_path (GimpPathEditor *editor, utf8 = g_filename_to_utf8 (directory, -1, NULL, NULL, NULL); - gtk_list_store_append (editor->dir_list, &iter); - gtk_list_store_set (editor->dir_list, &iter, + gtk_list_store_append (priv->dir_list, &iter); + gtk_list_store_set (priv->dir_list, &iter, COLUMN_UTF8, utf8, COLUMN_DIRECTORY, directory, COLUMN_WRITABLE, FALSE, @@ -413,7 +445,7 @@ gimp_path_editor_set_path (GimpPathEditor *editor, g_free (utf8); - editor->num_items++; + priv->num_items++; } gimp_path_free (path_list); @@ -424,14 +456,17 @@ gimp_path_editor_set_path (GimpPathEditor *editor, gchar * gimp_path_editor_get_writable_path (GimpPathEditor *editor) { - GtkTreeModel *model; - GString *path; - GtkTreeIter iter; - gboolean iter_valid; + GimpPathEditorPrivate *priv; + GtkTreeModel *model; + GString *path; + GtkTreeIter iter; + gboolean iter_valid; g_return_val_if_fail (GIMP_IS_PATH_EDITOR (editor), g_strdup ("")); - model = GTK_TREE_MODEL (editor->dir_list); + priv = GET_PRIVATE (editor); + + model = GTK_TREE_MODEL (priv->dir_list); path = g_string_new (""); @@ -465,19 +500,22 @@ void gimp_path_editor_set_writable_path (GimpPathEditor *editor, const gchar *path) { - GtkTreeModel *model; - GtkTreeIter iter; - gboolean iter_valid; - GList *path_list; - gboolean writable_changed = FALSE; + GimpPathEditorPrivate *priv; + GtkTreeModel *model; + GtkTreeIter iter; + gboolean iter_valid; + GList *path_list; + gboolean writable_changed = FALSE; g_return_if_fail (GIMP_IS_PATH_EDITOR (editor)); - gtk_tree_view_column_set_visible (editor->writable_column, TRUE); + priv = GET_PRIVATE (editor); + + gtk_tree_view_column_set_visible (priv->writable_column, TRUE); path_list = gimp_path_parse (path, 256, FALSE, NULL); - model = GTK_TREE_MODEL (editor->dir_list); + model = GTK_TREE_MODEL (priv->dir_list); for (iter_valid = gtk_tree_model_get_iter_first (model, &iter); iter_valid; @@ -499,7 +537,7 @@ gimp_path_editor_set_writable_path (GimpPathEditor *editor, if (dir_writable != new_writable) { - gtk_list_store_set (editor->dir_list, &iter, + gtk_list_store_set (priv->dir_list, &iter, COLUMN_WRITABLE, new_writable, -1); @@ -517,14 +555,17 @@ gboolean gimp_path_editor_get_dir_writable (GimpPathEditor *editor, const gchar *directory) { - GtkTreeModel *model; - GtkTreeIter iter; - gboolean iter_valid; + GimpPathEditorPrivate *priv; + GtkTreeModel *model; + GtkTreeIter iter; + gboolean iter_valid; g_return_val_if_fail (GIMP_IS_PATH_EDITOR (editor), FALSE); g_return_val_if_fail (directory != NULL, FALSE); - model = GTK_TREE_MODEL (editor->dir_list); + priv = GET_PRIVATE (editor); + + model = GTK_TREE_MODEL (priv->dir_list); for (iter_valid = gtk_tree_model_get_iter_first (model, &iter); iter_valid; @@ -556,14 +597,17 @@ gimp_path_editor_set_dir_writable (GimpPathEditor *editor, const gchar *directory, gboolean writable) { - GtkTreeModel *model; - GtkTreeIter iter; - gboolean iter_valid; + GimpPathEditorPrivate *priv; + GtkTreeModel *model; + GtkTreeIter iter; + gboolean iter_valid; g_return_if_fail (GIMP_IS_PATH_EDITOR (editor)); g_return_if_fail (directory != NULL); - model = GTK_TREE_MODEL (editor->dir_list); + priv = GET_PRIVATE (editor); + + model = GTK_TREE_MODEL (priv->dir_list); for (iter_valid = gtk_tree_model_get_iter_first (model, &iter); iter_valid; @@ -579,7 +623,7 @@ gimp_path_editor_set_dir_writable (GimpPathEditor *editor, if (! strcmp (dir, directory) && dir_writable != writable) { - gtk_list_store_set (editor->dir_list, &iter, + gtk_list_store_set (priv->dir_list, &iter, COLUMN_WRITABLE, writable ? TRUE : FALSE, -1); @@ -600,57 +644,60 @@ static void gimp_path_editor_new_clicked (GtkWidget *widget, GimpPathEditor *editor) { - if (editor->sel_path) + GimpPathEditorPrivate *priv = GET_PRIVATE (editor); + + if (priv->sel_path) { - g_signal_handlers_block_by_func (editor->sel, + g_signal_handlers_block_by_func (priv->sel, gimp_path_editor_selection_changed, editor); - gtk_tree_selection_unselect_path (editor->sel, editor->sel_path); + gtk_tree_selection_unselect_path (priv->sel, priv->sel_path); - g_signal_handlers_unblock_by_func (editor->sel, + g_signal_handlers_unblock_by_func (priv->sel, gimp_path_editor_selection_changed, editor); - gtk_tree_path_free (editor->sel_path); - editor->sel_path = NULL; + gtk_tree_path_free (priv->sel_path); + priv->sel_path = NULL; } - gtk_widget_set_sensitive (editor->delete_button, FALSE); - gtk_widget_set_sensitive (editor->up_button, FALSE); - gtk_widget_set_sensitive (editor->down_button, FALSE); - gtk_widget_set_sensitive (editor->file_entry, TRUE); + gtk_widget_set_sensitive (priv->delete_button, FALSE); + gtk_widget_set_sensitive (priv->up_button, FALSE); + gtk_widget_set_sensitive (priv->down_button, FALSE); + gtk_widget_set_sensitive (priv->file_entry, TRUE); gtk_editable_set_position - (GTK_EDITABLE (gimp_file_entry_get_entry (GIMP_FILE_ENTRY (editor->file_entry))), -1); + (GTK_EDITABLE (gimp_file_entry_get_entry (GIMP_FILE_ENTRY (priv->file_entry))), -1); gtk_widget_grab_focus - (gimp_file_entry_get_entry (GIMP_FILE_ENTRY (editor->file_entry))); + (gimp_file_entry_get_entry (GIMP_FILE_ENTRY (priv->file_entry))); } static void gimp_path_editor_move_clicked (GtkWidget *widget, GimpPathEditor *editor) { - GtkTreePath *path; - GtkTreeModel *model; - GtkTreeIter iter1, iter2; - gchar *utf81, *utf82; - gchar *dir1, *dir2; - gboolean writable1, writable2; + GimpPathEditorPrivate *priv = GET_PRIVATE (editor); + GtkTreePath *path; + GtkTreeModel *model; + GtkTreeIter iter1, iter2; + gchar *utf81, *utf82; + gchar *dir1, *dir2; + gboolean writable1, writable2; - if (editor->sel_path == NULL) + if (priv->sel_path == NULL) return; - path = gtk_tree_path_copy (editor->sel_path); + path = gtk_tree_path_copy (priv->sel_path); - if (widget == editor->up_button) + if (widget == priv->up_button) gtk_tree_path_prev (path); else gtk_tree_path_next (path); - model = GTK_TREE_MODEL (editor->dir_list); + model = GTK_TREE_MODEL (priv->dir_list); - gtk_tree_model_get_iter (model, &iter1, editor->sel_path); + gtk_tree_model_get_iter (model, &iter1, priv->sel_path); gtk_tree_model_get_iter (model, &iter2, path); gtk_tree_model_get (model, &iter1, @@ -664,12 +711,12 @@ gimp_path_editor_move_clicked (GtkWidget *widget, COLUMN_WRITABLE, &writable2, -1); - gtk_list_store_set (editor->dir_list, &iter1, + gtk_list_store_set (priv->dir_list, &iter1, COLUMN_UTF8, utf82, COLUMN_DIRECTORY, dir2, COLUMN_WRITABLE, writable2, -1); - gtk_list_store_set (editor->dir_list, &iter2, + gtk_list_store_set (priv->dir_list, &iter2, COLUMN_UTF8, utf81, COLUMN_DIRECTORY, dir1, COLUMN_WRITABLE, writable1, @@ -681,7 +728,7 @@ gimp_path_editor_move_clicked (GtkWidget *widget, g_free (dir2); g_free (dir1); - gtk_tree_selection_select_iter (editor->sel, &iter2); + gtk_tree_selection_select_iter (priv->sel, &iter2); g_signal_emit (editor, gimp_path_editor_signals[PATH_CHANGED], 0); } @@ -690,52 +737,53 @@ static void gimp_path_editor_delete_clicked (GtkWidget *widget, GimpPathEditor *editor) { - GtkTreeIter iter; - gboolean dir_writable; + GimpPathEditorPrivate *priv = GET_PRIVATE (editor); + GtkTreeIter iter; + gboolean dir_writable; - if (editor->sel_path == NULL) + if (priv->sel_path == NULL) return; - gtk_tree_model_get_iter (GTK_TREE_MODEL (editor->dir_list), &iter, - editor->sel_path); + gtk_tree_model_get_iter (GTK_TREE_MODEL (priv->dir_list), &iter, + priv->sel_path); - gtk_tree_model_get (GTK_TREE_MODEL (editor->dir_list), &iter, + gtk_tree_model_get (GTK_TREE_MODEL (priv->dir_list), &iter, COLUMN_WRITABLE, &dir_writable, -1); - gtk_list_store_remove (editor->dir_list, &iter); + gtk_list_store_remove (priv->dir_list, &iter); - editor->num_items--; + priv->num_items--; - if (editor->num_items == 0) + if (priv->num_items == 0) { - gtk_tree_path_free (editor->sel_path); - editor->sel_path = NULL; + gtk_tree_path_free (priv->sel_path); + priv->sel_path = NULL; - g_signal_handlers_block_by_func (editor->file_entry, + g_signal_handlers_block_by_func (priv->file_entry, gimp_path_editor_file_entry_changed, editor); - gimp_file_entry_set_filename (GIMP_FILE_ENTRY (editor->file_entry), ""); + gimp_file_entry_set_filename (GIMP_FILE_ENTRY (priv->file_entry), ""); - g_signal_handlers_unblock_by_func (editor->file_entry, + g_signal_handlers_unblock_by_func (priv->file_entry, gimp_path_editor_file_entry_changed, editor); - gtk_widget_set_sensitive (editor->delete_button, FALSE); - gtk_widget_set_sensitive (editor->up_button, FALSE); - gtk_widget_set_sensitive (editor->down_button, FALSE); - gtk_widget_set_sensitive (editor->file_entry, FALSE); + gtk_widget_set_sensitive (priv->delete_button, FALSE); + gtk_widget_set_sensitive (priv->up_button, FALSE); + gtk_widget_set_sensitive (priv->down_button, FALSE); + gtk_widget_set_sensitive (priv->file_entry, FALSE); } else { gint *indices; - indices = gtk_tree_path_get_indices (editor->sel_path); - if ((indices[0] == editor->num_items) && (indices[0] > 0)) - gtk_tree_path_prev (editor->sel_path); + indices = gtk_tree_path_get_indices (priv->sel_path); + if ((indices[0] == priv->num_items) && (indices[0] > 0)) + gtk_tree_path_prev (priv->sel_path); - gtk_tree_selection_select_path (editor->sel, editor->sel_path); + gtk_tree_selection_select_path (priv->sel, priv->sel_path); } g_signal_emit (editor, gimp_path_editor_signals[PATH_CHANGED], 0); @@ -748,9 +796,10 @@ static void gimp_path_editor_file_entry_changed (GtkWidget *widget, GimpPathEditor *editor) { - gchar *dir; - gchar *utf8; - GtkTreeIter iter; + GimpPathEditorPrivate *priv = GET_PRIVATE (editor); + gchar *dir; + gchar *utf8; + GtkTreeIter iter; dir = gimp_file_entry_get_filename (GIMP_FILE_ENTRY (widget)); if (strcmp (dir, "") == 0) @@ -761,23 +810,23 @@ gimp_path_editor_file_entry_changed (GtkWidget *widget, utf8 = g_filename_display_name (dir); - if (editor->sel_path == NULL) + if (priv->sel_path == NULL) { - gtk_list_store_append (editor->dir_list, &iter); - gtk_list_store_set (editor->dir_list, &iter, + gtk_list_store_append (priv->dir_list, &iter); + gtk_list_store_set (priv->dir_list, &iter, COLUMN_UTF8, utf8, COLUMN_DIRECTORY, dir, COLUMN_WRITABLE, FALSE, -1); - editor->num_items++; + priv->num_items++; - gtk_tree_selection_select_iter (editor->sel, &iter); + gtk_tree_selection_select_iter (priv->sel, &iter); } else { - gtk_tree_model_get_iter (GTK_TREE_MODEL (editor->dir_list), &iter, - editor->sel_path); - gtk_list_store_set (editor->dir_list, &iter, + gtk_tree_model_get_iter (GTK_TREE_MODEL (priv->dir_list), &iter, + priv->sel_path); + gtk_list_store_set (priv->dir_list, &iter, COLUMN_UTF8, utf8, COLUMN_DIRECTORY, dir, -1); @@ -793,42 +842,43 @@ static void gimp_path_editor_selection_changed (GtkTreeSelection *sel, GimpPathEditor *editor) { - GtkTreeIter iter; - gchar *directory; - gint *indices; + GimpPathEditorPrivate *priv = GET_PRIVATE (editor); + GtkTreeIter iter; + gchar *directory; + gint *indices; if (gtk_tree_selection_get_selected (sel, NULL, &iter)) { - gtk_tree_model_get (GTK_TREE_MODEL (editor->dir_list), &iter, + gtk_tree_model_get (GTK_TREE_MODEL (priv->dir_list), &iter, COLUMN_DIRECTORY, &directory, -1); - g_signal_handlers_block_by_func (editor->file_entry, + g_signal_handlers_block_by_func (priv->file_entry, gimp_path_editor_file_entry_changed, editor); - gimp_file_entry_set_filename (GIMP_FILE_ENTRY (editor->file_entry), + gimp_file_entry_set_filename (GIMP_FILE_ENTRY (priv->file_entry), directory); - g_signal_handlers_unblock_by_func (editor->file_entry, + g_signal_handlers_unblock_by_func (priv->file_entry, gimp_path_editor_file_entry_changed, editor); g_free (directory); - if (editor->sel_path) - gtk_tree_path_free (editor->sel_path); + if (priv->sel_path) + gtk_tree_path_free (priv->sel_path); - editor->sel_path = - gtk_tree_model_get_path (GTK_TREE_MODEL (editor->dir_list), &iter); + priv->sel_path = + gtk_tree_model_get_path (GTK_TREE_MODEL (priv->dir_list), &iter); - indices = gtk_tree_path_get_indices (editor->sel_path); + indices = gtk_tree_path_get_indices (priv->sel_path); - gtk_widget_set_sensitive (editor->delete_button, TRUE); - gtk_widget_set_sensitive (editor->up_button, (indices[0] > 0)); - gtk_widget_set_sensitive (editor->down_button, - (indices[0] < (editor->num_items - 1))); - gtk_widget_set_sensitive (editor->file_entry, TRUE); + gtk_widget_set_sensitive (priv->delete_button, TRUE); + gtk_widget_set_sensitive (priv->up_button, (indices[0] > 0)); + gtk_widget_set_sensitive (priv->down_button, + (indices[0] < (priv->num_items - 1))); + gtk_widget_set_sensitive (priv->file_entry, TRUE); } else { @@ -836,7 +886,7 @@ gimp_path_editor_selection_changed (GtkTreeSelection *sel, gimp_path_editor_selection_changed, editor); - gtk_tree_selection_select_path (editor->sel, editor->sel_path); + gtk_tree_selection_select_path (priv->sel, priv->sel_path); g_signal_handlers_unblock_by_func (sel, gimp_path_editor_selection_changed, @@ -849,20 +899,21 @@ gimp_path_editor_writable_toggled (GtkCellRendererToggle *toggle, gchar *path_str, GimpPathEditor *editor) { - GtkTreePath *path; - GtkTreeIter iter; + GimpPathEditorPrivate *priv = GET_PRIVATE (editor); + GtkTreePath *path; + GtkTreeIter iter; path = gtk_tree_path_new_from_string (path_str); - if (gtk_tree_model_get_iter (GTK_TREE_MODEL (editor->dir_list), &iter, path)) + if (gtk_tree_model_get_iter (GTK_TREE_MODEL (priv->dir_list), &iter, path)) { gboolean dir_writable; - gtk_tree_model_get (GTK_TREE_MODEL (editor->dir_list), &iter, + gtk_tree_model_get (GTK_TREE_MODEL (priv->dir_list), &iter, COLUMN_WRITABLE, &dir_writable, -1); - gtk_list_store_set (editor->dir_list, &iter, + gtk_list_store_set (priv->dir_list, &iter, COLUMN_WRITABLE, ! dir_writable, -1); diff --git a/libgimpwidgets/gimppatheditor.h b/libgimpwidgets/gimppatheditor.h index d8c844d556..b1fde69c40 100644 --- a/libgimpwidgets/gimppatheditor.h +++ b/libgimpwidgets/gimppatheditor.h @@ -31,42 +31,8 @@ G_BEGIN_DECLS /* For information look into the C source or the html documentation */ -#define GIMP_TYPE_PATH_EDITOR (gimp_path_editor_get_type ()) -#define GIMP_PATH_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_PATH_EDITOR, GimpPathEditor)) -#define GIMP_PATH_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_PATH_EDITOR, GimpPathEditorClass)) -#define GIMP_IS_PATH_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE (obj, GIMP_TYPE_PATH_EDITOR)) -#define GIMP_IS_PATH_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_PATH_EDITOR)) -#define GIMP_PATH_EDITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_PATH_EDITOR, GimpPathEditorClass)) - - -typedef struct _GimpPathEditorPrivate GimpPathEditorPrivate; -typedef struct _GimpPathEditorClass GimpPathEditorClass; - -struct _GimpPathEditor -{ - GtkBox parent_instance; - - GimpPathEditorPrivate *priv; - - /* FIXME MOVE TO PRIVATE */ - GtkWidget *upper_hbox; - - GtkWidget *new_button; - GtkWidget *up_button; - GtkWidget *down_button; - GtkWidget *delete_button; - - GtkWidget *file_entry; - - GtkListStore *dir_list; - - GtkTreeSelection *sel; - GtkTreePath *sel_path; - - GtkTreeViewColumn *writable_column; - - gint num_items; -}; +#define GIMP_TYPE_PATH_EDITOR (gimp_path_editor_get_type ()) +G_DECLARE_DERIVABLE_TYPE (GimpPathEditor, gimp_path_editor, GIMP, PATH_EDITOR, GtkBox) struct _GimpPathEditorClass { @@ -89,8 +55,6 @@ struct _GimpPathEditorClass /* For information look into the C source or the html documentation */ -GType gimp_path_editor_get_type (void) G_GNUC_CONST; - GtkWidget * gimp_path_editor_new (const gchar *title, const gchar *path); diff --git a/libgimpwidgets/gimppickbutton-private.h b/libgimpwidgets/gimppickbutton-private.h index c63856d9ed..564132e750 100644 --- a/libgimpwidgets/gimppickbutton-private.h +++ b/libgimpwidgets/gimppickbutton-private.h @@ -17,11 +17,11 @@ #define __GIMP_PICK_BUTTON_PRIVATE_H__ -struct _GimpPickButtonPrivate +typedef struct _GimpPickButtonPrivate { GdkCursor *cursor; GtkWidget *grab_widget; -}; +} GimpPickButtonPrivate; #endif /* ! __GIMP_PICK_BUTTON_PRIVATE_H__ */ diff --git a/libgimpwidgets/gimppickbutton.c b/libgimpwidgets/gimppickbutton.c index 4af94014d4..d022fcba5c 100644 --- a/libgimpwidgets/gimppickbutton.c +++ b/libgimpwidgets/gimppickbutton.c @@ -65,6 +65,8 @@ enum LAST_SIGNAL }; +#define GET_PRIVATE(obj) ((GimpPickButtonPrivate *) gimp_pick_button_get_instance_private ((GimpPickButton *) (obj))) + static void gimp_pick_button_dispose (GObject *object); @@ -112,8 +114,6 @@ gimp_pick_button_init (GimpPickButton *button) { GtkWidget *image; - button->priv = gimp_pick_button_get_instance_private (button); - image = gtk_image_new_from_icon_name (GIMP_ICON_COLOR_PICK_FROM_SCREEN, GTK_ICON_SIZE_BUTTON); gtk_container_add (GTK_CONTAINER (button), image); @@ -128,18 +128,20 @@ gimp_pick_button_init (GimpPickButton *button) static void gimp_pick_button_dispose (GObject *object) { - GimpPickButton *button = GIMP_PICK_BUTTON (object); + GimpPickButton *button = GIMP_PICK_BUTTON (object); + GimpPickButtonPrivate *priv = GET_PRIVATE (button); - if (button->priv->cursor) + + if (priv->cursor) { - g_object_unref (button->priv->cursor); - button->priv->cursor = NULL; + g_object_unref (priv->cursor); + priv->cursor = NULL; } - if (button->priv->grab_widget) + if (priv->grab_widget) { - gtk_widget_destroy (button->priv->grab_widget); - button->priv->grab_widget = NULL; + gtk_widget_destroy (priv->grab_widget); + priv->grab_widget = NULL; } G_OBJECT_CLASS (parent_class)->dispose (object); diff --git a/libgimpwidgets/gimppickbutton.h b/libgimpwidgets/gimppickbutton.h index c2036a4b51..c40d4c600a 100644 --- a/libgimpwidgets/gimppickbutton.h +++ b/libgimpwidgets/gimppickbutton.h @@ -26,23 +26,8 @@ G_BEGIN_DECLS -#define GIMP_TYPE_PICK_BUTTON (gimp_pick_button_get_type ()) -#define GIMP_PICK_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_PICK_BUTTON, GimpPickButton)) -#define GIMP_PICK_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_PICK_BUTTON, GimpPickButtonClass)) -#define GIMP_IS_PICK_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_PICK_BUTTON)) -#define GIMP_IS_PICK_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_PICK_BUTTON)) -#define GIMP_PICK_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_PICK_BUTTON, GimpPickButtonClass)) - - -typedef struct _GimpPickButtonPrivate GimpPickButtonPrivate; -typedef struct _GimpPickButtonClass GimpPickButtonClass; - -struct _GimpPickButton -{ - GtkButton parent_instance; - - GimpPickButtonPrivate *priv; -}; +#define GIMP_TYPE_PICK_BUTTON (gimp_pick_button_get_type ()) +G_DECLARE_DERIVABLE_TYPE (GimpPickButton, gimp_pick_button, GIMP, PICK_BUTTON, GtkButton) struct _GimpPickButtonClass { @@ -63,7 +48,6 @@ struct _GimpPickButtonClass }; -GType gimp_pick_button_get_type (void) G_GNUC_CONST; GtkWidget * gimp_pick_button_new (void);