Beispiel #1
0
static void
real_set_value (GdauiEntryWrapper *mgwrap, const GValue *value)
{
	GdauiEntryString *mgstr;
	GdaDataHandler *dh;

	PangoLayout *layout;
	gchar *text;
	
	g_return_if_fail (GDAUI_IS_ENTRY_STRING (mgwrap));
	mgstr = GDAUI_ENTRY_STRING (mgwrap);
	GdauiEntryStringPrivate *priv = gdaui_entry_string_get_instance_private (mgstr);

	dh = gdaui_data_entry_get_handler (GDAUI_DATA_ENTRY (mgwrap));

	/* do we need to go into multi line mode ? */
	text = gda_data_handler_get_str_from_value (dh, value);
	layout = gtk_widget_create_pango_layout (GTK_WIDGET (mgwrap), text);
	if (pango_layout_get_line_count (layout) > 1) 
		g_object_set (G_OBJECT (mgwrap), "multiline", TRUE, NULL);
	g_object_unref (G_OBJECT (layout));
	
	/* fill the single line widget */
	if (value) {
		if (gda_value_is_null ((GValue *) value))
			gdaui_entry_set_text (GDAUI_ENTRY (priv->entry), NULL);
		else 
			gdaui_entry_set_text (GDAUI_ENTRY (priv->entry), text);
	}
	else
		gdaui_entry_set_text (GDAUI_ENTRY (priv->entry), NULL);

	/* fill the multiline widget */
	if (value) {
		if (gda_value_is_null ((GValue *) value) || !text)
                        gtk_text_buffer_set_text (priv->buffer, "", -1);
		else 
			gtk_text_buffer_set_text (priv->buffer, text, -1);
	}
	else 
		gtk_text_buffer_set_text (priv->buffer, "", -1);

	g_free (text);
}
Beispiel #2
0
static void
prop_text_null_cb (G_GNUC_UNUSED GtkButton *button, G_GNUC_UNUSED gpointer data)
{
	gsize i;

	g_print ("Setting entries' text to NULL\n");
	for (i = 0; i < NB_ENTRIES; i++)
		if (entries [i])
			gdaui_entry_set_text (GDAUI_ENTRY (entries [i]), NULL);
}
Beispiel #3
0
static void
prop_text_set_cb (G_GNUC_UNUSED GtkButton *button, GdauiEntry *entry)
{
	gchar *tmp;
	gsize i;
	tmp = gdaui_entry_get_text (entry);
	g_print ("Setting entries' text to [%s]\n", tmp);
	for (i = 0; i < NB_ENTRIES; i++)
		if (entries [i])
			gdaui_entry_set_text (GDAUI_ENTRY (entries [i]), tmp);
	g_free (tmp);
}
Beispiel #4
0
static void 
gdaui_numeric_entry_set_property (GObject *object,
				  guint param_id,
				  const GValue *value,
				  GParamSpec *pspec)
{
	GdauiNumericEntry *entry;
	gchar *otext;

        entry = GDAUI_NUMERIC_ENTRY (object);
	otext = gdaui_entry_get_text (GDAUI_ENTRY (entry));
        if (entry->priv) {
                switch (param_id) {
                case PROP_TYPE: {
			NumAttr num_attr;
			compute_numeric_attributes (g_value_get_gtype (value), &num_attr);
			if (num_attr.is_numerical == FALSE)
				g_warning (_("Type %s is not numerical"), g_type_name (g_value_get_gtype (value)));
			else {
				entry->priv->type = g_value_get_gtype (value);
				entry->priv->num_attr = num_attr;
			}
                        break;
		}
		case PROP_N_DECIMALS:
                        entry->priv->nb_decimals = g_value_get_uint (value);
                        break;
                case PROP_DECIMAL_SEP: {
			gchar sep;
                        sep = (gchar) g_value_get_schar (value);
                        if ((sep == 0) || (sep == '+') || (sep == '-'))
                                g_warning (_("Decimal separator cannot be the '%c' character"), sep ? sep : '0');
                        else {
                                entry->priv->decimal_sep = (gchar) g_value_get_schar (value);
                        }
                        break;
                }
                case PROP_THOUSANDS_SEP: {
			gchar sep;
                        sep = (gchar) g_value_get_schar (value);
                        if ((sep == '+') || (sep == '-') || (sep == '_'))
                                g_warning (_("Decimal thousands cannot be the '%c' character"), sep);
                        else {
                                entry->priv->thousands_sep = (gchar) g_value_get_schar (value);
                        }
                        break;
                }
                default:
                        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
                        break;
                }
        }
	gdaui_entry_set_text (GDAUI_ENTRY (entry), otext);
	g_free (otext);

	gint msize;
	if (entry->priv->num_attr.max_nchars == 0)
		msize = -1;
	else {
		msize = (gint) entry->priv->num_attr.max_nchars;
		if (entry->priv->thousands_sep)
			msize += entry->priv->num_attr.max_nchars / 3;
		if (! entry->priv->num_attr.is_int)
			msize += 1;
		if (entry->priv->nb_decimals != G_MAXUINT16)
			msize += entry->priv->nb_decimals;
	}
	/*g_print ("GdauiNumericEntry: type %s => msize = %d\n", g_type_name (entry->priv->type), msize);*/
	gdaui_entry_set_width_chars (GDAUI_ENTRY (entry), msize);
}