static GValue * real_get_value (GdauiEntryWrapper *mgwrap) { GValue *value; GdauiEntryString *mgstr; GdaDataHandler *dh; g_return_val_if_fail (GDAUI_IS_ENTRY_STRING (mgwrap), NULL); mgstr = GDAUI_ENTRY_STRING (mgwrap); GdauiEntryStringPrivate *priv = gdaui_entry_string_get_instance_private (mgstr); dh = gdaui_data_entry_get_handler (GDAUI_DATA_ENTRY (mgwrap)); if (! priv->multiline) { gchar *cstr; cstr = gdaui_entry_get_text (GDAUI_ENTRY (priv->entry)); value = gda_data_handler_get_value_from_str (dh, cstr, gdaui_data_entry_get_value_type (GDAUI_DATA_ENTRY (mgwrap))); g_free (cstr); } else { GtkTextIter start, end; gchar *str; gtk_text_buffer_get_start_iter (priv->buffer, &start); gtk_text_buffer_get_end_iter (priv->buffer, &end); str = gtk_text_buffer_get_text (priv->buffer, &start, &end, FALSE); value = gda_data_handler_get_value_from_str (dh, str, gdaui_data_entry_get_value_type (GDAUI_DATA_ENTRY (mgwrap))); g_free (str); } if (!value) { /* in case the gda_data_handler_get_value_from_str() returned an error because the contents of the GtkEntry cannot be interpreted as a GValue */ value = gda_value_new_null (); } return value; }
static void gdaui_entry_wrapper_set_property (GObject *object, guint param_id, const GValue *value, GParamSpec *pspec) { GdauiEntryWrapper *wrapper = GDAUI_ENTRY_WRAPPER (object); if (wrapper->priv) { switch (param_id) { case PROP_SET_DEFAULT_IF_INVALID: { guint attrs; wrapper->priv->set_default_if_invalid = g_value_get_boolean (value); attrs = gdaui_data_entry_get_attributes (GDAUI_DATA_ENTRY (wrapper)); if (wrapper->priv->set_default_if_invalid && (attrs & GDA_VALUE_ATTR_DATA_NON_VALID)) { GValue *sane_value; GdaDataHandler *dh; GType type; check_correct_init (wrapper); dh = gdaui_data_entry_get_handler (GDAUI_DATA_ENTRY (wrapper)); type = gdaui_data_entry_get_value_type (GDAUI_DATA_ENTRY (wrapper)); sane_value = gda_data_handler_get_sane_init_value (dh, type); (*wrapper->priv->real_class->real_set_value) (wrapper, sane_value); if (sane_value) gda_value_free (sane_value); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; } } } }
static void set_preview_widget (TablePreferences *tpref) { GtkWidget *preview = NULL; GtkTreeIter iter; if (!tpref->priv->current_column) return; if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (tpref->priv->plugins_combo), &iter)) { GdauiPlugin *plugin; GtkTreeModel *model; GType gtype; gtype = tpref->priv->current_column->gtype; model = tpref->priv->plugins_model; gtk_tree_model_get (model, &iter, PL_COLUMN_PLUGIN, &plugin, -1); if (plugin) { GString *string = NULL; if (tpref->priv->options_wid) { GdaSet *plist; GSList *list; plist = gdaui_basic_form_get_data_set (GDAUI_BASIC_FORM (tpref->priv->options_wid)); for (list = plist->holders; list; list = list->next) { GdaHolder *holder; holder = GDA_HOLDER (list->data); if (gda_holder_is_valid (holder)) { const GValue *cvalue; cvalue = gda_holder_get_value (holder); if (cvalue && (G_VALUE_TYPE (cvalue) != GDA_TYPE_NULL)) { gchar *str = gda_value_stringify (cvalue); gchar *r1, *r2; if (!string) string = g_string_new (""); else g_string_append_c (string, ';'); r1 = gda_rfc1738_encode (gda_holder_get_id (holder)); r2 = gda_rfc1738_encode (str); g_free (str); g_string_append_printf (string, "%s=%s", r1, r2); g_free (r1); g_free (r2); } } } } if (string) { g_string_prepend_c (string, ':'); g_string_prepend (string, plugin->plugin_name); preview = GTK_WIDGET (gdaui_new_data_entry (gtype, string->str)); g_string_free (string, TRUE); } else preview = GTK_WIDGET (gdaui_new_data_entry (gtype, plugin->plugin_name)); } else preview = GTK_WIDGET (gdaui_new_data_entry (gtype, NULL)); } GValue *prev_value = NULL; if (tpref->priv->preview_wid) { prev_value = gdaui_data_entry_get_value (GDAUI_DATA_ENTRY (tpref->priv->preview_wid)); gtk_widget_destroy (tpref->priv->preview_wid); gtk_widget_show (tpref->priv->preview_none); tpref->priv->preview_wid = NULL; } if (preview) { if (prev_value && (G_VALUE_TYPE (prev_value) == gdaui_data_entry_get_value_type (GDAUI_DATA_ENTRY (preview)))) gdaui_data_entry_set_value (GDAUI_DATA_ENTRY (preview), prev_value); gdaui_data_entry_set_attributes (GDAUI_DATA_ENTRY (preview), 0, GDA_VALUE_ATTR_ACTIONS_SHOWN); tpref->priv->preview_wid = preview; gtk_box_pack_start (GTK_BOX (tpref->priv->preview_vbox), preview, TRUE, TRUE, 0); gtk_widget_hide (tpref->priv->preview_none); gtk_widget_show (tpref->priv->preview_wid); } if (prev_value) gda_value_free (prev_value); }