Fix typo in license headers
[oweals/cde.git] / cde / programs / dtstyle / Help.c
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these libraries and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 /* $XConsortium: Help.c /main/4 1995/10/30 13:09:47 rswiston $ */
24 /****************************************************************************
25  ****************************************************************************
26  **
27  **   File:        HelpCB.h
28  **
29  **   Project:     DT 3.0
30  **
31  **   Description: Routines that create/cache the dialogs for Help
32  **
33  **
34  **  (c) Copyright Hewlett-Packard Company, 1990, 1991, 1992.  All rights are
35  **  reserved.  Copying or other reproduction of this program
36  **  except for archival purposes is prohibited without prior
37  **  written consent of Hewlett-Packard Company.
38  **
39  **
40  **
41  ****************************************************************************/
42
43 #include <stdio.h>
44
45 #include <Xm/DialogS.h>
46 #include <Xm/Form.h>
47 #include <Xm/MwmUtil.h>
48 #include <Dt/DtP.h>
49
50 #include <Dt/Help.h>
51 #include <Dt/HelpDialog.h>
52
53 #include "Main.h"
54 #include "Help.h"
55
56 static Widget
57 GetHelpDialog( )
58 {
59     static HelpStruct       *pHelpCache;
60
61     HelpStruct *pHelp;
62     Arg args[5];
63     int n;
64
65     if(pHelpCache == (HelpStruct *)NULL)
66     {
67         pHelp = pHelpCache = (HelpStruct *)XtMalloc(sizeof(HelpStruct));
68         pHelp->pNext = (HelpStruct *)NULL;
69         pHelp->pPrev = (HelpStruct *)NULL;
70         pHelp->inUse = True;
71
72         n = 0;
73         XtSetArg(args[n], XmNtitle, 
74             ((char *)GETMESSAGE(2, 7, "Style Manager - Help"))); n++;
75         pHelp->dialog = DtCreateHelpDialog(style.shell, "helpDlg", 
76                                             args, n);
77
78         DtWsmRemoveWorkspaceFunctions(style.display, 
79                 XtWindow(XtParent(pHelp->dialog)));
80         XtAddCallback(pHelp->dialog, DtNhyperLinkCallback, 
81                       (XtCallbackProc)HelpHyperlinkCB, NULL);
82         XtAddCallback(pHelp->dialog, DtNcloseCallback, 
83                       (XtCallbackProc)HelpCloseCB, pHelpCache);
84         return pHelp->dialog;
85     }
86     else
87     {
88         for(pHelp = pHelpCache; 
89             pHelp != (HelpStruct *)NULL;
90             pHelp = pHelp->pNext)
91         {
92             if(pHelp->inUse == False)
93             {
94                 pHelp->inUse = True;
95                 return pHelp->dialog;
96             }
97         }
98         pHelp = (HelpStruct *) XtMalloc(sizeof(HelpStruct));
99         pHelpCache->pPrev = pHelp;
100         pHelp->pNext = pHelpCache;
101         pHelpCache = pHelp;
102         pHelp->pPrev = (HelpStruct *)NULL;
103         pHelp->inUse = True;
104
105         n=0;
106         XtSetArg(args[n], XmNtitle, 
107             ((char *)GETMESSAGE(2, 7, "Style Manager - Help"))); n++;
108         pHelp->dialog = DtCreateHelpDialog(style.shell, "helpDlg", 
109                                             args, n);
110         DtWsmRemoveWorkspaceFunctions(style.display, 
111                       XtWindow(XtParent(pHelp->dialog)));
112         XtAddCallback(pHelp->dialog, DtNhyperLinkCallback, 
113                       (XtCallbackProc)HelpHyperlinkCB, NULL);
114         XtAddCallback(pHelp->dialog, DtNcloseCallback, 
115                       (XtCallbackProc)HelpCloseCB, pHelpCache);
116         return pHelp->dialog;
117     }
118 }
119
120 void
121 DisplayHelp(
122         char *helpVolume,
123         char *locationId)
124 {
125     Widget helpDialog;
126     Arg args[10];
127     int n;
128
129     helpDialog = GetHelpDialog();
130
131     n = 0;
132     XtSetArg(args[n], DtNhelpType, DtHELP_TYPE_TOPIC); n++;
133     XtSetArg(args[n], DtNhelpVolume, helpVolume);       n++;
134     XtSetArg(args[n], DtNlocationId, locationId);       n++;
135     XtSetValues(helpDialog, args, n);
136
137     XtManageChild(helpDialog);
138     XtMapWidget(XtParent(helpDialog));
139 }
140
141 void
142 Help(
143         char *helpVolume,
144         char *locationId)
145 {
146     static  Widget helpDialog = NULL;
147     Arg args[10];
148     int n;
149
150     if(helpDialog == NULL)
151     {
152         n = 0;
153         XtSetArg(args[n], DtNhelpType, DtHELP_TYPE_TOPIC); n++;
154         XtSetArg(args[n], DtNhelpVolume, helpVolume);   n++;
155         XtSetArg(args[n], DtNlocationId, locationId);   n++;
156         XtSetArg (args[n], XmNtitle, 
157             ((char *)GETMESSAGE(2, 7, "Style Manager - Help"))); n++;
158         helpDialog = DtCreateHelpDialog(style.shell, "helpDlg", args, n);
159
160         DtWsmRemoveWorkspaceFunctions(style.display, 
161                       XtWindow(XtParent(helpDialog)));
162         XtAddCallback(helpDialog, DtNhyperLinkCallback, 
163                       (XtCallbackProc)HelpHyperlinkCB, NULL);
164         XtAddCallback(helpDialog, DtNcloseCallback, 
165                       (XtCallbackProc)HelpCloseCB, NULL);
166
167         XtManageChild(helpDialog);
168     }
169     else
170     {
171         n = 0;
172         XtSetArg(args[n], DtNhelpType, DtHELP_TYPE_TOPIC); n++;
173         XtSetArg(args[n], DtNhelpVolume, helpVolume);   n++;
174         XtSetArg(args[n], DtNlocationId, locationId);   n++;
175         XtSetValues(helpDialog, args, n);
176     }
177
178     XtMapWidget(XtParent(helpDialog));
179 }
180