83b371eb69dc687586080d1303d8c74d84d16aa7
[oweals/cde.git] / cde / programs / dtstyle / HelpCB.c
1 /* $XConsortium: HelpCB.c /main/5 1996/03/25 00:51:28 pascale $ */
2 /*
3  ****************************************************************************
4  **
5  **   File:        HelpCB.c
6  **
7  **   Project:     DT 3.0
8  **
9  **   Description: Contains the callbacks for Help
10  **
11  **
12  ****************************************************************************/
13 /*
14  * (c) Copyright 1996 Digital Equipment Corporation.
15  * (c) Copyright 1990, 1996 Hewlett-Packard Company.
16  * (c) Copyright 1996 International Business Machines Corp.
17  * (c) Copyright 1996 Sun Microsystems, Inc.
18  * (c) Copyright 1996 Novell, Inc. 
19  * (c) Copyright 1996 FUJITSU LIMITED.
20  * (c) Copyright 1996 Hitachi.
21  */
22
23 #include <Dt/HelpDialog.h>
24
25 #include "Main.h"
26 #include "Help.h"
27
28 void
29 HelpRequestCB(
30         Widget w,
31         caddr_t client_data,
32         caddr_t call_data )
33 {
34     char *helpVolume, *locationId;
35     int topic;
36     
37     topic = (int) client_data;
38     helpVolume = HELP_VOLUME;
39
40     switch (topic)
41     {
42         case HELP_MAIN_WINDOW:
43             locationId = HELP_MAIN_WINDOW_STR;
44             break;
45         case HELP_MENUBAR:
46             locationId = HELP_MENUBAR_STR;
47             break;
48         case HELP_FILE_BUTTON:
49             locationId = HELP_FILE_BUTTON_STR;
50             break;
51         case HELP_HELP_BUTTON:
52             locationId = HELP_HELP_BUTTON_STR;
53             break;
54         case HELP_FILE_MENU:
55             locationId = HELP_FILE_MENU_STR;
56             break;
57         case HELP_HELP_MENU:
58             locationId = HELP_HELP_MENU_STR;
59             break;
60         case HELP_EXIT:
61             locationId = HELP_EXIT_STR;
62             break;
63         case HELP_INTRODUCTION:
64             locationId = HELP_INTRODUCTION_STR;
65             break;
66         case HELP_TASKS:        
67             locationId = HELP_TASKS_STR;
68             break;
69         case HELP_REFERENCE:
70             locationId = HELP_REFERENCE_STR;
71             break;
72         case HELP_ITEM:
73             locationId = HELP_ITEM_STR;
74             break;
75         case HELP_USING:
76             locationId = HELP_USING_STR;
77             helpVolume = HELP_USING_HELP_VOLUME;
78             break;
79         case HELP_VERSION:
80             locationId = HELP_VERSION_STR;
81             break;
82         case HELP_COLOR_BUTTON:
83             locationId = HELP_COLOR_BUTTON_STR;
84             break;
85         case HELP_FONT_BUTTON:
86             locationId = HELP_FONT_BUTTON_STR;
87             break;
88         case HELP_BACKDROP_BUTTON:
89             locationId = HELP_BACKDROP_BUTTON_STR;
90             break;
91         case HELP_KEYBOARD_BUTTON:
92             locationId = HELP_KEYBOARD_BUTTON_STR;
93             break;
94         case HELP_MOUSE_BUTTON:
95             locationId = HELP_MOUSE_BUTTON_STR;
96             break;
97         case HELP_AUDIO_BUTTON:
98             locationId = HELP_AUDIO_BUTTON_STR;
99             break;
100         case HELP_SCREEN_BUTTON:
101             locationId = HELP_SCREEN_BUTTON_STR;
102             break;
103         case HELP_DTWM_BUTTON:
104             locationId = HELP_DTWM_BUTTON_STR;
105             break;
106         case HELP_STARTUP_BUTTON:
107             locationId = HELP_STARTUP_BUTTON_STR;
108             break;
109         case HELP_I18N_BUTTON:
110             locationId = HELP_I18N_BUTTON_STR;
111             break;
112         case HELP_COLOR_DIALOG:
113             locationId = HELP_COLOR_DIALOG_STR;
114             break;
115         case HELP_ADD_PALETTE_DIALOG:
116             locationId = HELP_ADD_PALETTE_DIALOG_STR;
117             break;
118         case HELP_ADD_PALETTE_WARNING_DIALOG:
119             locationId = HELP_ADD_PALETTE_WARNING_DIALOG_STR;
120             break;
121         case HELP_DELETE_PALETTE_DIALOG:
122             locationId = HELP_DELETE_PALETTE_DIALOG_STR;
123             break;
124         case HELP_DELETE_PALETTE_WARNING_DIALOG:
125             locationId = HELP_DELETE_PALETTE_WARNING_DIALOG_STR;
126             break;
127         case HELP_MODIFY_PALETTE_DIALOG:
128             locationId = HELP_MODIFY_PALETTE_DIALOG_STR;
129             break;
130         case HELP_COLOR_USE_DIALOG:
131             locationId = HELP_COLOR_USE_DIALOG_STR;
132             break;
133         case HELP_FONT_DIALOG:
134             locationId = HELP_FONT_DIALOG_STR;
135             break;
136         case HELP_BACKDROP_DIALOG:
137             locationId = HELP_BACKDROP_DIALOG_STR;
138             break;
139         case HELP_KEYBOARD_DIALOG:
140             locationId = HELP_KEYBOARD_DIALOG_STR;
141             break;
142         case HELP_MOUSE_DIALOG:
143             locationId = HELP_MOUSE_DIALOG_STR;
144             break;
145         case HELP_AUDIO_DIALOG:
146             locationId = HELP_AUDIO_DIALOG_STR;
147             break;
148         case HELP_SCREEN_DIALOG:
149             locationId = HELP_SCREEN_DIALOG_STR;
150             break;
151         case HELP_DTWM_DIALOG:
152             locationId = HELP_DTWM_DIALOG_STR;
153             break;
154         case HELP_STARTUP_DIALOG:
155             locationId = HELP_STARTUP_DIALOG_STR;
156             break;
157         case HELP_I18N_DIALOG:
158             locationId = HELP_I18N_DIALOG_STR;
159             break;
160     }
161
162     Help(helpVolume, locationId);
163 }
164
165 void
166 QuickHelpRequestCB(
167         Widget w,
168         caddr_t client_data,
169         caddr_t call_data )
170 {
171
172 }
173
174 void
175 HelpModeCB(
176         Widget w,
177         caddr_t client_data,
178         caddr_t call_data )
179 {
180    Widget widget;
181
182    switch(DtHelpReturnSelectedWidgetId(style.shell, (Cursor)NULL, &widget))
183    {
184       /*
185        * There are additional cases (e.g. user aborts request) but I
186        * don't feel they warrant an error dialog.
187        */
188       case DtHELP_SELECT_VALID:
189
190           while (!XtIsShell(widget))
191           {
192              if (XtHasCallbacks(widget, XmNhelpCallback) == XtCallbackHasSome)
193              {
194                 XtCallCallbacks(widget, XmNhelpCallback, (XtPointer)NULL);
195                 return;
196              }
197              widget = XtParent(widget);
198           }
199           break;
200
201       case DtHELP_SELECT_INVALID:
202
203           ErrDialog((char *)GETMESSAGE(2, 8, "You must select an item\nwithin the Style Manager."), style.shell);
204           break;
205
206    }
207 }
208
209 void
210 HelpHyperlinkCB(
211         Widget w,
212         caddr_t client_data,
213         caddr_t call_data )
214 {
215     DtHelpDialogCallbackStruct *pHyper = 
216             (DtHelpDialogCallbackStruct *) call_data;
217
218     switch(pHyper->hyperType)
219     {
220         case DtHELP_LINK_JUMP_NEW:
221             DisplayHelp(pHyper->helpVolume, pHyper->locationId);
222             break;
223         default:
224             ;
225             /* application defined link code goes here */
226     }
227 }
228
229 void
230 HelpCloseCB(
231         Widget w,
232         caddr_t client_data,
233         caddr_t call_data )
234 {
235
236     HelpStruct *pHelpCache = (HelpStruct *)client_data;
237     HelpStruct *pHelp;
238
239     /*
240      * empty for loop just marches pHelp to the right place
241      */
242     for(pHelp = pHelpCache; 
243         pHelp != (HelpStruct *)NULL && pHelp->dialog != w;
244         pHelp = pHelp->pNext);
245
246     if(pHelp != (HelpStruct *)NULL)
247     {
248         /* this should always happen */
249         pHelp->inUse = False;
250     }
251
252     XtUnmapWidget(XtParent(w));
253
254 }