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 libraries 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 ************************************<+>*************************************/
49 #include <Xm/RowColumn.h>
51 #include <Xm/PushBG.h>
52 #include <Xm/CascadeB.h>
53 #include <Xm/CascadeBG.h>
58 #include <Xm/ToggleBG.h>
59 #include <Xm/RowColumn.h>
60 #include <Xm/LabelG.h>
62 /* DtHelp include header file section */
63 #include <Dt/HelpQuickD.h>
65 /* Local header file include section */
67 #include "HelpEntry.h"
68 #include "HelpCacheI.h"
69 #include "HourGlassI.h"
71 /* Internal Static Functions */
72 static Widget BuildMenus(Widget parent);
73 static void CreateMainWindow(Widget parent);
74 static void HelpMenuCB(
82 static void ManageButtonsCB(
86 static void Control1ButtonsCB(
94 static void DisplayMoreCB (
98 static void CloseAndDestroyCB (
100 XtPointer clientData,
106 /* Global variables for the Main module */
110 Widget manWidget = NULL;
111 Widget quickWidget = NULL;
113 Widget createSampleWidgetBtn, destroySampleWidgetBtn;
114 Widget controlBtn1, controlBtn2, controlBtn3, controlBtn4;
115 Widget moreButton=NULL;
118 /* toggle button status flags */
119 Boolean addMoreButton=TRUE;
120 Boolean goBigger=TRUE;
121 Boolean changeTopic=TRUE;
124 char HelpdemoHelpVol[] = "helpdemo";
126 /************************************************************************
129 * The main program for the helpdemo.
131 ************************************************************************/
139 appName = strrchr(argv[0], '/');
145 /* Initialize toolkit and open the display */
146 topLevel = XtInitialize(appName, "Dthelpdemo", NULL, 0, &argc, argv);
147 appDisplay = XtDisplay(topLevel);
151 XtWarning ("Dialogs: Can't open display, exiting...");
157 /* Build up the Widget UI for the demo app */
158 CreateMainWindow(topLevel);
165 /************************************************************************
166 * Function: CreateMainWindow
168 * This function creates a main window, calls the routine to build our
171 *************************************************************************/
172 static void CreateMainWindow(
180 Widget manageFrame, manageForm, manageTitle, radioBox;
181 Widget control1Frame, control1Form, control1Title, controlBox1;
182 Widget control2Frame, control2Form, control2Title, controlBox2;
189 XmString labelString;
191 /* Create a Main Window Widget */
194 main_window = XmCreateMainWindow (parent, "mainwindow1", args, n);
195 XtManageChild (main_window);
197 /* Build the Menus via our BuildMenus function */
198 menuBar = BuildMenus(main_window);
201 /* Create Frame in the MainWindow */
203 XtSetArg (args[n], XmNmarginWidth, 2); n++;
204 XtSetArg (args[n], XmNmarginHeight, 2); n++;
205 XtSetArg (args[n], XmNshadowThickness, 1); n++;
206 XtSetArg (args[n], XmNshadowType, XmSHADOW_OUT); n++;
207 frame = XmCreateFrame (main_window, "frame", args, n);
208 XtManageChild (frame);
211 /* Create the form */
213 form = XmCreateForm(frame, "form", args, n);
217 /****** Create the Management section Frame ******/
219 XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
220 XtSetArg (args[n], XmNtopOffset, 5); n++;
221 XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
222 XtSetArg (args[n], XmNrightOffset, 5); n++;
223 XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
224 XtSetArg (args[n], XmNleftOffset, 5); n++;
225 XtSetArg (args[n], XmNmarginWidth, 5); n++;
226 XtSetArg (args[n], XmNmarginHeight, 2); n++;
227 XtSetArg (args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
228 manageFrame = XmCreateFrame(form, "manageFrame", args, n);
229 XtManageChild (manageFrame);
231 manageForm = XmCreateForm (manageFrame,"manageForm", NULL, 0);
232 XtManageChild (manageForm);
234 XtAddCallback(manageForm, XmNhelpCallback,
235 HelpCB, CREATE_FRAME);
237 /* create the frame title */
238 labelString = XmStringCreateLocalized("Help Widget Management");
240 XtSetArg (args[n], XmNlabelString, labelString); n++;
241 XtSetArg (args[n], XmNchildType, XmFRAME_TITLE_CHILD); n++;
242 XtSetArg (args[n], XmNtraversalOn, False); n++;
243 manageTitle = XmCreateLabelGadget(manageFrame,"manageTitle",args,n);
244 XtManageChild (manageTitle);
245 XmStringFree (labelString);
247 /* Create the Radio Box widget to hold the toggle buttons */
249 XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
250 XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
251 XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
252 radioBox = XmCreateRadioBox(manageForm, "radioBox", args, n);
253 XtManageChild (radioBox);
256 /* Create the Create Widget button */
257 labelString = XmStringCreateLocalized("Create Sample Help Widget");
259 XtSetArg (args[n], XmNlabelString, labelString); n++;
260 createSampleWidgetBtn =
261 XmCreateToggleButtonGadget(radioBox,"createSampleWidgetBtn",args,n);
262 XtManageChild (createSampleWidgetBtn);
263 XmStringFree (labelString);
265 XtAddCallback(createSampleWidgetBtn, XmNarmCallback,
266 ManageButtonsCB, (XtPointer)CREATE_SAMPLE);
270 /* Create the Create Widget button */
271 labelString = XmStringCreateLocalized("Destroy Sample Help Widget");
273 XtSetArg (args[n], XmNlabelString, labelString); n++;
274 destroySampleWidgetBtn =
275 XmCreateToggleButtonGadget(radioBox,"destroySampleWidgetBtn",args,n);
276 XtManageChild (destroySampleWidgetBtn);
277 XmStringFree (labelString);
279 XtSetSensitive(destroySampleWidgetBtn, FALSE);
282 XtAddCallback(destroySampleWidgetBtn, XmNarmCallback,
283 ManageButtonsCB, (XtPointer)DESTROY_SAMPLE);
287 /****** Create the Control1 section Frame ******/
289 XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++;
290 XtSetArg (args[n], XmNtopWidget, manageFrame); n++;
291 XtSetArg (args[n], XmNtopOffset, 5); n++;
292 XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
293 XtSetArg (args[n], XmNrightOffset, 5); n++;
294 XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
295 XtSetArg (args[n], XmNleftOffset, 5); n++;
296 XtSetArg (args[n], XmNmarginWidth, 5); n++;
297 XtSetArg (args[n], XmNmarginHeight, 2); n++;
298 XtSetArg (args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
299 control1Frame = XmCreateFrame(form, "control1Frame", args, n);
300 XtManageChild (control1Frame);
302 control1Form = XmCreateForm (control1Frame,"control1Form", NULL, 0);
303 XtManageChild (control1Form);
306 XtAddCallback(control1Form, XmNhelpCallback,
307 HelpCB, CONTROL1_FRAME);
309 /* create the frame title */
310 labelString = XmStringCreateLocalized("Controlling the Help Widgets");
312 XtSetArg (args[n], XmNlabelString, labelString); n++;
313 XtSetArg (args[n], XmNchildType, XmFRAME_TITLE_CHILD); n++;
314 XtSetArg (args[n], XmNtraversalOn, False); n++;
315 control1Title = XmCreateLabelGadget(control1Frame,"control1Title",args,n);
316 XtManageChild (control1Title);
317 XmStringFree (labelString);
319 /* Create the Radio Box widget to hold the toggle buttons */
321 XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
322 XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
323 XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
324 controlBox1 = XmCreateRowColumn(control1Form, "controlBox1", args, n);
325 XtManageChild (controlBox1);
328 /* Create the Create Widget button */
329 labelString = XmStringCreateLocalized("Change the Content");
331 XtSetArg (args[n], XmNlabelString, labelString); n++;
333 XmCreateToggleButtonGadget(controlBox1,"controlBtn1",args,n);
334 XtManageChild (controlBtn1);
335 XmStringFree (labelString);
336 XtSetSensitive(controlBtn1, FALSE);
338 XtAddCallback(controlBtn1, XmNarmCallback,
339 Control1ButtonsCB, (XtPointer)CHANGE_CONTENT);
341 /* Change Size button*/
342 labelString = XmStringCreateLocalized("Change the Size");
344 XtSetArg (args[n], XmNlabelString, labelString); n++;
346 XmCreateToggleButtonGadget(controlBox1,"controlBtn2",args,n);
347 XtManageChild (controlBtn2);
348 XmStringFree (labelString);
349 XtSetSensitive(controlBtn2, FALSE);
353 XtAddCallback(controlBtn2, XmNarmCallback,
354 Control1ButtonsCB, (XtPointer)CHANGE_SIZE);
359 labelString = XmStringCreateLocalized("Control the User Interface");
361 XtSetArg (args[n], XmNlabelString, labelString); n++;
363 XmCreateToggleButtonGadget(controlBox1,"controlBtn3",args,n);
364 XtManageChild (controlBtn3);
365 XmStringFree (labelString);
366 XtSetSensitive(controlBtn3, FALSE);
369 XtAddCallback(controlBtn3, XmNarmCallback,
370 Control1ButtonsCB, (XtPointer)CHANGE_GUI);
374 /****** Create the Control2 section Frame ******/
376 XtSetArg (args[n], XmNtopAttachment, XmATTACH_WIDGET); n++;
377 XtSetArg (args[n], XmNtopWidget, control1Frame); n++;
378 XtSetArg (args[n], XmNtopOffset, 5); n++;
379 XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
380 XtSetArg (args[n], XmNrightOffset, 5); n++;
381 XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
382 XtSetArg (args[n], XmNleftOffset, 5); n++;
383 XtSetArg (args[n], XmNmarginWidth, 5); n++;
384 XtSetArg (args[n], XmNmarginHeight, 2); n++;
385 XtSetArg (args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
386 control2Frame = XmCreateFrame(form, "control2Frame", args, n);
387 XtManageChild (control2Frame);
389 control2Form = XmCreateForm (control2Frame,"control2Form", NULL, 0);
390 XtManageChild (control2Form);
392 XtAddCallback(control2Form, XmNhelpCallback,
393 HelpCB, CONTROL2_FRAME);
396 /* create the frame title */
398 XmStringCreateLocalized ("Controlling the Client Via Help Widgets");
400 XtSetArg (args[n], XmNlabelString, labelString); n++;
401 XtSetArg (args[n], XmNchildType, XmFRAME_TITLE_CHILD); n++;
402 XtSetArg (args[n], XmNtraversalOn, False); n++;
403 control2Title = XmCreateLabelGadget(control2Frame,"control2Title",args,n);
404 XtManageChild (control2Title);
405 XmStringFree (labelString);
407 /* Create the Radio Box widget to hold the toggle buttons */
409 XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
410 XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
411 XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
412 controlBox2 = XmCreateRowColumn(control2Form, "controlBox2", args, n);
413 XtManageChild (controlBox2);
416 /* Create the Create Widget button */
417 labelString = XmStringCreateLocalized("Client controled hypertext links");
419 XtSetArg (args[n], XmNlabelString, labelString); n++;
421 XmCreatePushButtonGadget(controlBox2,"controlBtn4",args,n);
422 XtManageChild (controlBtn4);
423 XmStringFree (labelString);
425 XtAddCallback(controlBtn4, XmNarmCallback,
426 Control1ButtonsCB, (XtPointer)SHOW_APP_DEFINED_LINKS);
432 /* Set MainWindow areas */
433 XmMainWindowSetAreas (main_window, menuBar, NULL, NULL, NULL, frame);
436 /* Force a size to the form */
439 XtSetArg(args[n], XmNwidth, 400); n++;
440 XtSetArg(args[n], XmNheight, 200); n++;
441 XtSetValues(form, args, n);
443 XtRealizeWidget (parent);
446 } /* End CreateMainWindow */
450 /*********************************************************************
451 * Function: BuildMenus
453 * This procedure builds the menubar pulldows for our demo program
455 *********************************************************************/
456 static Widget BuildMenus(
463 Widget menupane1, menupane2;
465 Widget helpBtn1, helpBtn2, helpBtn3;
472 menuBar = XmCreateMenuBar (parent, "menuBar", args, 0);
473 XtManageChild (menuBar);
476 /*******************************************************
477 * Menupane: Exit, and related buttons
478 *******************************************************/
481 XtSetArg(args[n], XmNmarginWidth, 0); ++n;
482 XtSetArg(args[n], XmNmarginHeight, 0); ++n;
483 menupane1 = XmCreatePulldownMenu(menuBar, "menupane1", args, n);
487 labelStr = XmStringCreateLocalized("Exit");
488 accText = XmStringCreateLocalized("<Ctrl>X");
492 XtSetArg(args[n], XmNaccelerator,"Ctrl <Key>X"); n++;
493 XtSetArg(args[n], XmNlabelString, labelStr); n++;
494 XtSetArg(args[n], XmNacceleratorText ,accText); n++;
495 XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++;
497 XmCreatePushButtonGadget(menupane1,"fileBtn1", args, n);
499 XtAddCallback(fileBtn1, XmNactivateCallback, CloseCB,(XtPointer) NULL);
502 XmStringFree(accText);
503 XmStringFree(labelStr);
505 XtManageChildren(c, 1);
508 /*******************************************************
509 * Menupane: Help, and related buttons
510 *******************************************************/
512 XtSetArg(args[n], XmNmarginWidth, 0); ++n;
513 XtSetArg(args[n], XmNmarginHeight, 0); ++n;
514 menupane2 = XmCreatePulldownMenu(menuBar, "menupane2", args, n);
517 /* Item help button */
518 labelStr = XmStringCreateLocalized("On Item");
519 accText = XmStringCreateLocalized("<Ctrl>I");
523 XtSetArg(args[n], XmNaccelerator,"Ctrl <Key>I"); n++;
524 XtSetArg(args[n], XmNlabelString, labelStr); n++;
525 XtSetArg(args[n], XmNacceleratorText ,accText); n++;
526 XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++;
527 c[0] = helpBtn1 = XmCreatePushButtonGadget(menupane2,"helpBtn1", args, n);
528 XtAddCallback(helpBtn1, XmNactivateCallback,
529 HelpMenuCB, (XtPointer)HELP_ON_ITEM);
531 XmStringFree(accText);
532 XmStringFree(labelStr);
536 /* On application button */
537 labelStr = XmStringCreateLocalized("On Application");
538 accText = XmStringCreateLocalized("<Ctrl>A");
542 XtSetArg(args[n], XmNaccelerator,"Ctrl <Key>A"); n++;
543 XtSetArg(args[n], XmNlabelString, labelStr); n++;
544 XtSetArg(args[n], XmNacceleratorText ,accText); n++;
545 XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++;
546 c[1] = helpBtn2 = XmCreatePushButtonGadget(menupane2,
547 "helpBtn2", args, n);
548 XmStringFree(accText);
549 XmStringFree(labelStr);
551 XtAddCallback(helpBtn2, XmNactivateCallback,
552 HelpMenuCB, (XtPointer)HELP_ON_TOPIC);
555 /* On Version button */
556 labelStr = XmStringCreateLocalized("On Version");
557 accText = XmStringCreateLocalized("<Ctrl>V");
561 XtSetArg(args[n], XmNaccelerator,"Ctrl <Key>V"); n++;
562 XtSetArg(args[n], XmNlabelString, labelStr); n++;
563 XtSetArg(args[n], XmNacceleratorText ,accText); n++;
564 XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++;
565 c[2] = helpBtn3 = XmCreatePushButtonGadget(menupane2,
567 XtAddCallback(helpBtn3, XmNactivateCallback,
568 HelpMenuCB, (XtPointer)HELP_ON_VERSION);
570 XmStringFree(accText);
571 XmStringFree(labelStr);
573 XtManageChildren(c, 3);
576 /* Create Cascade buttons for menubar */
577 labelStr = XmStringCreateLocalized("File");
580 XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++;
581 XtSetArg(args[n], XmNsubMenuId, menupane1); n++;
582 XtSetArg(args[n], XmNlabelString, labelStr); n++;
583 c[0] = XmCreateCascadeButton(menuBar,"cascadeB1",args, n);
584 XmStringFree(labelStr);
587 labelStr = XmStringCreateLocalized("Help");
590 XtSetArg(args[n], XmNmnemonic, mnemonic[0]); n++;
591 XtSetArg(args[n], XmNsubMenuId, menupane2); n++;
592 XtSetArg(args[n], XmNlabelString, labelStr); n++;
593 c[1] = cascadeB2 = XmCreateCascadeButton(menuBar, "cascadeB2",
595 XmStringFree(labelStr);
597 XtManageChildren(c, 2);
600 /* Attaches the Help menupane to the right side */
602 XtSetArg (args[n], XmNmenuHelpWidget, cascadeB2); n++;
603 XtSetValues (menuBar, args, n);
608 } /* End BuildMenus */
612 /*********************************************************************
613 * Function: ManageButtonsCallback
617 *********************************************************************/
618 static void ManageButtonsCB(
620 XtPointer clientData,
626 Widget helpWidget, printWidget;
628 TurnOnHourGlass(topLevel);
630 switch ((long)clientData)
634 XtSetSensitive(destroySampleWidgetBtn, TRUE);
635 XtSetSensitive(createSampleWidgetBtn, FALSE);
636 XtSetSensitive(controlBtn1, TRUE);
637 XtSetSensitive(controlBtn2, TRUE);
638 XtSetSensitive(controlBtn3, TRUE);
640 /* Set the state of our toggle buttons */
641 XmToggleButtonSetState(destroySampleWidgetBtn, FALSE, FALSE);
643 if (quickWidget==NULL)
646 while (!XtIsSubclass(dp, applicationShellWidgetClass))
650 XtSetArg (args[n], XmNtitle, "Quick Dialog Sample"); n++;
651 XtSetArg (args[n], DtNhelpVolume,HelpdemoHelpVol); n++;
652 XtSetArg (args[n], DtNhelpType, DtHELP_TYPE_TOPIC); n++;
653 XtSetArg (args[n], DtNlocationId, APP_MENU_ID); n++;
654 quickWidget = DtCreateHelpQuickDialog(dp,"quickWidget",args, n);
657 XtAddCallback(quickWidget, DtNcloseCallback,
658 CloseAndDestroyCB, (XtPointer)NULL);
660 /* Add the popup position callback to our main help dialog */
661 XtAddCallback (XtParent(quickWidget), XmNpopupCallback,
662 (XtCallbackProc)HelpMapCB,
665 /* Add our hypertext callback here */
666 XtAddCallback(quickWidget, DtNhyperLinkCallback,
667 ProcessLinkCB, NULL);
671 /* We do not want a print button for now so we unmap it */
672 printWidget = DtHelpQuickDialogGetChild (quickWidget,
673 DtHELP_QUICK_PRINT_BUTTON);
674 XtUnmanageChild (printWidget);
677 /* We do not want a help button for now so we unmap it */
678 helpWidget = DtHelpQuickDialogGetChild (quickWidget,
679 DtHELP_QUICK_HELP_BUTTON);
680 XtUnmanageChild (helpWidget);
682 XtManageChild(quickWidget);
689 XtSetSensitive(destroySampleWidgetBtn, FALSE);
690 XtSetSensitive(createSampleWidgetBtn, TRUE);
691 XtSetSensitive(controlBtn1, FALSE);
692 XtSetSensitive(controlBtn2, FALSE);
693 XtSetSensitive(controlBtn3, FALSE);
696 /* Set the state of our toggle buttons */
697 XmToggleButtonSetState(createSampleWidgetBtn, FALSE, FALSE);
698 XmToggleButtonSetState(controlBtn1, FALSE, FALSE);
699 XmToggleButtonSetState(controlBtn2, FALSE, FALSE);
700 XmToggleButtonSetState(controlBtn3, FALSE, FALSE);
703 /* Reinitialize our toggle button state flags */
709 if (quickWidget != NULL)
710 XtDestroyWidget(quickWidget);
720 } /* End of switch statement */
722 TurnOffHourGlass(topLevel);
731 /*********************************************************************
732 * Function: ManageButtonsCallback
736 *********************************************************************/
737 static void Control1ButtonsCB(
739 XtPointer clientData,
745 static Dimension columns=0;
746 static Dimension rows=0;
749 TurnOnHourGlass(topLevel);
751 switch ((long)clientData)
755 /* Show a man page */
759 XtSetArg (args[n], DtNhelpType, DtHELP_TYPE_TOPIC); n++;
760 XtSetArg (args[n], DtNlocationId, CREATE_FRAME); n++;
761 XtSetValues(quickWidget, args, n);
768 XtSetArg (args[n], DtNhelpType, DtHELP_TYPE_TOPIC); n++;
769 XtSetArg (args[n], DtNlocationId, APP_MENU_ID); n++;
770 XtSetValues(quickWidget, args, n);
778 if (moreButton == NULL)
780 /* Get the more buttion child */
781 moreButton = DtHelpQuickDialogGetChild(quickWidget,
782 DtHELP_QUICK_MORE_BUTTON);
784 XtAddCallback(moreButton, XmNactivateCallback,
785 DisplayMoreCB, (XtPointer)NULL);
793 /* manage the child */
794 XtManageChild(moreButton);
795 addMoreButton = FALSE;
799 /* unmanage more button */
800 XtUnmanageChild(moreButton);
801 addMoreButton = TRUE;
811 /* Get the current dialog size */
813 XtSetArg (args[n], DtNcolumns, &columns); n++;
814 XtSetArg (args[n], DtNrows, &rows); n++;
815 XtGetValues(quickWidget, args, n);
821 XtSetArg (args[n], DtNcolumns, columns+5); n++;
822 XtSetArg (args[n], DtNrows, rows+5); n++;
823 XtSetValues(quickWidget, args, n);
830 XtSetArg (args[n], DtNcolumns, columns); n++;
831 XtSetArg (args[n], DtNrows, rows); n++;
832 XtSetValues(quickWidget, args, n);
839 case SHOW_APP_DEFINED_LINKS:
841 /* display the general dialog w/more help in it */
842 DisplayMain (parent, HelpdemoHelpVol, CONTROL2_FRAME);
850 } /* End of switch statement */
853 TurnOffHourGlass(topLevel);
859 /*********************************************************************
860 * Function: HelpMenuCB
862 * Description: This is the callback that is called when the user selects
863 * any of the help menu items.
865 *********************************************************************/
866 static void HelpMenuCB(
868 XtPointer clientData,
872 Widget selWidget=NULL;
877 int status=DtHELP_SELECT_ERROR;
881 TurnOnHourGlass(topLevel);
884 /* Determine which help button was activated and display the
885 * appropriate help information */
887 switch ((long)clientData)
890 while (!XtIsSubclass(widget, applicationShellWidgetClass))
891 widget = XtParent(widget);
894 status = DtHelpReturnSelectedWidgetId(widget, 0, &selWidget);
898 case DtHELP_SELECT_ERROR:
899 printf("Selection Error, cannot continue\n");
901 case DtHELP_SELECT_VALID:
902 while (selWidget != NULL)
904 if ((XtHasCallbacks(selWidget, XmNhelpCallback)
905 == XtCallbackHasSome))
907 XtCallCallbacks((Widget)selWidget,
908 XmNhelpCallback,NULL);
912 selWidget = XtParent(selWidget);
915 case DtHELP_SELECT_ABORT:
916 printf("Selection Aborted by user.\n");
918 case DtHELP_SELECT_INVALID:
919 printf("You must select a component within your app.\n");
927 DisplayMain (widget, HelpdemoHelpVol, APP_MENU_ID);
931 case HELP_ON_VERSION:
932 DisplayVersion (widget, HelpdemoHelpVol, VER_MENU_ID);
939 } /* End of switch statement */
941 TurnOffHourGlass(topLevel);
949 /*********************************************************************
952 * Description: This is the callback that is called when the user selects
953 * item help or F1 key help
955 *********************************************************************/
958 XtPointer clientData,
962 char * locationId = (char *) clientData;
966 /* Just display the proper help based on the id string passed in */
967 /* We pass in a NULL for our helpVolume because and let the value
968 * defined in the app-defaults file be used.
971 DisplayMain (widget, HelpdemoHelpVol, locationId);
979 /*********************************************************************
982 * Description: This is the callback that is called when the user selects
983 * the Exit menu button.
985 *********************************************************************/
986 static void CloseCB (
988 XtPointer clientData,
1000 /*********************************************************************
1001 * Function: DisplayMoreCB
1003 * Description: Handles the selection of the more button added to the
1004 * sample quick help dialog widget. It causes a
1005 * general help dialog to be posted w/more informaion in it.
1007 *********************************************************************/
1008 static void DisplayMoreCB (
1010 XtPointer clientData,
1015 /* display the general dialog w/more help in it */
1016 DisplayMain (w, HelpdemoHelpVol, MORE_BTN_ID);
1025 /*********************************************************************
1026 * Function: CloseAndDestroyCB
1028 * Description: Closes and destroys our sample quick help dialog widget.
1030 *********************************************************************/
1031 static void CloseAndDestroyCB (
1033 XtPointer clientData,
1038 /* Close and destroy the our quick dialog test widget */
1039 XtUnmanageChild (quickWidget);
1040 XtDestroyWidget(quickWidget);
1043 /* reinitialize our global sample widget, and associated moreButton */
1049 XtSetSensitive(destroySampleWidgetBtn, FALSE);
1050 XtSetSensitive(createSampleWidgetBtn, TRUE);
1051 XtSetSensitive(controlBtn1, FALSE);
1052 XtSetSensitive(controlBtn2, FALSE);
1053 XtSetSensitive(controlBtn3, FALSE);
1055 /* Set the state of our toggle buttons */
1056 XmToggleButtonSetState(createSampleWidgetBtn, FALSE, FALSE);
1058 XmToggleButtonSetState(controlBtn1, FALSE, FALSE);
1059 XmToggleButtonSetState(controlBtn2, FALSE, FALSE);
1060 XmToggleButtonSetState(controlBtn3, FALSE, FALSE);
1063 /* Reinitialize our toggle button state flags */