1 static char *rcsid = "$Id$";
3 #include "UiIncludes.h"
6 static Widget uicreateprintformdialog();
7 static Widget uicreateprintcmd(Widget formwdg);
9 uicreateprintmargin(Widget formwdg, Widget topwdg,
10 char *name, char *labeltext, int pos);
11 static Widget uicreateprintseparator(Widget formwdg, Widget topwdg);
12 static Widget uicreateprintwidth(Widget formwdg, Widget topwdg);
13 static Widget uicreateprintfile(Widget formwdg, Widget topwdg);
14 static void uicreateprintbuttons(Widget formwdg, Widget topwdg);
15 static void uiprintmargincb(char *address, HText_t * htext,
16 HTextObject_t * htextobject,
18 static void uiprintwidthcb(char *address, HText_t * htext,
19 HTextObject_t * htextobject,
21 static void uiprintbuttoncb(char *address, HText_t * htext,
22 HTextObject_t * htextobject,
26 static uiActionData_t uiactiondata[8] =
28 {"LArrowDown", (uiPage_t *) NULL},
29 {"LArrowUp", (uiPage_t *) NULL},
30 {"RArrowDown", (uiPage_t *) NULL},
31 {"RArrowUp", (uiPage_t *) NULL},
32 {"TArrowDown", (uiPage_t *) NULL},
33 {"TArrowUp", (uiPage_t *) NULL},
34 {"BArrowDown", (uiPage_t *) NULL},
35 {"BArrowUp", (uiPage_t *) NULL}
39 static Widget uiprinttextwidget[] =
48 int UiDisplayPrintDialog(type)
51 uiPrintGfx_t *printgfx = &uiTopLevel.PrintGfx;
52 Widget separatorwdg, tmpwdg;
55 if (printgfx->FormWdg) {
56 XtMapWidget(XtParent(printgfx->FormWdg));
60 printgfx->FormWdg = uicreateprintformdialog();
62 printgfx->PrintCmdWdg = uicreateprintcmd(printgfx->FormWdg);
63 printgfx->PrintFileWdg = uicreateprintfile(printgfx->FormWdg,
64 printgfx->PrintCmdWdg);
66 printgfx->LeftMarginWdg = uicreateprintmargin(printgfx->FormWdg,
67 printgfx->PrintFileWdg,
70 printgfx->RightMarginWdg =
71 uicreateprintmargin(printgfx->FormWdg, printgfx->LeftMarginWdg,
72 "PrintRight", "Right", UI_LEFT);
73 printgfx->TopMarginWdg = uicreateprintmargin(printgfx->FormWdg,
74 printgfx->PrintFileWdg,
75 "PrintTop", "Top", UI_RIGHT);
76 printgfx->BottomMarginWdg =
77 uicreateprintmargin(printgfx->FormWdg, printgfx->TopMarginWdg,
78 "PrintBottom", "Bottom", UI_RIGHT);
80 tmpwdg = uicreateprintwidth(printgfx->FormWdg, printgfx->BottomMarginWdg);
82 separatorwdg = uicreateprintseparator(printgfx->FormWdg, tmpwdg);
83 uicreateprintbuttons(printgfx->FormWdg, separatorwdg);
84 XtManageChild(printgfx->FormWdg);
85 XtRealizeWidget(XtParent(printgfx->FormWdg));
91 void uiPrintUpdateDialog()
93 if (uiTopLevel.PrintGfx.FormWdg) {
94 if (uiPageInfo.CurrentPage) {
96 XtUnmapWidget(XtParent(uiTopLevel.PrintGfx.FormWdg));
102 uicreateprintformdialog()
109 topwdg = XtCreateApplicationShell("Print",
110 topLevelShellWidgetClass,
112 XtVaSetValues(topwdg,
113 XmNtitle, UI_PRINT_TITLE, NULL);
115 args = uiVaSetArgs(&nargs,
116 XmNresizePolicy, XmRESIZE_NONE,
117 XmNautoUnmanage, FALSE, NULL);
118 formwdg = XmCreateForm(topwdg, "Print", args, nargs);
125 uicreateprintmargin(formwdg, topwdg, name, labeltext, pos)
135 static int callnr = 0;
136 Widget marginformwdg, labelwdg;
137 Widget margindownwdg, marginupwdg, textwdg;
138 static char textvar[4][18]; /* strlen("PrintBottomMargin") */
141 args = uiVaSetArgs(&nargs,
142 XmNtopAttachment, XmATTACH_WIDGET,
143 XmNtopWidget, topwdg,
144 XmNtopOffset, UI_PRINT_WDG_OFFSET,
145 XmNleftAttachment, XmATTACH_POSITION,
146 XmNleftPosition, 5 + 50 * (pos == UI_RIGHT),
147 XmNrightAttachment, XmATTACH_POSITION,
148 XmNrightPosition, 45 + 50 * (pos == UI_RIGHT), NULL);
149 marginformwdg = XmCreateForm(formwdg, "MarginForm", args, nargs);
150 XtManageChild(marginformwdg);
152 labelstr = XmStringCreateSimple(labeltext);
153 args = uiVaSetArgs(&nargs,
154 XmNlabelString, labelstr,
155 XmNalignment, XmALIGNMENT_BEGINNING,
156 XmNtopAttachment, XmATTACH_FORM,
157 XmNleftAttachment, XmATTACH_POSITION,
159 XmNrightAttachment, XmATTACH_POSITION,
160 XmNrightPosition, 40,
161 XmNbottomAttachment, XmATTACH_FORM, NULL);
162 labelwdg = XmCreateLabelGadget(marginformwdg, "TextLabel", args, nargs);
163 XtManageChild(labelwdg);
164 XmStringFree(labelstr);
166 args = uiVaSetArgs(&nargs,
167 XmNarrowDirection, XmARROW_DOWN,
170 XmNtopAttachment, XmATTACH_POSITION,
172 XmNrightAttachment, XmATTACH_POSITION,
173 XmNrightPosition, 95,
174 XmNbottomAttachment, XmATTACH_FORM, NULL);
175 margindownwdg = XmCreateArrowButtonGadget(marginformwdg,
176 uiactiondata[callnr].ActionName,
178 uiactiondata[callnr].Page = uiPageInfo.CurrentPage;
179 XtAddCallback(margindownwdg, XmNactivateCallback,
180 (XtCallbackProc) uiDialogActivateCB,
181 (caddr_t) & uiactiondata[callnr]);
182 UiAttachCallback(uiactiondata[callnr].ActionName, uiprintmargincb,
183 uiactiondata[callnr].ActionName);
185 XtManageChild(margindownwdg);
187 args = uiVaSetArgs(&nargs,
188 XmNarrowDirection, XmARROW_UP,
191 XmNrightAttachment, XmATTACH_POSITION,
192 XmNrightPosition, 95,
193 XmNtopAttachment, XmATTACH_FORM,
194 XmNbottomAttachment, XmATTACH_POSITION,
195 XmNbottomPosition, 50, NULL);
196 marginupwdg = XmCreateArrowButtonGadget(marginformwdg, "ArrowDown",
198 uiactiondata[callnr].Page = uiPageInfo.CurrentPage;
199 XtAddCallback(marginupwdg, XmNactivateCallback,
200 (XtCallbackProc) uiDialogActivateCB,
201 (caddr_t) & uiactiondata[callnr]);
202 UiAttachCallback(uiactiondata[callnr].ActionName, uiprintmargincb,
203 uiactiondata[callnr].ActionName);
205 XtManageChild(marginupwdg);
207 text = textvar[callnr / 2 - 1];
208 sprintf(text, "%sMargin", name);
209 args = uiVaSetArgs(&nargs,
211 XmNtopAttachment, XmATTACH_FORM,
212 XmNrightAttachment, XmATTACH_WIDGET,
213 XmNrightWidget, margindownwdg,
214 XmNbottomAttachment, XmATTACH_FORM,
215 XmNvalue, "0", NULL);
216 textwdg = XmCreateText(marginformwdg, text, args, nargs);
217 uiprinttextwidget[callnr / 2 - 1] = textwdg;
218 XtAddCallback(textwdg, XmNactivateCallback,
219 (XtCallbackProc) uiDialogVariableCB, (caddr_t) text);
220 XtAddCallback(textwdg, XmNlosingFocusCallback,
221 (XtCallbackProc) uiDialogVariableCB, (caddr_t) text);
222 XtAddCallback(textwdg, XmNvalueChangedCallback,
223 (XtCallbackProc) uiDialogVariableCB, (caddr_t) text);
224 (void) uiAddWidgetInfo(text, textwdg, uiWTtext); /* ignore */
225 XtManageChild(textwdg);
227 return marginformwdg;
232 uicreateprintseparator(formwdg, topwdg)
240 args = uiVaSetArgs(&nargs,
241 XmNtopAttachment, XmATTACH_WIDGET,
242 XmNtopWidget, topwdg,
243 XmNtopOffset, UI_PRINT_WDG_OFFSET,
244 XmNleftAttachment, XmATTACH_FORM,
245 XmNrightAttachment, XmATTACH_FORM, NULL);
246 separatorwdg = XmCreateSeparatorGadget(formwdg, "PRINTSeparator",
248 XtManageChild(separatorwdg);
255 uicreateprintcmd(formwdg)
264 static uiActionData_t actiondata[2];
266 labelstr = XmStringCreateSimple("Print command");
267 args = uiVaSetArgs(&nargs,
268 XmNtopAttachment, XmATTACH_FORM,
269 XmNtopOffset, UI_PRINT_WDG_OFFSET,
270 XmNrightAttachment, XmATTACH_FORM,
271 XmNrightOffset, UI_PRINT_WDG_OFFSET,
272 XmNleftAttachment, XmATTACH_FORM,
273 XmNleftOffset, UI_PRINT_WDG_OFFSET, NULL);
274 tmpformwdg = XmCreateForm(formwdg, "PrintcmdForm", args, nargs);
275 XtManageChild(tmpformwdg);
277 args = uiVaSetArgs(&nargs,
278 XmNlabelString, labelstr,
279 XmNtopAttachment, XmATTACH_FORM,
280 XmNleftAttachment, XmATTACH_FORM,
281 XmNbottomAttachment, XmATTACH_FORM, NULL);
282 labelwdg = XmCreateLabelGadget(tmpformwdg, "Label", args, nargs);
283 XtManageChild(labelwdg);
285 args = uiVaSetArgs(&nargs,
286 XmNtopAttachment, XmATTACH_FORM,
287 XmNbottomAttachment, XmATTACH_FORM,
288 XmNrightAttachment, XmATTACH_WIDGET,
289 XmNleftAttachment, XmATTACH_WIDGET,
290 XmNleftWidget, labelwdg,
291 XmNleftOffset, UI_PRINT_WDG_OFFSET,
292 XmNvalue, "lpr", NULL);
293 textwdg = XmCreateText(tmpformwdg, "PrintCmd", args, nargs);
294 uiTopLevel.PrintGfx.WidthWdg = textwdg;
295 XtAddCallback(textwdg, XmNactivateCallback,
296 (XtCallbackProc) uiDialogVariableCB,
297 (caddr_t) "PrintCommand");
298 XtAddCallback(textwdg, XmNlosingFocusCallback,
299 (XtCallbackProc) uiDialogVariableCB,
300 (caddr_t) "PrintCommand");
301 XtAddCallback(textwdg, XmNvalueChangedCallback,
302 (XtCallbackProc) uiDialogVariableCB,
303 (caddr_t) "PrintCommand");
305 (void) uiAddWidgetInfo("PrintCommand", textwdg, uiWTtext);
306 XtManageChild(textwdg);
313 uicreateprintfile(formwdg, topwdg)
320 Widget tmpformwdg, widthwdg;
322 static uiActionData_t actiondata[2];
324 labelstr = XmStringCreateSimple("Print to a file:");
325 args = uiVaSetArgs(&nargs,
326 XmNtopAttachment, XmATTACH_WIDGET,
327 XmNtopWidget, topwdg,
328 XmNtopOffset, UI_PRINT_WDG_OFFSET,
329 XmNrightAttachment, XmATTACH_FORM,
330 XmNrightOffset, UI_PRINT_WDG_OFFSET,
331 XmNleftAttachment, XmATTACH_FORM,
332 XmNleftOffset, UI_PRINT_WDG_OFFSET, NULL);
333 tmpformwdg = XmCreateForm(formwdg, "FileForm", args, nargs);
334 XtManageChild(tmpformwdg);
336 args = uiVaSetArgs(&nargs,
337 XmNlabelString, labelstr,
338 XmNtopAttachment, XmATTACH_FORM,
339 XmNleftAttachment, XmATTACH_FORM,
340 XmNbottomAttachment, XmATTACH_FORM, NULL);
341 widthwdg = XmCreateToggleButtonGadget(tmpformwdg, "PrintToFile",
343 XtAddCallback(widthwdg, XmNvalueChangedCallback,
344 (XtCallbackProc) uiDialogVariableCB,
345 (caddr_t) "PrintToFile");
347 (void) uiAddWidgetInfo("PrintToFile", widthwdg, uiWTcheckbutton);
348 XtManageChild(widthwdg);
350 args = uiVaSetArgs(&nargs,
351 XmNtopAttachment, XmATTACH_FORM,
352 XmNbottomAttachment, XmATTACH_FORM,
353 XmNrightAttachment, XmATTACH_FORM,
354 XmNleftAttachment, XmATTACH_WIDGET,
355 XmNleftWidget, widthwdg,
356 XmNvalue, "foobar.www", NULL);
357 textwdg = XmCreateText(tmpformwdg, "PrintFileName", args, nargs);
358 uiTopLevel.PrintGfx.WidthWdg = textwdg;
359 XtAddCallback(textwdg, XmNactivateCallback,
360 (XtCallbackProc) uiDialogVariableCB,
361 (caddr_t) "PrintFileName");
362 XtAddCallback(textwdg, XmNlosingFocusCallback,
363 (XtCallbackProc) uiDialogVariableCB,
364 (caddr_t) "PrintfileName");
365 XtAddCallback(textwdg, XmNvalueChangedCallback,
366 (XtCallbackProc) uiDialogVariableCB,
367 (caddr_t) "PrintFileName");
369 (void) uiAddWidgetInfo("PrintFileName", textwdg, uiWTtext);
370 XtManageChild(textwdg);
377 uicreateprintwidth(formwdg, topwdg)
384 Widget tmpformwdg, labelwdg;
385 Widget textwdg, widthdownwdg, widthupwdg;
386 static uiActionData_t actiondata[2];
388 labelstr = XmStringCreateSimple("Width");
389 args = uiVaSetArgs(&nargs,
390 XmNtopAttachment, XmATTACH_WIDGET,
391 XmNtopWidget, topwdg,
392 XmNtopOffset, UI_PRINT_WDG_OFFSET,
393 XmNleftAttachment, XmATTACH_POSITION,
395 XmNrightAttachment, XmATTACH_POSITION,
396 XmNrightPosition, 45, NULL);
397 tmpformwdg = XmCreateForm(formwdg, "WidthForm", args, nargs);
398 XtManageChild(tmpformwdg);
400 args = uiVaSetArgs(&nargs,
401 XmNlabelString, labelstr,
402 XmNalignment, XmALIGNMENT_BEGINNING,
403 XmNtopAttachment, XmATTACH_FORM,
404 XmNleftAttachment, XmATTACH_POSITION,
406 XmNrightAttachment, XmATTACH_POSITION,
407 XmNrightPosition, 40,
408 XmNbottomAttachment, XmATTACH_FORM, NULL);
409 labelwdg = XmCreateLabelGadget(tmpformwdg, "Label", args, nargs);
410 XtManageChild(labelwdg);
412 args = uiVaSetArgs(&nargs,
413 XmNarrowDirection, XmARROW_DOWN,
416 XmNtopAttachment, XmATTACH_POSITION,
418 XmNrightAttachment, XmATTACH_POSITION,
419 XmNrightPosition, 95,
420 XmNbottomAttachment, XmATTACH_FORM, NULL);
421 widthdownwdg = XmCreateArrowButtonGadget(tmpformwdg, "WidthDown",
423 actiondata[0].ActionName = "WidthDown";
424 actiondata[0].Page = uiPageInfo.CurrentPage;
425 XtAddCallback(widthdownwdg, XmNactivateCallback,
426 (XtCallbackProc) uiDialogActivateCB,
427 (caddr_t) & actiondata[0]);
428 UiAttachCallback("WidthDown", uiprintwidthcb, "WidthDown");
429 XtManageChild(widthdownwdg);
431 args = uiVaSetArgs(&nargs,
432 XmNarrowDirection, XmARROW_UP,
435 XmNrightAttachment, XmATTACH_POSITION,
436 XmNrightPosition, 95,
437 XmNtopAttachment, XmATTACH_FORM,
438 XmNbottomAttachment, XmATTACH_POSITION,
439 XmNbottomPosition, 50, NULL);
440 widthupwdg = XmCreateArrowButtonGadget(tmpformwdg, "WidthUp",
442 actiondata[1].ActionName = "WidthUp";
443 actiondata[1].Page = uiPageInfo.CurrentPage;
444 XtAddCallback(widthupwdg, XmNactivateCallback,
445 (XtCallbackProc) uiDialogActivateCB,
446 (caddr_t) & actiondata[1]);
447 UiAttachCallback("WidthUp", uiprintwidthcb, "WidthUp");
448 XtManageChild(widthupwdg);
450 args = uiVaSetArgs(&nargs,
452 XmNtopAttachment, XmATTACH_FORM,
453 XmNrightAttachment, XmATTACH_WIDGET,
454 XmNrightWidget, widthdownwdg,
455 XmNbottomAttachment, XmATTACH_FORM,
456 XmNvalue, "80", NULL);
457 textwdg = XmCreateText(tmpformwdg, "PrintWidth", args, nargs);
458 uiTopLevel.PrintGfx.WidthWdg = textwdg;
459 XtAddCallback(textwdg, XmNactivateCallback,
460 (XtCallbackProc) uiDialogVariableCB,
461 (caddr_t) "PrintWidth");
462 XtAddCallback(textwdg, XmNlosingFocusCallback,
463 (XtCallbackProc) uiDialogVariableCB,
464 (caddr_t) "PrintWidth");
465 XtAddCallback(textwdg, XmNvalueChangedCallback,
466 (XtCallbackProc) uiDialogVariableCB,
467 (caddr_t) "PrintWidth");
469 (void) uiAddWidgetInfo("PrintWidth", textwdg, uiWTtext);
470 XtManageChild(textwdg);
476 static void uicreateprintbuttons(formwdg, topwdg)
482 Widget okwdg, closewdg;
483 static uiActionData_t actiondata[3];
485 args = uiVaSetArgs(&nargs,
486 XmNtopAttachment, XmATTACH_WIDGET,
487 XmNtopWidget, topwdg,
488 XmNtopOffset, UI_PRINT_WDG_OFFSET,
489 XmNleftAttachment, XmATTACH_POSITION,
491 XmNrightAttachment, XmATTACH_POSITION,
492 XmNrightPosition, 25,
493 XmNbottomAttachment, XmATTACH_FORM,
494 XmNbottomOffset, UI_PRINT_WDG_OFFSET, NULL);
495 okwdg = XmCreatePushButtonGadget(formwdg, "Print", args, nargs);
496 actiondata[0].ActionName = "PRINTOk";
497 actiondata[0].Page = uiPageInfo.CurrentPage;
498 XtAddCallback(okwdg, XmNactivateCallback,
499 (XtCallbackProc) uiDialogActivateCB,
500 (caddr_t) & actiondata[0]);
501 UiAttachCallback("PRINTOk", uiprintbuttoncb, "PRINTOk");
502 XtManageChild(okwdg);
504 args = uiVaSetArgs(&nargs,
505 XmNtopAttachment, XmATTACH_WIDGET,
506 XmNtopWidget, topwdg,
507 XmNtopOffset, UI_PRINT_WDG_OFFSET,
508 XmNleftAttachment, XmATTACH_POSITION,
510 XmNrightAttachment, XmATTACH_POSITION,
511 XmNrightPosition, 95,
512 XmNbottomAttachment, XmATTACH_FORM,
513 XmNbottomOffset, UI_PRINT_WDG_OFFSET, NULL);
514 closewdg = XmCreatePushButtonGadget(formwdg, "Close", args, nargs);
515 actiondata[2].ActionName = "PRINTClose";
516 actiondata[2].Page = uiPageInfo.CurrentPage;
517 XtAddCallback(closewdg, XmNactivateCallback,
518 (XtCallbackProc) uiDialogActivateCB,
519 (caddr_t) & actiondata[2]);
520 UiAttachCallback("PRINTClose", uiprintbuttoncb, "PRINTClose");
521 XtManageChild(closewdg);
526 static void uiprintmargincb(address, htext, htextobject, parameter)
529 HTextObject_t *htextobject;
538 for (i = 0; i < 8; i++)
539 if (!strcmp(uiactiondata[i].ActionName, (char *) parameter)) {
540 textwdg = uiprinttextwidget[i / 2];
541 text = XmTextGetString(textwdg);
547 sprintf(tmpbuffer, "%d", margin);
548 XmTextSetString(textwdg, tmpbuffer);
550 margin = (margin - 1) * (margin > 0);
551 sprintf(tmpbuffer, "%d", margin);
552 XmTextSetString(textwdg, tmpbuffer);
561 static void uiprintwidthcb(address, htext, htextobject, parameter)
564 HTextObject_t *htextobject;
567 Widget textwdg = uiTopLevel.PrintGfx.WidthWdg;
572 fixedtext = XmTextGetString(textwdg);
573 width = atoi(fixedtext);
575 if (!strcmp("WidthDown", (char *) parameter)) {
577 width = (width - 5) * (width > 4);
578 sprintf(tmpbuffer, "%d", width);
579 XmTextSetString(textwdg, tmpbuffer);
585 sprintf(tmpbuffer, "%d", width);
586 XmTextSetString(textwdg, tmpbuffer);
593 static void uiprintbuttoncb(address, htext, htextobject, parameter)
596 HTextObject_t *htextobject;
599 uiPage_t *page = uiPageInfo.CurrentPage;
601 if (!strcmp("PRINTOk", (char *) parameter)) {
603 XtUnmapWidget(XtParent(uiTopLevel.PrintGfx.FormWdg));
604 } else if (!strcmp("PRINTClose", (char *) parameter))
605 XtUnmapWidget(XtParent(uiTopLevel.PrintGfx.FormWdg));
606 else /* Shouldn't reach this point */
607 uiDisplayWarning("printbuttoncb called with illegal parameter");