]> www.fi.muni.cz Git - evince.git/commitdiff
Check for NL_MEASUREMENT. Fixes bug #376469. Thanks to Damien Carbery
authorNickolay V. Shmyrev <nshmyrev@yandex.ru>
Thu, 21 Dec 2006 00:44:53 +0000 (00:44 +0000)
committerNickolay V. Shmyrev <nshmyrev@src.gnome.org>
Thu, 21 Dec 2006 00:44:53 +0000 (00:44 +0000)
2006-12-21  Nickolay V. Shmyrev  <nshmyrev@yandex.ru>

* configure.ac:
* properties/ev-properties-view.c: (ev_get_default_user_units),
(ev_regular_paper_size):

Check for NL_MEASUREMENT. Fixes bug #376469. Thanks
to Damien Carbery <damien.carbery@sun.com> and
Yevgen Muntyan <muntyan@tamu.edu>.

ChangeLog
configure.ac
properties/ev-properties-view.c

index ab0913c3c032d5aa0c30ab3e4590dd4c177d3c75..72a1cb71bd7e55e8f51bd4f7730e3dda36498d6d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2006-12-21  Nickolay V. Shmyrev  <nshmyrev@yandex.ru>
+
+       * configure.ac:
+       * properties/ev-properties-view.c: (ev_get_default_user_units),
+       (ev_regular_paper_size):
+       
+       Check for NL_MEASUREMENT. Fixes bug #376469. Thanks
+       to Damien Carbery <damien.carbery@sun.com> and
+       Yevgen Muntyan <muntyan@tamu.edu>.
+
 2006-12-20  Wouter Bolsterlee  <wbolster@cvs.gnome.org>
 
        * shell/ev-window.c: (setup_document_from_metadata):
index 21d0f8ba3c5d17634293458134cce00336e5b7d8..389de1852e8927697f6d741c47227090e3a78742 100644 (file)
@@ -189,6 +189,10 @@ dnl ================== portability checks ======================================
 dnl for backtrace()
 AC_CHECK_HEADERS([execinfo.h])
 
+AC_CHECK_DECL([_NL_MEASUREMENT_MEASUREMENT],[
+  AC_DEFINE([HAVE__NL_MEASUREMENT_MEASUREMENT],[1],[Define if _NL_MEASUREMENT_MEASUREMENT is available])
+  ],[],[#include <langinfo.h>])
+
 dnl ================== pdf checks ===================================================
 AC_ARG_ENABLE(pdf,
               [AC_HELP_STRING([--enable-pdf], [Compile with pdf support])],enable_pdf="$enableval",enable_pdf=yes)
index 98aecb564dc689b1fe424300d64b6bf2dba34500..1b8f1fb79dbfe4a21b3419e2567a981950c851c9 100644 (file)
 #include <time.h>
 #include <sys/time.h>
 #include <string.h>
+
+#ifdef HAVE__NL_MEASUREMENT_MEASUREMENT
 #include <langinfo.h>
+#endif
 
 typedef enum
 {
@@ -240,17 +243,51 @@ struct regular_paper_size {
        {  432.0f,  279.0f, 3.0f, 3.0f, "Ledger" }
 };
 
+typedef enum {
+  EV_UNIT_INCH,
+  EV_UNIT_MM
+} EvUnit; 
+
+static EvUnit
+ev_get_default_user_units (void)
+{
+  /* Translate to the default units to use for presenting
+   * lengths to the user. Translate to default:inch if you
+   * want inches, otherwise translate to default:mm.
+   * Do *not* translate it to "predefinito:mm", if it
+   * it isn't default:mm or default:inch it will not work
+   */
+  gchar *e = _("default:mm");
+
+#ifdef HAVE__NL_MEASUREMENT_MEASUREMENT
+  gchar *imperial = NULL;
+
+  imperial = nl_langinfo (_NL_MEASUREMENT_MEASUREMENT);
+  if (imperial && imperial[0] == 2 )
+    return EV_UNIT_INCH;  /* imperial */
+  if (imperial && imperial[0] == 1 )
+    return EV_UNIT_MM;  /* metric */
+#endif
+
+  if (strcmp (e, "default:inch")==0)
+    return EV_UNIT_INCH;
+  else if (strcmp (e, "default:mm"))
+    g_warning ("Whoever translated default:mm did so wrongly.\n");
+  return EV_UNIT_MM;
+}
+
 static char *
 ev_regular_paper_size (const EvDocumentInfo *info)
 {
        const struct regular_paper_size *size;   
+       EvUnit unit;
        char *exact_size = NULL;
-       char *imperial = NULL;
        char *str = NULL;
        int i;
-       
-        imperial = nl_langinfo(_NL_MEASUREMENT_MEASUREMENT);
-        if ( imperial && imperial[0] == 2 )
+
+       unit = ev_get_default_user_units ();    
+
+       if (unit == EV_UNIT_INCH)
                /* Imperial measurement (inches) */
                exact_size = g_strdup_printf( _("%.2f x %.2f in"),
                                              info->paper_width  / 25.4f,