tAdd option to force the GUI client to write out the configuration file in UTF-… | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit dca625d6b5ee3b6b60fdb8a266a60279be66d913 | |
parent fdfb74e2a12fcd210e0de6787e7ec1efb4e29f46 | |
Author: Ben Webb <[email protected]> | |
Date: Mon, 2 Sep 2002 13:41:40 +0000 | |
Add option to force the GUI client to write out the configuration file | |
in UTF-8 encoding; moved Win32 "minimize server to System Tray" option | |
from General tab to Server. | |
Diffstat: | |
M doc/help/general.html | 12 +++++++----- | |
A doc/help/server.html | 25 +++++++++++++++++++++++++ | |
M src/configfile.c | 18 +++++++++++++++--- | |
M src/configfile.h | 3 ++- | |
M src/gui_client/optdialog.c | 21 ++++++++++++++++----- | |
M src/serverside.c | 2 +- | |
6 files changed, 66 insertions(+), 15 deletions(-) | |
--- | |
diff --git a/doc/help/general.html b/doc/help/general.html | |
t@@ -19,11 +19,13 @@ Obviously, if you really want to remove drug references co… | |
also need to change all the drug names in the | |
<a href="drugs.html">Drugs tab</a>.<p /></li> | |
-<li><b>Put server in System Tray</b>: (Windows only) When running the | |
-graphical server, and it is minimized, do not show the window in the normal | |
-window list, but in the System Tray (the collection of small icons in the | |
-bottom right of the screen). Clicking on the dopewars icon in the Tray will | |
-restore the window to its normal state.<p /></li> | |
+<li><b>Unicode config file</b>: Write out the configuration file in UTF-8 | |
+(Unicode) encoding, rather than the default locale encoding. You should turn | |
+this option on if you are using unusual characters (e.g. Hebrew or Cyrillic | |
+in the English version) as these will be otherwise lost when you save the file. | |
+Note that this is the default under Unix when running in UTF-8 locales. Note | |
+also that versions of dopewars prior to 1.5.8, or Unix versions linked against | |
+GTK+1.x will not be able to read UTF-8 configuration files.<p /></li> | |
<li><b>Game length (turns)</b>: The number of days over which the game runs. | |
If this is set to 0 (zero) then the game will only end if you are killed. | |
diff --git a/doc/help/server.html b/doc/help/server.html | |
t@@ -0,0 +1,25 @@ | |
+<?xml version="1.0" encoding="UTF-8"?> | |
+ | |
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" | |
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> | |
+ | |
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> | |
+ | |
+<head> | |
+<title>dopewars: Server Options</title> | |
+</head> | |
+ | |
+<body> | |
+<h1>dopewars: Server Options</h1> | |
+ | |
+<ul> | |
+<li><b>Minimize to System Tray</b>: (Windows only) When running the | |
+graphical server, and it is minimized, do not show the window in the normal | |
+window list, but in the System Tray (the collection of small icons in the | |
+bottom right of the screen). Clicking on the dopewars icon in the Tray will | |
+restore the window to its normal state.<p /></li> | |
+ | |
+</ul> | |
+ | |
+</body> | |
+</html> | |
diff --git a/src/configfile.c b/src/configfile.c | |
t@@ -31,6 +31,7 @@ | |
#include <ctype.h> /* For isprint */ | |
#include <glib.h> | |
+#include "configfile.h" | |
#include "convert.h" /* For Converter */ | |
#include "dopewars.h" /* For struct GLOBALS etc. */ | |
#include "nls.h" /* For _ function */ | |
t@@ -191,11 +192,17 @@ static void ReadFileToString(FILE *fp, gchar *str, int m… | |
* Writes all of the configuration file variables that have changed | |
* (together with their values) to the given file. | |
*/ | |
-static void WriteConfigFile(FILE *fp) | |
+static void WriteConfigFile(FILE *fp, gboolean ForceUTF8) | |
{ | |
int i, j; | |
Converter *conv = Conv_New(); | |
+ if (ForceUTF8 && !IsConfigFileUTF8()) { | |
+ g_free(LocalCfgEncoding); | |
+ LocalCfgEncoding = g_strdup("UTF-8"); | |
+ fprintf(fp, "encoding \"UTF-8\"\n"); | |
+ } | |
+ | |
if (LocalCfgEncoding && LocalCfgEncoding[0]) { | |
Conv_SetCodeset(conv, LocalCfgEncoding); | |
} | |
t@@ -214,7 +221,7 @@ static void WriteConfigFile(FILE *fp) | |
Conv_Free(conv); | |
} | |
-gboolean UpdateConfigFile(const gchar *cfgfile) | |
+gboolean UpdateConfigFile(const gchar *cfgfile, gboolean ForceUTF8) | |
{ | |
FILE *fp; | |
gchar *defaultfile; | |
t@@ -246,9 +253,14 @@ gboolean UpdateConfigFile(const gchar *cfgfile) | |
} | |
ReadFileToString(fp, header, 50); | |
- WriteConfigFile(fp); | |
+ WriteConfigFile(fp, ForceUTF8); | |
fclose(fp); | |
g_free(defaultfile); | |
return TRUE; | |
} | |
+ | |
+gboolean IsConfigFileUTF8(void) | |
+{ | |
+ return (LocalCfgEncoding && strcmp(LocalCfgEncoding, "UTF-8") == 0); | |
+} | |
diff --git a/src/configfile.h b/src/configfile.h | |
t@@ -26,6 +26,7 @@ | |
#include <glib.h> | |
extern gchar *LocalCfgEncoding; | |
-gboolean UpdateConfigFile(const gchar *cfgfile); | |
+gboolean UpdateConfigFile(const gchar *cfgfile, gboolean ForceUTF8); | |
+gboolean IsConfigFileUTF8(void); | |
#endif /* __DP_CONFIGFILE_H__ */ | |
diff --git a/src/gui_client/optdialog.c b/src/gui_client/optdialog.c | |
t@@ -556,8 +556,12 @@ static void TestPlaySound(GtkWidget *entry) | |
static void OKCallback(GtkWidget *widget, GtkWidget *dialog) | |
{ | |
+ GtkToggleButton *unicode_check; | |
+ | |
SaveConfigWidgets(); | |
- UpdateConfigFile(NULL); | |
+ unicode_check = GTK_TOGGLE_BUTTON(gtk_object_get_data(GTK_OBJECT(dialog), | |
+ "unicode_check")); | |
+ UpdateConfigFile(NULL, gtk_toggle_button_get_active(unicode_check)); | |
gtk_widget_destroy(dialog); | |
} | |
t@@ -772,9 +776,11 @@ void OptDialog(GtkWidget *widget, gpointer data) | |
check = NewConfigCheck("Sanitized", _("Remove drug references")); | |
gtk_table_attach_defaults(GTK_TABLE(table), check, 0, 1, 0, 1); | |
-#ifdef CYGWIN | |
- check = NewConfigCheck("MinToSysTray", _("Put server in System Tray")); | |
- gtk_table_attach_defaults(GTK_TABLE(table), check, 1, 2, 0, 1); | |
+#ifdef HAVE_GLIB2 | |
+ check = gtk_check_button_new_with_label(_("Unicode config file")); | |
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), IsConfigFileUTF8()); | |
+ gtk_table_attach_defaults(GTK_TABLE(table), check, 1, 3, 0, 1); | |
+ gtk_object_set_data(GTK_OBJECT(dialog), "unicode_check", check); | |
#endif | |
label = gtk_label_new(_("Game length (turns)")); | |
t@@ -877,7 +883,12 @@ void OptDialog(GtkWidget *widget, gpointer data) | |
check = NewConfigCheck("MetaServer.Active", | |
_("Server reports to metaserver")); | |
- gtk_table_attach_defaults(GTK_TABLE(table), check, 0, 4, 0, 1); | |
+ gtk_table_attach_defaults(GTK_TABLE(table), check, 0, 2, 0, 1); | |
+ | |
+#ifdef CYGWIN | |
+ check = NewConfigCheck("MinToSysTray", _("Minimize to System Tray")); | |
+ gtk_table_attach_defaults(GTK_TABLE(table), check, 2, 4, 0, 1); | |
+#endif | |
label = gtk_label_new(_("Metaserver hostname")); | |
gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, | |
diff --git a/src/serverside.c b/src/serverside.c | |
t@@ -971,7 +971,7 @@ static void ServerSaveConfigFile(const char *string) | |
file = GetLocalConfigFile(); | |
string = file; | |
} | |
- if (UpdateConfigFile(file)) { | |
+ if (UpdateConfigFile(file, FALSE)) { | |
g_print(_("Configuration file saved OK as %s\n"), string); | |
} | |
g_free(file); |