Show custom identification/ encoding in tooltip and prefill the entry

This commit is contained in:
Christian Dywan 2009-11-10 00:36:48 +01:00
parent 1405f65c49
commit c41d293b9a

View file

@ -206,18 +206,20 @@ proxy_combo_box_changed_cb (GtkComboBox* button,
const gchar* property = g_object_get_data (G_OBJECT (button), "property");
gint custom_value = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (button),
"katze-custom-value"));
const gchar* custom_property = g_object_get_data (G_OBJECT (button),
"katze-custom-property");
if (custom_value)
{
GtkWidget* child = gtk_bin_get_child (GTK_BIN (button));
if (value == custom_value && GTK_IS_CELL_VIEW (child))
{
GtkWidget* entry = gtk_entry_new ();
const gchar* custom_property = g_object_get_data (G_OBJECT (button),
"katze-custom-property");
/* FIXME: Fill in the previous value for convenience
gint old_value = katze_object_get_integer (object, custom_property);
if (old_value && *old_value)
gtk_entry_set_text (GTK_ENTRY (entry), ""); */
gchar* custom_text = katze_object_get_string (object, custom_property);
if (custom_text && *custom_text)
gtk_entry_set_text (GTK_ENTRY (entry), custom_text);
g_free (custom_text);
gtk_widget_show (entry);
gtk_container_add (GTK_CONTAINER (button), entry);
gtk_widget_grab_focus (entry);
@ -234,7 +236,22 @@ proxy_combo_box_changed_cb (GtkComboBox* button,
gtk_combo_box_set_active (button, value);
}
}
g_object_set (object, property, value, NULL);
if (custom_value)
{
#if GTK_CHECK_VERSION (2, 12, 0)
if (value == custom_value)
gtk_widget_set_tooltip_text (GTK_WIDGET (button), NULL);
else
{
gchar* custom_text = katze_object_get_string (object, custom_property);
gtk_widget_set_tooltip_text (GTK_WIDGET (button), custom_text);
g_free (custom_text);
}
#endif
}
}
#endif
@ -677,6 +694,8 @@ katze_property_proxy (gpointer object,
#endif
if (custom)
{
gchar* custom_text = katze_object_get_string (object, custom);
if (value == (gint)(enum_class->n_values - 1))
{
GtkWidget* entry = gtk_entry_new ();
@ -690,6 +709,13 @@ katze_property_proxy (gpointer object,
g_object_set_data_full (G_OBJECT (entry), "property",
g_strdup (custom), g_free);
}
#if GTK_CHECK_VERSION (2, 12, 0)
else
gtk_widget_set_tooltip_text (widget, custom_text);
#endif
g_free (custom_text);
g_object_set_data (G_OBJECT (widget), "katze-custom-value",
GINT_TO_POINTER (enum_class->n_values - 1));
g_object_set_data (G_OBJECT (widget), "katze-custom-property",
@ -701,7 +727,10 @@ katze_property_proxy (gpointer object,
widget = gtk_label_new (gettext (nick));
g_free (string);
gtk_widget_set_tooltip_text (widget, g_param_spec_get_blurb (pspec));
#if GTK_CHECK_VERSION (2, 12, 0)
if (!gtk_widget_get_tooltip_text (widget))
gtk_widget_set_tooltip_text (widget, g_param_spec_get_blurb (pspec));
#endif
gtk_widget_set_sensitive (widget, pspec->flags & G_PARAM_WRITABLE);
g_object_set_data_full (G_OBJECT (widget), "property",
@ -749,6 +778,7 @@ katze_property_label (gpointer object,
nick = g_param_spec_get_nick (pspec);
widget = gtk_label_new (nick);
gtk_widget_set_tooltip_text (widget, g_param_spec_get_blurb (pspec));
gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
return widget;