summaryrefslogtreecommitdiff
path: root/gtk/gtkappchooserdialog.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2011-01-20 20:55:59 -0500
committerMatthias Clasen <mclasen@redhat.com>2011-01-20 20:57:47 -0500
commita7bcb8a4d73d39f8c991aa2110764343575f0c08 (patch)
treefc185effba8a2e3e384ab23764f2155494677674 /gtk/gtkappchooserdialog.c
parentec750bed0c0da8f5d0459060d9dc89d08a89cb28 (diff)
downloadgtk+-a7bcb8a4d73d39f8c991aa2110764343575f0c08.tar.gz
Add a way to set the heading of GtkAppChooserDialog
The application can probably set a better string than the default we construct, like 'Select an application for "software" files'.
Diffstat (limited to 'gtk/gtkappchooserdialog.c')
-rw-r--r--gtk/gtkappchooserdialog.c69
1 files changed, 67 insertions, 2 deletions
diff --git a/gtk/gtkappchooserdialog.c b/gtk/gtkappchooserdialog.c
index 1814a64367..a722d47206 100644
--- a/gtk/gtkappchooserdialog.c
+++ b/gtk/gtkappchooserdialog.c
@@ -62,6 +62,7 @@
struct _GtkAppChooserDialogPrivate {
char *content_type;
GFile *gfile;
+ char *heading;
GtkWidget *label;
GtkWidget *button;
@@ -80,6 +81,7 @@ struct _GtkAppChooserDialogPrivate {
enum {
PROP_GFILE = 1,
PROP_CONTENT_TYPE,
+ PROP_HEADING,
N_PROPERTIES
};
@@ -348,10 +350,13 @@ set_dialog_properties (GtkAppChooserDialog *self)
font_desc = pango_font_description_new ();
pango_font_description_set_weight (font_desc, PANGO_WEIGHT_BOLD);
- gtk_widget_modify_font (self->priv->label, font_desc);
+ gtk_widget_override_font (self->priv->label, font_desc);
pango_font_description_free (font_desc);
- gtk_label_set_markup (GTK_LABEL (self->priv->label), label);
+ if (self->priv->heading != NULL)
+ gtk_label_set_markup (GTK_LABEL (self->priv->label), self->priv->heading);
+ else
+ gtk_label_set_markup (GTK_LABEL (self->priv->label), label);
default_text = g_strdup_printf ("<big><b>%s</b></big>\n%s",
string,
@@ -621,6 +626,9 @@ gtk_app_chooser_dialog_set_property (GObject *object,
if (self->priv->content_type == NULL)
self->priv->content_type = g_value_dup_string (value);
break;
+ case PROP_HEADING:
+ gtk_app_chooser_dialog_set_heading (self, g_value_get_string (value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -644,6 +652,9 @@ gtk_app_chooser_dialog_get_property (GObject *object,
case PROP_CONTENT_TYPE:
g_value_set_string (value, self->priv->content_type);
break;
+ case PROP_HEADING:
+ g_value_set_string (value, self->priv->heading);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -687,6 +698,20 @@ gtk_app_chooser_dialog_class_init (GtkAppChooserDialogClass *klass)
G_PARAM_STATIC_STRINGS);
g_object_class_install_property (gobject_class, PROP_GFILE, pspec);
+ /**
+ * GtkAppChooserDialog:heading:
+ *
+ * The text to show at the top of the dialog.
+ * The string may contain Pango markup.
+ */
+ pspec = g_param_spec_string ("heading",
+ P_("Heading"),
+ P_("The text to show at the top of the dialog"),
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ g_object_class_install_property (gobject_class, PROP_HEADING, pspec);
+
+
g_type_class_add_private (klass, sizeof (GtkAppChooserDialogPrivate));
}
@@ -797,3 +822,43 @@ gtk_app_chooser_dialog_get_widget (GtkAppChooserDialog *self)
return self->priv->app_chooser_widget;
}
+
+/**
+ * gtk_app_chooser_dialog_set_heading:
+ * @self: a #GtkAppChooserDialog
+ * @heading: a string containing Pango markup
+ *
+ * Sets the text to display at the top of the dialog.
+ * If the heading is not set, the dialog displays a default text.
+ */
+void
+gtk_app_chooser_dialog_set_heading (GtkAppChooserDialog *self,
+ const gchar *heading)
+{
+ g_return_if_fail (GTK_IS_APP_CHOOSER_DIALOG (self));
+
+ g_free (self->priv->heading);
+ self->priv->heading = g_strdup (heading);
+
+ if (self->priv->label && self->priv->heading)
+ gtk_label_set_markup (GTK_LABEL (self->priv->label), self->priv->heading);
+
+ g_object_notify (G_OBJECT (self), "heading");
+}
+
+/**
+ * gtk_app_chooser_dialog_get_heading:
+ * @self: a #GtkAppChooserDialog
+ *
+ * Returns the text to display at the top of the dialog.
+ *
+ * Returns: the text to display at the top of the dialog, or %NULL, in which
+ * case a default text is displayed
+ */
+const gchar *
+gtk_app_chooser_dialog_get_heading (GtkAppChooserDialog *self)
+{
+ g_return_val_if_fail (GTK_IS_APP_CHOOSER_DIALOG (self), NULL);
+
+ return self->priv->heading;
+}