home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / demos / demobook / Quit.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-08-02  |  4.9 KB  |  146 lines

  1. /*
  2.  * Copyright 1993, 1994, Silicon Graphics, Inc.
  3.  * All Rights Reserved.
  4.  *
  5.  * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
  6.  * the contents of this file may not be disclosed to third parties, copied or
  7.  * duplicated in any form, in whole or in part, without the prior written
  8.  * permission of Silicon Graphics, Inc.
  9.  *
  10.  * RESTRICTED RIGHTS LEGEND:
  11.  * Use, duplication or disclosure by the Government is subject to restrictions
  12.  * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
  13.  * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
  14.  * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
  15.  * rights reserved under the Copyright Laws of the United States.
  16.  */
  17. #include <stdio.h>
  18. #include <stdlib.h>
  19. #include <Xm/Xm.h>
  20. #include <X11/StringDefs.h>
  21. #include <Xm/Form.h>
  22. #include <Xm/SeparatoG.h>
  23. #include <Xm/PushB.h>
  24. #include <Xm/Label.h>
  25. #include "exinterfmotif.h"
  26. #include "exglobals.h"
  27.  
  28. extern char *(extract_first_xms_segment() );
  29. extern struct indexlist *(find_keyword_int() );
  30.  
  31.    Widget Quit_shell;
  32.  
  33. void savequitCB_Quit(Widget w, XtPointer client_data, XtPointer call_data);
  34. void quitCB_Quit(Widget w, XtPointer client_data, XtPointer call_data);
  35. void cancelCB_Quit(Widget w, XtPointer client_data, XtPointer call_data);
  36.  
  37. Widget create_Quit()
  38. {
  39.    Widget form2, topform;
  40.    Widget label;
  41.    Widget sep, button1, button2, button3;
  42.    Arg wargs[15];
  43.    int n;
  44.  
  45.    Quit_shell = XtVaCreatePopupShell( "Quitshell",
  46.     topLevelShellWidgetClass, DBtoplevel,
  47.     XmNtitle, "Quit", 
  48.     XmNallowShellResize, TRUE, NULL);
  49.  
  50.    n = 0;
  51.    XtSetArg (wargs[n], XmNverticalSpacing, 10); n++;
  52.    XtSetArg (wargs[n], XmNhorizontalSpacing, 10); n++;
  53.    topform = XtCreateManagedWidget("QuitTopForm", xmFormWidgetClass, 
  54.     Quit_shell, wargs, n);
  55.  
  56.    n = 0;
  57.    XtSetArg (wargs[n], XmNallowOverlap, FALSE); n++;
  58.    XtSetArg (wargs[n], XmNbottomAttachment, XmATTACH_FORM); n++;
  59.    XtSetArg (wargs[n], XmNleftAttachment, XmATTACH_FORM); n++;
  60.    XtSetArg (wargs[n], XmNrightAttachment, XmATTACH_FORM); n++;
  61.    XtSetArg (wargs[n], XmNverticalSpacing, 10); n++;
  62.    XtSetArg (wargs[n], XmNhorizontalSpacing, 10); n++;
  63.    form2 = XtCreateManagedWidget( "QuitForm", xmFormWidgetClass,
  64.     topform, wargs, n);
  65.  
  66.    n = 0;
  67.    XtSetArg (wargs[n], XmNtopOffset, 10); n++;
  68.    XtSetArg (wargs[n], XmNbottomOffset, 10); n++;
  69.    XtSetArg (wargs[n], XmNbottomAttachment, XmATTACH_FORM); n++;
  70.    XtSetArg (wargs[n], XmNleftAttachment, XmATTACH_FORM); n++;
  71.    button1 = XtCreateManagedWidget( "SaveQuitButton", xmPushButtonWidgetClass,
  72.     form2, wargs, n);
  73.    XtAddCallback( button1, XmNactivateCallback, savequitCB_Quit, NULL);
  74.  
  75.    n = 0;
  76.    XtSetArg (wargs[n], XmNtopOffset, 10); n++;
  77.    XtSetArg (wargs[n], XmNbottomOffset, 10); n++;
  78.    XtSetArg (wargs[n], XmNbottomAttachment, XmATTACH_FORM); n++;
  79.    XtSetArg (wargs[n], XmNleftAttachment, XmATTACH_WIDGET); n++;
  80.    XtSetArg (wargs[n], XmNleftWidget, button1); n++;
  81.    button2 = XtCreateManagedWidget( "QuitButton", xmPushButtonWidgetClass,
  82.     form2, wargs, n);
  83.    XtAddCallback( button2, XmNactivateCallback, quitCB_Quit, NULL);
  84.  
  85.    n = 0;
  86.    XtSetArg (wargs[n], XmNtopOffset, 10); n++;
  87.    XtSetArg (wargs[n], XmNbottomOffset, 10); n++;
  88.    XtSetArg (wargs[n], XmNbottomAttachment, XmATTACH_FORM); n++;
  89.    XtSetArg (wargs[n], XmNrightAttachment, XmATTACH_FORM); n++;
  90.    XtSetArg (wargs[n], XmNleftAttachment, XmATTACH_WIDGET); n++;
  91.    XtSetArg (wargs[n], XmNleftWidget, button2); n++;
  92.    button3 = XtCreateManagedWidget( "CancelButton", xmPushButtonWidgetClass,
  93.     form2, wargs, n);
  94.    XtAddCallback( button3, XmNactivateCallback, cancelCB_Quit, NULL);
  95.  
  96.    n = 0;
  97.    XtSetArg (wargs[n], XmNverticalSpacing, 10); n++;
  98.    XtSetArg (wargs[n], XmNleftAttachment, XmATTACH_FORM); n++;
  99.    XtSetArg (wargs[n], XmNrightAttachment, XmATTACH_FORM); n++;
  100.    XtSetArg (wargs[n], XmNbottomAttachment, XmATTACH_WIDGET); n++;
  101.    XtSetArg (wargs[n], XmNbottomWidget, form2); n++;
  102.    sep = XtCreateManagedWidget("Sep", xmSeparatorGadgetClass,
  103.     topform, wargs, n);
  104.  
  105.    n = 0;
  106.    XtSetArg (wargs[n], XmNalignment, XmALIGNMENT_CENTER); n++;
  107.    XtSetArg (wargs[n], XmNtopAttachment, XmATTACH_FORM); n++;
  108.    XtSetArg (wargs[n], XmNtopOffset, 15); n++;
  109.    XtSetArg (wargs[n], XmNrightAttachment, XmATTACH_FORM); n++;
  110.    XtSetArg (wargs[n], XmNleftAttachment, XmATTACH_FORM); n++;
  111.    XtSetArg (wargs[n], XmNbottomAttachment, XmATTACH_WIDGET); n++;
  112.    XtSetArg (wargs[n], XmNbottomWidget, sep); n++;
  113.    label = XtCreateManagedWidget("QuitLabel", xmLabelWidgetClass,
  114.     topform, wargs, n);
  115.  
  116.    XtRealizeWidget(Quit_shell);
  117.    SetWMhints(Quit_shell);
  118.    return(Quit_shell);
  119. }
  120.  
  121. void popup_Quit()
  122. {
  123.    XtPopup(Quit_w, XtGrabExclusive);
  124. }
  125.  
  126. void cancelCB_Quit(Widget w, XtPointer client_data, XtPointer call_data)
  127. {
  128.    XtPopdown(Quit_w);
  129. }
  130.  
  131. void quitCB_Quit(Widget w, XtPointer client_data, XtPointer call_data)
  132. {
  133.    XtPopdown(Quit_w);
  134.    exit(1);
  135. }
  136.  
  137. void savequitCB_Quit(Widget w, XtPointer client_data, XtPointer call_data)
  138. {
  139.    XtPopdown(Quit_w);
  140.    write_file(FileName);
  141.    exit(1);
  142. }
  143.  
  144.  
  145.  
  146.