Import upstream version 5.3.
[mup] / mup / mupmate / Help.H
1 /* Copyright (c) 2006 by Arkkra Enterprises */
2 /* All rights reserved */
3
4 #ifndef _HELP_H_
5 #define _HELP_H_
6
7 // Classes for Help menu item off of main toolbar
8
9 #include <FL/Fl_Double_Window.H>
10 #include <FL/Fl_Multiline_Output.H>
11 #include <FL/Fl_Help_View.H>
12 #include <FL/Fl_Return_Button.H>
13 #include <FL/Fl_Text_Display.H>
14 #include <FL/filename.H>
15 #include "Config.H"
16
17
18 // Class for window to let user browse the HTML version of Mup User's Guide
19
20 class Uguide_browser : Fl_Double_Window {
21
22 friend class Help;
23
24 public:
25 Uguide_browser(void);
26 ~Uguide_browser(void);
27
28 // User can change font/size preference. This callback notifies
29 // of such changes, so we can adjust the output accordingly
30 static void font_change_cb(void * data, Fl_Font font, unsigned char size);
31
32 // Load the User's Guide top level index.html file
33 void load_uguide(void);
34
35 private:
36 void font_change(Fl_Font font, unsigned char size);
37
38 // On Windows, Fl_Help_View doesn't seem to properly follow relative
39 // URLs, so we use the link() callback to prepend the proper directory.
40 static const char * resolve_link(Fl_Widget *, const char * uri);
41
42 Fl_Help_View *browser_p;
43 Font_change_registration * font_change_reg_p;
44 bool loaded;
45 };
46
47
48 // Class to give first time user some hints.
49
50 class StartupHints : Fl_Double_Window {
51
52 friend class Help;
53
54 public:
55 StartupHints(void);
56 ~StartupHints(void);
57
58 static void OK_cb(Fl_Widget *, void * data);
59 // User can change font/size preference. This callback notifies
60 // of such changes, so we can adjust the output accordingly
61 static void font_change_cb(void * data, Fl_Font font, unsigned char size);
62 private:
63 void OK(void);
64 void font_change(Fl_Font font, unsigned char size);
65
66 Font_change_registration * font_change_reg_p;
67 Fl_Text_Display * text_p; // The text of the hints
68 Fl_Return_Button * OK_p;
69 };
70
71
72 // Class for "About" window
73
74 class About_dialog : Fl_Double_Window {
75
76 friend class Help;
77
78 public:
79 About_dialog(void);
80 ~About_dialog(void);
81
82 static void OK_cb(Fl_Widget *, void * data);
83
84 private:
85 void OK(void);
86
87 Fl_Multiline_Output * message_p;
88 Fl_Return_Button * ok_p;
89 };
90
91
92 // Class for Help menu item from main toolbar
93
94 class Help {
95 public:
96 Help(void);
97 ~Help(void);
98
99 static void Uguide_cb(Fl_Widget *, void * data);
100 static void Startup_Hints_cb(Fl_Widget *, void * data);
101 static void About_cb(Fl_Widget *, void * data);
102
103 private:
104 void Uguide(void);
105 void Startup_Hints(void);
106 void About(void);
107
108 About_dialog * about_p;
109 StartupHints * startup_hints_p;
110 Uguide_browser * uguide_p;
111 };
112
113 #endif