tSupport added for help in the GUI options dialog. - vaccinewars - be a doctor … | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit bb0e0d94365e9e4556254a087a00d84d3b70edc9 | |
parent 13bf14f9aaae235b67d03104a6679ad55eac4fba | |
Author: Ben Webb <[email protected]> | |
Date: Mon, 5 Aug 2002 11:41:01 +0000 | |
Support added for help in the GUI options dialog. | |
Diffstat: | |
M src/dopewars.c | 23 +++++++++++++++++------ | |
M src/dopewars.h | 1 + | |
M src/gtkport/gtkport.c | 29 +++++++++++++++++++---------- | |
M src/gtkport/gtkport.h | 4 +++- | |
M src/gui_client/optdialog.c | 29 +++++++++++++++++++++++++++++ | |
5 files changed, 69 insertions(+), 17 deletions(-) | |
--- | |
diff --git a/src/dopewars.c b/src/dopewars.c | |
t@@ -2252,26 +2252,37 @@ gboolean SetConfigValue(int GlobalIndex, int StructInd… | |
} | |
/* | |
- * Returns the URL of the index file for the local HTML documentation. | |
+ * Returns the URL of the directory containing local HTML documentation. | |
*/ | |
-gchar *GetDocIndex(void) | |
+gchar *GetDocRoot(void) | |
{ | |
- static gchar *indexfile = "index.html"; | |
gchar *path; | |
#ifdef CYGWIN | |
gchar *bindir; | |
bindir = GetBinaryDir(); | |
- path = g_strdup_printf("file://%s\\%s", bindir, indexfile); | |
+ path = g_strdup_printf("file://%s\\", bindir); | |
g_free(bindir); | |
#else | |
- path = g_strdup_printf("file://%s/doc/%s-%s/%s", DATADIR, PACKAGE, | |
- VERSION, indexfile); | |
+ path = g_strdup_printf("file://%s/doc/%s-%s/", DATADIR, PACKAGE, VERSION); | |
#endif | |
return path; | |
} | |
/* | |
+ * Returns the URL of the index file for the local HTML documentation. | |
+ */ | |
+gchar *GetDocIndex(void) | |
+{ | |
+ gchar *file, *root; | |
+ | |
+ root = GetDocRoot(); | |
+ file = g_strdup_printf("%sindex.html", root); | |
+ g_free(root); | |
+ return file; | |
+} | |
+ | |
+/* | |
* Returns the pathname of the global (all users) configuration file, | |
* as a dynamically-allocated string that must be later freed. On | |
* error, NULL is returned. | |
diff --git a/src/dopewars.h b/src/dopewars.h | |
t@@ -430,6 +430,7 @@ void RestoreConfig(void); | |
void ScannerErrorHandler(GScanner *scanner, gchar *msg, gint error); | |
gboolean IsConnectedPlayer(Player *play); | |
void BackupConfig(void); | |
+gchar *GetDocRoot(void); | |
gchar *GetDocIndex(void); | |
gchar *GetGlobalConfigFile(void); | |
gchar *GetLocalConfigFile(void); | |
diff --git a/src/gtkport/gtkport.c b/src/gtkport/gtkport.c | |
t@@ -47,6 +47,7 @@ const gchar *GTK_STOCK_CANCEL = N_("_Cancel"); | |
const gchar *GTK_STOCK_REFRESH = N_("_Refresh"); | |
const gchar *GTK_STOCK_YES = N_("_Yes"); | |
const gchar *GTK_STOCK_NO = N_("_No"); | |
+const gchar *GTK_STOCK_HELP = N_("_Help"); | |
#endif | |
#ifdef CYGWIN | |
t@@ -812,6 +813,11 @@ LRESULT CALLBACK GtkPanedProc(HWND hwnd, UINT msg, UINT w… | |
return FALSE; | |
} | |
+void DisplayHTML(GtkWidget *parent, const gchar *bin, const gchar *target) | |
+{ | |
+ ShellExecute(parent->hWnd, "open", target, NULL, NULL, 0); | |
+} | |
+ | |
LRESULT CALLBACK GtkUrlProc(HWND hwnd, UINT msg, UINT wParam, LONG lParam) | |
{ | |
GtkWidget *widget; | |
t@@ -838,12 +844,9 @@ LRESULT CALLBACK GtkUrlProc(HWND hwnd, UINT msg, UINT wPa… | |
} | |
return TRUE; | |
} else if (msg == WM_LBUTTONUP) { | |
- gchar *target; | |
- | |
widget = GTK_WIDGET(GetWindowLong(hwnd, GWL_USERDATA)); | |
- target = GTK_URL(widget)->target; | |
- ShellExecute(hwnd, "open", target, NULL, NULL, 0); | |
+ DisplayHTML(widget, NULL, GTK_URL(widget)->target); | |
return FALSE; | |
} else | |
return DefWindowProc(hwnd, msg, wParam, lParam); | |
t@@ -5297,17 +5300,13 @@ static void gtk_url_set_cursor(GtkWidget *widget, GtkW… | |
gdk_cursor_destroy(cursor); | |
} | |
-static gboolean gtk_url_triggered(GtkWidget *widget, GdkEventButton *event, | |
- gpointer data) | |
+void DisplayHTML(GtkWidget *parent, const gchar *bin, const gchar *target) | |
{ | |
#ifdef HAVE_FORK | |
- gchar *bin, *target, *args[3]; | |
+ char *args[3]; | |
pid_t pid; | |
int status; | |
- target = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "target"); | |
- bin = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "bin"); | |
- | |
if (target && target[0] && bin && bin[0]) { | |
args[0] = bin; | |
args[1] = target; | |
t@@ -5328,6 +5327,16 @@ static gboolean gtk_url_triggered(GtkWidget *widget, Gd… | |
} | |
} | |
#endif | |
+} | |
+ | |
+static gboolean gtk_url_triggered(GtkWidget *widget, GdkEventButton *event, | |
+ gpointer data) | |
+{ | |
+ gchar *bin, *target; | |
+ | |
+ bin = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "bin"); | |
+ target = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "target"); | |
+ DisplayHTML(widget, bin, target); | |
return TRUE; | |
} | |
diff --git a/src/gtkport/gtkport.h b/src/gtkport/gtkport.h | |
t@@ -750,7 +750,8 @@ struct _GtkUrl { | |
#if CYGWIN || !HAVE_GLIB2 | |
extern const gchar *GTK_STOCK_OK, *GTK_STOCK_CLOSE, *GTK_STOCK_CANCEL, | |
- *GTK_STOCK_REFRESH, *GTK_STOCK_YES, *GTK_STOCK_NO; | |
+ *GTK_STOCK_REFRESH, *GTK_STOCK_YES, *GTK_STOCK_NO, | |
+ *GTK_STOCK_HELP; | |
typedef enum | |
{ | |
t@@ -785,5 +786,6 @@ GtkWidget *gtk_url_new(const gchar *text, const gchar *tar… | |
GtkWidget *NewStockButton(const gchar *label, GtkAccelGroup *accel_group); | |
gchar *GtkGetFile(const GtkWidget *parent, const gchar *oldname, | |
const gchar *title); | |
+void DisplayHTML(GtkWidget *parent, const gchar *bin, const gchar *target); | |
#endif /* __GTKPORT_H__ */ | |
diff --git a/src/gui_client/optdialog.c b/src/gui_client/optdialog.c | |
t@@ -557,6 +557,29 @@ static void OKCallback(GtkWidget *widget, GtkWidget *dial… | |
gtk_widget_destroy(dialog); | |
} | |
+static gchar *GetHelpPage(const gchar *pagename) | |
+{ | |
+ gchar *root, *file; | |
+ | |
+ root = GetDocRoot(); | |
+ file = g_strdup_printf("%shelp%c%s.html", root, G_DIR_SEPARATOR, pagename); | |
+ g_free(root); | |
+ return file; | |
+} | |
+ | |
+static void HelpCallback(GtkWidget *widget, GtkWidget *notebook) | |
+{ | |
+ const static gchar *pagehelp[] = { | |
+ "general", "locations", "drugs", "guns", "cops", "server", "sounds" | |
+ }; | |
+ gint page = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook)); | |
+ gchar *help; | |
+ | |
+ help = GetHelpPage(pagehelp[page]); | |
+ DisplayHTML(widget, WebBrowser, help); | |
+ g_free(help); | |
+} | |
+ | |
static void FinishOptDialog(GtkWidget *widget, gpointer data) | |
{ | |
FreeConfigWidgets(); | |
t@@ -950,6 +973,12 @@ void OptDialog(GtkWidget *widget, gpointer data) | |
gtk_signal_connect(GTK_OBJECT(button), "clicked", | |
GTK_SIGNAL_FUNC(OKCallback), (gpointer)dialog); | |
gtk_box_pack_start_defaults(GTK_BOX(hbbox), button); | |
+ | |
+ button = NewStockButton(GTK_STOCK_HELP, accel_group); | |
+ gtk_signal_connect(GTK_OBJECT(button), "clicked", | |
+ GTK_SIGNAL_FUNC(HelpCallback), (gpointer)notebook); | |
+ gtk_box_pack_start_defaults(GTK_BOX(hbbox), button); | |
+ | |
button = NewStockButton(GTK_STOCK_CANCEL, accel_group); | |
gtk_signal_connect_object(GTK_OBJECT(button), "clicked", | |
GTK_SIGNAL_FUNC(gtk_widget_destroy), |