static void cb_changed (GOArrowSel *as) { GOArrow arr = as->arrow; int idx; idx = gtk_combo_box_get_active (GTK_COMBO_BOX (as->type_selector)); if (idx >= 0) arr.typ = idx; arr.a = gtk_spin_button_get_value (as->spin_a); arr.b = gtk_spin_button_get_value (as->spin_b); arr.c = gtk_spin_button_get_value (as->spin_c); go_arrow_sel_set_arrow (as, &arr); }
static void go_arrow_sel_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GOArrowSel *as = GO_ARROW_SEL (object); switch (prop_id) { case PROP_ARROW: go_arrow_sel_set_arrow (as, g_value_peek_pointer (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static GtkWidget * dialog_so_styled_line_widget (DialogSOStyled *state, const char *prop) { GtkWidget *w = go_arrow_sel_new (); GOArrow *arrow; g_object_get (state->so, prop, &arrow, NULL); go_arrow_sel_set_arrow (GO_ARROW_SEL (w), arrow); g_free (arrow); g_object_set_data_full (G_OBJECT (w), "prop", g_strdup (prop), g_free); g_signal_connect (G_OBJECT (w), "notify::arrow", G_CALLBACK (cb_arrow_changed), state); return w; }