static void gimp_text_style_editor_set_size (GimpTextStyleEditor *editor, GtkTextTag *size_tag) { gint size = 0; gdouble pixels; if (size_tag) size = gimp_text_tag_get_size (size_tag); g_signal_handlers_block_by_func (editor->size_entry, gimp_text_style_editor_size_changed, editor); pixels = gimp_units_to_pixels ((gdouble) size / PANGO_SCALE, GIMP_UNIT_POINT, editor->resolution_y); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (editor->size_entry), 0, pixels); if (size == 0) { GtkWidget *spinbutton; spinbutton = gimp_size_entry_get_help_widget (GIMP_SIZE_ENTRY (editor->size_entry), 0); gtk_entry_set_text (GTK_ENTRY (spinbutton), ""); } g_signal_handlers_unblock_by_func (editor->size_entry, gimp_text_style_editor_size_changed, editor); }
/** * gimp_query_size_box: * @title: The query box dialog's title. * @parent: The dialog's parent widget. * @help_func: The help function to show this dialog's help page. * @help_id: A string identifying this dialog's help page. * @message: A string which will be shown above the dialog's entry widget. * @initial: The initial value. * @lower: The lower boundary of the range of possible values. * @upper: The upper boundray of the range of possible values. * @digits: The number of decimal digits the #GimpSizeEntry provide in * "pixel" mode. * @unit: The unit initially shown by the #GimpUnitMenu. * @resolution: The resolution (in dpi) which will be used for pixel/unit * calculations. * @dot_for_dot: %TRUE if the #GimpUnitMenu's initial unit should be "pixels". * @object: The object this query box is associated with. * @signal: The object's signal which will cause the query box * to be closed. * @callback: The function which will be called when the user selects "OK". * @data: The callback's user data. * * Creates a new #GtkDialog that queries the user for a size using a * #GimpSizeEntry. * * Returns: A pointer to the new #GtkDialog. **/ GtkWidget * gimp_query_size_box (const gchar *title, GtkWidget *parent, GimpHelpFunc help_func, const gchar *help_id, const gchar *message, gdouble initial, gdouble lower, gdouble upper, gint digits, GimpUnit unit, gdouble resolution, gboolean dot_for_dot, GObject *object, const gchar *signal, GimpQuerySizeCallback callback, gpointer data) { QueryBox *query_box; GtkWidget *sizeentry; GtkWidget *spinbutton; query_box = create_query_box (title, parent, help_func, help_id, G_CALLBACK (size_query_box_response), "dialog-question", message, GTK_STOCK_OK, GTK_STOCK_CANCEL, object, signal, G_CALLBACK (callback), data); if (! query_box) return NULL; sizeentry = gimp_size_entry_new (1, unit, "%p", TRUE, FALSE, FALSE, 12, GIMP_SIZE_ENTRY_UPDATE_SIZE); if (dot_for_dot) gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (sizeentry), GIMP_UNIT_PIXEL); gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (sizeentry), 0, resolution, FALSE); gimp_size_entry_set_refval_digits (GIMP_SIZE_ENTRY (sizeentry), 0, digits); gimp_size_entry_set_refval_boundaries (GIMP_SIZE_ENTRY (sizeentry), 0, lower, upper); gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (sizeentry), 0, initial); spinbutton = gimp_size_entry_get_help_widget (GIMP_SIZE_ENTRY (sizeentry), 0); gtk_entry_set_activates_default (GTK_ENTRY (spinbutton), TRUE); gtk_box_pack_start (GTK_BOX (query_box->vbox), sizeentry, FALSE, FALSE, 0); gimp_size_entry_grab_focus (GIMP_SIZE_ENTRY (sizeentry)); gtk_widget_show (sizeentry); query_box->entry = sizeentry; return query_box->qbox; }
static GtkWidget * find_mnemonic_widget (GtkWidget *widget, gint level) { gboolean can_focus; g_object_get (widget, "can-focus", &can_focus, NULL); if (GTK_WIDGET_GET_CLASS (widget)->activate_signal || can_focus || GTK_WIDGET_GET_CLASS (widget)->mnemonic_activate != GTK_WIDGET_CLASS (g_type_class_peek (GTK_TYPE_WIDGET))->mnemonic_activate) { return widget; } if (GIMP_IS_SIZE_ENTRY (widget)) { GimpSizeEntry *entry = GIMP_SIZE_ENTRY (widget); return gimp_size_entry_get_help_widget (entry, entry->number_of_fields - 1); } else if (GTK_IS_CONTAINER (widget)) { GtkWidget *mnemonic_widget = NULL; GList *children; GList *list; children = gtk_container_get_children (GTK_CONTAINER (widget)); for (list = children; list; list = g_list_next (list)) { mnemonic_widget = find_mnemonic_widget (list->data, level + 1); if (mnemonic_widget) break; } g_list_free (children); return mnemonic_widget; } return NULL; }