From: Andy W. <wi...@us...> - 2002-09-29 18:40:10
|
CVS Root: /cvsroot/gstreamer Module: gst-editor Changes by: wingo Date: Sun Sep 29 2002 11:40:09 PDT Log message: a single click in the element tree will add an element now, and a double-click on an already-selected element will add another. Modified files: libs/gst/editor : gsteditorpalette.c libs/gst/element-browser: element-tree.c src : editor.glade2 Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-editor/libs/gst/editor/gsteditorpalette.c.diff?r1=1.9&r2=1.10 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-editor/libs/gst/element-browser/element-tree.c.diff?r1=1.1&r2=1.2 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-editor/src/editor.glade2.diff?r1=1.13&r2=1.14 ====Begin Diffs==== Index: gsteditorpalette.c =================================================================== RCS file: /cvsroot/gstreamer/gst-editor/libs/gst/editor/gsteditorpalette.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- gsteditorpalette.c 14 Aug 2002 21:39:34 -0000 1.9 +++ gsteditorpalette.c 29 Sep 2002 18:39:57 -0000 1.10 @@ -66,6 +66,8 @@ static gint on_delete_event (GtkWidget *widget, GdkEvent *event, gpointer data); +static void on_element_tree_select (GObject *object, GParamSpec *param, + GstEditorPalette *palette); static GtkObjectClass *parent_class; @@ -142,6 +144,7 @@ gtk_widget_show (palette->element_tree); gtk_box_pack_start (GTK_BOX (glade_xml_get_widget (palette->xml, "element-browser-vbox")), palette->element_tree, TRUE, TRUE, 0); + g_signal_connect (palette->element_tree, "notify", G_CALLBACK (on_element_tree_select), palette); palette->debug_ui = gst_debug_ui_new (); gtk_widget_show_all (palette->debug_ui); @@ -228,30 +231,33 @@ return FALSE; } -void -gst_editor_palette_element_tree_add (GtkWidget *button, GstEditorPalette *palette) +static void +on_element_tree_select (GObject *object, GParamSpec *param, GstEditorPalette *palette) { - GstElement *element; - GstElementFactory *factory = GST_ELEMENT_BROWSER_ELEMENT_TREE (palette->element_tree)->selected; + GstElement *element, *selected_bin; + GstElementFactory *selected_factory; + + g_return_if_fail (palette->canvas != NULL); - if (!factory) { - GtkWidget *dialog = gtk_message_dialog_new (GTK_WINDOW (palette->window), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_CLOSE, - "No element selected."); + if (strcmp (param->name, "selected") == 0) { + g_object_get (palette->element_tree, "selected", &selected_factory, NULL); + g_object_get (palette->canvas, "selection", &selected_bin, NULL); - g_signal_connect_swapped (dialog, "response", - G_CALLBACK (gtk_widget_destroy), - G_OBJECT (dialog)); - return; - } - - g_return_if_fail (palette->canvas != NULL); + /* GstEditorCanvas::selection is actually a GstEditorElement, not a + GstElement */ + if (selected_bin) + selected_bin = GST_ELEMENT (GST_EDITOR_ITEM (selected_bin)->object); + + if (!selected_bin) + selected_bin = GST_ELEMENT (GST_EDITOR_ITEM (palette->canvas->bin)->object); + else if (!GST_IS_BIN (selected_bin)) + selected_bin = GST_ELEMENT (GST_OBJECT_PARENT (selected_bin)); + - element = gst_element_factory_create (factory, NULL); + element = gst_element_factory_create (selected_factory, NULL); - g_return_if_fail (element != NULL); + g_return_if_fail (element != NULL); - gst_bin_add (GST_BIN (GST_EDITOR_ITEM (palette->canvas->bin)->object), element); + gst_bin_add (GST_BIN (selected_bin), element); + } } Index: element-tree.c =================================================================== RCS file: /cvsroot/gstreamer/gst-editor/libs/gst/element-browser/element-tree.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- element-tree.c 13 Aug 2002 04:53:38 -0000 1.1 +++ element-tree.c 29 Sep 2002 18:39:57 -0000 1.2 @@ -59,8 +59,7 @@ GtkTreeModel *model, GtkTreePath *path, gboolean foo, gpointer data); -static void tree_select (GtkTreeSelection *selection, - GstElementBrowserElementTree *browser); +static void tree_select (GstElementBrowserElementTree *tree); static GSList* get_class_tree (void); @@ -137,8 +136,8 @@ populate_store (tree->store, NULL, (struct element_select_classlist *)(classtree->data)); - g_signal_connect (G_OBJECT (selection), "changed", - G_CALLBACK (tree_select), tree); + g_signal_connect_swapped (tree->view, "row-activated", G_CALLBACK (tree_select), tree); + g_signal_connect_swapped (selection, "changed", G_CALLBACK (tree_select), tree); /* hack: force the scrolledwindow to realize scrollbars */ g_object_set (tree, "hadjustment", NULL, "vadjustment", NULL, NULL); @@ -239,13 +238,15 @@ return FALSE; } -static void tree_select (GtkTreeSelection *selection, GstElementBrowserElementTree *tree) +static void tree_select (GstElementBrowserElementTree *tree) { + GtkTreeSelection *selection; GtkTreeModel *model; GtkTreeIter iter; GstElementFactory *factory; - /* if this change actually deselects something, ignore it... */ + /* if nothing is selected, ignore it */ + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree->view)); if (!gtk_tree_selection_get_selected (selection, &model, &iter)) return; Index: editor.glade2 =================================================================== RCS file: /cvsroot/gstreamer/gst-editor/src/editor.glade2,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- editor.glade2 23 Sep 2002 04:28:41 -0000 1.13 +++ editor.glade2 29 Sep 2002 18:39:57 -0000 1.14 @@ -618,43 +618,6 @@ <property name="fill">True</property> </packing> </child> - - <child> - <widget class="GtkHSeparator" id="hseparator1"> - <property name="visible">True</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">True</property> - </packing> - </child> - - <child> - <widget class="GtkAlignment" id="alignment1"> - <property name="visible">True</property> - <property name="xalign">1</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - - <child> - <widget class="GtkButton" id="button13"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-add</property> - <property name="use_stock">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <signal name="clicked" handler="gst_editor_palette_element_tree_add" last_modification_time="Wed, 14 Aug 2002 22:12:19 GMT"/> - </widget> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> </widget> <packing> <property name="tab_expand">False</property> |