summaryrefslogtreecommitdiff
path: root/riscos
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2004-03-08 00:03:58 +0000
committerJames Bursa <james@netsurf-browser.org>2004-03-08 00:03:58 +0000
commit7d9bf053b4ca97fd25359d7ea063d9233ed5c63a (patch)
treed36c4fc2379648c57f7ef3c2045b4153de82dbbd /riscos
parent1237e077c7c2acfe3a5d6dfc997115839b418db8 (diff)
downloadnetsurf-7d9bf053b4ca97fd25359d7ea063d9233ed5c63a.tar.gz
netsurf-7d9bf053b4ca97fd25359d7ea063d9233ed5c63a.tar.bz2
[project @ 2004-03-08 00:03:58 by bursa]
Implement Accept-Language option. svn path=/import/netsurf/; revision=591
Diffstat (limited to 'riscos')
-rw-r--r--riscos/dialog.c22
-rw-r--r--riscos/gui.c24
-rw-r--r--riscos/gui.h4
3 files changed, 43 insertions, 7 deletions
diff --git a/riscos/dialog.c b/riscos/dialog.c
index 6f47f2dea..ba369aa1f 100644
--- a/riscos/dialog.c
+++ b/riscos/dialog.c
@@ -56,6 +56,7 @@ static int file_exists(const char* base, const char* dir, const char* leaf, bits
static void set_icon_state(wimp_w w, wimp_i i, int state);
static int get_icon_state(wimp_w w, wimp_i i);
static void set_icon_string_i(wimp_w w, wimp_i i, int num);
+static const char *language_name(const char *code);
/**
@@ -406,6 +407,12 @@ void set_browser_choices(void)
font_size = option_font_size;
font_min_size = option_font_min_size;
ro_gui_dialog_update_config_br();
+ ro_gui_set_icon_string(dialog_config_br, ICON_CONFIG_BR_LANG,
+ language_name(option_language ?
+ option_language : "en"));
+ ro_gui_set_icon_string(dialog_config_br, ICON_CONFIG_BR_ALANG,
+ language_name(option_accept_language ?
+ option_accept_language : "en"));
}
@@ -741,3 +748,18 @@ void set_icon_string_i(wimp_w w, wimp_i i, int num)
ro_gui_set_icon_string(w, i, buffer);
}
+
+/**
+ * Convert a 2-letter ISO language code to the language name.
+ *
+ * \param code 2-letter ISO language code
+ * \return language name, or code if unknown
+ */
+
+const char *language_name(const char *code)
+{
+ char key[] = "lang_xx";
+ key[5] = code[0];
+ key[6] = code[1];
+ return messages_get(key);
+}
diff --git a/riscos/gui.c b/riscos/gui.c
index 18ddfbb5e..49bf78daf 100644
--- a/riscos/gui.c
+++ b/riscos/gui.c
@@ -132,25 +132,30 @@ void gui_init(int argc, char** argv)
char theme_fname[256];
os_error *error;
- LOG(("starting hourglass"));
xhourglass_start(1);
- LOG(("reading choices"));
+ LOG(("reading choices"));
options_read("Choices:WWW.NetSurf.Choices");
- LOG(("choosing language"));
+ LOG(("choosing language"));
ro_gui_choose_language();
- LOG(("grabbing NetSurf$Dir from the environment"));
NETSURF_DIR = getenv("NetSurf$Dir");
sprintf(path, "<NetSurf$Dir>.Resources.%s.Messages", option_language);
LOG(("Loading messages from '%s'", path));
messages_load(path);
+ messages_load("<NetSurf$Dir>.Resources.LangNames");
LOG(("done"));
- task_handle = wimp_initialise(wimp_VERSION_RO38, "NetSurf",
- (wimp_message_list*) &task_messages, 0);
+ error = xwimp_initialise(wimp_VERSION_RO38, "NetSurf",
+ (wimp_message_list*) &task_messages, 0,
+ &task_handle);
+ if (error) {
+ LOG(("xwimp_initialise failed: 0x%x: %s",
+ error->errnum, error->errmess));
+ exit(EXIT_FAILURE);
+ }
/* Issue a *Desktop to poke AcornURI into life */
if (getenv("NetSurf$Start_URI_Handler"))
@@ -209,8 +214,11 @@ void ro_gui_choose_language(void)
if (2 < strlen(option_language))
option_language[2] = 0;
sprintf(path, "<NetSurf$Dir>.Resources.%s", option_language);
- if (is_dir(path))
+ if (is_dir(path)) {
+ if (!option_accept_language)
+ option_accept_language = strdup(option_language);
return;
+ }
free(option_language);
option_language = 0;
}
@@ -237,6 +245,8 @@ void ro_gui_choose_language(void)
else
option_language = strdup("en");
assert(option_language);
+ if (!option_accept_language)
+ option_accept_language = strdup(option_language);
}
diff --git a/riscos/gui.h b/riscos/gui.h
index 12cab480e..5ff526460 100644
--- a/riscos/gui.h
+++ b/riscos/gui.h
@@ -191,6 +191,10 @@ void ro_gui_save_datasave_ack(wimp_message *message);
#define ICON_CONFIG_BR_MINSIZE 11
#define ICON_CONFIG_BR_MINSIZE_DEC 12
#define ICON_CONFIG_BR_MINSIZE_INC 13
+#define ICON_CONFIG_BR_LANG 15
+#define ICON_CONFIG_BR_LANG_PICK 16
+#define ICON_CONFIG_BR_ALANG 19
+#define ICON_CONFIG_BR_ALANG_PICK 20
#define ICON_CONFIG_PROX_OK 0
#define ICON_CONFIG_PROX_CANCEL 1