chiark / gitweb /
Merge branch 'arkkra' into shiny
[mup] / mup / mupmate / Help.H
diff --git a/mup/mupmate/Help.H b/mup/mupmate/Help.H
new file mode 100644 (file)
index 0000000..bf92110
--- /dev/null
@@ -0,0 +1,113 @@
+/* Copyright (c) 2006 by Arkkra Enterprises */
+/* All rights reserved */
+
+#ifndef _HELP_H_
+#define _HELP_H_
+
+// Classes for Help menu item off of main toolbar
+
+#include <FL/Fl_Double_Window.H>
+#include <FL/Fl_Multiline_Output.H>
+#include <FL/Fl_Help_View.H>
+#include <FL/Fl_Return_Button.H>
+#include <FL/Fl_Text_Display.H>
+#include <FL/filename.H>
+#include "Config.H"
+
+
+// Class for window to let user browse the HTML version of Mup User's Guide
+
+class Uguide_browser : Fl_Double_Window {
+
+friend class Help;
+
+public:
+       Uguide_browser(void);
+       ~Uguide_browser(void);
+
+       // User can change font/size preference. This callback notifies
+       // of such changes, so we can adjust the output accordingly 
+       static void font_change_cb(void * data, Fl_Font font, unsigned char size);
+
+       // Load the User's Guide top level index.html file
+       void load_uguide(void);
+
+private:
+       void font_change(Fl_Font font, unsigned char size);
+
+       // On Windows, Fl_Help_View doesn't seem to properly follow relative
+       // URLs, so we use the link() callback to prepend the proper directory.
+       static const char * resolve_link(Fl_Widget *, const char * uri);
+
+       Fl_Help_View *browser_p;
+       Font_change_registration * font_change_reg_p;
+       bool loaded;
+};
+
+
+// Class to give first time user some hints.
+
+class StartupHints : Fl_Double_Window {
+
+friend class Help;
+
+public:
+       StartupHints(void);
+       ~StartupHints(void);
+
+       static void OK_cb(Fl_Widget *, void * data);
+       // User can change font/size preference. This callback notifies
+       // of such changes, so we can adjust the output accordingly 
+       static void font_change_cb(void * data, Fl_Font font, unsigned char size);
+private:
+       void OK(void);
+       void font_change(Fl_Font font, unsigned char size);
+
+       Font_change_registration * font_change_reg_p;
+       Fl_Text_Display * text_p;       // The text of the hints
+       Fl_Return_Button * OK_p;
+};
+
+
+// Class for "About" window
+
+class About_dialog : Fl_Double_Window {
+
+friend class Help;
+
+public:
+       About_dialog(void);
+       ~About_dialog(void);
+
+       static void OK_cb(Fl_Widget *, void * data);
+
+private:
+       void OK(void);
+
+       Fl_Multiline_Output * message_p;
+       Fl_Return_Button * ok_p;
+};
+
+
+// Class for Help menu item from main toolbar
+
+class Help {
+public:
+       Help(void);
+       ~Help(void);
+
+       static void Uguide_cb(Fl_Widget *, void * data);
+       static void Startup_Hints_cb(Fl_Widget *, void * data);
+       static void About_cb(Fl_Widget *, void * data);
+
+private:
+       void Uguide(void);
+       void Startup_Hints(void);
+       void About(void);
+
+       About_dialog * about_p;
+       StartupHints * startup_hints_p;
+       Uguide_browser * uguide_p;
+};
+
+#endif