2 * CDE - Common Desktop Environment
4 * Copyright (c) 1993-2012, The Open Group. All rights reserved.
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)
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
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with these librararies and programs; if not, write
20 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21 * Floor, Boston, MA 02110-1301 USA
23 /* $TOG: Main.c /main/4 1998/08/05 11:46:03 mgreess $ */
24 /*************************************<+>*************************************
25 *****************************************************************************
29 ** Project: CDE dthelpdemo sample program.
31 ** Description: This file contains the demo source for the helpdemo
35 ** (c) Copyright 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994
36 ** Hewlett-Packard Company
37 ** (c) Copyright 1993, 1994 International Business Machines Corp.
38 ** (c) Copyright 1993, 1994 Sun Microsystems, Inc.
39 ** (c) Copyright 1993, 1994 Unix System Labs, Inc., a subsidiary of
42 ****************************************************************************
43 ************************************<+>*************************************/
46 #include <Xm/RowColumn.h>
48 #include <Xm/PushBG.h>
49 #include <Xm/CascadeB.h>
50 #include <Xm/CascadeBG.h>
55 #include <Xm/ToggleBG.h>
56 #include <Xm/RowColumn.h>
57 #include <Xm/LabelG.h>
59 /* DtHelp include header file section */
60 #include <Dt/HelpQuickD.h>
62 /* Local header file include section */
64 #include "HelpEntry.h"
65 #include "HelpCacheI.h"
66 #include "HourGlassI.h"
68 /* Internal Static Functions */
69 static Widget BuildMenus(Widget parent);
70 static void CreateMainWindow(Widget parent);
71 static void HelpMenuCB(
79 static void ManageButtonsCB(
83 static void Control1ButtonsCB(
91 static void DisplayMoreCB (
95 static void CloseAndDestroyCB (
103 /* Global variables for the Main module */
107 Widget manWidget = NULL;
108 Widget quickWidget = NULL;
110 Widget createSampleWidgetBtn, destroySampleWidgetBtn;
111 Widget controlBtn1, controlBtn2, controlBtn3, controlBtn4;
112 Widget moreButton=NULL;
115 /* toggle button status flags */
116 Boolean addMoreButton=TRUE;
117 Boolean goBigger=TRUE;
118 Boolean changeTopic=TRUE;
121 char HelpdemoHelpVol[] = "helpdemo";
123 /************************************************************************
126 * The main program for the helpdemo.
128 ************************************************************************/
136 appName = strrchr(argv[0], '/');
142 /* Initialize toolkit and open the display */
143 topLevel = XtInitialize(appName, "Dthelpdemo", NULL, 0, &argc, argv);
144 appDisplay = XtDisplay(topLevel);
148 XtWarning ("Dialogs: Can't open display, exiting...");
154 /* Build up the Widget UI for the demo app */
155 CreateMainWindow(topLevel);
162 /************************************************************************
163 * Function: CreateMainWindow
165 * This function creates a main window, calls the routine to build our
168 *************************************************************************/
169 static void CreateMainWindow(
177 Widget manageFrame, manageForm, manageTitle, radioBox;
178 Widget control1Frame, control1Form, control1Title, controlBox1;
179 Widget control2Frame, control2Form, control2Title, controlBox2;
186 XmString labelString;
188 /* Create a Main Window Widget */
191 main_window = XmCreateMainWindow (parent, "mainwindow1", args, n);
192 XtManageChild (main_window);
194 /* Build the Menus via our BuildMenus function */
195 menuBar = BuildMenus(main_window);
198 /* Create Frame in the MainWindow */
200 XtSetArg (args[n], XmNmarginWidth, 2); n++;
201 XtSetArg (args[n], XmNmarginHeight, 2); n++;
202 XtSetArg (args[n], XmNshadowThickness, 1); n++;
203 XtSetArg (args[n], XmNshadowType, XmSHADOW_OUT); n++;
204 frame = XmCreateFrame (main_window, "frame", args, n);
205 XtManageChild (frame);
208 /* Create the form */
210 form = XmCreateForm(frame, "form", args, n);
214 /****** Create the Management section Frame ******/
216 XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
217 XtSetArg (args[n], XmNtopOffset, 5); n++;
218 XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
219 XtSetArg (args[n], XmNrightOffset, 5); n++;
220 XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
221 XtSetArg (args[n], XmNleftOffset, 5); n++;
222 XtSetArg (args[n], XmNmarginWidth, 5); n++;
223 XtSetArg (args[n], XmNmarginHeight, 2); n++;
224 XtSetArg (args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
225 manageFrame = XmCreateFrame(form, "manageFrame", args, n);
226 XtManageChild (manageFrame);
228 manageForm = XmCreateForm (manageFrame,"manageForm", NULL, 0);
229 XtManageChild (manageForm);
231 XtAddCallback(manageForm, XmNhelpCallback,
232 HelpCB, CREATE_FRAME);
234 /* create the frame title */
235 labelString = XmStringCreateLocalized("Help Widget Management");
237 XtSetArg (args[n], XmNlabelString, labelString); n++;
238 XtSetArg (args[n], XmNchildType, XmFRAME_TITLE_CHILD); n++;
239 XtSetArg (args[n], XmNtraversalOn, False); n++;
240 manageTitle = XmCreateLabelGadget(manageFrame,"manageTitle",args,n);
241 XtManageChild (manageTitle);
242 XmStringFree (labelString);
244 /* Create the Radio Box widget to hold the toggle buttons */
246 XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
247 XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
248 XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
249 radioBox = XmCreateRadioBox(manageForm, "radioBox", args, n);
250 XtManageChild (radioBox);
253 /* Create the Create Widget button */
254 labelString = XmStringCreateLocalized("Create Sample Help Widget");
256 XtSetArg (args[n], XmNlabelString, labelString); n++;
257 createSampleWidgetBtn =
258 XmCreateToggleButtonGadget(radioBox,"createSampleWidgetBtn",args,n);
259 XtManageChild (createSampleWidgetBtn);
260 XmStringFree (labelString);
262 XtAddCallback(createSampleWidgetBtn, XmNarmCallback,
263 ManageButtonsCB, (XtPointer)CREATE_SAMPLE);
267 /* Create the Create Widget button */
268 labelString = XmStringCreateLocalized("Destroy Sample Help Widget");
270 XtSetArg (args[n], XmNlabelString, labelString); n++;
271 destroySampleWidgetBtn =
272 XmCreateToggleButtonGadget(radioBox,"destroySampleWidgetBtn",args,n);
273 XtManageChild (destroySampleWidgetBtn);
274 XmStringFree (labelString);
276 XtSetSensitive(destroySampleWidgetBtn, FALSE);
279 XtAddCallback(destroySampleWidgetBtn, XmNarmCallback,
280 ManageButtonsCB, (XtPointer)DESTROY_SAMPLE);
284 /****** Create the Control1 section Frame ******/
286 XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++;
287 XtSetArg (args[n], XmNtopWidget, manageFrame); n++;
288 XtSetArg (args[n], XmNtopOffset, 5); n++;
289 XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
290 XtSetArg (args[n], XmNrightOffset, 5); n++;
291 XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
292 XtSetArg (args[n], XmNleftOffset, 5); n++;
293 XtSetArg (args[n], XmNmarginWidth, 5); n++;
294 XtSetArg (args[n], XmNmarginHeight, 2); n++;
295 XtSetArg (args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
296 control1Frame = XmCreateFrame(form, "control1Frame", args, n);
297 XtManageChild (control1Frame);
299 control1Form = XmCreateForm (control1Frame,"control1Form", NULL, 0);
300 XtManageChild (control1Form);
303 XtAddCallback(control1Form, XmNhelpCallback,
304 HelpCB, CONTROL1_FRAME);
306 /* create the frame title */
307 labelString = XmStringCreateLocalized("Controlling the Help Widgets");
309 XtSetArg (args[n], XmNlabelString, labelString); n++;
310 XtSetArg (args[n], XmNchildType, XmFRAME_TITLE_CHILD); n++;
311 XtSetArg (args[n], XmNtraversalOn, False); n++;
312 control1Title = XmCreateLabelGadget(control1Frame,"control1Title",args,n);
313 XtManageChild (control1Title);
314 XmStringFree (labelString);
316 /* Create the Radio Box widget to hold the toggle buttons */
318 XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
319 XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
320 XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
321 controlBox1 = XmCreateRowColumn(control1Form, "controlBox1", args, n);
322 XtManageChild (controlBox1);
325 /* Create the Create Widget button */
326 labelString = XmStringCreateLocalized("Change the Content");
328 XtSetArg (args[n], XmNlabelString, labelString); n++;
330 XmCreateToggleButtonGadget(controlBox1,"controlBtn1",args,n);
331 XtManageChild (controlBtn1);
332 XmStringFree (labelString);
333 XtSetSensitive(controlBtn1, FALSE);
335 XtAddCallback(controlBtn1, XmNarmCallback,
336 Control1ButtonsCB, (XtPointer)CHANGE_CONTENT);
338 /* Change Size button*/
339 labelString = XmStringCreateLocalized("Change the Size");
341 XtSetArg (args[n], XmNlabelString, labelString); n++;
343 XmCreateToggleButtonGadget(controlBox1,"controlBtn2",args,n);
344 XtManageChild (controlBtn2);
345 XmStringFree (labelString);
346 XtSetSensitive(controlBtn2, FALSE);
350 XtAddCallback(controlBtn2, XmNarmCallback,
351 Control1ButtonsCB, (XtPointer)CHANGE_SIZE);
356 labelString = XmStringCreateLocalized("Control the User Interface");
358 XtSetArg (args[n], XmNlabelString, labelString); n++;
360 XmCreateToggleButtonGadget(controlBox1,"controlBtn3",args,n);
361 XtManageChild (controlBtn3);
362 XmStringFree (labelString);
363 XtSetSensitive(controlBtn3, FALSE);
366 XtAddCallback(controlBtn3, XmNarmCallback,
367 Control1ButtonsCB, (XtPointer)CHANGE_GUI);
371 /****** Create the Control2 section Frame ******/
373 XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++;
374 XtSetArg (args[n], XmNtopWidget, control1Frame); n++;
375 XtSetArg (args[n], XmNtopOffset, 5); n++;
376 XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
377 XtSetArg (args[n], XmNrightOffset, 5); n++;
378 XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
379 XtSetArg (args[n], XmNleftOffset, 5); n++;
380 XtSetArg (args[n], XmNmarginWidth, 5); n++;
381 XtSetArg (args[n], XmNmarginHeight, 2); n++;
382 XtSetArg (args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
383 control2Frame = XmCreateFrame(form, "control2Frame", args, n);
384 XtManageChild (control2Frame);
386 control2Form = XmCreateForm (control2Frame,"control2Form", NULL, 0);
387 XtManageChild (control2Form);
389 XtAddCallback(control2Form, XmNhelpCallback,
390 HelpCB, CONTROL2_FRAME);
393 /* create the frame title */
395 XmStringCreateLocalized ("Controlling the Client Via Help Widgets");
397 XtSetArg (args[n], XmNlabelString, labelString); n++;
398 XtSetArg (args[n], XmNchildType, XmFRAME_TITLE_CHILD); n++;
399 XtSetArg (args[n], XmNtraversalOn, False); n++;
400 control2Title = XmCreateLabelGadget(control2Frame,"control2Title",args,n);
401 XtManageChild (control2Title);
402 XmStringFree (labelString);
404 /* Create the Radio Box widget to hold the toggle buttons */
406 XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
407 XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
408 XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
409 controlBox2 = XmCreateRowColumn(control2Form, "controlBox2", args, n);
410 XtManageChild (controlBox2);
413 /* Create the Create Widget button */
414 labelString = XmStringCreateLocalized("Client controled hypertext links");
416 XtSetArg (args[n], XmNlabelString, labelString); n++;
418 XmCreatePushButtonGadget(controlBox2,"controlBtn4",args,n);
419 XtManageChild (controlBtn4);
420 XmStringFree (labelString);
422 XtAddCallback(controlBtn4, XmNarmCallback,
423 Control1ButtonsCB, (XtPointer)SHOW_APP_DEFINED_LINKS);
429 /* Set MainWindow areas */
430 XmMainWindowSetAreas (main_window, menuBar, NULL, NULL, NULL, frame);
433 /* Force a size to the form */
436 XtSetArg(args[n], XmNwidth, 400); n++;
437 XtSetArg(args[n], XmNheight, 200); n++;
438 XtSetValues(form, args, n);
440 XtRealizeWidget (parent);
443 } /* End CreateMainWindow */
447 /*********************************************************************
448 * Function: BuildMenus
450 * This procedure builds the menubar pulldows for our demo program
452 *********************************************************************/
453 static Widget BuildMenus(
460 Widget menupane1, menupane2;
462 Widget helpBtn1, helpBtn2, helpBtn3;
469 menuBar = XmCreateMenuBar (parent, "menuBar", args, 0);
470 XtManageChild (menuBar);
473 /*******************************************************
474 * Menupane: Exit, and related buttons
475 *******************************************************/
478 XtSetArg(args[n], XmNmarginWidth, 0); ++n;
479 XtSetArg(args[n], XmNmarginHeight, 0); ++n;
480 menupane1 = XmCreatePulldownMenu(menuBar, "menupane1", args, n);
484 labelStr = XmStringCreateLocalized("Exit");
485 accText = XmStringCreateLocalized("<Ctrl>X");
489 XtSetArg(args[n], XmNaccelerator,"Ctrl <Key>X"); n++;
490 XtSetArg(args[n], XmNlabelString, labelStr); n++;
491 XtSetArg(args[n], XmNacceleratorText ,accText); n++;
492 XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++;
494 XmCreatePushButtonGadget(menupane1,"fileBtn1", args, n);
496 XtAddCallback(fileBtn1, XmNactivateCallback, CloseCB,(XtPointer) NULL);
499 XmStringFree(accText);
500 XmStringFree(labelStr);
502 XtManageChildren(c, 1);
505 /*******************************************************
506 * Menupane: Help, and related buttons
507 *******************************************************/
509 XtSetArg(args[n], XmNmarginWidth, 0); ++n;
510 XtSetArg(args[n], XmNmarginHeight, 0); ++n;
511 menupane2 = XmCreatePulldownMenu(menuBar, "menupane2", args, n);
514 /* Item help button */
515 labelStr = XmStringCreateLocalized("On Item");
516 accText = XmStringCreateLocalized("<Ctrl>I");
520 XtSetArg(args[n], XmNaccelerator,"Ctrl <Key>I"); n++;
521 XtSetArg(args[n], XmNlabelString, labelStr); n++;
522 XtSetArg(args[n], XmNacceleratorText ,accText); n++;
523 XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++;
524 c[0] = helpBtn1 = XmCreatePushButtonGadget(menupane2,"helpBtn1", args, n);
525 XtAddCallback(helpBtn1, XmNactivateCallback,
526 HelpMenuCB, (XtPointer)HELP_ON_ITEM);
528 XmStringFree(accText);
529 XmStringFree(labelStr);
533 /* On application button */
534 labelStr = XmStringCreateLocalized("On Application");
535 accText = XmStringCreateLocalized("<Ctrl>A");
539 XtSetArg(args[n], XmNaccelerator,"Ctrl <Key>A"); n++;
540 XtSetArg(args[n], XmNlabelString, labelStr); n++;
541 XtSetArg(args[n], XmNacceleratorText ,accText); n++;
542 XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++;
543 c[1] = helpBtn2 = XmCreatePushButtonGadget(menupane2,
544 "helpBtn2", args, n);
545 XmStringFree(accText);
546 XmStringFree(labelStr);
548 XtAddCallback(helpBtn2, XmNactivateCallback,
549 HelpMenuCB, (XtPointer)HELP_ON_TOPIC);
552 /* On Version button */
553 labelStr = XmStringCreateLocalized("On Version");
554 accText = XmStringCreateLocalized("<Ctrl>V");
558 XtSetArg(args[n], XmNaccelerator,"Ctrl <Key>V"); n++;
559 XtSetArg(args[n], XmNlabelString, labelStr); n++;
560 XtSetArg(args[n], XmNacceleratorText ,accText); n++;
561 XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++;
562 c[2] = helpBtn3 = XmCreatePushButtonGadget(menupane2,
564 XtAddCallback(helpBtn3, XmNactivateCallback,
565 HelpMenuCB, (XtPointer)HELP_ON_VERSION);
567 XmStringFree(accText);
568 XmStringFree(labelStr);
570 XtManageChildren(c, 3);
573 /* Create Cascade buttons for menubar */
574 labelStr = XmStringCreateLocalized("File");
577 XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++;
578 XtSetArg(args[n], XmNsubMenuId, menupane1); n++;
579 XtSetArg(args[n], XmNlabelString, labelStr); n++;
580 c[0] = XmCreateCascadeButton(menuBar,"cascadeB1",args, n);
581 XmStringFree(labelStr);
584 labelStr = XmStringCreateLocalized("Help");
587 XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++;
588 XtSetArg(args[n], XmNsubMenuId, menupane2); n++;
589 XtSetArg(args[n], XmNlabelString, labelStr); n++;
590 c[1] = cascadeB2 = XmCreateCascadeButton(menuBar, "cascadeB2",
592 XmStringFree(labelStr);
594 XtManageChildren(c, 2);
597 /* Attaches the Help menupane to the right side */
599 XtSetArg (args[n], XmNmenuHelpWidget, cascadeB2); n++;
600 XtSetValues (menuBar, args, n);
605 } /* End BuildMenus */
609 /*********************************************************************
610 * Function: ManageButtonsCallback
614 *********************************************************************/
615 static void ManageButtonsCB(
617 XtPointer clientData,
623 Widget helpWidget, printWidget;
625 TurnOnHourGlass(topLevel);
627 switch ((int)clientData)
631 XtSetSensitive(destroySampleWidgetBtn, TRUE);
632 XtSetSensitive(createSampleWidgetBtn, FALSE);
633 XtSetSensitive(controlBtn1, TRUE);
634 XtSetSensitive(controlBtn2, TRUE);
635 XtSetSensitive(controlBtn3, TRUE);
637 /* Set the state of our toggle buttons */
638 XmToggleButtonSetState(destroySampleWidgetBtn, FALSE, FALSE);
640 if (quickWidget==NULL)
643 while (!XtIsSubclass(dp, applicationShellWidgetClass))
647 XtSetArg (args[n], XmNtitle, "Quick Dialog Sample"); n++;
648 XtSetArg (args[n], DtNhelpVolume,HelpdemoHelpVol); n++;
649 XtSetArg (args[n], DtNhelpType, DtHELP_TYPE_TOPIC); n++;
650 XtSetArg (args[n], DtNlocationId, APP_MENU_ID); n++;
651 quickWidget = DtCreateHelpQuickDialog(dp,"quickWidget",args, n);
654 XtAddCallback(quickWidget, DtNcloseCallback,
655 CloseAndDestroyCB, (XtPointer)NULL);
657 /* Add the popup position callback to our main help dialog */
658 XtAddCallback (XtParent(quickWidget), XmNpopupCallback,
659 (XtCallbackProc)HelpMapCB,
662 /* Add our hypertext callback here */
663 XtAddCallback(quickWidget, DtNhyperLinkCallback,
664 ProcessLinkCB, NULL);
668 /* We do not want a print button for now so we unmap it */
669 printWidget = DtHelpQuickDialogGetChild (quickWidget,
670 DtHELP_QUICK_PRINT_BUTTON);
671 XtUnmanageChild (printWidget);
674 /* We do not want a help button for now so we unmap it */
675 helpWidget = DtHelpQuickDialogGetChild (quickWidget,
676 DtHELP_QUICK_HELP_BUTTON);
677 XtUnmanageChild (helpWidget);
679 XtManageChild(quickWidget);
686 XtSetSensitive(destroySampleWidgetBtn, FALSE);
687 XtSetSensitive(createSampleWidgetBtn, TRUE);
688 XtSetSensitive(controlBtn1, FALSE);
689 XtSetSensitive(controlBtn2, FALSE);
690 XtSetSensitive(controlBtn3, FALSE);
693 /* Set the state of our toggle buttons */
694 XmToggleButtonSetState(createSampleWidgetBtn, FALSE, FALSE);
695 XmToggleButtonSetState(controlBtn1, FALSE, FALSE);
696 XmToggleButtonSetState(controlBtn2, FALSE, FALSE);
697 XmToggleButtonSetState(controlBtn3, FALSE, FALSE);
700 /* Reinitialize our toggle button state flags */
706 if (quickWidget != NULL)
707 XtDestroyWidget(quickWidget);
717 } /* End of switch statement */
719 TurnOffHourGlass(topLevel);
728 /*********************************************************************
729 * Function: ManageButtonsCallback
733 *********************************************************************/
734 static void Control1ButtonsCB(
736 XtPointer clientData,
742 static Dimension columns=0;
743 static Dimension rows=0;
746 TurnOnHourGlass(topLevel);
748 switch ((int)clientData)
752 /* Show a man page */
756 XtSetArg (args[n], DtNhelpType, DtHELP_TYPE_TOPIC); n++;
757 XtSetArg (args[n], DtNlocationId, CREATE_FRAME); n++;
758 XtSetValues(quickWidget, args, n);
765 XtSetArg (args[n], DtNhelpType, DtHELP_TYPE_TOPIC); n++;
766 XtSetArg (args[n], DtNlocationId, APP_MENU_ID); n++;
767 XtSetValues(quickWidget, args, n);
775 if (moreButton == NULL)
777 /* Get the more buttion child */
778 moreButton = DtHelpQuickDialogGetChild(quickWidget,
779 DtHELP_QUICK_MORE_BUTTON);
781 XtAddCallback(moreButton, XmNactivateCallback,
782 DisplayMoreCB, (XtPointer)NULL);
790 /* manage the child */
791 XtManageChild(moreButton);
792 addMoreButton = FALSE;
796 /* unmanage more button */
797 XtUnmanageChild(moreButton);
798 addMoreButton = TRUE;
808 /* Get the current dialog size */
810 XtSetArg (args[n], DtNcolumns, &columns); n++;
811 XtSetArg (args[n], DtNrows, &rows); n++;
812 XtGetValues(quickWidget, args, n);
818 XtSetArg (args[n], DtNcolumns, columns+5); n++;
819 XtSetArg (args[n], DtNrows, rows+5); n++;
820 XtSetValues(quickWidget, args, n);
827 XtSetArg (args[n], DtNcolumns, columns); n++;
828 XtSetArg (args[n], DtNrows, rows); n++;
829 XtSetValues(quickWidget, args, n);
836 case SHOW_APP_DEFINED_LINKS:
838 /* display the general dialog w/more help in it */
839 DisplayMain (parent, HelpdemoHelpVol, CONTROL2_FRAME);
847 } /* End of switch statement */
850 TurnOffHourGlass(topLevel);
856 /*********************************************************************
857 * Function: HelpMenuCB
859 * Description: This is the callback that is called when the user selects
860 * any of the help menu items.
862 *********************************************************************/
863 static void HelpMenuCB(
865 XtPointer clientData,
869 Widget selWidget=NULL;
874 int status=DtHELP_SELECT_ERROR;
878 TurnOnHourGlass(topLevel);
881 /* Determine which help button was activated and display the
882 * appropriate help information */
884 switch ((int)clientData)
887 while (!XtIsSubclass(widget, applicationShellWidgetClass))
888 widget = XtParent(widget);
891 status = DtHelpReturnSelectedWidgetId(widget, NULL, &selWidget);
895 case DtHELP_SELECT_ERROR:
896 printf("Selection Error, cannot continue\n");
898 case DtHELP_SELECT_VALID:
899 while (selWidget != NULL)
901 if ((XtHasCallbacks(selWidget, XmNhelpCallback)
902 == XtCallbackHasSome))
904 XtCallCallbacks((Widget)selWidget,
905 XmNhelpCallback,NULL);
909 selWidget = XtParent(selWidget);
912 case DtHELP_SELECT_ABORT:
913 printf("Selection Aborted by user.\n");
915 case DtHELP_SELECT_INVALID:
916 printf("You must select a component within your app.\n");
924 DisplayMain (widget, HelpdemoHelpVol, APP_MENU_ID);
928 case HELP_ON_VERSION:
929 DisplayVersion (widget, HelpdemoHelpVol, VER_MENU_ID);
936 } /* End of switch statement */
938 TurnOffHourGlass(topLevel);
946 /*********************************************************************
949 * Description: This is the callback that is called when the user selects
950 * item help or F1 key help
952 *********************************************************************/
955 XtPointer clientData,
959 char * locationId = (char *) clientData;
963 /* Just display the proper help based on the id string passed in */
964 /* We pass in a NULL for our helpVolume because and let the value
965 * defined in the app-defaults file be used.
968 DisplayMain (widget, HelpdemoHelpVol, locationId);
976 /*********************************************************************
979 * Description: This is the callback that is called when the user selects
980 * the Exit menu button.
982 *********************************************************************/
983 static void CloseCB (
985 XtPointer clientData,
997 /*********************************************************************
998 * Function: DisplayMoreCB
1000 * Description: Handles the selection of the more button added to the
1001 * sample quick help dialog widget. It causes a
1002 * general help dialog to be posted w/more informaion in it.
1004 *********************************************************************/
1005 static void DisplayMoreCB (
1007 XtPointer clientData,
1012 /* display the general dialog w/more help in it */
1013 DisplayMain (w, HelpdemoHelpVol, MORE_BTN_ID);
1022 /*********************************************************************
1023 * Function: CloseAndDestroyCB
1025 * Description: Closes and destroys our sample quick help dialog widget.
1027 *********************************************************************/
1028 static void CloseAndDestroyCB (
1030 XtPointer clientData,
1035 /* Close and destroy the our quick dialog test widget */
1036 XtUnmanageChild (quickWidget);
1037 XtDestroyWidget(quickWidget);
1040 /* reinitialize our global sample widget, and associated moreButton */
1046 XtSetSensitive(destroySampleWidgetBtn, FALSE);
1047 XtSetSensitive(createSampleWidgetBtn, TRUE);
1048 XtSetSensitive(controlBtn1, FALSE);
1049 XtSetSensitive(controlBtn2, FALSE);
1050 XtSetSensitive(controlBtn3, FALSE);
1052 /* Set the state of our toggle buttons */
1053 XmToggleButtonSetState(createSampleWidgetBtn, FALSE, FALSE);
1055 XmToggleButtonSetState(controlBtn1, FALSE, FALSE);
1056 XmToggleButtonSetState(controlBtn2, FALSE, FALSE);
1057 XmToggleButtonSetState(controlBtn3, FALSE, FALSE);
1060 /* Reinitialize our toggle button state flags */