tSupport added for help in the GUI options dialog. - vaccinewars - be a doctor and try to vaccinate the world
(HTM) git clone git://src.adamsgaard.dk/vaccinewars
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit bb0e0d94365e9e4556254a087a00d84d3b70edc9
(DIR) parent 13bf14f9aaae235b67d03104a6679ad55eac4fba
(HTM) Author: Ben Webb <ben@salilab.org>
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(-)
---
(DIR) diff --git a/src/dopewars.c b/src/dopewars.c
t@@ -2252,26 +2252,37 @@ gboolean SetConfigValue(int GlobalIndex, int StructIndex,
}
/*
- * 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.
(DIR) 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);
(DIR) 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 wParam,
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 wParam, LONG lParam)
}
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, GtkWidget *label)
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, GdkEventButton *event,
}
}
#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;
}
(DIR) 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 *target,
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__ */
(DIR) 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 *dialog)
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),