From 2a00a9e60aa0a2161fe68518e22d64e15ec7bb75 Mon Sep 17 00:00:00 2001 From: Jehan Date: Mon, 5 Aug 2024 16:02:47 +0200 Subject: [PATCH] Issue #434: remove broken plural support for GimpUnit. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rather than trying to implement full i18n plural support, we just remove this failed attempt from the past. The fact is that to get proper support, we'd basically need to reimplement a Gettext-like plural definition syntax within our API, then ask people to write down this plural definition for their language, then to write every plural form… all this for custom units which only them will ever see! Moreover code investigation shows that the singular form was simply never used, and the plural form was always used (whatever the actual unit value displayed). As for the "identifier", this was a text which was never shown anywhere (except in the unit editor) and for all built-in units, as well as default unitrc units, it was equivalent to the English plural value. So we now just have a unique name which is the "long label" to be used everywhere in the GUI, and abbreviation will be basically the "short label". That's it. No useless (or worse, not actually usable because it was not generic internationalization) values anymore! --- app/core/gimp-units.c | 32 ++-- app/core/gimpimage.c | 5 + app/core/gimpunit.c | 10 +- app/core/gimpunit.h | 6 +- app/dialogs/print-size-dialog.c | 2 +- app/dialogs/resize-dialog.c | 2 +- app/dialogs/resolution-calibrate-dialog.c | 2 +- app/gimpcore.def | 2 +- app/pdb/unit-cmds.c | 64 ++----- app/tools/gimpmeasuretool.c | 8 +- app/tools/gimptextoptions.c | 2 +- app/widgets/gimpimagepropview.c | 2 +- app/widgets/gimpsizebox.c | 2 +- app/widgets/gimptemplateeditor.c | 4 +- app/xcf/xcf-load.c | 30 ++-- app/xcf/xcf-save.c | 23 ++- app/xcf/xcf.c | 1 + libgimp/gimpresolutionentry-private.c | 2 +- libgimp/gimpunit_pdb.c | 30 +--- libgimp/gimpunit_pdb.h | 10 +- libgimp/tests/test-unit.c | 8 +- libgimpbase/gimpbase-private.h | 4 +- libgimpbase/gimpbase.def | 4 +- libgimpbase/gimpunit.c | 210 +++++++--------------- libgimpbase/gimpunit.h | 4 +- libgimpconfig/gimpconfig-deserialize.c | 2 +- libgimpconfig/gimpconfig-serialize.c | 2 +- libgimpwidgets/gimpquerybox.c | 2 +- libgimpwidgets/gimpsizeentry.c | 7 +- libgimpwidgets/gimpunitstore.c | 14 +- libgimpwidgets/gimpunitstore.h | 4 +- pdb/groups/unit.pdb | 24 +-- plug-ins/common/unit-editor.c | 80 ++------- plug-ins/print/print-page-layout.c | 4 +- 34 files changed, 196 insertions(+), 412 deletions(-) diff --git a/app/core/gimp-units.c b/app/core/gimp-units.c index 91213b7630..cb7c2d2df9 100644 --- a/app/core/gimp-units.c +++ b/app/core/gimp-units.c @@ -93,8 +93,8 @@ enum UNIT_DIGITS, UNIT_SYMBOL, UNIT_ABBREV, - UNIT_SINGULAR, - UNIT_PLURAL + UNIT_SINGULAR, /* Obsoleted in GIMP 3.0. */ + UNIT_PLURAL /* Obsoleted in GIMP 3.0. */ }; void @@ -236,7 +236,7 @@ gimp_unitrc_save (Gimp *gimp) gimp_config_writer_open (writer, "unit-info"); gimp_config_writer_string (writer, - gimp_unit_get_identifier (unit)); + gimp_unit_get_name (unit)); gimp_config_writer_open (writer, "factor"); gimp_config_writer_print (writer, @@ -260,16 +260,6 @@ gimp_unitrc_save (Gimp *gimp) gimp_unit_get_abbreviation (unit)); gimp_config_writer_close (writer); - gimp_config_writer_open (writer, "singular"); - gimp_config_writer_string (writer, - gimp_unit_get_singular (unit)); - gimp_config_writer_close (writer); - - gimp_config_writer_open (writer, "plural"); - gimp_config_writer_string (writer, - gimp_unit_get_plural (unit)); - gimp_config_writer_close (writer); - gimp_config_writer_close (writer); } } @@ -288,7 +278,7 @@ static GTokenType gimp_unitrc_unit_info_deserialize (GScanner *scanner, Gimp *gimp) { - gchar *identifier = NULL; + gchar *name = NULL; gdouble factor = 1.0; gint digits = 2.0; gchar *symbol = NULL; @@ -297,7 +287,7 @@ gimp_unitrc_unit_info_deserialize (GScanner *scanner, gchar *plural = NULL; GTokenType token; - if (! gimp_scanner_parse_string (scanner, &identifier)) + if (! gimp_scanner_parse_string (scanner, &name)) return G_TOKEN_STRING; token = G_TOKEN_LEFT_PAREN; @@ -340,6 +330,11 @@ gimp_unitrc_unit_info_deserialize (GScanner *scanner, break; case UNIT_SINGULAR: + /* UNIT_SINGULAR and UNIT_PLURAL are deprecated. We still + * support reading them if they exist to stay backward + * compatible with older unitrc, in which case, we use + * UNIT_PLURAL on behalf of the name. + */ token = G_TOKEN_STRING; if (! gimp_scanner_parse_string (scanner, &singular)) goto cleanup; @@ -373,9 +368,8 @@ gimp_unitrc_unit_info_deserialize (GScanner *scanner, if (g_scanner_peek_next_token (scanner) == token) { GimpUnit *unit = _gimp_unit_new (gimp, - identifier, factor, digits, - symbol, abbreviation, - singular, plural); + plural && strlen (plural) > 0 ? plural : name, + factor, digits, symbol, abbreviation); /* make the unit definition persistent */ gimp_unit_set_deletion_flag (unit, FALSE); @@ -384,7 +378,7 @@ gimp_unitrc_unit_info_deserialize (GScanner *scanner, cleanup: - g_free (identifier); + g_free (name); g_free (symbol); g_free (abbreviation); g_free (singular); diff --git a/app/core/gimpimage.c b/app/core/gimpimage.c index 5f214b0e0a..9539e3dcdd 100644 --- a/app/core/gimpimage.c +++ b/app/core/gimpimage.c @@ -3071,6 +3071,11 @@ gimp_image_get_xcf_version (GimpImage *image, version = MAX (16, version); } + /* Note: user unit storage was changed in XCF 21, but we can still + * easily save older XCF (we use the unit name for both singular and + * plural forms). Therefore we don't bump the XCF version unecessarily + * and don't add any test. + */ #undef ADD_REASON diff --git a/app/core/gimpunit.c b/app/core/gimpunit.c index 7a84412b0b..4cac2027e8 100644 --- a/app/core/gimpunit.c +++ b/app/core/gimpunit.c @@ -40,13 +40,11 @@ GimpUnit * _gimp_unit_new (Gimp *gimp, - const gchar *identifier, + const gchar *name, gdouble factor, gint digits, const gchar *symbol, - const gchar *abbreviation, - const gchar *singular, - const gchar *plural) + const gchar *abbreviation) { GimpUnit *unit; gint unit_id; @@ -54,13 +52,11 @@ _gimp_unit_new (Gimp *gimp, unit_id = GIMP_UNIT_END + g_list_length (gimp->user_units); unit = g_object_new (GIMP_TYPE_UNIT, "id", unit_id, - "name", identifier, + "name", name, "factor", factor, "digits", digits, "symbol", symbol, "abbreviation", abbreviation, - "singular", singular, - "plural", plural, NULL); gimp->user_units = g_list_append (gimp->user_units, unit); diff --git a/app/core/gimpunit.h b/app/core/gimpunit.h index d8eb66e56a..28f7fcd55f 100644 --- a/app/core/gimpunit.h +++ b/app/core/gimpunit.h @@ -20,13 +20,11 @@ GimpUnit * _gimp_unit_new (Gimp *gimp, - const gchar *identifier, + const gchar *name, gdouble factor, gint digits, const gchar *symbol, - const gchar *abbreviation, - const gchar *singular, - const gchar *plural); + const gchar *abbreviation); #endif /* __APP_GIMP_UNIT_H__ */ diff --git a/app/dialogs/print-size-dialog.c b/app/dialogs/print-size-dialog.c index 77d6868cc3..169f865769 100644 --- a/app/dialogs/print-size-dialog.c +++ b/app/dialogs/print-size-dialog.c @@ -163,7 +163,7 @@ print_size_dialog_new (GimpImage *image, gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (height), TRUE); gtk_entry_set_width_chars (GTK_ENTRY (height), SB_WIDTH); - entry = gimp_size_entry_new (0, gimp_get_default_unit (), "%p", + entry = gimp_size_entry_new (0, gimp_get_default_unit (), "%n", FALSE, FALSE, FALSE, SB_WIDTH, GIMP_SIZE_ENTRY_UPDATE_SIZE); private->size_entry = GIMP_SIZE_ENTRY (entry); diff --git a/app/dialogs/resize-dialog.c b/app/dialogs/resize-dialog.c index ce98155108..e516b8731f 100644 --- a/app/dialogs/resize-dialog.c +++ b/app/dialogs/resize-dialog.c @@ -388,7 +388,7 @@ resize_dialog_new (GimpViewable *viewable, gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE); gtk_entry_set_width_chars (GTK_ENTRY (spinbutton), SB_WIDTH); - private->offset = entry = gimp_size_entry_new (1, unit, "%p", + private->offset = entry = gimp_size_entry_new (1, unit, "%n", TRUE, FALSE, FALSE, SB_WIDTH, GIMP_SIZE_ENTRY_UPDATE_SIZE); gimp_size_entry_add_field (GIMP_SIZE_ENTRY (entry), diff --git a/app/dialogs/resolution-calibrate-dialog.c b/app/dialogs/resolution-calibrate-dialog.c index d1a6378ab7..246cd213a6 100644 --- a/app/dialogs/resolution-calibrate-dialog.c +++ b/app/dialogs/resolution-calibrate-dialog.c @@ -137,7 +137,7 @@ resolution_calibrate_dialog (GtkWidget *resolution_entry, gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (resolution_entry), 1); calibrate_entry = - gimp_coordinates_new (gimp_unit_inch (), "%p", + gimp_coordinates_new (gimp_unit_inch (), "%n", FALSE, FALSE, 10, GIMP_SIZE_ENTRY_UPDATE_SIZE, FALSE, diff --git a/app/gimpcore.def b/app/gimpcore.def index 23427a4180..9527b1473a 100644 --- a/app/gimpcore.def +++ b/app/gimpcore.def @@ -6,7 +6,7 @@ EXPORTS _gimp_unit_get_deletion_flag _gimp_unit_get_digits _gimp_unit_get_factor - _gimp_unit_get_identifier + _gimp_unit_get_name _gimp_unit_get_number_of_units _gimp_unit_get_plural _gimp_unit_get_singular diff --git a/app/pdb/unit-cmds.c b/app/pdb/unit-cmds.c index 9144133fc6..ebffddbd56 100644 --- a/app/pdb/unit-cmds.c +++ b/app/pdb/unit-cmds.c @@ -50,27 +50,23 @@ unit_new_invoker (GimpProcedure *procedure, { gboolean success = TRUE; GimpValueArray *return_vals; - const gchar *identifier; + const gchar *name; gdouble factor; gint digits; const gchar *symbol; const gchar *abbreviation; - const gchar *singular; - const gchar *plural; GimpUnit *unit = NULL; - identifier = g_value_get_string (gimp_value_array_index (args, 0)); + name = g_value_get_string (gimp_value_array_index (args, 0)); factor = g_value_get_double (gimp_value_array_index (args, 1)); digits = g_value_get_int (gimp_value_array_index (args, 2)); symbol = g_value_get_string (gimp_value_array_index (args, 3)); abbreviation = g_value_get_string (gimp_value_array_index (args, 4)); - singular = g_value_get_string (gimp_value_array_index (args, 5)); - plural = g_value_get_string (gimp_value_array_index (args, 6)); if (success) { - unit = _gimp_unit_new (gimp, identifier, factor, digits, - symbol, abbreviation, singular, plural); + unit = _gimp_unit_new (gimp, name, factor, digits, + symbol, abbreviation); } return_vals = gimp_procedure_get_return_values (procedure, success, @@ -93,13 +89,11 @@ unit_get_data_invoker (GimpProcedure *procedure, gboolean success = TRUE; GimpValueArray *return_vals; gint unit_id; - gchar *identifier = NULL; + gchar *name = NULL; gdouble factor = 0.0; gint digits = 0; gchar *symbol = NULL; gchar *abbreviation = NULL; - gchar *singular = NULL; - gchar *plural = NULL; unit_id = g_value_get_int (gimp_value_array_index (args, 0)); @@ -111,13 +105,11 @@ unit_get_data_invoker (GimpProcedure *procedure, if (unit != NULL) { - identifier = g_strdup (gimp_unit_get_identifier (unit)); + name = g_strdup (gimp_unit_get_name (unit)); factor = gimp_unit_get_factor (unit); digits = gimp_unit_get_digits (unit); symbol = g_strdup (gimp_unit_get_symbol (unit)); abbreviation = g_strdup (gimp_unit_get_abbreviation (unit)); - singular = g_strdup (gimp_unit_get_singular (unit)); - plural = g_strdup (gimp_unit_get_plural (unit)); } } } @@ -127,13 +119,11 @@ unit_get_data_invoker (GimpProcedure *procedure, if (success) { - g_value_take_string (gimp_value_array_index (return_vals, 1), identifier); + g_value_take_string (gimp_value_array_index (return_vals, 1), name); g_value_set_double (gimp_value_array_index (return_vals, 2), factor); g_value_set_int (gimp_value_array_index (return_vals, 3), digits); g_value_take_string (gimp_value_array_index (return_vals, 4), symbol); g_value_take_string (gimp_value_array_index (return_vals, 5), abbreviation); - g_value_take_string (gimp_value_array_index (return_vals, 6), singular); - g_value_take_string (gimp_value_array_index (return_vals, 7), plural); } return return_vals; @@ -212,9 +202,9 @@ register_unit_procs (GimpPDB *pdb) "Michael Natterer", "1999"); gimp_procedure_add_argument (procedure, - gimp_param_spec_string ("identifier", - "identifier", - "The new unit's identifier", + gimp_param_spec_string ("name", + "name", + "The new unit's name", FALSE, FALSE, TRUE, NULL, GIMP_PARAM_READWRITE)); @@ -244,20 +234,6 @@ register_unit_procs (GimpPDB *pdb) FALSE, FALSE, TRUE, NULL, GIMP_PARAM_READWRITE)); - gimp_procedure_add_argument (procedure, - gimp_param_spec_string ("singular", - "singular", - "The new unit's singular form", - FALSE, FALSE, TRUE, - NULL, - GIMP_PARAM_READWRITE)); - gimp_procedure_add_argument (procedure, - gimp_param_spec_string ("plural", - "plural", - "The new unit's plural form", - FALSE, FALSE, TRUE, - NULL, - GIMP_PARAM_READWRITE)); gimp_procedure_add_return_value (procedure, gimp_param_spec_unit ("unit", "unit", @@ -290,9 +266,9 @@ register_unit_procs (GimpPDB *pdb) G_MININT32, G_MAXINT32, 0, GIMP_PARAM_READWRITE)); gimp_procedure_add_return_value (procedure, - gimp_param_spec_string ("identifier", - "identifier", - "The unit's textual identifier", + gimp_param_spec_string ("name", + "name", + "The unit's name", FALSE, FALSE, FALSE, NULL, GIMP_PARAM_READWRITE)); @@ -322,20 +298,6 @@ register_unit_procs (GimpPDB *pdb) FALSE, FALSE, FALSE, NULL, GIMP_PARAM_READWRITE)); - gimp_procedure_add_return_value (procedure, - gimp_param_spec_string ("singular", - "singular", - "The unit's singular form", - FALSE, FALSE, FALSE, - NULL, - GIMP_PARAM_READWRITE)); - gimp_procedure_add_return_value (procedure, - gimp_param_spec_string ("plural", - "plural", - "The unit's plural form", - FALSE, FALSE, FALSE, - NULL, - GIMP_PARAM_READWRITE)); gimp_pdb_register_procedure (pdb, procedure); g_object_unref (procedure); diff --git a/app/tools/gimpmeasuretool.c b/app/tools/gimpmeasuretool.c index 91bbc05836..4ab820a2a9 100644 --- a/app/tools/gimpmeasuretool.c +++ b/app/tools/gimpmeasuretool.c @@ -623,7 +623,7 @@ gimp_measure_tool_dialog_update (GimpMeasureTool *measure, g_snprintf (format, sizeof (format), "%%.%df %s, %%.2f\302\260 (%%.%df × %%.%df)", unit_distance_digits, - gimp_unit_get_plural (shell->unit), + gimp_unit_get_name (shell->unit), unit_width_digits, unit_height_digits); @@ -648,7 +648,7 @@ gimp_measure_tool_dialog_update (GimpMeasureTool *measure, gtk_label_set_text (GTK_LABEL (measure->distance_label[1]), buf); gtk_label_set_text (GTK_LABEL (measure->unit_label[0]), - gimp_unit_get_plural (shell->unit)); + gimp_unit_get_name (shell->unit)); } else { @@ -685,7 +685,7 @@ gimp_measure_tool_dialog_update (GimpMeasureTool *measure, gtk_label_set_text (GTK_LABEL (measure->width_label[1]), buf); gtk_label_set_text (GTK_LABEL (measure->unit_label[2]), - gimp_unit_get_plural (shell->unit)); + gimp_unit_get_name (shell->unit)); } else { @@ -705,7 +705,7 @@ gimp_measure_tool_dialog_update (GimpMeasureTool *measure, gtk_label_set_text (GTK_LABEL (measure->height_label[1]), buf); gtk_label_set_text (GTK_LABEL (measure->unit_label[3]), - gimp_unit_get_plural (shell->unit)); + gimp_unit_get_name (shell->unit)); } else { diff --git a/app/tools/gimptextoptions.c b/app/tools/gimptextoptions.c index 595722c7d2..c694fa58e2 100644 --- a/app/tools/gimptextoptions.c +++ b/app/tools/gimptextoptions.c @@ -804,7 +804,7 @@ gimp_text_options_gui (GimpToolOptions *tool_options) gtk_widget_show (grid); entry = gimp_prop_size_entry_new (config, - "font-size", FALSE, "font-size-unit", "%p", + "font-size", FALSE, "font-size-unit", "%n", GIMP_SIZE_ENTRY_UPDATE_SIZE, 72.0); gimp_grid_attach_aligned (GTK_GRID (grid), 0, row++, _("Size:"), 0.0, 0.5, diff --git a/app/widgets/gimpimagepropview.c b/app/widgets/gimpimagepropview.c index 3e3fb6e7cb..cbf7156e4b 100644 --- a/app/widgets/gimpimagepropview.c +++ b/app/widgets/gimpimagepropview.c @@ -448,7 +448,7 @@ gimp_image_prop_view_update (GimpImagePropView *view) g_snprintf (format_buf, sizeof (format_buf), "%%.%df × %%.%df %s", gimp_unit_get_scaled_digits (unit, xres), gimp_unit_get_scaled_digits (unit, yres), - gimp_unit_get_plural (unit)); + gimp_unit_get_name (unit)); g_snprintf (buf, sizeof (buf), format_buf, gimp_pixels_to_units (gimp_image_get_width (image), unit, xres), gimp_pixels_to_units (gimp_image_get_height (image), unit, yres)); diff --git a/app/widgets/gimpsizebox.c b/app/widgets/gimpsizebox.c index 406abee0c7..a70df4cea3 100644 --- a/app/widgets/gimpsizebox.c +++ b/app/widgets/gimpsizebox.c @@ -183,7 +183,7 @@ gimp_size_box_constructed (GObject *object) gtk_box_pack_start (GTK_BOX (box), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); - entry = gimp_coordinates_new (box->unit, "%p", + entry = gimp_coordinates_new (box->unit, "%n", TRUE, TRUE, SB_WIDTH, GIMP_SIZE_ENTRY_UPDATE_SIZE, TRUE, TRUE, diff --git a/app/widgets/gimptemplateeditor.c b/app/widgets/gimptemplateeditor.c index 6685380c3c..2a1b0f6d21 100644 --- a/app/widgets/gimptemplateeditor.c +++ b/app/widgets/gimptemplateeditor.c @@ -224,7 +224,7 @@ gimp_template_editor_constructed (GObject *object) private->size_se = gimp_size_entry_new (0, gimp_template_get_unit (template), - _("%p"), + _("%n"), TRUE, FALSE, FALSE, SB_WIDTH, GIMP_SIZE_ENTRY_UPDATE_SIZE); @@ -359,7 +359,7 @@ gimp_template_editor_constructed (GObject *object) private->resolution_se = gimp_size_entry_new (0, gimp_template_get_resolution_unit (template), - _("pixels/%s"), + _("pixels/%a"), FALSE, FALSE, FALSE, SB_WIDTH, GIMP_SIZE_ENTRY_UPDATE_RESOLUTION); diff --git a/app/xcf/xcf-load.c b/app/xcf/xcf-load.c index 7870540e55..2057c32998 100644 --- a/app/xcf/xcf-load.c +++ b/app/xcf/xcf-load.c @@ -1455,30 +1455,36 @@ xcf_load_image_props (XcfInfo *info, case PROP_USER_UNIT: { - gchar *unit_strings[5]; + gchar *unit_strings[5] = { 0 }; float factor; guint32 digits; GimpUnit *unit; GList *iter; + gint n_fields = 3; gint i; xcf_read_float (info, &factor, 1); xcf_read_int32 (info, &digits, 1); - xcf_read_string (info, unit_strings, 5); - for (i = 0; i < 5; i++) + /* Depending on XCF version, read more or less strings. */ + if (info->file_version < 21) + n_fields = 5; + xcf_read_string (info, unit_strings, n_fields); + + for (i = 0; i < n_fields; i++) if (unit_strings[i] == NULL) unit_strings[i] = g_strdup (""); for (iter = info->gimp->user_units; iter; iter = iter->next) { unit = iter->data; - /* if the factor and the identifier match some unit - * in unitrc, use the unitrc unit + /* if the factor and the name match some unit in unitrc, + * use the unitrc unit */ - if ((ABS (gimp_unit_get_factor (unit) - factor) < 1e-5) && - (strcmp (unit_strings[0], - gimp_unit_get_identifier (unit)) == 0)) + if (ABS (gimp_unit_get_factor (unit) - factor) < 1e-5 && + (strcmp (unit_strings[0], gimp_unit_get_name (unit)) == 0 || + (info->file_version < 21 && + strcmp (unit_strings[4], gimp_unit_get_name (unit)) == 0))) { break; } @@ -1489,17 +1495,15 @@ xcf_load_image_props (XcfInfo *info, * flag. */ unit = _gimp_unit_new (info->gimp, - unit_strings[0], + unit_strings[4] && strlen (unit_strings[4]) > 0 ? unit_strings[4] : unit_strings[0], (gdouble) factor, digits, unit_strings[1], - unit_strings[2], - unit_strings[3], - unit_strings[4]); + unit_strings[2]); gimp_image_set_unit (image, unit); - for (i = 0; i < 5; i++) + for (i = 0; i < n_fields; i++) g_free (unit_strings[i]); } break; diff --git a/app/xcf/xcf-save.c b/app/xcf/xcf-save.c index 8a252eaec7..7d18e263cf 100644 --- a/app/xcf/xcf-save.c +++ b/app/xcf/xcf-save.c @@ -1588,28 +1588,37 @@ xcf_save_prop (XcfInfo *info, guint32 digits; /* write the entire unit definition */ - unit_strings[0] = gimp_unit_get_identifier (unit); + unit_strings[0] = gimp_unit_get_name (unit); factor = gimp_unit_get_factor (unit); digits = gimp_unit_get_digits (unit); unit_strings[1] = gimp_unit_get_symbol (unit); unit_strings[2] = gimp_unit_get_abbreviation (unit); - unit_strings[3] = gimp_unit_get_singular (unit); - unit_strings[4] = gimp_unit_get_plural (unit); + /* Singular and plural forms were deprecated in XCF 21. Just use + * the unit name as bogus (yet reasonable) replacements. + */ + unit_strings[3] = gimp_unit_get_name (unit); + unit_strings[4] = gimp_unit_get_name (unit); size = 2 * 4 + strlen (unit_strings[0]) ? strlen (unit_strings[0]) + 5 : 4 + strlen (unit_strings[1]) ? strlen (unit_strings[1]) + 5 : 4 + - strlen (unit_strings[2]) ? strlen (unit_strings[2]) + 5 : 4 + - strlen (unit_strings[3]) ? strlen (unit_strings[3]) + 5 : 4 + - strlen (unit_strings[4]) ? strlen (unit_strings[4]) + 5 : 4; + strlen (unit_strings[2]) ? strlen (unit_strings[2]) + 5 : 4; + + if (info->file_version < 21) + size += + strlen (unit_strings[3]) ? strlen (unit_strings[3]) + 5 : 4 + + strlen (unit_strings[4]) ? strlen (unit_strings[4]) + 5 : 4; xcf_write_prop_type_check_error (info, prop_type, va_end (args)); xcf_write_int32_check_error (info, &size, 1, va_end (args)); xcf_write_float_check_error (info, &factor, 1, va_end (args)); xcf_write_int32_check_error (info, &digits, 1, va_end (args)); - xcf_write_string_check_error (info, (gchar **) unit_strings, 5, va_end (args)); + if (info->file_version < 21) + xcf_write_string_check_error (info, (gchar **) unit_strings, 5, va_end (args)); + else + xcf_write_string_check_error (info, (gchar **) unit_strings, 3, va_end (args)); } break; diff --git a/app/xcf/xcf.c b/app/xcf/xcf.c index a4f6fe7584..050e83ee02 100644 --- a/app/xcf/xcf.c +++ b/app/xcf/xcf.c @@ -89,6 +89,7 @@ static GimpXcfLoaderFunc * const xcf_loaders[] = xcf_load_image, /* version 18 */ xcf_load_image, /* version 19 */ xcf_load_image, /* version 20 */ + xcf_load_image, /* version 21 */ }; diff --git a/libgimp/gimpresolutionentry-private.c b/libgimp/gimpresolutionentry-private.c index 43b8b62820..72d6d94043 100644 --- a/libgimp/gimpresolutionentry-private.c +++ b/libgimp/gimpresolutionentry-private.c @@ -661,7 +661,7 @@ gimp_resolution_entry_format_label (GimpResolutionEntry *entry, gimp_unit_get_digits (entry->unit)); gchar *text = g_strdup_printf (format, size_inch * gimp_unit_get_factor (entry->unit), - gimp_unit_get_plural (entry->unit)); + gimp_unit_get_name (entry->unit)); g_free (format); gtk_label_set_text (GTK_LABEL (label), text); diff --git a/libgimp/gimpunit_pdb.c b/libgimp/gimpunit_pdb.c index 0552867d90..e33ac458d4 100644 --- a/libgimp/gimpunit_pdb.c +++ b/libgimp/gimpunit_pdb.c @@ -39,13 +39,11 @@ /** * gimp_unit_new: - * @identifier: The new unit's identifier. + * @name: The new unit's name. * @factor: The new unit's factor. * @digits: The new unit's digits. * @symbol: The new unit's symbol. * @abbreviation: The new unit's abbreviation. - * @singular: The new unit's singular form. - * @plural: The new unit's plural form. * * Creates a new unit. * @@ -57,26 +55,22 @@ * Returns: (transfer none): The new unit. **/ GimpUnit * -gimp_unit_new (const gchar *identifier, +gimp_unit_new (const gchar *name, gdouble factor, gint digits, const gchar *symbol, - const gchar *abbreviation, - const gchar *singular, - const gchar *plural) + const gchar *abbreviation) { GimpValueArray *args; GimpValueArray *return_vals; GimpUnit *unit = NULL; args = gimp_value_array_new_from_types (NULL, - G_TYPE_STRING, identifier, + G_TYPE_STRING, name, G_TYPE_DOUBLE, factor, G_TYPE_INT, digits, G_TYPE_STRING, symbol, G_TYPE_STRING, abbreviation, - G_TYPE_STRING, singular, - G_TYPE_STRING, plural, G_TYPE_NONE); return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (), @@ -99,8 +93,6 @@ gimp_unit_new (const gchar *identifier, * @digits: (out): The unit's number of digits. * @symbol: (out) (transfer full): The unit's symbol. * @abbreviation: (out) (transfer full): The unit's abbreviation. - * @singular: (out) (transfer full): The unit's singular form. - * @plural: (out) (transfer full): The unit's plural form. * * Returns the various data pertaining to a given unit ID. * @@ -109,7 +101,7 @@ gimp_unit_new (const gchar *identifier, * programming error to use it directly, in particular for any of the * built-in units. * - * Returns: (transfer full): The unit's textual identifier. + * Returns: (transfer full): The unit's name. * The returned value must be freed with g_free(). **/ gchar * @@ -117,13 +109,11 @@ _gimp_unit_get_data (gint unit_id, gdouble *factor, gint *digits, gchar **symbol, - gchar **abbreviation, - gchar **singular, - gchar **plural) + gchar **abbreviation) { GimpValueArray *args; GimpValueArray *return_vals; - gchar *identifier = NULL; + gchar *name = NULL; args = gimp_value_array_new_from_types (NULL, G_TYPE_INT, unit_id, @@ -136,18 +126,16 @@ _gimp_unit_get_data (gint unit_id, if (GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS) { - identifier = GIMP_VALUES_DUP_STRING (return_vals, 1); + name = GIMP_VALUES_DUP_STRING (return_vals, 1); *factor = GIMP_VALUES_GET_DOUBLE (return_vals, 2); *digits = GIMP_VALUES_GET_INT (return_vals, 3); *symbol = GIMP_VALUES_DUP_STRING (return_vals, 4); *abbreviation = GIMP_VALUES_DUP_STRING (return_vals, 5); - *singular = GIMP_VALUES_DUP_STRING (return_vals, 6); - *plural = GIMP_VALUES_DUP_STRING (return_vals, 7); } gimp_value_array_unref (return_vals); - return identifier; + return name; } /** diff --git a/libgimp/gimpunit_pdb.h b/libgimp/gimpunit_pdb.h index 3db638be77..d5f9d70081 100644 --- a/libgimp/gimpunit_pdb.h +++ b/libgimp/gimpunit_pdb.h @@ -32,20 +32,16 @@ G_BEGIN_DECLS /* For information look into the C source or the html documentation */ -GimpUnit* gimp_unit_new (const gchar *identifier, +GimpUnit* gimp_unit_new (const gchar *name, gdouble factor, gint digits, const gchar *symbol, - const gchar *abbreviation, - const gchar *singular, - const gchar *plural); + const gchar *abbreviation); G_GNUC_INTERNAL gchar* _gimp_unit_get_data (gint unit_id, gdouble *factor, gint *digits, gchar **symbol, - gchar **abbreviation, - gchar **singular, - gchar **plural); + gchar **abbreviation); G_GNUC_INTERNAL gboolean _gimp_unit_get_deletion_flag (GimpUnit *unit); G_GNUC_INTERNAL gboolean _gimp_unit_set_deletion_flag (GimpUnit *unit, gboolean deletion_flag); diff --git a/libgimp/tests/test-unit.c b/libgimp/tests/test-unit.c index 8b02438b9e..23ec03e8f2 100644 --- a/libgimp/tests/test-unit.c +++ b/libgimp/tests/test-unit.c @@ -4,7 +4,7 @@ typedef struct { gdouble factor; gint digits; - gchar *identifier; + gchar *name; gchar *symbol; gchar *abbreviation; } GimpUnitDef; @@ -57,7 +57,7 @@ gimp_c_test_run (GimpProcedure *procedure, unit = gimp_unit_get_by_id (i); GIMP_TEST_END(GIMP_IS_UNIT (unit) && - g_strcmp0 (gimp_unit_get_identifier (unit), _gimp_unit_defs[i].identifier) == 0 && + g_strcmp0 (gimp_unit_get_name (unit), _gimp_unit_defs[i].name) == 0 && g_strcmp0 (gimp_unit_get_symbol (unit), _gimp_unit_defs[i].symbol) == 0 && g_strcmp0 (gimp_unit_get_abbreviation (unit), _gimp_unit_defs[i].abbreviation) == 0 && gimp_unit_get_factor (unit) == _gimp_unit_defs[i].factor && @@ -78,9 +78,7 @@ gimp_c_test_run (GimpProcedure *procedure, GIMP_TEST_END(n_user_units == N_DEFAULT_USER_UNITS); GIMP_TEST_START("gimp_unit_new()"); - unit2 = gimp_unit_new ("identifier", 2.0, 1, - "symbol", "abbreviation", - "singular", "plural"); + unit2 = gimp_unit_new ("name", 2.0, 1, "symbol", "abbreviation"); GIMP_TEST_END(GIMP_IS_UNIT (unit2)); GIMP_TEST_START("Verifying the new user unit's ID"); diff --git a/libgimpbase/gimpbase-private.h b/libgimpbase/gimpbase-private.h index 47bf9f4246..7e00e79d9c 100644 --- a/libgimpbase/gimpbase-private.h +++ b/libgimpbase/gimpbase-private.h @@ -35,9 +35,7 @@ struct _GimpUnitVtable gdouble *factor, gint *digits, gchar **symbol, - gchar **abbreviation, - gchar **singular, - gchar **plural); + gchar **abbreviation); /* These methods MUST only be set on app, not in libgimp. */ GimpUnit * (* get_user_unit) (gint unit_id); diff --git a/libgimpbase/gimpbase.def b/libgimpbase/gimpbase.def index ab9a3ef3da..15c4279419 100644 --- a/libgimpbase/gimpbase.def +++ b/libgimpbase/gimpbase.def @@ -205,10 +205,8 @@ EXPORTS gimp_unit_get_digits gimp_unit_get_factor gimp_unit_get_id - gimp_unit_get_identifier - gimp_unit_get_plural + gimp_unit_get_name gimp_unit_get_scaled_digits - gimp_unit_get_singular gimp_unit_get_symbol gimp_unit_get_type gimp_unit_inch diff --git a/libgimpbase/gimpunit.c b/libgimpbase/gimpunit.c index b4ebd68660..f6971c4e2d 100644 --- a/libgimpbase/gimpunit.c +++ b/libgimpbase/gimpunit.c @@ -45,21 +45,8 @@ enum PROP_DIGITS, PROP_SYMBOL, PROP_ABBREVIATION, - PROP_SINGULAR, - PROP_PLURAL, }; -typedef struct -{ - gdouble factor; - gint digits; - gchar *identifier; - gchar *symbol; - gchar *abbreviation; - gchar *singular; - gchar *plural; -} GimpUnitDef; - struct _GimpUnit { GObject parent_instance; @@ -72,40 +59,63 @@ struct _GimpUnit gint digits; gchar *symbol; gchar *abbreviation; - gchar *singular; - gchar *plural; }; +typedef struct +{ + gdouble factor; + gint digits; + gchar *identifier; + gchar *symbol; + gchar *abbreviation; +} GimpUnitDef; + /* these are the built-in units */ static const GimpUnitDef _gimp_unit_defs[GIMP_UNIT_END] = { /* pseudo unit */ - { 0.0, 0, "pixels", "px", "px", - NC_("unit-singular", "pixel"), NC_("unit-plural", "pixels") }, + { + 0.0, 0, + NC_("unit-plural", "pixels"), + "px", "px", + }, /* standard units */ - { 1.0, 2, "inches", "''", "in", - NC_("unit-singular", "inch"), NC_("unit-plural", "inches") }, + { + 1.0, 2, + NC_("unit-plural", "inches"), + "''", "in", + }, - { 25.4, 1, "millimeters", "mm", "mm", - NC_("unit-singular", "millimeter"), NC_("unit-plural", "millimeters") }, + { + 25.4, 1, + NC_("unit-plural", "millimeters"), + "mm", "mm", + }, /* professional units */ - { 72.0, 0, "points", "pt", "pt", - NC_("unit-singular", "point"), NC_("unit-plural", "points") }, + { + 72.0, 0, + NC_("unit-plural", "points"), + "pt", "pt", + }, - { 6.0, 1, "picas", "pc", "pc", - NC_("unit-singular", "pica"), NC_("unit-plural", "picas") } + { + 6.0, 1, + NC_("unit-plural", "picas"), + "pc", "pc", + } }; /* not a unit at all but kept here to have the strings in one place */ static const GimpUnitDef _gimp_unit_percent_def = { - 0.0, 0, "percent", "%", "%", - NC_("singular", "percent"), NC_("plural", "percent") + 0.0, 0, + NC_("unit-plural", "percent"), + "%", "%", }; @@ -174,16 +184,6 @@ gimp_unit_class_init (GimpUnitClass *klass) NULL, GIMP_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); - g_object_class_install_property (object_class, PROP_SINGULAR, - g_param_spec_string ("singular", NULL, NULL, - NULL, - GIMP_PARAM_READWRITE | - G_PARAM_CONSTRUCT_ONLY)); - g_object_class_install_property (object_class, PROP_PLURAL, - g_param_spec_string ("plural", NULL, NULL, - NULL, - GIMP_PARAM_READWRITE | - G_PARAM_CONSTRUCT_ONLY)); /*klass->id_table = gimp_id_table_new ();*/ } @@ -194,8 +194,6 @@ gimp_unit_init (GimpUnit *unit) unit->name = NULL; unit->symbol = NULL; unit->abbreviation = NULL; - unit->singular = NULL; - unit->plural = NULL; } static void @@ -212,8 +210,6 @@ gimp_unit_finalize (GObject *object) g_free (unit->name); g_free (unit->symbol); g_free (unit->abbreviation); - g_free (unit->singular); - g_free (unit->plural); G_OBJECT_CLASS (parent_class)->finalize (object); } @@ -246,12 +242,6 @@ gimp_unit_set_property (GObject *object, case PROP_ABBREVIATION: unit->abbreviation = g_value_dup_string (value); break; - case PROP_SINGULAR: - unit->singular = g_value_dup_string (value); - break; - case PROP_PLURAL: - unit->plural = g_value_dup_string (value); - break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -287,12 +277,6 @@ gimp_unit_get_property (GObject *object, case PROP_ABBREVIATION: g_value_set_string (value, unit->abbreviation); break; - case PROP_SINGULAR: - g_value_set_string (value, unit->singular); - break; - case PROP_PLURAL: - g_value_set_string (value, unit->plural); - break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -323,15 +307,19 @@ gimp_unit_get_id (GimpUnit *unit) } /** - * gimp_unit_get_identifier: - * @unit: The unit you want to know the identifier of. + * gimp_unit_get_name: + * @unit: The unit you want to know the name of. * - * This is an untranslated string which must not be changed or freed. + * This function returns the usual name of the unit (e.g. "inches"). + * It can be used as the long label for the unit in the interface. + * For short labels, use [method@Unit.get_abbreviation]. * - * Returns: The unit's identifier. + * NOTE: This string must not be changed or freed. + * + * Returns: The unit's name. **/ const gchar * -gimp_unit_get_identifier (GimpUnit *unit) +gimp_unit_get_name (GimpUnit *unit) { g_return_val_if_fail (GIMP_IS_UNIT (unit), NULL); @@ -435,8 +423,10 @@ gimp_unit_get_symbol (GimpUnit *unit) * gimp_unit_get_abbreviation: * @unit: The unit you want to know the abbreviation of. * - * For built-in units, this function returns the abbreviation - * of the unit (e.g. "in" for inches). + * This function returns the abbreviation of the unit (e.g. "in" for + * inches). + * It can be used as a short label for the unit in the interface. + * For long labels, use [method@Unit.get_name]. * * NOTE: This string must not be changed or freed. * @@ -450,44 +440,6 @@ gimp_unit_get_abbreviation (GimpUnit *unit) return unit->abbreviation; } -/** - * gimp_unit_get_singular: - * @unit: The unit you want to know the singular form of. - * - * For built-in units, this function returns the singular form of the - * unit's name. - * - * NOTE: This string must not be changed or freed. - * - * Returns: The unit's singular form. - **/ -const gchar * -gimp_unit_get_singular (GimpUnit *unit) -{ - g_return_val_if_fail (GIMP_IS_UNIT (unit), NULL); - - return unit->singular; -} - -/** - * gimp_unit_get_plural: - * @unit: The unit you want to know the plural form of. - * - * For built-in units, this function returns the plural form of the - * unit's name. - * - * NOTE: This string must not be changed or freed. - * - * Returns: The unit's plural form. - **/ -const gchar * -gimp_unit_get_plural (GimpUnit *unit) -{ - g_return_val_if_fail (GIMP_IS_UNIT (unit), NULL); - - return unit->plural; -} - /** * gimp_unit_get_deletion_flag: * @unit: The unit you want to know the @deletion_flag of. @@ -579,8 +531,6 @@ gimp_unit_get_by_id (gint unit_id) "digits", def.digits, "symbol", def.symbol, "abbreviation", def.abbreviation, - "singular", def.singular, - "plural", def.plural, NULL); unit->delete_on_exit = FALSE; } @@ -593,8 +543,6 @@ gimp_unit_get_by_id (gint unit_id) "digits", _gimp_unit_percent_def.digits, "symbol", _gimp_unit_percent_def.symbol, "abbreviation", _gimp_unit_percent_def.abbreviation, - "singular", _gimp_unit_percent_def.singular, - "plural", _gimp_unit_percent_def.plural, NULL); unit->delete_on_exit = FALSE; } @@ -609,16 +557,12 @@ gimp_unit_get_by_id (gint unit_id) gint digits; gchar *symbol = NULL; gchar *abbreviation = NULL; - gchar *singular = NULL; - gchar *plural = NULL; identifier = _gimp_unit_vtable.get_data (unit_id, &factor, &digits, &symbol, - &abbreviation, - &singular, - &plural); + &abbreviation); if (identifier != NULL) unit = g_object_new (GIMP_TYPE_UNIT, @@ -628,15 +572,11 @@ gimp_unit_get_by_id (gint unit_id) "digits", digits, "symbol", symbol, "abbreviation", abbreviation, - "singular", singular, - "plural", plural, NULL); g_free (identifier); g_free (symbol); g_free (abbreviation); - g_free (singular); - g_free (plural); } else if (_gimp_unit_vtable.get_user_unit != NULL) { @@ -826,39 +766,14 @@ gimp_unit_is_metric (GimpUnit *unit) * * The @format string supports the following percent expansions: * - * - * - * - * - * % f - * Factor (how many units make up an inch) - * - * - * % y - * Symbol (e.g. "''" for GIMP_UNIT_INCH) - * - * - * % a - * Abbreviation - * - * - * % s - * Singular - * - * - * % p - * Plural - * - * - * %% - * Literal percent - * - * - * - * + * * `%n`: Name (long label) + * * `%a`: Abbreviation (short label) + * * `%%`: Literal percent + * * `%f`: Factor (how many units make up an inch) + * * `%y`: Symbol (e.g. `''` for `GIMP_UNIT_INCH`) * - * Returns: A newly allocated string with above percent expressions - * replaced with the resp. strings for @unit. + * Returns: (transfer full): A newly allocated string with above percent + * expressions replaced with the resp. strings for @unit. * * Since: 2.8 **/ @@ -904,14 +819,9 @@ gimp_unit_format_string (const gchar *format, gimp_unit_get_abbreviation (unit)); break; - case 's': /* singular */ + case 'n': /* full name */ i += print (buffer, sizeof (buffer), i, "%s", - gimp_unit_get_singular (unit)); - break; - - case 'p': /* plural */ - i += print (buffer, sizeof (buffer), i, "%s", - gimp_unit_get_plural (unit)); + gimp_unit_get_name (unit)); break; default: diff --git a/libgimpbase/gimpunit.h b/libgimpbase/gimpunit.h index 01c8772e4f..431bab4e0b 100644 --- a/libgimpbase/gimpunit.h +++ b/libgimpbase/gimpunit.h @@ -43,15 +43,13 @@ G_DECLARE_FINAL_TYPE (GimpUnit, gimp_unit, GIMP, UNIT, GObject) gint32 gimp_unit_get_id (GimpUnit *unit); -const gchar * gimp_unit_get_identifier (GimpUnit *unit); +const gchar * gimp_unit_get_name (GimpUnit *unit); gdouble gimp_unit_get_factor (GimpUnit *unit); gint gimp_unit_get_digits (GimpUnit *unit); gint gimp_unit_get_scaled_digits (GimpUnit *unit, gdouble resolution); const gchar * gimp_unit_get_symbol (GimpUnit *unit); const gchar * gimp_unit_get_abbreviation (GimpUnit *unit); -const gchar * gimp_unit_get_singular (GimpUnit *unit); -const gchar * gimp_unit_get_plural (GimpUnit *unit); gboolean gimp_unit_get_deletion_flag (GimpUnit *unit); void gimp_unit_set_deletion_flag (GimpUnit *unit, diff --git a/libgimpconfig/gimpconfig-deserialize.c b/libgimpconfig/gimpconfig-deserialize.c index 26a20e70f6..07f27e1a63 100644 --- a/libgimpconfig/gimpconfig-deserialize.c +++ b/libgimpconfig/gimpconfig-deserialize.c @@ -887,7 +887,7 @@ gimp_config_get_unit_from_identifier (const gchar *identifier) unit = gimp_unit_get_by_id (GIMP_UNIT_PIXEL); for (gint i = GIMP_UNIT_PIXEL; unit; i++) { - if (g_strcmp0 (identifier, gimp_unit_get_identifier (unit)) == 0) + if (g_strcmp0 (identifier, gimp_unit_get_name (unit)) == 0) break; unit = gimp_unit_get_by_id (i); diff --git a/libgimpconfig/gimpconfig-serialize.c b/libgimpconfig/gimpconfig-serialize.c index f9710c9f4b..258e12d995 100644 --- a/libgimpconfig/gimpconfig-serialize.c +++ b/libgimpconfig/gimpconfig-serialize.c @@ -377,7 +377,7 @@ gimp_config_serialize_property (GimpConfig *config, gimp_config_writer_open (writer, param_spec->name); if (unit) - gimp_config_writer_printf (writer, "%s", gimp_unit_get_identifier (unit)); + gimp_config_writer_printf (writer, "%s", gimp_unit_get_name (unit)); else gimp_config_writer_printf (writer, "%s", "NULL"); diff --git a/libgimpwidgets/gimpquerybox.c b/libgimpwidgets/gimpquerybox.c index b2f9c6293e..f184dc72c3 100644 --- a/libgimpwidgets/gimpquerybox.c +++ b/libgimpwidgets/gimpquerybox.c @@ -484,7 +484,7 @@ gimp_query_size_box (const gchar *title, if (! query_box) return NULL; - sizeentry = gimp_size_entry_new (1, unit, "%p", TRUE, FALSE, FALSE, 12, + sizeentry = gimp_size_entry_new (1, unit, "%n", 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 ()); diff --git a/libgimpwidgets/gimpsizeentry.c b/libgimpwidgets/gimpsizeentry.c index 1c3929b197..8d9bfb1fba 100644 --- a/libgimpwidgets/gimpsizeentry.c +++ b/libgimpwidgets/gimpsizeentry.c @@ -407,12 +407,7 @@ gimp_size_entry_new (gint number_of_fields, gchar *short_format = g_strdup (unit_format); gchar *p; - p = strstr (short_format, "%s"); - if (p) - strcpy (p, "%a"); - - p = strstr (short_format, "%p"); - if (p) + while ((p = strstr (short_format, "%n"))) strcpy (p, "%a"); g_object_set (store, diff --git a/libgimpwidgets/gimpunitstore.c b/libgimpwidgets/gimpunitstore.c index 55e07e742f..01c27957e4 100644 --- a/libgimpwidgets/gimpunitstore.c +++ b/libgimpwidgets/gimpunitstore.c @@ -128,8 +128,6 @@ static GType column_types[GIMP_UNIT_STORE_UNIT_COLUMNS] = G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, - G_TYPE_STRING, - G_TYPE_STRING }; @@ -191,7 +189,7 @@ gimp_unit_store_init (GimpUnitStore *store) private->has_pixels = TRUE; private->has_percent = FALSE; private->short_format = g_strdup ("%a"); - private->long_format = g_strdup ("%p"); + private->long_format = g_strdup ("%n"); private->synced_ID = 0; } @@ -442,8 +440,8 @@ gimp_unit_store_tree_model_get_value (GtkTreeModel *tree_model, case GIMP_UNIT_STORE_UNIT_DIGITS: g_value_set_int (value, gimp_unit_get_digits (unit)); break; - case GIMP_UNIT_STORE_UNIT_IDENTIFIER: - g_value_set_static_string (value, gimp_unit_get_identifier (unit)); + case GIMP_UNIT_STORE_UNIT_NAME: + g_value_set_static_string (value, gimp_unit_get_name (unit)); break; case GIMP_UNIT_STORE_UNIT_SYMBOL: g_value_set_static_string (value, gimp_unit_get_symbol (unit)); @@ -451,12 +449,6 @@ gimp_unit_store_tree_model_get_value (GtkTreeModel *tree_model, case GIMP_UNIT_STORE_UNIT_ABBREVIATION: g_value_set_static_string (value, gimp_unit_get_abbreviation (unit)); break; - case GIMP_UNIT_STORE_UNIT_SINGULAR: - g_value_set_static_string (value, gimp_unit_get_singular (unit)); - break; - case GIMP_UNIT_STORE_UNIT_PLURAL: - g_value_set_static_string (value, gimp_unit_get_plural (unit)); - break; case GIMP_UNIT_STORE_UNIT_SHORT_FORMAT: g_value_take_string (value, gimp_unit_format_string (private->short_format, diff --git a/libgimpwidgets/gimpunitstore.h b/libgimpwidgets/gimpunitstore.h index b648f6040d..ccc51f734f 100644 --- a/libgimpwidgets/gimpunitstore.h +++ b/libgimpwidgets/gimpunitstore.h @@ -34,11 +34,9 @@ enum GIMP_UNIT_STORE_UNIT, GIMP_UNIT_STORE_UNIT_FACTOR, GIMP_UNIT_STORE_UNIT_DIGITS, - GIMP_UNIT_STORE_UNIT_IDENTIFIER, + GIMP_UNIT_STORE_UNIT_NAME, GIMP_UNIT_STORE_UNIT_SYMBOL, GIMP_UNIT_STORE_UNIT_ABBREVIATION, - GIMP_UNIT_STORE_UNIT_SINGULAR, - GIMP_UNIT_STORE_UNIT_PLURAL, GIMP_UNIT_STORE_UNIT_SHORT_FORMAT, GIMP_UNIT_STORE_UNIT_LONG_FORMAT, GIMP_UNIT_STORE_UNIT_COLUMNS, diff --git a/pdb/groups/unit.pdb b/pdb/groups/unit.pdb index 5380ef55da..9e2e2f940a 100644 --- a/pdb/groups/unit.pdb +++ b/pdb/groups/unit.pdb @@ -35,8 +35,8 @@ HELP ); @outargs = ( - { name => 'identifier', type => 'string', - desc => "The unit's textual identifier" }, + { name => 'name', type => 'string', + desc => "The unit's name" }, { name => 'factor', type => 'float', desc => "The unit's factor" }, { name => 'digits', type => 'int32', @@ -45,10 +45,6 @@ HELP desc => "The unit's symbol" }, { name => 'abbreviation', type => 'string', desc => "The unit's abbreviation" }, - { name => 'singular', type => 'string', - desc => "The unit's singular form" }, - { name => 'plural', type => 'string', - desc => "The unit's plural form" } ); %invoke = ( @@ -60,13 +56,11 @@ HELP if (unit != NULL) { - identifier = g_strdup (gimp_unit_get_identifier (unit)); + name = g_strdup (gimp_unit_get_name (unit)); factor = gimp_unit_get_factor (unit); digits = gimp_unit_get_digits (unit); symbol = g_strdup (gimp_unit_get_symbol (unit)); abbreviation = g_strdup (gimp_unit_get_abbreviation (unit)); - singular = g_strdup (gimp_unit_get_singular (unit)); - plural = g_strdup (gimp_unit_get_plural (unit)); } } } @@ -86,8 +80,8 @@ HELP &mitch_pdb_misc('1999'); @inargs = ( - { name => 'identifier', type => 'string', non_empty => 1, - desc => "The new unit's identifier" }, + { name => 'name', type => 'string', non_empty => 1, + desc => "The new unit's name" }, { name => 'factor', type => 'float', desc => "The new unit's factor" }, { name => 'digits', type => 'int32', @@ -96,10 +90,6 @@ HELP desc => "The new unit's symbol" }, { name => 'abbreviation', type => 'string', non_empty => 1, desc => "The new unit's abbreviation" }, - { name => 'singular', type => 'string', non_empty => 1, - desc => "The new unit's singular form" }, - { name => 'plural', type => 'string', non_empty => 1, - desc => "The new unit's plural form" } ); @outargs = ( @@ -110,8 +100,8 @@ HELP %invoke = ( code => <<'CODE' { - unit = _gimp_unit_new (gimp, identifier, factor, digits, - symbol, abbreviation, singular, plural); + unit = _gimp_unit_new (gimp, name, factor, digits, + symbol, abbreviation); } CODE ); diff --git a/plug-ins/common/unit-editor.c b/plug-ins/common/unit-editor.c index 572f68caa6..55a087d523 100644 --- a/plug-ins/common/unit-editor.c +++ b/plug-ins/common/unit-editor.c @@ -36,13 +36,11 @@ enum { SAVE, - IDENTIFIER, + NAME, FACTOR, DIGITS, SYMBOL, ABBREVIATION, - SINGULAR, - PLURAL, UNIT, USER_UNIT, NUM_COLUMNS @@ -113,8 +111,8 @@ static const UnitColumn columns[] = { { N_("Saved"), N_("A unit definition will only be saved before " "GIMP exits if this column is checked.") }, - { N_("ID"), N_("This string will be used to identify a " - "unit in GIMP's configuration files.") }, + { N_("Name"), N_("The name to be used to identify this unit in " + "the graphical interface") }, { N_("Factor"), N_("How many units make up an inch.") }, { N_("Digits"), N_("This field is a hint for numerical input " "fields. It specifies how many decimal digits " @@ -126,8 +124,6 @@ static const UnitColumn columns[] = "if doesn't have a symbol.") }, { N_("Abbreviation"), N_("The unit's abbreviation (e.g. \"cm\" for " "centimeters).") }, - { N_("Singular"), N_("The unit's singular form.") }, - { N_("Plural"), N_("The unit's plural form.") } }; static GActionEntry ACTIONS[] = @@ -211,13 +207,11 @@ on_app_activate (GApplication *gapp, gpointer user_data) list_store = gtk_list_store_new (NUM_COLUMNS, G_TYPE_BOOLEAN, /* SAVE */ - G_TYPE_STRING, /* IDENTIFIER */ + G_TYPE_STRING, /* NAME */ G_TYPE_DOUBLE, /* FACTOR */ G_TYPE_INT, /* DIGITS */ G_TYPE_STRING, /* SYMBOL */ G_TYPE_STRING, /* ABBREVIATION */ - G_TYPE_STRING, /* SINGULAR */ - G_TYPE_STRING, /* PLURAL */ G_TYPE_OBJECT, /* UNIT */ G_TYPE_BOOLEAN); /* USER_UNIT */ @@ -418,13 +412,11 @@ new_unit_dialog (GtkWindow *main_window, GtkWidget *entry; GtkWidget *spinbutton; - GtkWidget *identifier_entry; + GtkWidget *name_entry; GtkAdjustment *factor_adj; GtkAdjustment *digits_adj; GtkWidget *symbol_entry; GtkWidget *abbreviation_entry; - GtkWidget *singular_entry; - GtkWidget *plural_entry; GimpUnit *unit = NULL; @@ -450,17 +442,17 @@ new_unit_dialog (GtkWindow *main_window, grid, FALSE, FALSE, 0); gtk_widget_show (grid); - entry = identifier_entry = gtk_entry_new (); + entry = name_entry = gtk_entry_new (); if (template != gimp_unit_pixel ()) { gtk_entry_set_text (GTK_ENTRY (entry), - gimp_unit_get_identifier (template)); + gimp_unit_get_name (template)); } gimp_grid_attach_aligned (GTK_GRID (grid), 0, 0, _("_ID:"), 0.0, 0.5, entry, 1); - gimp_help_set_help_data (entry, gettext (columns[IDENTIFIER].help), NULL); + gimp_help_set_help_data (entry, gettext (columns[NAME].help), NULL); factor_adj = gtk_adjustment_new ((template != gimp_unit_pixel ()) ? gimp_unit_get_factor (template) : 1.0, @@ -509,64 +501,32 @@ new_unit_dialog (GtkWindow *main_window, gimp_help_set_help_data (entry, gettext (columns[ABBREVIATION].help), NULL); - entry = singular_entry = gtk_entry_new (); - if (template != gimp_unit_pixel ()) - { - gtk_entry_set_text (GTK_ENTRY (entry), - gimp_unit_get_singular (template)); - } - gimp_grid_attach_aligned (GTK_GRID (grid), 0, 5, - _("Si_ngular:"), 0.0, 0.5, - entry, 1); - - gimp_help_set_help_data (entry, gettext (columns[SINGULAR].help), NULL); - - entry = plural_entry = gtk_entry_new (); - if (template != gimp_unit_pixel ()) - { - gtk_entry_set_text (GTK_ENTRY (entry), - gimp_unit_get_plural (template)); - } - gimp_grid_attach_aligned (GTK_GRID (grid), 0, 6, - _("_Plural:"), 0.0, 0.5, - entry, 1); - - gimp_help_set_help_data (entry, gettext (columns[PLURAL].help), NULL); - gtk_widget_show (dialog); while (TRUE) { - gchar *identifier; + gchar *name; gdouble factor; gint digits; gchar *symbol; gchar *abbreviation; - gchar *singular; - gchar *plural; if (gimp_dialog_run (GIMP_DIALOG (dialog)) != GTK_RESPONSE_OK) break; - identifier = g_strdup (gtk_entry_get_text (GTK_ENTRY (identifier_entry))); + name = g_strdup (gtk_entry_get_text (GTK_ENTRY (name_entry))); factor = gtk_adjustment_get_value (factor_adj); digits = gtk_adjustment_get_value (digits_adj); symbol = g_strdup (gtk_entry_get_text (GTK_ENTRY (symbol_entry))); abbreviation = g_strdup (gtk_entry_get_text (GTK_ENTRY (abbreviation_entry))); - singular = g_strdup (gtk_entry_get_text (GTK_ENTRY (singular_entry))); - plural = g_strdup (gtk_entry_get_text (GTK_ENTRY (plural_entry))); - identifier = g_strstrip (identifier); + name = g_strstrip (name); symbol = g_strstrip (symbol); abbreviation = g_strstrip (abbreviation); - singular = g_strstrip (singular); - plural = g_strstrip (plural); - if (! strlen (identifier) || - ! strlen (symbol) || - ! strlen (abbreviation) || - ! strlen (singular) || - ! strlen (plural)) + if (! strlen (name) || + ! strlen (symbol) || + ! strlen (abbreviation)) { GtkWidget *msg = gtk_message_dialog_new (GTK_WINDOW (dialog), 0, GTK_MESSAGE_ERROR, @@ -581,15 +541,11 @@ new_unit_dialog (GtkWindow *main_window, continue; } - unit = gimp_unit_new (identifier, - factor, digits, - symbol, abbreviation, singular, plural); + unit = gimp_unit_new (name, factor, digits, symbol, abbreviation); - g_free (identifier); + g_free (name); g_free (symbol); g_free (abbreviation); - g_free (singular); - g_free (plural); break; } @@ -738,13 +694,11 @@ unit_list_init (GtkTreeView *tv) gtk_list_store_append (list_store, &iter); gtk_list_store_set (list_store, &iter, SAVE, ! gimp_unit_get_deletion_flag (unit), - IDENTIFIER, gimp_unit_get_identifier (unit), + NAME, gimp_unit_get_name (unit), FACTOR, gimp_unit_get_factor (unit), DIGITS, gimp_unit_get_digits (unit), SYMBOL, gimp_unit_get_symbol (unit), ABBREVIATION, gimp_unit_get_abbreviation (unit), - SINGULAR, gimp_unit_get_singular (unit), - PLURAL, gimp_unit_get_plural (unit), UNIT, unit, USER_UNIT, ! gimp_unit_is_built_in (unit), -1); diff --git a/plug-ins/print/print-page-layout.c b/plug-ins/print/print-page-layout.c index 95c3d7c945..0d5122d6f5 100644 --- a/plug-ins/print/print-page-layout.c +++ b/plug-ins/print/print-page-layout.c @@ -262,7 +262,7 @@ print_size_frame (PrintData *data, gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); - entry = gimp_size_entry_new (1, data->unit, "%p", + entry = gimp_size_entry_new (1, data->unit, "%n", FALSE, FALSE, FALSE, SB_WIDTH, GIMP_SIZE_ENTRY_UPDATE_SIZE); gtk_box_pack_start (GTK_BOX (hbox), entry, FALSE, FALSE, 0); @@ -874,7 +874,7 @@ print_size_info_set_page_setup (PrintSizeInfo *info) format = g_strdup_printf ("%%.%df x %%.%df %s", gimp_unit_get_digits (data->unit), gimp_unit_get_digits (data->unit), - gimp_unit_get_plural (data->unit)); + gimp_unit_get_name (data->unit)); text = g_strdup_printf (format, page_width, page_height); g_free (format);