Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

XmEmc.hh

Go to the documentation of this file.
00001 /*
00002   XmEmc.hh
00003 
00004   This is the Motif main window include file
00005 
00006 */
00007 
00008 #ifndef XM_EMC_H
00009 #define XM_EMC_H
00010 
00011 /***********************************************
00012  *   This is the include file for XmEmc.cc *
00013  *    (Not to be included in any other file)   *
00014  ***********************************************/
00015 
00016 /*****************
00017  *  The includes *
00018  *****************/
00019 
00020 #include <Xm/Xm.h>
00021 #include <Xm/Form.h>
00022 #include <Xm/Label.h>
00023 #include <Xm/LabelG.h>
00024 #include <Xm/MainW.h>
00025 #include <Xm/PanedW.h>
00026 #include <Xm/RowColumn.h>
00027 #include <Xm/Text.h>
00028 #include <Xm/PushB.h>
00029 #include <Xm/PushBP.h>
00030 #include <Xm/ToggleB.h>
00031 #include <Xm/CascadeB.h>
00032 #include <Xm/Separator.h>
00033 #include <Xm/MessageB.h>
00034 #include <Xm/FileSB.h>
00035 #include <Xm/DialogS.h>
00036 #include <Xm/PrimitiveP.h>
00037 #include <Xm/List.h>
00038 
00039 #include <X11/keysym.h>
00040 #include <X11/xpm.h>
00041 
00042 #include <stdlib.h>             /* For exit () */
00043 #ifdef DEBUG                    /* Allow cout */
00044 #include <iostream.h>
00045 #endif
00046 
00047 #ifdef XMEMC
00048 
00049 #include "estop.xpm"
00050 #include "estop_off.xpm"
00051 
00052 #include "GuiStrings.hh"
00053 #include "Jog.hh"
00054 #include "Spindle.hh"
00055 
00056 // Override the following in the Makefile
00057 #ifndef EMC_NUM_AXES
00058 #define EMC_NUM_AXES (3)
00059 #endif
00060 
00061 /**********************
00062  *  Code conveniences *
00063  **********************/
00064 
00065 #define POPUP_PULLDOWN(myWidget) \
00066    do \
00067    { \
00068    XmPrimitiveClassRec * prim; \
00069    prim = (XmPrimitiveClassRec *)XtClass(myWidget); \
00070    (*(prim->primitive_class.arm_and_activate)) (myWidget, &event, NULL, NULL); \
00071    } while (0)
00072 
00073 #define RAISE_WIDGET(myWidget) \
00074    do \
00075    { \
00076     XRaiseWindow(XtDisplay(myWidget), XtWindow(XtParent(myWidget))); \
00077    } while (0)
00078 
00079 #define POPUP_FILE_SELECTION_WIDGET(fileSelectionWidget,cbs) \
00080    do \
00081    { \
00082    XtUnmanageChild(XmFileSelectionBoxGetChild(fileSelectionWidget, XmDIALOG_HELP_BUTTON)); \
00083    XtAddCallback(fileSelectionWidget, (String)XmNokCallback, (XtCallbackProc)fileOk, (XtPointer)cbs); \
00084    XtAddCallback(fileSelectionWidget, (String)XmNcancelCallback, (XtCallbackProc)canc, (XtPointer)cbs); \
00085    XtManageChild(fileSelectionWidget); \
00086    XtPopup(XtParent(fileSelectionWidget), XtGrabExclusive); \
00087    } while (0)
00088 
00089 #define TOGGLE(button) \
00090    do \
00091    { \
00092       Pixel tsc; \
00093       Pixel bsc; \
00094       Pixel ac;  \
00095       Pixel bg;  \
00096       XtVaGetValues(button, XmNtopShadowColor, &tsc, \
00097                             XmNbottomShadowColor, &bsc, \
00098                             XmNarmColor, &ac, \
00099                             XmNbackground, &bg, \
00100                             NULL); \
00101       XtVaSetValues(button, XmNtopShadowColor, bsc, \
00102                             XmNbottomShadowColor, tsc, \
00103                             XmNarmColor, bg, \
00104                             XmNbackground, ac, \
00105                             NULL); \
00106       pb = (XmPushButtonWidget) button ; \
00107       pb->pushbutton.armed = false; \
00108    } while (0)
00109 
00110 #define UNPRESS(button) \
00111    do \
00112    { \
00113       XtVaSetValues(button, XmNbottomShadowColor, original_bsc, \
00114                             XmNtopShadowColor, original_tsc, \
00115                             XmNarmColor, original_ac, \
00116                             XmNbackground, original_bg, \
00117                             NULL);              \
00118    } while (0)
00119 
00120 #define PRESS(button) \
00121    do \
00122    { \
00123       UNPRESS(button); \
00124       TOGGLE(button); \
00125    } while (0)
00126 
00127 #define LOCK(button) \
00128    do \
00129    { \
00130       XtVaSetValues(button, XmNsensitive, False, \
00131                             NULL);              \
00132    } while (0)
00133 
00134 #define UNLOCK(button) \
00135    do \
00136    { \
00137       XtVaSetValues (button, XmNsensitive, True, \
00138                             NULL);              \
00139    } while (0)
00140 
00141 #define HIDE(button) \
00142    do \
00143    { \
00144       XtVaSetValues(button, XmNmappedWhenManaged, False, \
00145                             NULL);              \
00146    } while (0)
00147 
00148 #define SHOW(button) \
00149    do \
00150    { \
00151       XmPushButtonWidget pb; \
00152       XtVaSetValues (button, XmNmappedWhenManaged, True, \
00153                             NULL);              \
00154       pb = (XmPushButtonWidget) button ; \
00155       pb->pushbutton.armed = false; \
00156    } while (0)
00157 
00158 #define LABEL_AXIS(axis, label, value, top_attach_type, top_widget) \
00159   do { \
00160       XmStringCharSet cs = (char *) XmSTRING_DEFAULT_CHARSET; \
00161       XFontStruct *newfont = NULL; \
00162       XmFontList fontlist = NULL; \
00163       if ((newfont = XLoadQueryFont (XtDisplay (toplevel), \
00164                                      "-adobe-courier-bold-r-normal--64-*-*-*-*-*-*-1")) \
00165           == NULL) \
00166         { \
00167           newfont = XLoadQueryFont (XtDisplay (toplevel), "fixed"); \
00168         } \
00169       fontlist = XmFontListCreate (newfont, cs); \
00170       char valueChar[20]; \
00171       sprintf (valueChar, "%s%9.4f", label, value); \
00172       XmString valueLabel = \
00173         XmStringCreateLtoR ((char *) valueChar, XmSTRING_DEFAULT_CHARSET); \
00174       axis = \
00175         XtVaCreateManagedWidget ("label", xmLabelWidgetClass, axisForm, \
00176                                  XmNtopAttachment, top_attach_type, \
00177                                  XmNtopWidget, top_widget, XmNtopOffset, 5, \
00178                                  XmNbottomAttachment, XmATTACH_NONE, \
00179                                  XmNrightAttachment, XmATTACH_NONE, \
00180                                  XmNleftAttachment, XmATTACH_FORM, \
00181                                  XmNleftOffset, 5, \
00182                                  XmNwidth, 450, \
00183                                  XmNheight, 60, \
00184                                  XmNfontList, fontlist, \
00185                                  XmNlabelString, valueLabel, NULL); \
00186       XmFontListFree (fontlist); \
00187       XUnloadFont (XtDisplay (toplevel), newfont->fid); \
00188       /* XFreeFont (XtDisplay (toplevel), newfont);  This produces BadFont error */ \
00189       XmStringFree (valueLabel); \
00190   } while (0)
00191 
00192 #define AXIS_SEPARATOR() \
00193   do { \
00194     separator = \
00195       XtVaCreateManagedWidget ("separator", xmSeparatorWidgetClass, axisForm, \
00196                                XmNtopAttachment, XmATTACH_WIDGET, \
00197                                XmNtopWidget, axisWidget[i - 1], \
00198                                XmNtopOffset, 5, \
00199                                XmNbottomAttachment, XmATTACH_NONE, \
00200                                XmNleftAttachment, XmATTACH_FORM, \
00201                                XmNrightAttachment, XmATTACH_FORM, \
00202                                XmNmarginWidth, 5, XmNmarginHeight, 5, NULL); \
00203   } while (0)
00204 
00205 #define LABEL_AXIS_UPDATE(axis, label, value) \
00206   do { \
00207       char valueChar[12]; \
00208       sprintf (valueChar, "%s%9.4f", label, value); \
00209       XmString valueLabel = \
00210         XmStringCreateLtoR ((char *) valueChar, XmSTRING_DEFAULT_CHARSET); \
00211       XtVaSetValues (axis, \
00212                      XmNlabelString, valueLabel, NULL); \
00213       XmStringFree (valueLabel); \
00214   } while (0)
00215 
00216 #define THICKEN_FS_BUTTONS(fs_widget) \
00217   do { \
00218       XtVaSetValues (XmFileSelectionBoxGetChild (fs_widget, XmDIALOG_OK_BUTTON), \
00219                      XmNshadowThickness, 4, NULL); \
00220       XtVaSetValues (XmFileSelectionBoxGetChild (fs_widget, XmDIALOG_APPLY_BUTTON), \
00221                      XmNshadowThickness, 4, NULL); \
00222       XtVaSetValues (XmFileSelectionBoxGetChild (fs_widget, XmDIALOG_CANCEL_BUTTON), \
00223                      XmNshadowThickness, 4, NULL); \
00224   } while (0)
00225 
00226 #define HIDE_MANUAL() \
00227   do { \
00228   HIDE (runButton); \
00229   HIDE (limitOverride); \
00230   unsetLimitOverride (); \
00231   HIDE (jogButton); \
00232   HIDE (brakebutton); \
00233   turnMistOff ();\
00234   turnFloodOff ();\
00235   UNPRESS (mistbutton); \
00236   HIDE (mistbutton); \
00237   UNPRESS (floodbutton); \
00238   HIDE (floodbutton); \
00239   if (! isBrakeOn) \
00240     { \
00241       turnBrakeOn (); \
00242       hideSpindle (); \
00243     } \
00244   } while (0)
00245 
00246 #define HIDE_AUTO() \
00247   do { \
00248   XtVaSetValues (scrolledText, XmNmappedWhenManaged, False, NULL); \
00249   HIDE (runButton); \
00250   HIDE (pauseButton); \
00251   HIDE (stepButton); \
00252   } while (0)
00253 
00254 #define HIDE_MDI() \
00255   do { \
00256   XtVaSetValues (scrolledText, XmNmappedWhenManaged, False, NULL); \
00257   } while (0)
00258 
00259 #define SHOW_MDI() \
00260   do { \
00261   XtVaSetValues (scrolledText, XmNmappedWhenManaged, True, NULL); \
00262   SHOW (machinebutton); \
00263   } while (0)
00264 
00265 #define SHOW_MANUAL() \
00266   do { \
00267   SHOW (limitOverride); \
00268   unsetLimitOverride (); \
00269   SHOW (jogButton); \
00270   SHOW (machinebutton); \
00271   SHOW (brakebutton); \
00272   SHOW (mistbutton); \
00273   SHOW (floodbutton); \
00274   turnBrakeOn ();  \
00275   hideSpindle (); \
00276   PRESS (brakebutton); \
00277   XtVaSetValues (runModes, XmNmenuHistory, manualMode, NULL); \
00278   HIDE_AUTO (); \
00279   HIDE_MDI (); \
00280   } while (0)
00281 
00282 #define SHOW_AUTO() \
00283   do { \
00284   SHOW (runButton); \
00285   SHOW (machinebutton); \
00286   XtVaSetValues (runModes, XmNmenuHistory, autoMode, NULL); \
00287   if (! isRunning && wasAborted) \
00288     { \
00289       wasAborted = False; \
00290       TOGGLE (runButton); \
00291       UNLOCK (runButton); \
00292       UNLOCK (runModes); \
00293       UNLOCK (scrolledText); \
00294       HIDE (pauseButton); \
00295       HIDE (stepButton); \
00296       restartList (); \
00297       XmString valueLabel = XmStringCreateLtoR ((char *) RUN_STR, XmSTRING_DEFAULT_CHARSET); \
00298       XtVaSetValues (runButton, XmNlabelString, valueLabel, NULL);\
00299       XmStringFree (valueLabel);\
00300       valueLabel = XmStringCreateLtoR ((char *) PAUSE_STR, XmSTRING_DEFAULT_CHARSET); \
00301       XtVaSetValues (pauseButton, XmNlabelString, valueLabel, NULL);\
00302       XmStringFree (valueLabel);\
00303       isPaused = False; \
00304     } \
00305   SHOW (scrolledText); \
00306   } while (0)
00307 
00308 /******************
00309  *  Enum typedefs *
00310  ******************/
00311 
00312 enum
00313 {
00314   FM_NEW = 0,
00315   FM_OPEN,
00316   FM_SAVE,
00317   FM_SAVE_AS,
00318   FM_LOGGING,
00319   FM_QUIT,
00320 
00321   ED_EDIT,
00322   ED_TOOLS,
00323   ED_VARIABLES,
00324   ED_CALIBRATION_0,
00325   ED_CALIBRATION_1,
00326   ED_CALIBRATION_2,
00327   ED_CALIBRATION_3,
00328   ED_CALIBRATION_4,
00329   ED_CALIBRATION_5,
00330 
00331   VW_DIAGS_0,
00332   VW_DIAGS_1,
00333   VW_DIAGS_2,
00334   VW_DIAGS_3,
00335   VW_DIAGS_4,
00336   VW_DIAGS_5,
00337 
00338   HM_HELP,
00339   HM_ABOUT,
00340 
00341   BT_MACHINE,
00342   BT_ABORT,
00343   BT_MIST,
00344   BT_FLOOD,
00345   BT_BRAKE,
00346   BT_ESTOP,
00347   BT_RESET,
00348   BT_HOME,
00349 
00350   COORD_RELATIVE,
00351   COORD_MACHINE,
00352 
00353   POSITION_ACTUAL,
00354   POSITION_COMMANDED,
00355 
00356   DO_RUN,
00357   AUTO_MODE,
00358   MDI_MODE,
00359   MANUAL_MODE,
00360 
00361   PAUSE_RESUME,
00362   STEP,
00363 
00364   LIMIT_OVERRIDE,
00365   JOG_BUTTON,
00366 };
00367 
00368 /********************
00369  *  Struct typedefs *
00370  ********************/
00371 
00372 typedef struct MenuItem
00373 {
00374   char *label;
00375   WidgetClass *wClass;          /* pushbutton, label, separator...    */
00376   char mnemonic;
00377   char *accelerator;
00378   char *accel_text;
00379   void (*callback) (Widget, XtPointer, XtPointer);
00380   XtPointer callback_data;
00381 }
00382 MenuItem;
00383 
00384 /**************************
00385  *  Forward Declarations  *
00386  **************************/
00387 
00388 static void closeMainWindow (Widget mw, XtPointer cd, XtPointer cb);
00389 static void fileMenuCB (Widget mw, XtPointer cd, XtPointer cb);
00390 static void editMenuCB (Widget mw, XtPointer cd, XtPointer cb);
00391 static void viewMenuCB (Widget mw, XtPointer cd, XtPointer cb);
00392 static void helpMenuCB (Widget mw, XtPointer cd, XtPointer cb);
00393 
00394 void buttonsCB (Widget mw, XtPointer cd, XtPointer cb);
00395 
00396 static void quitPopup (Widget push_button, XtPointer text, XtPointer cbs);
00397 static void aboutPopup (Widget push_button, XtPointer text, XtPointer cbs);
00398 static void reallyQuit (Widget dialog, XtPointer x, XtPointer y);
00399 static void fileOpenPopup (Widget push_button, XtPointer text, XtPointer cbs);
00400 static void canc (Widget dialog, XtPointer x, XtPointer y);
00401 static void fileOk (Widget dialog, XtPointer x, XtPointer y);
00402 
00403 static void turnMachineOn (void);
00404 static void turnMachineOff (void);
00405 static void turnBrakeOn (void);
00406 static void turnBrakeOff (void);
00407 static void turnFloodOn (void);
00408 static void turnFloodOff (void);
00409 static void turnMistOn (void);
00410 static void turnMistOff (void);
00411 static void do_home (void);
00412 static void do_estop (void);
00413 
00414 static void setCoordRelative (void);
00415 static void setCoordMachine (void);
00416 static void setPosActual (void);
00417 static void setPosCommanded (void);
00418 
00419 static void restartList (void);
00420 
00421 static void call_run (void);
00422 static void setModeAuto (void);
00423 static void setModeMDI (void);
00424 static void setModeManual (void);
00425 
00426 static void call_pause (void);
00427 static void call_resume (void);
00428 static void call_step (void);
00429 
00430 static void setLimitOverride (void);
00431 static void unsetLimitOverride (void);
00432 static void showJogPopup (void);
00433 
00434 static void createAxes (void);
00435 static void createPosition (void);
00436 static void createRunModes (void);
00437 static void createScrolledText (void);
00438 static void processAbort (void);
00439 
00440 /**************************
00441  *  External Declarations *
00442  **************************/
00443 
00444 extern void run_finished (void);
00445 extern void updateAxes (void);
00446 extern double getAxisValue (int axis);
00447 extern void showRunMode (void);
00448 extern void hideRunMode (void);
00449 
00450 #ifdef NEED_GET_XM_TEXT
00451 static char *getXmText (XmString aXmString);    /* Currently unused */
00452 #endif
00453 
00454 
00455 /******************************
00456  *  Pulldown Menu definitions *
00457  ******************************/
00458 
00459 static MenuItem fileMenu[] = {
00460   {NEW_FILE_STR, &xmPushButtonWidgetClass, 'N', NULL, NULL,
00461    fileMenuCB, (XtPointer) FM_NEW},
00462   {OPEN_FILE_STR, &xmPushButtonWidgetClass, 'O', NULL, NULL,
00463    fileMenuCB, (XtPointer) FM_OPEN},
00464   {SAVE_FILE_STR, &xmPushButtonWidgetClass, 'S', NULL, NULL,
00465    fileMenuCB, (XtPointer) FM_SAVE},
00466   {SAVE_AS_FILE_STR, &xmPushButtonWidgetClass, 'A', NULL, NULL,
00467    fileMenuCB, (XtPointer) FM_SAVE_AS},
00468   {"", &xmSeparatorWidgetClass, 0, NULL, NULL,
00469    NULL, NULL},
00470   {LOGGING_FILE_STR, &xmPushButtonWidgetClass, 'L', NULL, NULL,
00471    fileMenuCB, (XtPointer) FM_LOGGING},
00472   {"", &xmSeparatorWidgetClass, 0, NULL, NULL,
00473    NULL, NULL},
00474   {QUIT_FILE_STR, &xmPushButtonWidgetClass, 'Q', NULL, NULL,
00475    fileMenuCB, (XtPointer) FM_QUIT},
00476   {NULL, NULL, 0, NULL, NULL,
00477    NULL, (XtPointer) 0},
00478 };
00479 
00480 static MenuItem editMenu[] = {
00481   {EDIT_EDIT_STR, &xmPushButtonWidgetClass, 'E', NULL, NULL,
00482    editMenuCB, (XtPointer) ED_EDIT},
00483   {TOOLS_EDIT_STR, &xmPushButtonWidgetClass, 'T', NULL, NULL,
00484    editMenuCB, (XtPointer) ED_TOOLS},
00485   {VARIABLES_EDIT_STR, &xmPushButtonWidgetClass, 'V', NULL, NULL,
00486    editMenuCB, (XtPointer) ED_VARIABLES},
00487   {CALIBRATION_0_FILE_STR, &xmPushButtonWidgetClass, '0', NULL, NULL,
00488    editMenuCB, (XtPointer) ED_CALIBRATION_0},
00489 #if (EMC_NUM_AXES > 1)
00490   {CALIBRATION_1_FILE_STR, &xmPushButtonWidgetClass, '1', NULL, NULL,
00491    editMenuCB, (XtPointer) ED_CALIBRATION_1},
00492 #if (EMC_NUM_AXES > 2)
00493   {CALIBRATION_2_FILE_STR, &xmPushButtonWidgetClass, '2', NULL, NULL,
00494    editMenuCB, (XtPointer) ED_CALIBRATION_2},
00495 #if (EMC_NUM_AXES > 3)
00496   {CALIBRATION_3_FILE_STR, &xmPushButtonWidgetClass, '3', NULL, NULL,
00497    editMenuCB, (XtPointer) ED_CALIBRATION_3},
00498 #if (EMC_NUM_AXES > 4)
00499   {CALIBRATION_4_FILE_STR, &xmPushButtonWidgetClass, '4', NULL, NULL,
00500    editMenuCB, (XtPointer) ED_CALIBRATION_4},
00501 #if (EMC_NUM_AXES > 5)
00502   {CALIBRATION_5_FILE_STR, &xmPushButtonWidgetClass, '5', NULL, NULL,
00503    editMenuCB, (XtPointer) ED_CALIBRATION_5},
00504 #endif
00505 #endif
00506 #endif
00507 #endif
00508 #endif
00509   {NULL, NULL, 0, NULL, NULL,
00510    NULL, (XtPointer) 0},
00511 };
00512 
00513 static MenuItem viewMenu[] = {
00514   {VIEW_DIAGS_0_STR, &xmPushButtonWidgetClass, '0', NULL, NULL,
00515    viewMenuCB, (XtPointer) VW_DIAGS_0},
00516 #if (EMC_NUM_AXES > 1)
00517   {VIEW_DIAGS_1_STR, &xmPushButtonWidgetClass, '1', NULL, NULL,
00518    viewMenuCB, (XtPointer) VW_DIAGS_1},
00519 #if (EMC_NUM_AXES > 2)
00520   {VIEW_DIAGS_2_STR, &xmPushButtonWidgetClass, '2', NULL, NULL,
00521    viewMenuCB, (XtPointer) VW_DIAGS_2},
00522 #if (EMC_NUM_AXES > 3)
00523   {VIEW_DIAGS_3_STR, &xmPushButtonWidgetClass, '3', NULL, NULL,
00524    viewMenuCB, (XtPointer) VW_DIAGS_3},
00525 #if (EMC_NUM_AXES > 4)
00526   {VIEW_DIAGS_4_STR, &xmPushButtonWidgetClass, '4', NULL, NULL,
00527    viewMenuCB, (XtPointer) VW_DIAGS_4},
00528 #if (EMC_NUM_AXES > 5)
00529   {VIEW_DIAGS_5_STR, &xmPushButtonWidgetClass, '5', NULL, NULL,
00530    viewMenuCB, (XtPointer) VW_DIAGS_5},
00531 #endif
00532 #endif
00533 #endif
00534 #endif
00535 #endif
00536   {NULL, NULL, 0, NULL, NULL,
00537    NULL, (XtPointer) 0},
00538 };
00539 
00540 
00541 static MenuItem helpMenu[] = {
00542   {HELP_HELP_STR, &xmPushButtonWidgetClass, 'H', NULL, NULL,
00543    helpMenuCB, (XtPointer) HM_HELP},
00544   {"", &xmSeparatorWidgetClass, 0, NULL, NULL,
00545    NULL, NULL},
00546   {ABOUT_HELP_STR, &xmPushButtonWidgetClass, 'A', NULL, NULL,
00547    helpMenuCB, (XtPointer) HM_ABOUT},
00548   {NULL, NULL, 0, NULL, NULL,
00549    NULL, (XtPointer) 0},
00550 };
00551 
00552 /**************************
00553  *  Resource definitions  *
00554  **************************/
00555 
00556 static String fallbackResources[] = {
00557   {"XmEmc*.background: #c0d9d9"},
00558   {"XmEmc*.foreground: black"},
00559   
00560     {"XmEmc*.fontList: -adobe-courier-bold-r-normal--14-140-75-75-m-90-iso8859-1"},
00561   {"XmEmc.geometry: 800x600+190+40"},
00562   NULL
00563 };
00564 
00565 /**************************
00566  *  Global Variables      *
00567  **************************/
00568 
00569 static double axisPos[6] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
00570 static char *axisStr[6] =
00571   { AXIS0_STR, AXIS1_STR, AXIS2_STR, AXIS3_STR, AXIS4_STR, AXIS5_STR };
00572 
00573 static Widget toplevel = NULL;
00574 static Widget workArea = NULL;
00575 static Widget filemenu = NULL;
00576 static Widget openfile = NULL;
00577 static Widget editedit = NULL;
00578 static Widget savefile = NULL;
00579 static Widget editmenu = NULL;
00580 static Widget viewmenu = NULL;
00581 static Widget helpmenu = NULL;
00582 static Widget quitmenu = NULL;
00583 static Widget abouthelp = NULL;
00584 static Widget buttonform = NULL;
00585 static Widget resetbutton = NULL;
00586 static Widget jog_widget = NULL;
00587 static Widget spindle_widget = NULL;
00588 static Widget axisForm = NULL;
00589 static Widget axisWidget[6] = { NULL };
00590 static Widget separator = NULL;
00591 static Widget posForm = NULL;
00592 static Widget posLabel = NULL;
00593 static Widget position = NULL;
00594 static Widget coordinates = NULL;
00595 static Widget pulldown = NULL;
00596 static Widget actual = NULL;
00597 static Widget commanded = NULL;
00598 static Widget relative = NULL;
00599 static Widget machine = NULL;
00600 
00601 static Widget runModeForm = NULL;
00602 static Widget runModes = NULL;
00603 static Widget autoMode = NULL;
00604 static Widget mdiMode = NULL;
00605 static Widget manualMode = NULL;
00606 static Widget runButton = NULL;
00607 static Widget pauseButton = NULL;
00608 static Widget stepButton = NULL;
00609 static Widget limitOverride = NULL;
00610 static Widget jogButton = NULL;
00611 static Widget scrolledText = NULL;
00612 
00613 static XmPushButtonWidget pb = NULL;
00614 
00615 static Pixmap pixmap;           // Estop available
00616 static Pixmap pixmap_off;       // Estop not needed
00617 
00618 static Pixel original_tsc;      // topShadowColor
00619 static Pixel original_bsc;      // bottomShadowColor
00620 static Pixel original_ac;       // armColor
00621 static Pixel original_bg;       // background
00622 
00623 static Bool isMachineOn = False;
00624 static Bool isMistOn = False;
00625 static Bool isBrakeOn = True;
00626 static Bool isFloodOn = False;
00627 
00628 static Bool isCoordRelative = True;
00629 static Bool isPosActual = True;
00630 static Bool isRunning = False;
00631 static Bool wasAborted = False;
00632 static Bool isPaused = False;
00633 static Bool isLimitOverriden = False;
00634 static int runMode = AUTO_MODE;
00635 
00636 // The following are external global variables:
00637 
00638 Widget estopbutton = NULL;
00639 Widget brakebutton = NULL;
00640 Widget floodbutton = NULL;
00641 Widget mistbutton = NULL;
00642 Widget machinebutton = NULL;
00643 Widget abortbutton = NULL;
00644 
00645 #else // XMEMC: external interface to the GUI
00646 
00647 extern Widget estopbutton = NULL;
00648 extern Widget brakebutton = NULL;
00649 extern Widget floodbutton = NULL;
00650 extern Widget mistbutton = NULL;
00651 extern Widget machinebutton = NULL;
00652 
00653 extern void buttonsCB (Widget mw, XtPointer cd, XtPointer cb);
00654 
00655 #endif
00656 
00657 #endif /* XM_EMC_H */

Generated on Sun Dec 2 15:27:45 2001 for EMC by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001