* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
#include <string.h>
ObjectProperty *p = data;
GdkRGBA color;
- gtk_color_button_get_rgba (cb, &color);
+ gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (cb), &color);
if (is_child_property (p->spec))
{
get_property_value (object, pspec, &val);
color = g_value_get_boxed (&val);
- gtk_color_button_get_rgba (cb, &cb_color);
+ gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (cb), &cb_color);
if (color != NULL && !gdk_rgba_equal (color, &cb_color))
{
block_controller (G_OBJECT (cb));
- gtk_color_button_set_rgba (cb, color);
+ gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (cb), color);
unblock_controller (G_OBJECT (cb));
}
color_modified (GtkColorButton *cb, gpointer data)
{
ObjectProperty *p = data;
- GdkColor color;
+ GValue val = G_VALUE_INIT;
- gtk_color_button_get_color (cb, &color);
+ g_value_init (&val, GDK_TYPE_COLOR);
+ g_object_get_property (G_OBJECT (cb), "color", &val);
if (is_child_property (p->spec))
{
GtkWidget *widget = GTK_WIDGET (p->obj);
GtkWidget *parent = gtk_widget_get_parent (widget);
- gtk_container_child_set (GTK_CONTAINER (parent),
- widget, p->spec->name, &color, NULL);
+ gtk_container_child_set_property (GTK_CONTAINER (parent),
+ widget, p->spec->name, &val);
}
else
- g_object_set (p->obj, p->spec->name, &color, NULL);
+ g_object_set_property (p->obj, p->spec->name, &val);
+
+ g_value_unset (&val);
}
static void
{
GtkColorButton *cb = GTK_COLOR_BUTTON (data);
GValue val = G_VALUE_INIT;
- GdkColor *color;
- GdkColor cb_color;
g_value_init (&val, GDK_TYPE_COLOR);
get_property_value (object, pspec, &val);
- color = g_value_get_boxed (&val);
- gtk_color_button_get_color (cb, &cb_color);
-
- if (color != NULL && !gdk_color_equal (color, &cb_color))
+ if (g_value_get_boxed (&val))
{
block_controller (G_OBJECT (cb));
- gtk_color_button_set_color (cb, color);
+ g_object_set_property (G_OBJECT (cb), "color", &val);
unblock_controller (G_OBJECT (cb));
}
G_PARAM_SPEC_VALUE_TYPE (spec) == GDK_TYPE_RGBA)
{
prop_edit = gtk_color_button_new ();
- gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (prop_edit), TRUE);
+ gtk_color_chooser_set_use_alpha (GTK_COLOR_CHOOSER (prop_edit), TRUE);
g_object_connect_property (object, spec,
G_CALLBACK (rgba_changed),
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), vbox);
+ gtk_container_add (GTK_CONTAINER (sw), vbox);
g_free (specs);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), vbox);
+ gtk_container_add (GTK_CONTAINER (sw), vbox);
g_free (specs);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), vbox);
+ gtk_container_add (GTK_CONTAINER (sw), vbox);
g_list_free (children);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), vbox);
+ gtk_container_add (GTK_CONTAINER (sw), vbox);
g_list_free (cells);
return sw;
}
+static void
+open_parent_widget (GtkWidget *button,
+ GObject *object)
+{
+ GtkWidget *parent;
+
+ parent = gtk_widget_get_parent (GTK_WIDGET (object));
+ if (parent != NULL)
+ create_prop_editor (G_OBJECT (parent), 0);
+}
+
+
/* Pass zero for type if you want all properties */
GtkWidget*
create_prop_editor (GObject *object,
GType type)
{
- GtkWidget *win;
+ GtkWidget *win, *parent;
GtkWidget *notebook;
GtkWidget *properties;
GtkWidget *label;
+ GtkWidget *button;
+ GtkWidget *vbox;
gchar *title;
GType *ifaces;
guint n_ifaces;
g_object_set_data_full (G_OBJECT (object), "prop-editor-win", win, model_destroy);
g_object_set_data_full (G_OBJECT (win), "model-object", object, window_destroy);
+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ gtk_container_add (GTK_CONTAINER (win), vbox);
+
if (type == 0)
{
notebook = gtk_notebook_new ();
gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_LEFT);
- gtk_container_add (GTK_CONTAINER (win), notebook);
+ gtk_box_pack_start (GTK_BOX (vbox), notebook, TRUE, TRUE, 0);
type = G_TYPE_FROM_INSTANCE (object);
gtk_notebook_append_page (GTK_NOTEBOOK (notebook),
properties, label);
}
+
+ if (GTK_IS_WIDGET (object))
+ {
+ parent = gtk_widget_get_parent (GTK_WIDGET (object));
+ if (parent != NULL)
+ {
+ button = gtk_button_new_with_label ("Parent widget");
+ gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
+ g_signal_connect (button, "clicked",
+ G_CALLBACK (open_parent_widget),
+ object);
+ }
+ }
}
else
{
properties = properties_from_type (object, type);
- gtk_container_add (GTK_CONTAINER (win), properties);
+ gtk_box_pack_start (GTK_BOX (vbox), properties, TRUE, TRUE, 0);
title = g_strdup_printf ("Properties of %s", g_type_name (type));
gtk_window_set_title (GTK_WINDOW (win), title);
g_free (title);