diff options
author | Don Scorgie <dscorgie@src.gnome.org> | 2006-04-19 18:59:44 +0000 |
---|---|---|
committer | Don Scorgie <dscorgie@src.gnome.org> | 2006-04-19 18:59:44 +0000 |
commit | a6228122d10cd89040be27574790a7c388ee548f (patch) | |
tree | 643e9fd6865db69f36dad5212f31717e782b3e55 | |
parent | e5350a27b48b4422a7fd833a2d69049851347192 (diff) | |
download | yelp-a6228122d10cd89040be27574790a7c388ee548f.tar.gz |
* src/yelp-html.h: * src/yelp-html.cpp: * src/yelp-gecko-utils.h: *
* src/Makefile.am: * src/yelp-html.h: * src/yelp-html.cpp:
* src/yelp-gecko-utils.cpp: * src/yelp-gecko-utils.h: * src/yelp-main.c:
Change font size for all locales (from Christian Persch) Fixes #165678
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rw-r--r-- | src/yelp-gecko-utils.cpp | 152 | ||||
-rw-r--r-- | src/yelp-gecko-utils.h | 2 | ||||
-rw-r--r-- | src/yelp-html.cpp | 17 | ||||
-rw-r--r-- | src/yelp-html.h | 3 | ||||
-rw-r--r-- | src/yelp-main.c | 7 |
7 files changed, 130 insertions, 61 deletions
@@ -1,5 +1,14 @@ 2006-04-19 Don Scorgie <dscorgie@cvs.gnome.org> + * src/Makefile.am: + * src/yelp-html.h: + * src/yelp-html.cpp: + * src/yelp-gecko-utils.cpp: + * src/yelp-gecko-utils.h: + * src/yelp-main.c: + Change font size for all locales (from Christian Persch) + Fixes #165678 + * configure.in: Clean up configure.in a bit Fixes #337437 diff --git a/src/Makefile.am b/src/Makefile.am index d848a7e7..0c300a18 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -50,6 +50,7 @@ YELP_DEFINES = \ -DIMAGEDIR=\""$(datadir)/images/yelp"\" \ -DSERVERDIR=\"$(libexecdir)\" \ -DBINDIR=\""$(bindir)"\" \ + -DSHAREDIR=\""$(pkgdatadir)"\" \ -DMOZILLA_HOME=\""$(MOZILLA_HOME)\"" mozilla_include_subdirs = \ diff --git a/src/yelp-gecko-utils.cpp b/src/yelp-gecko-utils.cpp index 28d69d38..45a6ec3b 100644 --- a/src/yelp-gecko-utils.cpp +++ b/src/yelp-gecko-utils.cpp @@ -31,6 +31,41 @@ #include <stdlib.h> #include "yelp-gecko-utils.h" +#include "yelp-gecko-services.h" + +static nsIPrefBranch* gPrefBranch; + +static const char *font_languages[] = { + "x-western" +#ifdef HAVE_GECKO_1_8 + , + "ar", + "el", + "he", + "ja", + "ko", + "th", + "tr", + "x-armn", + "x-baltic", + "x-beng", + "x-cans", + "x-central-euro", + "x-cyrillic", + "x-devanagari", + "x-ethi", + "x-geor", + "x-gujr", + "x-guru", + "x-khmr", + "x-mlym", + "x-tamil", + "x-unicode", + "zh-CN", + "zh-HK", + "zh-TW" +#endif /* HAVE_GECKO_1_8 */ +}; static gboolean yelp_util_split_font_string (const gchar *font_name, gchar **name, gint *size) @@ -39,6 +74,8 @@ yelp_util_split_font_string (const gchar *font_name, gchar **name, gint *size) PangoFontMask mask = (PangoFontMask) (PANGO_FONT_MASK_FAMILY | PANGO_FONT_MASK_SIZE); gboolean retval = FALSE; + if (!font_name) return FALSE; + desc = pango_font_description_from_string (font_name); if (!desc) return FALSE; @@ -56,49 +93,25 @@ yelp_util_split_font_string (const gchar *font_name, gchar **name, gint *size) static gboolean gecko_prefs_set_bool (const gchar *key, gboolean value) { - nsresult rv; - nsCOMPtr<nsIPrefService> prefService (do_GetService (NS_PREFSERVICE_CONTRACTID, &rv)); - NS_ENSURE_SUCCESS (rv, FALSE); + NS_ENSURE_TRUE (gPrefBranch, FALSE); - nsCOMPtr<nsIPrefBranch> pref; - rv = prefService->GetBranch ("", getter_AddRefs (pref)); - NS_ENSURE_SUCCESS (rv, FALSE); - - rv = pref->SetBoolPref (key, value); - - return NS_SUCCEEDED (rv) != PR_FALSE; + return NS_SUCCEEDED(gPrefBranch->SetBoolPref (key, value)); } static gboolean gecko_prefs_set_string (const gchar *key, const gchar *value) { - nsresult rv; - nsCOMPtr<nsIPrefService> prefService (do_GetService (NS_PREFSERVICE_CONTRACTID, &rv)); - NS_ENSURE_SUCCESS (rv, FALSE); - - nsCOMPtr<nsIPrefBranch> pref; - rv = prefService->GetBranch ("", getter_AddRefs (pref)); - NS_ENSURE_SUCCESS (rv, FALSE); + NS_ENSURE_TRUE (gPrefBranch, FALSE); - rv = pref->SetCharPref (key, value); - - return NS_SUCCEEDED (rv) != PR_FALSE; + return NS_SUCCEEDED(gPrefBranch->SetCharPref (key, value)); } static gboolean gecko_prefs_set_int (const gchar *key, gint value) { - nsresult rv; - nsCOMPtr<nsIPrefService> prefService (do_GetService (NS_PREFSERVICE_CONTRACTID, &rv)); - NS_ENSURE_SUCCESS (rv, FALSE); + NS_ENSURE_TRUE (gPrefBranch, FALSE); - nsCOMPtr<nsIPrefBranch> pref; - rv = prefService->GetBranch ("", getter_AddRefs (pref)); - NS_ENSURE_SUCCESS (rv, FALSE); - - rv = pref->SetIntPref (key, value); - - return NS_SUCCEEDED (rv) != PR_FALSE; + return NS_SUCCEEDED(gPrefBranch->SetIntPref (key, value)); } extern "C" void @@ -132,12 +145,11 @@ yelp_gecko_set_color (YelpColorType type, const gchar *color) extern "C" void yelp_gecko_set_font (YelpFontType font_type, const gchar *fontname) { - gchar *name; - gint size = 0; - - g_return_if_fail (fontname != NULL); + char *name = NULL; + char pref[128]; + int size = 0; + guint i; - name = NULL; if (!yelp_util_split_font_string (fontname, &name, &size)) { g_free (name); return; @@ -147,22 +159,36 @@ yelp_gecko_set_font (YelpFontType font_type, const gchar *fontname) switch (font_type) { case YELP_FONT_VARIABLE: - gecko_prefs_set_string ("font.name.variable.x-western", - name); - gecko_prefs_set_int ("font.size.variable.x-western", - size); - gecko_prefs_set_int ("font.minimum-size.x-western", - 8); + for (i = 0; i < G_N_ELEMENTS (font_languages); ++i) { + g_snprintf (pref, sizeof (pref), + "font.name.variable.%s", + font_languages[i]); + gecko_prefs_set_string (pref, name); + + g_snprintf (pref, sizeof (pref), + "font.size.variable.%s", + font_languages[i]); + gecko_prefs_set_int (pref, size); + + g_snprintf (pref, sizeof (pref), + "font.minimum-size.%s", + font_languages[i]); + gecko_prefs_set_int (pref, 8); + } break; case YELP_FONT_FIXED: - gecko_prefs_set_string ("font.name.monospace.x-western", - name); - gecko_prefs_set_int ("font.size.monospace.x-western", - size); - gecko_prefs_set_string ("font.name.fixed.x-western", - name); - gecko_prefs_set_int ("font.size.fixed.x-western", - size); + for (i = 0; i < G_N_ELEMENTS (font_languages); ++i) { + g_snprintf (pref, sizeof (pref), + "font.name.monospace.%s", + font_languages[i]); + gecko_prefs_set_string (pref, name); + + g_snprintf (pref, sizeof (pref), + "font.size.monospace.%s", + font_languages[i]); + gecko_prefs_set_int (pref, size); + } + break; default: break; @@ -170,3 +196,31 @@ yelp_gecko_set_font (YelpFontType font_type, const gchar *fontname) g_free (name); } + +extern "C" gboolean +yelp_gecko_init (void) +{ + gtk_moz_embed_set_comp_path (MOZILLA_HOME); + + gtk_moz_embed_push_startup (); + + yelp_register_printing (); + + nsresult rv; + nsCOMPtr<nsIPrefService> prefService (do_GetService (NS_PREFSERVICE_CONTRACTID, &rv)); + NS_ENSURE_SUCCESS (rv, FALSE); + + rv = CallQueryInterface (prefService, &gPrefBranch); + NS_ENSURE_SUCCESS (rv, FALSE); + + return TRUE; +} + +extern "C" void +yelp_gecko_shutdown (void) +{ + NS_IF_RELEASE (gPrefBranch); + gPrefBranch = nsnull; + + gtk_moz_embed_pop_startup (); +} diff --git a/src/yelp-gecko-utils.h b/src/yelp-gecko-utils.h index 5dc4010b..ba2bf6b0 100644 --- a/src/yelp-gecko-utils.h +++ b/src/yelp-gecko-utils.h @@ -33,6 +33,8 @@ void yelp_gecko_set_color (YelpColorType type, const gchar *color); void yelp_gecko_set_font (YelpFontType font_type, const gchar *fontname); +gboolean yelp_gecko_init (void); +void yelp_gecko_shutdown (void); G_END_DECLS diff --git a/src/yelp-html.cpp b/src/yelp-html.cpp index 780e1f97..de655131 100644 --- a/src/yelp-html.cpp +++ b/src/yelp-html.cpp @@ -164,7 +164,6 @@ html_init (YelpHtml *html) NULL); html_set_a11y (); } - yelp_register_printing (); } static void @@ -492,16 +491,14 @@ html_set_a11y (void) yelp_gecko_set_caret (caret); } -void +gboolean yelp_html_initialize (void) { - static gboolean initialized = FALSE; - - if (initialized) - return; - initialized = TRUE; - - gtk_moz_embed_set_comp_path (MOZILLA_HOME); - + return yelp_gecko_init (); } +void +yelp_html_shutdown (void) +{ + yelp_gecko_shutdown (); +} diff --git a/src/yelp-html.h b/src/yelp-html.h index 7d43a452..d2d75302 100644 --- a/src/yelp-html.h +++ b/src/yelp-html.h @@ -113,7 +113,8 @@ void yelp_html_print (YelpHtml *html, void yelp_html_preview_end (YelpHtml *html); void yelp_html_preview_navigate (YelpHtml *html, gint page_no); -void yelp_html_initialize (void); +gboolean yelp_html_initialize (void); +void yelp_html_shutdown (void); G_END_DECLS diff --git a/src/yelp-main.c b/src/yelp-main.c index 05c097c3..522cca90 100644 --- a/src/yelp-main.c +++ b/src/yelp-main.c @@ -415,7 +415,10 @@ main (int argc, char **argv) gnome_vfs_init (); - yelp_html_initialize (); + if (!yelp_html_initialize ()) { + g_print ("Could not initialize gecko!"); + exit (2); + } if (files != NULL && files[0] != NULL) { url = g_strdup (files[0]); @@ -474,6 +477,8 @@ main (int argc, char **argv) main_start (url); } + yelp_html_shutdown (); + g_object_unref (program); return 0; } |