1 /* $TOG: BBUtil.c /main/8 1997/04/15 10:23:34 dbl $ */
2 /*
3  * Motif
4  *
5  * Copyright (c) 1987-2012, The Open Group. All rights reserved.
6  *
7  * These libraries and programs are free software; you can
8  * redistribute them and/or modify them under the terms of the GNU
9  * Lesser General Public License as published by the Free Software
10  * Foundation; either version 2 of the License, or (at your option)
11  * any later version.
12  *
13  * These libraries and programs are distributed in the hope that
14  * they will be useful, but WITHOUT ANY WARRANTY; without even the
15  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
16  * PURPOSE. See the GNU Lesser General Public License for more
17  * details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with these librararies and programs; if not, write
21  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
22  * Floor, Boston, MA 02110-1301 USA
23  *
24  */
25 /*
26  * HISTORY
27  */
28 
29 
30 #ifdef HAVE_CONFIG_H
31 #include <config.h>
32 #endif
33 
34 
35 #include <Xm/Xm.h>
36 #include <Xm/PushBG.h>
37 #include <Xm/LabelG.h>
38 #include <Xm/TraitP.h>
39 #include <Xm/TakesDefT.h>
40 #include "BulletinBI.h"
41 #include "MessagesI.h"
42 
43 /* defines for label string resources coming from message catalog */
44 #define OK_STRING         _XmMMsgResource_0001
45 #define CANCEL_STRING     _XmMMsgResource_0002
46 #define SELECTION_STRING  _XmMMsgResource_0003
47 #define APPLY_STRING      _XmMMsgResource_0004
48 #define HELP_STRING       _XmMMsgResource_0005
49 #define FILTER_STRING     _XmMMsgResource_0006
50 #define DIRLIST_STRING    _XmMMsgResource_0008
51 #define ITEMS_STRING      _XmMMsgResource_0009
52 #define DIRTEXT_STRING    _XmMMsgResource_0011
53 #define PROMPT_STRING     _XmMMsgResource_0012
54 
55 
56 
57 /****************************************************************/
58 static char *
GetLabelString(XmLabelStringLoc l_loc)59 GetLabelString(
60        XmLabelStringLoc l_loc )
61 {
62     char *retval = (char*)NULL;
63     switch (l_loc)
64 	{
65 	case XmOkStringLoc:
66 	    retval = OK_STRING;
67 	    break;
68 	case XmCancelStringLoc:
69 	    retval = CANCEL_STRING;
70 	    break;
71 	case XmSelectionStringLoc:
72 	    retval = SELECTION_STRING;
73 	    break;
74 	case XmApplyStringLoc:
75 	    retval = APPLY_STRING;
76 	    break;
77 	case XmHelpStringLoc:
78 	    retval = HELP_STRING;
79 	    break;
80 	case XmFilterStringLoc:
81 	    retval = FILTER_STRING;
82 	    break;
83 	case XmDirListStringLoc:
84 	    retval = DIRLIST_STRING;
85 	    break;
86 	case XmItemsStringLoc:
87 	    retval = ITEMS_STRING;
88 	    break;
89 	case XmDirTextStringLoc:
90 	    retval = DIRTEXT_STRING;
91 	    break;
92 	case XmPromptStringLoc:
93 	    retval = PROMPT_STRING;
94 	    break;
95 	default:
96 		/* internal error */
97 		break;
98 	}
99     return retval;
100 }
101 
102 
103 /****************************************************************/
104 Widget
_XmBB_CreateButtonG(Widget bb,XmString l_string,char * name,XmLabelStringLoc l_loc)105 _XmBB_CreateButtonG(
106         Widget bb,
107         XmString l_string,
108 	char *name,
109         XmLabelStringLoc l_loc )
110 {
111     Arg		        al[10] ;
112     register Cardinal   ac = 0 ;
113     Widget              button ;
114     XmTakesDefaultTrait trait_default ;
115     XmString            default_label_string_loc = NULL;
116 /****************/
117 
118     if(    l_string    )
119 	{
120 	    XtSetArg( al[ac], XmNlabelString, l_string) ; ac++ ;
121         }
122     else
123 	{
124 	    default_label_string_loc = XmStringCreate(GetLabelString(l_loc),
125 						      XmFONTLIST_DEFAULT_TAG);
126 	    XtSetArg( al[ac], XmNlabelString, default_label_string_loc); ac++;
127 	}
128 
129     XtSetArg( al[ac], XmNstringDirection, BB_StringDirection( bb)) ; ac++ ;
130 
131     button = XmCreatePushButtonGadget( (Widget) bb, name, al, ac) ;
132 
133     trait_default = (XmTakesDefaultTrait) XmeTraitGet((XtPointer)
134 						      XtClass(button),
135 						      XmQTtakesDefault) ;
136     if (trait_default)
137 	trait_default->showAsDefault  (button, XmDEFAULT_READY);
138 
139     if (default_label_string_loc)
140 	XmStringFree(default_label_string_loc);
141 
142     return( button ) ;
143 }
144 
145 /****************************************************************/
146 Widget
_XmBB_CreateLabelG(Widget bb,XmString l_string,char * name,XmLabelStringLoc l_loc)147 _XmBB_CreateLabelG(
148         Widget bb,
149         XmString l_string,
150         char *name,
151         XmLabelStringLoc l_loc )
152 {
153             Arg		    al[10] ;
154     register int            ac = 0 ;
155     Widget                  label ;
156     XmString                default_label_string_loc = NULL;
157 /****************/
158 
159     if(    l_string    )
160 	{
161 	    XtSetArg( al[ac], XmNlabelString, l_string) ; ac++ ;
162         }
163     else
164 	{
165 	    default_label_string_loc = XmStringCreate(GetLabelString(l_loc),
166 						      XmFONTLIST_DEFAULT_TAG);
167 	    XtSetArg( al[ac], XmNlabelString, default_label_string_loc); ac++;
168 	}
169 
170     XtSetArg( al[ac], XmNstringDirection, BB_StringDirection( bb)) ; ac++ ;
171     XtSetArg( al[ac], XmNhighlightThickness, 0) ; ac++ ;
172     XtSetArg( al[ac], XmNtraversalOn, False) ; ac++ ;
173     XtSetArg( al[ac], XmNalignment, XmALIGNMENT_BEGINNING) ; ac++ ;
174 
175     label = XmCreateLabelGadget( bb, name, al, ac);
176 
177     if (default_label_string_loc)
178 	XmStringFree(default_label_string_loc);
179 
180     return( label ) ;
181 
182 }
183 
184