00001
00002
00003
00004
00005
00006
00007
00008 #ifndef XM_EMC_H
00009 #define XM_EMC_H
00010
00011
00012
00013
00014
00015
00016
00017
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>
00043 #ifdef DEBUG
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
00057 #ifndef EMC_NUM_AXES
00058 #define EMC_NUM_AXES (3)
00059 #endif
00060
00061
00062
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 \
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
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
00370
00371
00372 typedef struct MenuItem
00373 {
00374 char *label;
00375 WidgetClass *wClass;
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
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
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);
00452 #endif
00453
00454
00455
00456
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
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
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;
00616 static Pixmap pixmap_off;
00617
00618 static Pixel original_tsc;
00619 static Pixel original_bsc;
00620 static Pixel original_ac;
00621 static Pixel original_bg;
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
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