Printers: Make model label and ip address label selectable

This patch add selectable property into CcEditableEntry
and uses it in Printers panel (#651545).
This commit is contained in:
Marek Kasik 2011-07-15 16:08:31 +02:00
parent 606b6fd88d
commit 337d7535b3
3 changed files with 65 additions and 14 deletions

View file

@ -32,6 +32,7 @@ struct _CcEditableEntryPrivate {
gchar *text;
gboolean editable;
gboolean selectable;
gint weight;
gboolean weight_set;
gdouble scale;
@ -46,6 +47,7 @@ enum {
PROP_0,
PROP_TEXT,
PROP_EDITABLE,
PROP_SELECTABLE,
PROP_SCALE,
PROP_SCALE_SET,
PROP_WEIGHT,
@ -122,6 +124,29 @@ cc_editable_entry_get_editable (CcEditableEntry *e)
return e->priv->editable;
}
void
cc_editable_entry_set_selectable (CcEditableEntry *e,
gboolean selectable)
{
CcEditableEntryPrivate *priv;
priv = e->priv;
if (priv->selectable != selectable) {
priv->selectable = selectable;
gtk_label_set_selectable (priv->label, selectable);
g_object_notify (G_OBJECT (e), "selectable");
}
}
gboolean
cc_editable_entry_get_selectable (CcEditableEntry *e)
{
return e->priv->selectable;
}
static void
update_entry_font (GtkWidget *widget,
CcEditableEntry *e)
@ -247,6 +272,9 @@ cc_editable_entry_set_property (GObject *object,
case PROP_EDITABLE:
cc_editable_entry_set_editable (e, g_value_get_boolean (value));
break;
case PROP_SELECTABLE:
cc_editable_entry_set_selectable (e, g_value_get_boolean (value));
break;
case PROP_WEIGHT:
cc_editable_entry_set_weight (e, g_value_get_int (value));
break;
@ -282,6 +310,10 @@ cc_editable_entry_get_property (GObject *object,
g_value_set_boolean (value,
cc_editable_entry_get_editable (e));
break;
case PROP_SELECTABLE:
g_value_set_boolean (value,
cc_editable_entry_get_selectable (e));
break;
case PROP_WEIGHT:
g_value_set_int (value,
cc_editable_entry_get_weight (e));
@ -344,6 +376,12 @@ cc_editable_entry_class_init (CcEditableEntryClass *class)
FALSE,
G_PARAM_READWRITE));
g_object_class_install_property (object_class, PROP_SELECTABLE,
g_param_spec_boolean ("selectable",
"Selectable", "Whether the text can be selected by mouse",
FALSE,
G_PARAM_READWRITE));
g_object_class_install_property (object_class, PROP_WEIGHT,
g_param_spec_int ("weight",
"Font Weight", "The font weight to use",

View file

@ -52,20 +52,23 @@ struct _CcEditableEntryClass
void (* editing_done) (CcEditableEntry *entry);
};
GType cc_editable_entry_get_type (void) G_GNUC_CONST;
GtkWidget *cc_editable_entry_new (void);
void cc_editable_entry_set_text (CcEditableEntry *entry,
const gchar *text);
const gchar *cc_editable_entry_get_text (CcEditableEntry *entry);
void cc_editable_entry_set_editable (CcEditableEntry *entry,
gboolean editable);
gboolean cc_editable_entry_get_editable (CcEditableEntry *entry);
void cc_editable_entry_set_weight (CcEditableEntry *entry,
gint weight);
gint cc_editable_entry_get_weight (CcEditableEntry *entry);
void cc_editable_entry_set_scale (CcEditableEntry *entry,
gdouble scale);
gdouble cc_editable_entry_get_scale (CcEditableEntry *entry);
GType cc_editable_entry_get_type (void) G_GNUC_CONST;
GtkWidget *cc_editable_entry_new (void);
void cc_editable_entry_set_text (CcEditableEntry *entry,
const gchar *text);
const gchar *cc_editable_entry_get_text (CcEditableEntry *entry);
void cc_editable_entry_set_editable (CcEditableEntry *entry,
gboolean editable);
gboolean cc_editable_entry_get_editable (CcEditableEntry *entry);
void cc_editable_entry_set_selectable (CcEditableEntry *entry,
gboolean selectable);
gboolean cc_editable_entry_get_selectable (CcEditableEntry *entry);
void cc_editable_entry_set_weight (CcEditableEntry *entry,
gint weight);
gint cc_editable_entry_get_weight (CcEditableEntry *entry);
void cc_editable_entry_set_scale (CcEditableEntry *entry,
gdouble scale);
gdouble cc_editable_entry_get_scale (CcEditableEntry *entry);
G_END_DECLS

View file

@ -2560,6 +2560,16 @@ cc_printers_panel_init (CcPrintersPanel *self)
gtk_style_context_set_junction_sides (context, GTK_JUNCTION_TOP);
/* Make model label and ip-address label selectable */
widget = (GtkWidget*)
gtk_builder_get_object (priv->builder, "printer-ip-address-label");
cc_editable_entry_set_selectable (CC_EDITABLE_ENTRY (widget), TRUE);
widget = (GtkWidget*)
gtk_builder_get_object (priv->builder, "printer-model-label");
cc_editable_entry_set_selectable (CC_EDITABLE_ENTRY (widget), TRUE);
/* Add unlock button */
priv->permission = (GPermission *)polkit_permission_new_sync (
"org.opensuse.cupspkhelper.mechanism.all-edit", NULL, NULL, NULL);