summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDon Scorgie <dscorgie@src.gnome.org>2006-04-19 18:59:44 +0000
committerDon Scorgie <dscorgie@src.gnome.org>2006-04-19 18:59:44 +0000
commita6228122d10cd89040be27574790a7c388ee548f (patch)
tree643e9fd6865db69f36dad5212f31717e782b3e55
parente5350a27b48b4422a7fd833a2d69049851347192 (diff)
downloadyelp-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--ChangeLog9
-rw-r--r--src/Makefile.am1
-rw-r--r--src/yelp-gecko-utils.cpp152
-rw-r--r--src/yelp-gecko-utils.h2
-rw-r--r--src/yelp-html.cpp17
-rw-r--r--src/yelp-html.h3
-rw-r--r--src/yelp-main.c7
7 files changed, 130 insertions, 61 deletions
diff --git a/ChangeLog b/ChangeLog
index 87cbb592..daa24bd8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;
}