static void glade_gtk_widget_add2group_cb (GtkMenuItem * item, GladeWidget * gwidget) { GladeWidget *group = g_object_get_data (G_OBJECT (item), "glade-group-widget"); GladeWidgetAdaptor *adaptor = glade_widget_adaptor_get_by_type (GTK_TYPE_SIZE_GROUP); GList *widget_list = NULL, *new_list; GladeProperty *property; const gchar *current_name; const gchar *size_group_name = NULL; gchar *widget_name; /* Display "(unnamed)" for unnamed size groups */ if (group) { size_group_name = glade_widget_get_name (group); if (g_str_has_prefix (size_group_name, GLADE_UNNAMED_PREFIX)) size_group_name = _("(unnamed)"); } /* Ensure the widget has a name if it's going to be referred to by a size group */ current_name = glade_widget_get_name (gwidget); if (g_str_has_prefix (current_name, GLADE_UNNAMED_PREFIX)) widget_name = glade_project_new_widget_name (glade_widget_get_project (gwidget), NULL, glade_widget_adaptor_get_generic_name (glade_widget_get_adaptor (gwidget))); else widget_name = g_strdup (current_name); if (group) glade_command_push_group (_("Adding %s to Size Group %s"), widget_name, size_group_name); else glade_command_push_group (_("Adding %s to a new Size Group"), widget_name); glade_command_set_name (gwidget, widget_name); if (!group) /* Cant cancel a size group */ group = glade_command_create (adaptor, NULL, NULL, glade_widget_get_project (gwidget)); property = glade_widget_get_property (group, "widgets"); glade_property_get (property, &widget_list); new_list = g_list_copy (widget_list); if (!g_list_find (widget_list, glade_widget_get_object (gwidget))) new_list = g_list_append (new_list, glade_widget_get_object (gwidget)); glade_command_set_property (property, new_list); g_list_free (new_list); g_free (widget_name); glade_command_pop_group (); }
static void glade_popup_menuitem_activated (GtkMenuItem *item, const gchar *action_path) { GladeWidget *widget; if ((widget = g_object_get_data (G_OBJECT (item), "gwa-data"))) glade_widget_adaptor_action_activate (glade_widget_get_adaptor (widget), glade_widget_get_object (widget), action_path); }
static gboolean glade_property_verify (GladeProperty * property, const GValue * value) { gboolean ret = FALSE; GladeWidget *parent; parent = glade_widget_get_parent (property->priv->widget); if (glade_property_class_get_is_packing (property->priv->klass) && parent) ret = glade_widget_adaptor_child_verify_property (glade_widget_get_adaptor (parent), glade_widget_get_object (parent), glade_widget_get_object (property->priv->widget), glade_property_class_id (property->priv->klass), value); else if (!glade_property_class_get_is_packing (property->priv->klass)) ret = glade_widget_adaptor_verify_property (glade_widget_get_adaptor (property->priv->widget), glade_widget_get_object (property->priv->widget), glade_property_class_id (property->priv->klass), value); return ret; }
static gint glade_popup_action_populate_menu_real (GtkWidget *menu, GladeWidget *gwidget, GList *actions, GCallback callback, gpointer data) { GtkWidget *item; GList *list; gint n = 0; for (list = actions; list; list = g_list_next (list)) { GladeWidgetAction *action = list->data; GWActionClass *aclass = glade_widget_action_get_class (action); GList *children = glade_widget_action_get_children (action); GtkWidget *submenu = NULL; if (!glade_widget_action_get_visible (action)) continue; if (children) { submenu = gtk_menu_new (); n += glade_popup_action_populate_menu_real (submenu, gwidget, children, callback, data); } else submenu = glade_widget_adaptor_action_submenu (glade_widget_get_adaptor (gwidget), glade_widget_get_object (gwidget), aclass->path); item = glade_popup_append_item (menu, aclass->label, TRUE, (children) ? NULL : callback, (children) ? NULL : aclass->path); g_object_set_data (G_OBJECT (item), "gwa-data", data); gtk_widget_set_sensitive (item, glade_widget_action_get_sensitive (action)); if (submenu) gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu); n++; } return n; }
static void glade_popup_menuitem_packing_activated (GtkMenuItem *item, const gchar *action_path) { GladeWidget *widget, *parent; if ((widget = g_object_get_data (G_OBJECT (item), "gwa-data"))) { parent = glade_widget_get_parent (widget); glade_widget_adaptor_child_action_activate (glade_widget_get_adaptor (parent), glade_widget_get_object (parent), glade_widget_get_object (widget), action_path); } }
void glade_gtk_treeview_launch_editor (GObject * treeview) { GladeWidget *widget = glade_widget_get_from_gobject (treeview); GladeWidgetAdaptor *adaptor = glade_widget_get_adaptor (widget); GladeBaseEditor *editor; GladeEditable *treeview_editor; GtkWidget *window; treeview_editor = glade_widget_adaptor_create_editable (adaptor, GLADE_PAGE_GENERAL); treeview_editor = (GladeEditable *) glade_tree_view_editor_new (adaptor, treeview_editor); /* Editor */ editor = glade_base_editor_new (treeview, treeview_editor, _("Column"), GTK_TYPE_TREE_VIEW_COLUMN, NULL); glade_base_editor_append_types (editor, GTK_TYPE_TREE_VIEW_COLUMN, _("Text"), GTK_TYPE_CELL_RENDERER_TEXT, _("Accelerator"), GTK_TYPE_CELL_RENDERER_ACCEL, _("Combo"), GTK_TYPE_CELL_RENDERER_COMBO, _("Spin"), GTK_TYPE_CELL_RENDERER_SPIN, _("Pixbuf"), GTK_TYPE_CELL_RENDERER_PIXBUF, _("Progress"), GTK_TYPE_CELL_RENDERER_PROGRESS, _("Toggle"), GTK_TYPE_CELL_RENDERER_TOGGLE, _("Spinner"), GTK_TYPE_CELL_RENDERER_SPINNER, NULL); g_signal_connect (editor, "get-display-name", G_CALLBACK (glade_gtk_cell_layout_get_display_name), NULL); g_signal_connect (editor, "child-selected", G_CALLBACK (glade_gtk_cell_layout_child_selected), NULL); g_signal_connect (editor, "move-child", G_CALLBACK (glade_gtk_cell_layout_move_child), NULL); gtk_widget_show (GTK_WIDGET (editor)); window = glade_base_editor_pack_new_window (editor, _("Tree View Editor"), NULL); gtk_widget_show (window); }
static void glade_gtk_text_tag_table_launch_editor (GObject *table) { GladeWidget *widget = glade_widget_get_from_gobject (table); GladeWidgetAdaptor *adaptor = glade_widget_get_adaptor (widget); GladeBaseEditor *editor; GladeEditable *action_editor; GtkWidget *window; action_editor = glade_widget_adaptor_create_editable (adaptor, GLADE_PAGE_GENERAL); /* Editor */ editor = glade_base_editor_new (glade_widget_get_object (widget), action_editor, _("Tag"), GTK_TYPE_TEXT_TAG, NULL); g_signal_connect (editor, "child-selected", G_CALLBACK (glade_gtk_text_tag_table_child_selected), NULL); g_signal_connect (editor, "move-child", G_CALLBACK (glade_gtk_text_tag_table_move_child), NULL); gtk_widget_show (GTK_WIDGET (editor)); window = glade_base_editor_pack_new_window (editor, _("Text Tag Table Editor"), NULL); gtk_widget_show (window); }
static void glade_editor_table_load (GladeEditable *editable, GladeWidget *widget) { GladeEditorTable *table = GLADE_EDITOR_TABLE (editable); GladeEditorProperty *property; GList *list; /* Setup the table the first time the widget is loaded */ if (widget && table->priv->adaptor == NULL) { table->priv->adaptor = glade_widget_get_adaptor (widget); if (table->priv->type == GLADE_PAGE_GENERAL) append_name_field (table); append_items (table, table->priv->adaptor, table->priv->type); } /* abort mission */ if (table->priv->loaded_widget == widget) return; if (table->priv->loaded_widget) { g_signal_handlers_disconnect_by_func (G_OBJECT (table->priv->loaded_widget), G_CALLBACK (widget_name_changed), table); g_signal_handlers_disconnect_by_func (G_OBJECT (table->priv->loaded_widget), G_CALLBACK (widget_composite_changed), table); /* The widget could die unexpectedly... */ g_object_weak_unref (G_OBJECT (table->priv->loaded_widget), (GWeakNotify) widget_finalized, table); } table->priv->loaded_widget = widget; BLOCK_NAME_ENTRY_CB (table); if (table->priv->loaded_widget) { g_signal_connect (G_OBJECT (table->priv->loaded_widget), "notify::name", G_CALLBACK (widget_name_changed), table); g_signal_connect (G_OBJECT (table->priv->loaded_widget), "notify::composite", G_CALLBACK (widget_composite_changed), table); /* The widget could die unexpectedly... */ g_object_weak_ref (G_OBJECT (table->priv->loaded_widget), (GWeakNotify) widget_finalized, table); if (table->priv->composite_check) { GObject *object = glade_widget_get_object (table->priv->loaded_widget); if (GTK_IS_WIDGET (object) && glade_widget_get_parent (table->priv->loaded_widget) == NULL) gtk_widget_show (table->priv->composite_check); else gtk_widget_hide (table->priv->composite_check); } if (table->priv->name_entry) gtk_entry_set_text (GTK_ENTRY (table->priv->name_entry), glade_widget_get_name (widget)); if (table->priv->name_label) widget_composite_changed (widget, NULL, table); } else if (table->priv->name_entry) gtk_entry_set_text (GTK_ENTRY (table->priv->name_entry), ""); UNBLOCK_NAME_ENTRY_CB (table); /* Sync up properties, even if widget is NULL */ for (list = table->priv->properties; list; list = list->next) { property = list->data; glade_editor_property_load_by_widget (property, widget); } }