static void label_widget_toggled (GtkWidget *widget, GladeToolItemGroupEditor *group_editor) { GladeProperty *property; GladeWidget *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (group_editor)); if (glade_editable_loading (GLADE_EDITABLE (group_editor)) || !gwidget) return; if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (group_editor->label_widget_radio))) return; glade_editable_block (GLADE_EDITABLE (group_editor)); glade_command_push_group (_("Setting %s to use a custom label widget"), glade_widget_get_name (gwidget)); property = glade_widget_get_property (gwidget, "label"); glade_command_set_property (property, NULL); property = glade_widget_get_property (gwidget, "custom-label"); glade_command_set_property (property, TRUE); glade_command_pop_group (); glade_editable_unblock (GLADE_EDITABLE (group_editor)); /* reload buttons and sensitivity and stuff... */ glade_editable_load (GLADE_EDITABLE (group_editor), gwidget); }
static void icon_file_toggled (GtkWidget *widget, GladeWindowEditor *window_editor) { GladeWindowEditorPrivate *priv = window_editor->priv; GladeWidget *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (window_editor)); GladeProperty *property; if (glade_editable_loading (GLADE_EDITABLE (window_editor)) || !gwidget) return; if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->icon_file_radio))) return; glade_editable_block (GLADE_EDITABLE (window_editor)); glade_command_push_group (_("Setting %s to use an icon file"), glade_widget_get_name (gwidget)); property = glade_widget_get_property (gwidget, "icon-name"); glade_command_set_property (property, NULL); property = glade_widget_get_property (gwidget, "icon"); glade_command_set_property (property, NULL); property = glade_widget_get_property (gwidget, "glade-window-icon-name"); glade_command_set_property (property, FALSE); glade_command_pop_group (); glade_editable_unblock (GLADE_EDITABLE (window_editor)); /* reload buttons and sensitivity and stuff... */ glade_editable_load (GLADE_EDITABLE (window_editor), gwidget); }
GtkWidget * glade_tree_view_editor_new (GladeWidgetAdaptor * adaptor, GladeEditable * embed) { GladeTreeViewEditor *view_editor; GtkWidget *vbox, *separator; gchar *str; g_return_val_if_fail (GLADE_IS_WIDGET_ADAPTOR (adaptor), NULL); g_return_val_if_fail (GLADE_IS_EDITABLE (embed), NULL); view_editor = g_object_new (GLADE_TYPE_TREE_VIEW_EDITOR, NULL); view_editor->embed = GTK_WIDGET (embed); /* Pack the parent on the left... */ gtk_box_pack_start (GTK_BOX (view_editor), GTK_WIDGET (embed), TRUE, TRUE, 8); separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL); gtk_box_pack_start (GTK_BOX (view_editor), separator, FALSE, FALSE, 0); /* ...and the vbox with datastore/label on the right */ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start (GTK_BOX (view_editor), vbox, TRUE, TRUE, 8); str = g_strdup_printf ("<b>%s</b>", _("Choose a Data Model and define some\n" "columns in the data store first")); view_editor->no_model_message = gtk_label_new (str); gtk_label_set_use_markup (GTK_LABEL (view_editor->no_model_message), TRUE); gtk_label_set_justify (GTK_LABEL (view_editor->no_model_message), GTK_JUSTIFY_CENTER); g_free (str); gtk_box_pack_start (GTK_BOX (vbox), view_editor->no_model_message, TRUE, TRUE, 0); view_editor->embed_list_store = (GtkWidget *) glade_widget_adaptor_create_editable (glade_widget_adaptor_get_by_type (GTK_TYPE_LIST_STORE), GLADE_PAGE_GENERAL); glade_editable_set_show_name (GLADE_EDITABLE (view_editor->embed_list_store), FALSE); gtk_box_pack_start (GTK_BOX (vbox), view_editor->embed_list_store, TRUE, TRUE, 0); view_editor->embed_tree_store = (GtkWidget *) glade_widget_adaptor_create_editable (glade_widget_adaptor_get_by_type (GTK_TYPE_TREE_STORE), GLADE_PAGE_GENERAL); glade_editable_set_show_name (GLADE_EDITABLE (view_editor->embed_tree_store), FALSE); gtk_box_pack_start (GTK_BOX (vbox), view_editor->embed_tree_store, TRUE, TRUE, 0); gtk_widget_show_all (GTK_WIDGET (view_editor)); return GTK_WIDGET (view_editor); }
static void glade_tree_view_editor_realize (GtkWidget * widget) { GladeTreeViewEditor *view_editor = GLADE_TREE_VIEW_EDITOR (widget); GladeWidget *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (view_editor)); GTK_WIDGET_CLASS (glade_tree_view_editor_parent_class)->realize (widget); glade_editable_load (GLADE_EDITABLE (view_editor), gwidget); }
static void use_center_child_toggled (GtkWidget * widget, GladeActionBarEditor * box_editor) { GladeActionBarEditorPrivate *priv = box_editor->priv; GladeWidget *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (box_editor)); GladeWidget *gcenter = NULL; GtkWidget *box; GtkWidget *center; GladeProperty *property; gboolean use_center_child; if (glade_editable_loading (GLADE_EDITABLE (box_editor)) || !gwidget) return; /* Get new desired property state */ use_center_child = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->use_center_child)); /* Get any existing center child */ box = (GtkWidget *)glade_widget_get_object (gwidget); center = gtk_action_bar_get_center_widget (GTK_ACTION_BAR (box)); if (center && !GLADE_IS_PLACEHOLDER (center)) gcenter = glade_widget_get_from_gobject (center); glade_editable_block (GLADE_EDITABLE (box_editor)); if (use_center_child) glade_command_push_group (_("Setting %s to use a center child"), glade_widget_get_name (gwidget)); else glade_command_push_group (_("Setting %s to not use a center child"), glade_widget_get_name (gwidget)); /* If a project widget exists when were disabling center child, it needs * to be removed first as a part of the issuing GladeCommand group */ if (gcenter) { GList list; list.prev = list.next = NULL; list.data = gcenter; glade_command_delete (&list); } property = glade_widget_get_property (gwidget, "use-center-child"); glade_command_set_property (property, use_center_child); glade_command_pop_group (); glade_editable_unblock (GLADE_EDITABLE (box_editor)); /* reload buttons and sensitivity and stuff... */ glade_editable_load (GLADE_EDITABLE (box_editor), gwidget); }
static void glade_tool_item_group_editor_load (GladeEditable *editable, GladeWidget *widget) { GladeToolItemGroupEditor *group_editor = GLADE_TOOL_ITEM_GROUP_EDITOR (editable); gboolean custom_label = FALSE; GList *l; /* Chain up to default implementation */ parent_editable_iface->load (editable, widget); /* load the embedded editable... */ if (group_editor->embed) glade_editable_load (GLADE_EDITABLE (group_editor->embed), widget); for (l = group_editor->properties; l; l = l->next) glade_editor_property_load_by_widget (GLADE_EDITOR_PROPERTY (l->data), widget); if (widget) { glade_widget_property_get (widget, "custom-label", &custom_label); if (custom_label) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (group_editor->label_widget_radio), TRUE); else gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (group_editor->label_radio), TRUE); } }
static void glade_widget_editor_finalize (GObject * object) { glade_editable_load (GLADE_EDITABLE (object), NULL); G_OBJECT_CLASS (glade_widget_editor_parent_class)->finalize (object); }
static void widget_finalized (GladeEditorTable *table, GladeWidget *where_widget_was) { table->priv->loaded_widget = NULL; glade_editable_load (GLADE_EDITABLE (table), NULL); }
static void project_finalized (GladeSheetEditor *view_editor, GladeProject *where_project_was) { view_editor->loaded_widget = NULL; glade_editable_load (GLADE_EDITABLE (view_editor), NULL); }
static void glade_tree_view_editor_load (GladeEditable * editable, GladeWidget * widget) { GladeTreeViewEditor *view_editor = GLADE_TREE_VIEW_EDITOR (editable); GladeWidget *model_widget; /* Chain up to default implementation */ parent_editable_iface->load (editable, widget); /* load the embedded editable... */ if (view_editor->embed) glade_editable_load (GLADE_EDITABLE (view_editor->embed), widget); if (view_editor->embed_list_store && view_editor->embed_tree_store) { gtk_widget_hide (view_editor->no_model_message); gtk_widget_hide (view_editor->embed_list_store); gtk_widget_hide (view_editor->embed_tree_store); glade_editable_load (GLADE_EDITABLE (view_editor->embed_list_store), NULL); glade_editable_load (GLADE_EDITABLE (view_editor->embed_tree_store), NULL); /* Finalize safe code here... */ if (widget && (model_widget = get_model_widget (widget))) { if (GTK_IS_LIST_STORE (glade_widget_get_object (model_widget))) { gtk_widget_show (view_editor->embed_list_store); glade_editable_load (GLADE_EDITABLE (view_editor->embed_list_store), model_widget); } else if (GTK_IS_TREE_STORE (glade_widget_get_object (model_widget))) { gtk_widget_show (view_editor->embed_tree_store); glade_editable_load (GLADE_EDITABLE (view_editor->embed_tree_store), model_widget); } else gtk_widget_show (view_editor->no_model_message); } else gtk_widget_show (view_editor->no_model_message); } }
static void glade_tree_view_editor_set_show_name (GladeEditable * editable, gboolean show_name) { GladeTreeViewEditor *view_editor = GLADE_TREE_VIEW_EDITOR (editable); glade_editable_set_show_name (GLADE_EDITABLE (view_editor->embed), show_name); }
static void markup_toggled (GtkWidget *widget, GladeWidgetEditor *widget_editor) { GladeProperty *property; GladeWidget *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (widget_editor)); gboolean active; if (glade_editable_loading (GLADE_EDITABLE (widget_editor)) || !gwidget) return; active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)); glade_editable_block (GLADE_EDITABLE (widget_editor)); if (active) { glade_command_push_group (_("Setting %s to use tooltip markup"), glade_widget_get_name (gwidget)); transfer_text_property (gwidget, "tooltip-text", "tooltip-markup"); property = glade_widget_get_property (gwidget, "glade-tooltip-markup"); glade_command_set_property (property, TRUE); glade_command_pop_group (); } else { glade_command_push_group (_("Setting %s to not use tooltip markup"), glade_widget_get_name (gwidget)); transfer_text_property (gwidget, "tooltip-markup", "tooltip-text"); property = glade_widget_get_property (gwidget, "glade-tooltip-markup"); glade_command_set_property (property, FALSE); glade_command_pop_group (); } glade_editable_unblock (GLADE_EDITABLE (widget_editor)); /* reload widgets and sensitivity and stuff... */ glade_editable_load (GLADE_EDITABLE (widget_editor), gwidget); }
static void glade_tool_item_group_editor_set_show_name (GladeEditable *editable, gboolean show_name) { GladeToolItemGroupEditor *group_editor = GLADE_TOOL_ITEM_GROUP_EDITOR (editable); glade_editable_set_show_name (GLADE_EDITABLE (group_editor->embed), show_name); }
static void glade_sheet_editor_realize (GtkWidget *widget) { GladeSheetEditor *view_editor = GLADE_SHEET_EDITOR (widget); GTK_WIDGET_CLASS (glade_sheet_editor_parent_class)->realize (widget); glade_editable_load (GLADE_EDITABLE (view_editor), view_editor->loaded_widget); }
static void project_changed (GladeProject *project, GladeCommand *command, gboolean execute, GladeSheetEditor *view_editor) { if (!GTK_WIDGET_MAPPED (view_editor)) return; /* Reload on all commands */ glade_editable_load (GLADE_EDITABLE (view_editor), view_editor->loaded_widget); }
static void glade_sheet_editor_finalize (GObject *object) { GladeSheetEditor *view_editor = GLADE_SHEET_EDITOR (object); view_editor->embed_tree_store = NULL; view_editor->embed_list_store = NULL; view_editor->embed = NULL; glade_editable_load (GLADE_EDITABLE (object), NULL); G_OBJECT_CLASS (glade_sheet_editor_parent_class)->finalize (object); }
static void glade_tool_item_group_editor_finalize (GObject *object) { GladeToolItemGroupEditor *group_editor = GLADE_TOOL_ITEM_GROUP_EDITOR (object); if (group_editor->properties) g_list_free (group_editor->properties); group_editor->properties = NULL; group_editor->embed = NULL; glade_editable_load (GLADE_EDITABLE (object), NULL); G_OBJECT_CLASS (glade_tool_item_group_editor_parent_class)->finalize (object); }
static void glade_editor_table_dispose (GObject *object) { GladeEditorTable *table = GLADE_EDITOR_TABLE (object); table->priv->properties = (g_list_free (table->priv->properties), NULL); /* the entry is finalized anyway, just avoid setting * text in it from _load(); */ table->priv->name_entry = NULL; glade_editable_load (GLADE_EDITABLE (table), NULL); G_OBJECT_CLASS (glade_editor_table_parent_class)->dispose (object); }
static void glade_sheet_editor_load (GladeEditable *editable, GladeWidget *widget) { GladeSheetEditor *view_editor = GLADE_SHEET_EDITOR (editable); GladeWidget *model_widget; /* Since we watch the project*/ if (view_editor->loaded_widget) { g_signal_handlers_disconnect_by_func (G_OBJECT (view_editor->loaded_widget->project), G_CALLBACK (project_changed), view_editor); /* The widget could die unexpectedly... */ g_object_weak_unref (G_OBJECT (view_editor->loaded_widget->project), (GWeakNotify)project_finalized, view_editor); } /* Mark our widget... */ view_editor->loaded_widget = widget; if (view_editor->loaded_widget) { /* This fires for undo/redo */ g_signal_connect (G_OBJECT (view_editor->loaded_widget->project), "changed", G_CALLBACK (project_changed), view_editor); /* The widget/project could die unexpectedly... */ g_object_weak_ref (G_OBJECT (view_editor->loaded_widget->project), (GWeakNotify) project_finalized, view_editor); } /* load the embedded editable... */ if (view_editor->embed) glade_editable_load (GLADE_EDITABLE (view_editor->embed), widget); if (view_editor->embed_list_store && view_editor->embed_tree_store) { gtk_widget_hide (view_editor->no_model_message); gtk_widget_hide (view_editor->embed_list_store); gtk_widget_hide (view_editor->embed_tree_store); glade_editable_load (GLADE_EDITABLE (view_editor->embed_list_store), NULL); glade_editable_load (GLADE_EDITABLE (view_editor->embed_tree_store), NULL); /* Finalize safe code here... */ if (widget && (model_widget = get_model_widget (widget))) { if (GTK_IS_LIST_STORE (model_widget->object)) { gtk_widget_show (view_editor->embed_list_store); glade_editable_load (GLADE_EDITABLE (view_editor->embed_list_store), model_widget); } else if (GTK_IS_TREE_STORE (model_widget->object)) { gtk_widget_show (view_editor->embed_tree_store); glade_editable_load (GLADE_EDITABLE (view_editor->embed_tree_store), model_widget); } else gtk_widget_show (view_editor->no_model_message); } else gtk_widget_show (view_editor->no_model_message); } }
static void glade_sheet_editor_set_show_name (GladeEditable *editable, gboolean show_name) { GladeSheetEditor *view_editor = GLADE_SHEET_EDITOR (editable); glade_editable_set_show_name (GLADE_EDITABLE (view_editor->embed), show_name); }
static void use_csd_toggled (GtkWidget *widget, GladeWindowEditor *window_editor) { GladeWindowEditorPrivate *priv = window_editor->priv; GladeWidget *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (window_editor)); GladeWidget *gtitlebar = NULL; GtkWidget *window; GtkWidget *titlebar; GladeProperty *property; gboolean use_csd; if (glade_editable_loading (GLADE_EDITABLE (window_editor)) || !gwidget) return; /* Get new desired property state */ use_csd = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->use_csd_check)); /* Get any existing titlebar widget */ window = (GtkWidget *)glade_widget_get_object (gwidget); titlebar = gtk_window_get_titlebar (GTK_WINDOW (window)); if (titlebar && !GLADE_IS_PLACEHOLDER (titlebar)) gtitlebar = glade_widget_get_from_gobject (titlebar); glade_editable_block (GLADE_EDITABLE (window_editor)); if (use_csd) glade_command_push_group (_("Setting %s to use a custom titlebar"), glade_widget_get_name (gwidget)); else glade_command_push_group (_("Setting %s to use a system provided titlebar"), glade_widget_get_name (gwidget)); /* If a project widget exists when were disabling CSD, it needs * to be removed first as a part of the issuing GladeCommand group */ if (gtitlebar) { GList list; list.prev = list.next = NULL; list.data = gtitlebar; glade_command_delete (&list); } property = glade_widget_get_property (gwidget, "use-csd"); glade_command_set_property (property, use_csd); if (use_csd) { property = glade_widget_get_property (gwidget, "title"); glade_command_set_property (property, NULL); property = glade_widget_get_property (gwidget, "decorated"); glade_command_set_property (property, TRUE); property = glade_widget_get_property (gwidget, "hide-titlebar-when-maximized"); glade_command_set_property (property, FALSE); } glade_command_pop_group (); glade_editable_unblock (GLADE_EDITABLE (window_editor)); /* reload buttons and sensitivity and stuff... */ glade_editable_load (GLADE_EDITABLE (window_editor), gwidget); }