1 /*------------------------------------------------------------\
7 | Authors : Jacomme Ludovic |
10 \------------------------------------------------------------*/
13 #include <X11/Intrinsic.h>
20 #include <Xm/DialogS.h>
27 #include "XTB_panel.h"
28 #include "XTB_dialog.h"
30 static char *XyagPanelButtonDisable
= "xxxx";
32 /*------------------------------------------------------------\
34 \------------------------------------------------------------*/
37 XyagBuildPanel(Father
, Panel
)
42 XyagPanelButtonItem
*Button
;
52 Fraction
= Panel
->ROW
* Panel
->COLUMN
;
54 XtSetArg(Args
[0], XmNshadowType
, XmSHADOW_ETCHED_IN
);
55 XtSetArg(Args
[1], XmNdeleteResponse
, XmDO_NOTHING
);
56 XtSetArg(Args
[2], XmNtitle
, Panel
->TITLE
);
58 Panel
->PANEL
= XmCreateFormDialog(Father
, Panel
->TITLE
, Args
, 3);
60 XtAddCallback(Panel
->PANEL
, XmNdestroyCallback
,
61 XyagDestroyDialogCallback
, NULL
);
63 Panel
->PANEL_FORM
= XtVaCreateManagedWidget("",
66 XmNtopAttachment
, XmATTACH_FORM
,
67 XmNbottomAttachment
, XmATTACH_FORM
,
68 XmNleftAttachment
, XmATTACH_FORM
,
69 XmNrightAttachment
, XmATTACH_FORM
,
73 Panel
->FRAME
= XtVaCreateManagedWidget("",
76 XmNtopAttachment
, XmATTACH_FORM
,
77 XmNbottomAttachment
, XmATTACH_FORM
,
78 XmNleftAttachment
, XmATTACH_FORM
,
79 XmNrightAttachment
, XmATTACH_FORM
,
82 Panel
->FORM
= XtVaCreateManagedWidget("",
85 XmNtopAttachment
, XmATTACH_FORM
,
86 XmNbottomAttachment
, XmATTACH_FORM
,
87 XmNleftAttachment
, XmATTACH_FORM
,
88 XmNrightAttachment
, XmATTACH_FORM
,
89 XmNfractionBase
, Fraction
,
93 for (Counter
= 0; Button
[Counter
].LABEL
!= NULL
; Counter
++) {
94 X1
= Button
[Counter
].X
* Panel
->ROW
;
95 Y1
= Button
[Counter
].Y
* Panel
->COLUMN
;
96 X2
= X1
+ Button
[Counter
].DX
* Panel
->ROW
;
97 Y2
= Y1
+ Button
[Counter
].DY
* Panel
->COLUMN
;
99 if (*Button
[Counter
].LABEL
[0] != '\0') {
100 Label
= *Button
[Counter
].LABEL
;
103 Label
= XyagPanelButtonDisable
;
106 if ((Button
[Counter
].TEXT
!= (char *) NULL
) &&
107 (Button
[Counter
].BITMAP
!= (char *) NULL
)) {
108 XtSetArg(Args
[0], XmNtopAttachment
, XmATTACH_POSITION
);
109 XtSetArg(Args
[1], XmNtopPosition
, Y1
);
110 XtSetArg(Args
[2], XmNbottomAttachment
, XmATTACH_POSITION
);
111 XtSetArg(Args
[3], XmNbottomPosition
, Y2
);
112 XtSetArg(Args
[4], XmNrightAttachment
, XmATTACH_POSITION
);
113 XtSetArg(Args
[5], XmNrightPosition
, X2
);
114 XtSetArg(Args
[6], XmNleftAttachment
, XmATTACH_POSITION
);
115 XtSetArg(Args
[7], XmNleftPosition
, X1
);
116 XtSetArg(Args
[8], XmNscrollBarDisplayPolicy
, XmSTATIC
);
117 XtSetArg(Args
[9], XmNscrollHorizontal
, True
);
118 XtSetArg(Args
[10], XmNscrollVertical
, True
);
119 XtSetArg(Args
[11], XmNlistSizePolicy
, XmCONSTANT
);
120 XtSetArg(Args
[12], XmNselectionPolicy
, XmMULTIPLE_SELECT
);
122 Button
[Counter
].BUTTON
= XmCreateScrolledList(Panel
->FORM
, Button
[Counter
].TEXT
, Args
, 13);
124 XtManageChild(Button
[Counter
].BUTTON
);
126 else if (Button
[Counter
].TEXT
!= (char *) NULL
) {
127 XtSetArg(Args
[0], XmNrows
, 10);
128 XtSetArg(Args
[1], XmNeditable
, False
);
129 XtSetArg(Args
[2], XmNeditMode
, XmMULTI_LINE_EDIT
);
130 XtSetArg(Args
[3], XmNcursorPositionVisible
, False
);
131 XtSetArg(Args
[4], XmNtopAttachment
, XmATTACH_POSITION
);
132 XtSetArg(Args
[5], XmNtopPosition
, Y1
);
133 XtSetArg(Args
[6], XmNleftAttachment
, XmATTACH_POSITION
);
134 XtSetArg(Args
[7], XmNleftPosition
, X1
);
135 XtSetArg(Args
[8], XmNbottomAttachment
, XmATTACH_POSITION
);
136 XtSetArg(Args
[9], XmNbottomPosition
, Y2
);
137 XtSetArg(Args
[10], XmNrightAttachment
, XmATTACH_POSITION
);
138 XtSetArg(Args
[11], XmNrightPosition
, X2
);
140 Button
[Counter
].BUTTON
= XmCreateScrolledText(Panel
->FORM
, Button
[Counter
].TEXT
, Args
, 12);
142 XtManageChild(Button
[Counter
].BUTTON
);
144 else if (Button
[Counter
].BITMAP
!= (char *) NULL
) {
145 ButtonPixmap
= XyagCreatePixmap(Father
,
146 Button
[Counter
].BITMAP
,
147 Button
[Counter
].WIDTH
,
148 Button
[Counter
].HEIGHT
);
150 Button
[Counter
].BUTTON
= XtVaCreateManagedWidget(Label
,
151 xmPushButtonWidgetClass
,
153 XmNlabelType
, XmPIXMAP
,
154 XmNlabelPixmap
, ButtonPixmap
,
155 XmNleftAttachment
, XmATTACH_POSITION
,
157 XmNrightAttachment
, XmATTACH_POSITION
,
158 XmNrightPosition
, X2
,
159 XmNtopAttachment
, XmATTACH_POSITION
,
161 XmNbottomAttachment
, XmATTACH_POSITION
,
162 XmNbottomPosition
, Y2
,
166 Button
[Counter
].BUTTON
= XtVaCreateManagedWidget(Label
,
167 xmPushButtonWidgetClass
,
169 XmNleftAttachment
, XmATTACH_POSITION
,
171 XmNrightAttachment
, XmATTACH_POSITION
,
172 XmNrightPosition
, X2
,
173 XmNtopAttachment
, XmATTACH_POSITION
,
175 XmNbottomAttachment
, XmATTACH_POSITION
,
176 XmNbottomPosition
, Y2
,
181 if (Label
!= XyagPanelButtonDisable
) {
182 if (Button
[Counter
].FOREGROUND
!= NULL
) {
183 XtVaSetValues(Button
[Counter
].BUTTON
,
184 XtVaTypedArg
, XmNforeground
,
186 *Button
[Counter
].FOREGROUND
,
187 strlen(*Button
[Counter
].FOREGROUND
) + 1,
191 if (Button
[Counter
].BACKGROUND
!= NULL
) {
192 XtVaSetValues(Button
[Counter
].BUTTON
,
193 XtVaTypedArg
, XmNbackground
,
195 *Button
[Counter
].BACKGROUND
,
196 strlen(*Button
[Counter
].BACKGROUND
) + 1,
201 if (Button
[Counter
].CALLBACK
!= NULL
) {
202 if ((Button
[Counter
].TEXT
!= (char *) NULL
) &&
203 (Button
[Counter
].BITMAP
!= (char *) NULL
)) {
204 XtAddCallback(Button
[Counter
].BUTTON
,
205 XmNdefaultActionCallback
,
206 Button
[Counter
].CALLBACK
,
209 XtAddCallback(Button
[Counter
].BUTTON
,
210 XmNmultipleSelectionCallback
,
211 Button
[Counter
].CALLBACK
,
212 Button
[Counter
].CALLDATA
);
216 XtAddCallback(Button
[Counter
].BUTTON
,
218 Button
[Counter
].CALLBACK
,
219 Button
[Counter
].CALLDATA
);
224 Button
[Counter
].BUTTON
= NULL
;
228 XtVaSetValues(Panel
->PANEL
,
232 XmNheight
, Panel
->HEIGHT
,
233 XmNwidth
, Panel
->WIDTH
,
237 /*------------------------------------------------------------\
239 \------------------------------------------------------------*/
242 XyagEnterPanel(Panel
)
243 XyagPanelItem
*Panel
;
245 XtManageChild(Panel
->PANEL
);
246 XtPopup(XtParent(Panel
->PANEL
), XtGrabNone
);
248 if (Panel
->COMPUTE
== 1) {
249 // XtVaSetValues(Panel->PANEL,
250 // XmNresizable, False,
253 // XmNheight, Panel->HEIGHT,
254 // XmNwidth, Panel->WIDTH,
263 /*------------------------------------------------------------\
265 \------------------------------------------------------------*/
269 XyagPanelItem
*Panel
;
271 XtUnmanageChild(Panel
->PANEL
);