00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #define _XMENU_WIND_SOURCE_
00024
00025 #include <stdio.h>
00026 #include <stdlib.h>
00027
00028 #include "setup.h"
00029
00030 #include "agenda.h"
00031 #include "globldef.h"
00032 #include "genrcfun.h"
00033 #include "defins.h"
00034 #include "classcom.h"
00035 #include "commline.h"
00036 #include "dffctdef.h"
00037 #include "dffnxfun.h"
00038 #include "engine.h"
00039 #include "genrccom.h"
00040 #include "insfun.h"
00041 #include "moduldef.h"
00042 #include "msgcom.h"
00043 #include "object.h"
00044 #include "router.h"
00045 #include "rulebsc.h"
00046 #include "ruledef.h"
00047 #include "tmpltbsc.h"
00048 #include "tmpltdef.h"
00049
00050 #include "xsetup.h"
00051 #include "xmenu_wind.h"
00052 #include "xclips.h"
00053 #include "xmain.h"
00054 #include "xmenu_file.h"
00055 #include "xclipstext.h"
00056
00057
00058 static char **IntGetModuleList(void);
00059 static void DoneSelectDefmoduleCallback(Widget,XtPointer,XtPointer);
00060 static void DefmoduleSelectCallback(Widget,XtPointer,XtPointer);
00061 static void DefglobalRemoveCallback(Widget,XtPointer,XtPointer);
00062 static void DefglobalPprintCallback(Widget,XtPointer,XtPointer);
00063 static void AgendaRemove(Widget,XtPointer,XtPointer);
00064 static void AgendaFire(Widget,XtPointer,XtPointer);
00065 static void DefruleRemoveCallback(Widget,XtPointer,XtPointer);
00066 static void DefruleMatchesCallback(Widget,XtPointer,XtPointer);
00067 static void DefrulePprintCallback(Widget,XtPointer,XtPointer);
00068 static void DefruleRefreshCallback(Widget,XtPointer,XtPointer);
00069 static void DeffactsRemove(Widget,XtPointer,XtPointer);
00070 static void DeffactsPprint(Widget,XtPointer,XtPointer);
00071 static void DeftemplateRemove(Widget,XtPointer,XtPointer);
00072 static void DeftemplatePprint(Widget,XtPointer,XtPointer);
00073 static void DeffunctionRemoveCallback(Widget,XtPointer,XtPointer);
00074 static void DeffunctionPprintCallback(Widget,XtPointer,XtPointer);
00075 static void DefgenericRemoveCallback(Widget,XtPointer,XtPointer);
00076 static void DefgenericPprintCallback(Widget,XtPointer,XtPointer);
00077 static void DefgenericWatchCallback(Widget,XtPointer,XtPointer);
00078 static void DefgenericMngrCheckBoxCallback(Widget,XtPointer,XtPointer);
00079 static void DefgenericMethodCallback(Widget,XtPointer,XtPointer);
00080 static void RemoveDefmethodCallback(Widget,XtPointer,XtPointer);
00081 static void DefmethodPprintCallback(Widget,XtPointer,XtPointer);
00082 static void DefmethodWatchCallback(Widget,XtPointer,XtPointer);
00083 static void DefmethodMngrCheckBoxCallback(Widget,XtPointer,XtPointer);
00084 static void DefinstancesRemoveCallback(Widget,XtPointer,XtPointer);
00085 static void DefinstancesPprintCallback(Widget,XtPointer,XtPointer);
00086 static void DefclassRemoveCallback(Widget,XtPointer,XtPointer);
00087 static void DefclassDescribeCallback(Widget,XtPointer,XtPointer);
00088 static void DefclassBrowseCallback(Widget,XtPointer,XtPointer);
00089 static void DefclassPprintCallback(Widget,XtPointer,XtPointer);
00090 static void DefclassMessageHandlersCallback(Widget,XtPointer,XtPointer);
00091 static void RemoveMessageHandlerCallback(Widget,XtPointer,XtPointer);
00092 static void MessageHandlerPprintCallback(Widget,XtPointer,XtPointer);
00093 static void CancelSelectSecondary(Widget,XtPointer,XtPointer);
00094 static void DefruleBreakPointCallback(Widget,XtPointer,XtPointer);
00095 static void DefruleActivationCallback(Widget,XtPointer,XtPointer);
00096 static void DefruleFiringsCallback(Widget,XtPointer,XtPointer);
00097 static void DefruleMngrCheckboxesCallback(Widget,XtPointer,XtPointer);
00098 static void WatchInstancesCallback(Widget,XtPointer,XtPointer);
00099 static void WatchSlotCallback(Widget,XtPointer,XtPointer);
00100 static void DefclssMngrChckbxCallback(Widget,XtPointer,XtPointer);
00101 static void DeftemplateWatchCallback(Widget,XtPointer,XtPointer);
00102 static void DeftemplateMngrCheckboxCallback(Widget,XtPointer,XtPointer);
00103 static void DeffunctionWatchCallback(Widget,XtPointer,XtPointer);
00104 static void DeffunctionMngrCheckboxCallback(Widget,XtPointer,XtPointer);
00105 static void DefmessHdlrMngrWatchCallback(Widget,XtPointer,XtPointer);
00106 static void DefmessHdlrMngrCheckBoxCallback(Widget,XtPointer,XtPointer);
00107
00108
00109 Widget agenda = NULL,agenda_form = NULL, agenda_text = NULL, facts = NULL, facts_form = NULL,
00110 facts_text = NULL,instances = NULL,instances_form = NULL,
00111 instances_text = NULL,globals = NULL,globals_form = NULL,
00112 globals_text = NULL,focus = NULL, focus_form = NULL,focus_text = NULL;
00113
00114 char *xclips_translation2 =
00115 "\
00116 Ctrl<Key>D: no-op() \n\
00117 Ctrl<Key>G: no-op() \n\
00118 Ctrl<Key>J: no-op() \n\
00119 Ctrl<Key>K: no-op() \n\
00120 Ctrl<Key>M: no-op() \n\
00121 Ctrl<Key>O: no-op() \n\
00122 Ctrl<Key>R: search(forward) \n\
00123 Meta<Key>Q: no-op() \n\
00124 :Meta<Key>d: no-op() \n\
00125 :Meta<Key>D: no-op() \n\
00126 :Meta<Key>h: no-op() \n\
00127 :Meta<Key>H: no-op() \n\
00128 :Meta<Key>]: no-op() \n\
00129 :Meta<Key>[: no-op() \n\
00130 ~Shift Meta<Key>Delete: no-op() \n\
00131 Shift Meta<Key>Delete: no-op() \n\
00132 ~Shift Meta<Key>BackSpace: no-op() \n\
00133 Shift Meta<Key>BackSpace: no-op() \n\
00134 <Key>Return: no-op() \n\
00135 <Key>Delete: no-op() \n\
00136 <Key>BackSpace: no-op() \n\
00137 <Key>: no-op() \n\
00138 <Btn2Down>: no-op() \n\
00139 ";
00140
00141
00142 Boolean list_change = False;
00143 Boolean list1_change = False;
00144 static Widget manager_list, manager_list1;
00145 static Boolean defrulemanager_flag = False;
00146 static Boolean deffactsmanager_flag = False;
00147 static Boolean deftemplatemanager_flag = False;
00148 static Boolean deffunctionmanager_flag = False;
00149 static Boolean defglobalmanager_flag = False;
00150 static Boolean defgenericmanager_flag = False;
00151 static Boolean defmethodmanager_flag = False;
00152 static Boolean definstancesmanager_flag = False;
00153 static Boolean defclassmanager_flag = False;
00154 static Boolean agendamanager_flag = False;
00155 static Boolean defmessagehandler_flag = False;
00156 Widget facts_window, agenda_window,instances_window, globals_window,focus_window;
00157 static String curr_def_name;
00158 String *item_list;
00159 String *item_list1;
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170 void ModuleCallback(
00171 Widget w,
00172 XtPointer client_data,
00173 XtPointer call_data)
00174 {
00175 void *theEnv = GetCurrentEnvironment();
00176 static char **moduleList = NULL;
00177 char *ModuleName;
00178 int i = 0;
00179 Widget defmoduleShell = NULL, defmoduleForm = NULL, defmoduleViewport = NULL,
00180 defmoduleList = NULL, done = NULL;
00181
00182
00183
00184
00185
00186 moduleList = IntGetModuleList();
00187
00188
00189
00190
00191
00192 defmoduleShell = XtCreatePopupShell("Defmodule",
00193 topLevelShellWidgetClass,
00194 toplevel,
00195 NULL, 0);
00196 defmoduleForm = XtCreateManagedWidget("manager_form",
00197 formWidgetClass,
00198 defmoduleShell,
00199 NULL, 0);
00200 XtSetArg(TheArgs[0],XtNallowHoriz,True);
00201 XtSetArg(TheArgs[1],XtNallowVert,True);
00202 defmoduleViewport = XtCreateManagedWidget("manager_viewport",
00203 viewportWidgetClass,
00204 defmoduleForm,
00205 TheArgs,2);
00206 if (moduleList == NULL)
00207 {
00208 moduleList = (char**)balloc(2,String);
00209 moduleList[0] = "";
00210 moduleList[1] = NULL;
00211 }
00212 else
00213 {
00214 ModuleName = EnvGetDefmoduleName(theEnv,(struct defmodule*) EnvGetCurrentModule(theEnv));
00215 for (i = 0; moduleList[i] != NULL;)
00216 {
00217 if (strcmp(ModuleName,moduleList[i]) == 0)
00218 { break; }
00219 i++;
00220 }
00221 }
00222
00223 XtSetArg(TheArgs[0],XtNlist,moduleList);
00224 defmoduleList = XtCreateManagedWidget("manager_list",
00225 listWidgetClass,
00226 defmoduleViewport,
00227 TheArgs, 1);
00228
00229
00230
00231
00232
00233 XawListHighlight(defmoduleList,i);
00234
00235 XtAddCallback(defmoduleList,XtNcallback,
00236 DefmoduleSelectCallback,defmoduleList);
00237
00238
00239
00240
00241
00242 XtSetArg(TheArgs[0], XtNlabel,"Done");
00243 XtSetArg(TheArgs[1], XtNfromHoriz, defmoduleViewport);
00244 done = XtCreateManagedWidget("managerButton",
00245 commandWidgetClass,
00246 defmoduleForm,
00247 TheArgs,2);
00248 XtAddCallback(done,XtNcallback,DoneSelectDefmoduleCallback,moduleList);
00249 XtPopup(defmoduleShell, XtGrabNonexclusive);
00250 }
00251
00252
00253
00254
00255
00256
00257
00258 static char **IntGetModuleList()
00259 {
00260 void *theEnv = GetCurrentEnvironment();
00261 int maxItems = 20, itemCount = 0;
00262 char* name;
00263 static char **itemList = NULL;
00264 struct defmodule *theDefmodule = NULL;
00265
00266 if ((theDefmodule = (struct defmodule *) EnvGetNextDefmodule(theEnv,NULL)) == NULL)
00267 { return(NULL); }
00268
00269 itemList = (String *)calloc(maxItems,sizeof(String));
00270 while( theDefmodule != NULL)
00271 {
00272 name = EnvGetDefmoduleName(theEnv,theDefmodule);
00273 itemList[itemCount] = balloc(strlen(name) + 1,char);
00274 strcpy(itemList[itemCount],name);
00275 itemCount++;
00276 if (itemCount == (maxItems - 1))
00277 {
00278 maxItems = 2*maxItems;
00279 itemList = (String *)realloc(itemList,maxItems * sizeof(String));
00280 }
00281 theDefmodule = (struct defmodule *)EnvGetNextDefmodule(theEnv,theDefmodule);
00282 }
00283 itemList[itemCount] = NULL;
00284
00285 return(itemList);
00286 }
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296 static void DoneSelectDefmoduleCallback(
00297 Widget w,
00298 XtPointer client_data,
00299 XtPointer call_data)
00300 {
00301 char** list = (char**)client_data;
00302 int i = 0;
00303
00304 XtDestroyWidget(XtParent(XtParent(w)));
00305 if(list == NULL)
00306 return;
00307 while(list[i] != NULL)
00308 {
00309 free(list[i]);
00310 i++;
00311 }
00312 free(list);
00313 }
00314
00315
00316
00317
00318
00319
00320
00321
00322 static void DefmoduleSelectCallback(
00323 Widget w,
00324 XtPointer client_data,
00325 XtPointer call_data)
00326 {
00327 void *theEnv = GetCurrentEnvironment();
00328
00329 XawListReturnStruct *current = XawListShowCurrent((Widget)client_data);
00330
00331 if (current->list_index == XAW_LIST_NONE)
00332 { return; }
00333
00334 EnvSetCurrentModule(theEnv,EnvFindDefmodule(theEnv,current->string));
00335
00336
00337
00338
00339
00340 quit_get_event = True;
00341 }
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352 void DefruleManagerCallback(
00353 Widget w,
00354 XtPointer client_data,
00355 XtPointer call_data)
00356 {
00357 static Widget defrulemanager = NULL;
00358 Widget defrulemanager_form,defrulemanager_viewport,
00359 removeb = NULL, refresh = NULL, matches = NULL, pprint = NULL,
00360 break_point = NULL,break_point_label = NULL,watch_activation_label = NULL,
00361 watch_firing_label = NULL,
00362 watch_activation = NULL,watch_firing = NULL, cancel = NULL;
00363 static Widget CheckBoxes[3];
00364 int itemCount = 0;
00365 char buffer[MAX_CHAR_IN_BUF];
00366
00367
00368
00369
00370
00371 itemCount = IntGetDefruleLis();
00372
00373 if(item_list == NULL)
00374 {
00375 ClearParameters();
00376 defrulemanager_flag = False;
00377 return;
00378 }
00379
00380 defrulemanager_flag = True;
00381
00382
00383
00384
00385 sprintf(buffer,"Defrule Manager - %d Items",itemCount);
00386
00387
00388
00389
00390
00391
00392 defrulemanager = XtCreatePopupShell(buffer,
00393 topLevelShellWidgetClass,
00394 toplevel,
00395 NULL, 0);
00396
00397 defrulemanager_form = XtCreateManagedWidget("manager_form",
00398 formWidgetClass,
00399 defrulemanager,
00400 NULL, 0);
00401
00402 XtSetArg(TheArgs[0],XtNallowHoriz,True);
00403 XtSetArg(TheArgs[1],XtNallowVert,True);
00404 defrulemanager_viewport = XtCreateManagedWidget("manager_viewport",
00405 viewportWidgetClass,
00406 defrulemanager_form,
00407 TheArgs, 2);
00408 XtSetArg(TheArgs[0], XtNlist, item_list);
00409 manager_list = XtCreateManagedWidget("manager_list",
00410 listWidgetClass,
00411 defrulemanager_viewport,
00412 TheArgs, 1);
00413
00414 XtSetArg(TheArgs[0], XtNfromHoriz, defrulemanager_viewport);
00415
00416
00417
00418
00419
00420 XtSetArg(TheArgs[1], XtNlabel, "Remove");
00421 removeb = XtCreateManagedWidget("managerButton",
00422 commandWidgetClass,
00423 defrulemanager_form,
00424 TheArgs, 2);
00425 XtAddCallback(removeb, XtNcallback, DefruleRemoveCallback, manager_list);
00426
00427
00428
00429
00430
00431 XtSetArg(TheArgs[1], XtNfromVert, removeb);
00432 XtSetArg(TheArgs[2], XtNlabel, "Refresh");
00433 refresh = XtCreateManagedWidget("managerButton",
00434 commandWidgetClass,
00435 defrulemanager_form,
00436 TheArgs, 3);
00437 XtAddCallback(refresh, XtNcallback, DefruleRefreshCallback, manager_list);
00438
00439
00440
00441
00442
00443 XtSetArg(TheArgs[1], XtNfromVert, refresh);
00444 XtSetArg(TheArgs[2], XtNlabel, "Matches");
00445 matches = XtCreateManagedWidget("managerButton",
00446 commandWidgetClass,
00447 defrulemanager_form,
00448 TheArgs, 3);
00449 XtAddCallback(matches, XtNcallback, DefruleMatchesCallback, manager_list);
00450
00451
00452
00453
00454
00455 XtSetArg(TheArgs[1], XtNfromVert, matches);
00456 XtSetArg(TheArgs[2], XtNlabel, "Pprint");
00457 pprint = XtCreateManagedWidget("managerButton",
00458 commandWidgetClass,
00459 defrulemanager_form,
00460 TheArgs, 3);
00461 XtAddCallback(pprint, XtNcallback, DefrulePprintCallback, manager_list);
00462
00463
00464
00465
00466
00467 XtSetArg(TheArgs[1], XtNfromVert, pprint);
00468 XtSetArg(TheArgs[2], XtNlabel," ");
00469 CheckBoxes[0] = break_point = XtCreateManagedWidget("managerButton",
00470 toggleWidgetClass,
00471 defrulemanager_form,
00472 TheArgs, 3);
00473 XtAddCallback(break_point,XtNcallback,DefruleBreakPointCallback,manager_list);
00474 XtSetArg(TheArgs[0], XtNfromHoriz,break_point);
00475 XtSetArg(TheArgs[1], XtNfromVert, pprint);
00476 XtSetArg(TheArgs[2], XtNlabel,"Breakpoint");
00477 XtSetArg(TheArgs[3], XtNborderWidth,0);
00478 break_point_label = XtCreateManagedWidget("checkBoxLabel",
00479 labelWidgetClass,
00480 defrulemanager_form,
00481 TheArgs, 4);
00482
00483
00484
00485
00486 XtSetArg(TheArgs[0], XtNfromHoriz,defrulemanager_viewport);
00487 XtSetArg(TheArgs[1], XtNfromVert,break_point);
00488 XtSetArg(TheArgs[2], XtNlabel," ");
00489 CheckBoxes[1] = watch_activation = XtCreateManagedWidget("managerButton",
00490 toggleWidgetClass,
00491 defrulemanager_form,
00492 TheArgs, 3);
00493 XtAddCallback(watch_activation,XtNcallback,DefruleActivationCallback,manager_list);
00494 XtSetArg(TheArgs[0], XtNfromHoriz,watch_activation);
00495 XtSetArg(TheArgs[1], XtNfromVert, break_point);
00496 XtSetArg(TheArgs[2], XtNlabel,"Watch Activation");
00497 XtSetArg(TheArgs[3], XtNborderWidth,0);
00498 watch_activation_label = XtCreateManagedWidget("checkBoxLabel",
00499 labelWidgetClass,
00500 defrulemanager_form,
00501 TheArgs, 4);
00502
00503
00504
00505
00506 XtSetArg(TheArgs[0], XtNfromHoriz,defrulemanager_viewport);
00507 XtSetArg(TheArgs[1], XtNfromVert,watch_activation);
00508 XtSetArg(TheArgs[2], XtNlabel," ");
00509
00510 CheckBoxes[2] = watch_firing = XtCreateManagedWidget("managerButton",
00511 toggleWidgetClass,
00512 defrulemanager_form,
00513 TheArgs, 3);
00514 XtAddCallback(watch_firing,XtNcallback,DefruleFiringsCallback,manager_list);
00515 XtSetArg(TheArgs[0], XtNfromHoriz,watch_firing);
00516 XtSetArg(TheArgs[1], XtNfromVert, watch_activation);
00517 XtSetArg(TheArgs[2], XtNlabel,"Watch Firing");
00518 XtSetArg(TheArgs[3], XtNborderWidth,0);
00519 watch_firing_label = XtCreateManagedWidget("checkBoxLabel",
00520 labelWidgetClass,
00521 defrulemanager_form,
00522 TheArgs, 4);
00523 XtSetArg(TheArgs[0], XtNfromHoriz,defrulemanager_viewport);
00524 XtSetArg(TheArgs[1], XtNfromVert, watch_firing);
00525 XtSetArg(TheArgs[2], XtNlabel, "Done");
00526 cancel = XtCreateManagedWidget("managerCancel",
00527 commandWidgetClass,
00528 defrulemanager_form,
00529 TheArgs, 3);
00530 XtAddCallback(cancel, XtNcallback, CancelSelectPrimary, defrulemanager);
00531
00532
00533
00534
00535
00536 XtAddCallback(manager_list,XtNcallback,DefruleMngrCheckboxesCallback,CheckBoxes);
00537 XtPopup(defrulemanager, XtGrabNonexclusive);
00538
00539 }
00540
00541
00542
00543
00544
00545
00546
00547
00548
00549 void DeffactManagerCallback(
00550 Widget w,
00551 XtPointer client_data,
00552 XtPointer call_data)
00553 {
00554 Widget deffactsmanager,deffactsmanager_form, deffactsmanager_viewport,
00555 removeb, pprint, cancel;
00556 char buffer[MAX_CHAR_IN_BUF];
00557 int itemCount;
00558
00559 itemCount = IntGetFactList();
00560
00561 if(item_list == NULL)
00562 {
00563 ClearParameters();
00564 deffactsmanager_flag = False;
00565 return;
00566 }
00567
00568 deffactsmanager_flag = True;
00569
00570
00571
00572
00573 sprintf(buffer,"Deffacts Manager - %d Items",itemCount);
00574
00575
00576
00577
00578
00579 deffactsmanager = XtCreatePopupShell(buffer,
00580 topLevelShellWidgetClass,
00581 toplevel,
00582 NULL, 0);
00583
00584 deffactsmanager_form = XtCreateManagedWidget("manager_form",
00585 formWidgetClass,
00586 deffactsmanager,
00587 NULL, 0);
00588 XtSetArg(TheArgs[0],XtNallowHoriz,True);
00589 XtSetArg(TheArgs[1],XtNallowVert,True);
00590 deffactsmanager_viewport = XtCreateManagedWidget("manager_viewport",
00591 viewportWidgetClass,
00592 deffactsmanager_form,
00593 TheArgs, 2);
00594
00595 XtSetArg(TheArgs[0], XtNlist, item_list);
00596 manager_list = XtCreateManagedWidget("manager_list",
00597 listWidgetClass,
00598 deffactsmanager_viewport,
00599 TheArgs, 1);
00600
00601
00602
00603
00604 XtSetArg(TheArgs[0], XtNfromHoriz, deffactsmanager_viewport);
00605 XtSetArg(TheArgs[1], XtNlabel, "Remove");
00606 removeb = XtCreateManagedWidget("managerButton",
00607 commandWidgetClass,
00608 deffactsmanager_form,
00609 TheArgs, 2);
00610 XtAddCallback(removeb, XtNcallback, DeffactsRemove, manager_list);
00611
00612
00613
00614
00615
00616 XtSetArg(TheArgs[1], XtNfromVert, removeb);
00617 XtSetArg(TheArgs[2], XtNlabel, "Pprint");
00618 pprint = XtCreateManagedWidget("managerButton",
00619 commandWidgetClass,
00620 deffactsmanager_form,
00621 TheArgs, 3);
00622 XtAddCallback(pprint, XtNcallback, DeffactsPprint, manager_list);
00623
00624
00625
00626
00627
00628 XtSetArg(TheArgs[1], XtNfromVert, pprint);
00629 XtSetArg(TheArgs[2], XtNlabel, "Done");
00630 cancel = XtCreateManagedWidget("managerCancel",
00631 commandWidgetClass,
00632 deffactsmanager_form,
00633 TheArgs, 3);
00634 XtAddCallback(cancel, XtNcallback, CancelSelectPrimary, deffactsmanager);
00635
00636 XtPopup(deffactsmanager, XtGrabNonexclusive);
00637
00638 }
00639
00640
00641
00642
00643
00644
00645
00646
00647
00648 void DeftemplateManagerCallback(
00649 Widget w,
00650 XtPointer client_data,
00651 XtPointer call_data)
00652 {
00653 Widget deftemplatemanager, deftemplatemanager_form,
00654 deftemplatemanager_viewport, removeb, pprint,watch_label, cancel;
00655 static Widget watch = NULL;
00656 int itemCount = 0;
00657 char buffer[MAX_CHAR_IN_BUF];
00658
00659 itemCount = IntGetDeftemplateList();
00660
00661 if(item_list == NULL)
00662 {
00663 deftemplatemanager_flag = False;
00664 return;
00665 }
00666
00667 deftemplatemanager_flag = True;
00668
00669
00670
00671
00672 sprintf(buffer,"Deftemplate Manager - %d Items",itemCount);
00673
00674
00675
00676
00677
00678 deftemplatemanager = XtCreatePopupShell(buffer,
00679 topLevelShellWidgetClass,
00680 toplevel,
00681 NULL, 0);
00682
00683 deftemplatemanager_form = XtCreateManagedWidget("manager_form",
00684 formWidgetClass,
00685 deftemplatemanager,
00686 NULL, 0);
00687
00688 XtSetArg(TheArgs[0],XtNallowHoriz,True);
00689 XtSetArg(TheArgs[1],XtNallowVert,True);
00690 deftemplatemanager_viewport = XtCreateManagedWidget("manager_viewport",
00691 viewportWidgetClass,
00692 deftemplatemanager_form,
00693 TheArgs, 2);
00694
00695 XtSetArg(TheArgs[0], XtNlist, item_list);
00696 manager_list = XtCreateManagedWidget("manager_list",
00697 listWidgetClass,
00698 deftemplatemanager_viewport,
00699 TheArgs, 1);
00700
00701
00702
00703
00704 XtSetArg(TheArgs[0], XtNfromHoriz, deftemplatemanager_viewport);
00705 XtSetArg(TheArgs[1], XtNlabel, "Remove");
00706 removeb = XtCreateManagedWidget("managerButton",
00707 commandWidgetClass,
00708 deftemplatemanager_form,
00709 TheArgs, 2);
00710 XtAddCallback(removeb, XtNcallback, DeftemplateRemove,
00711 manager_list);
00712
00713
00714
00715
00716
00717 XtSetArg(TheArgs[1], XtNfromVert, removeb);
00718 XtSetArg(TheArgs[2], XtNlabel, "Pprint");
00719 pprint = XtCreateManagedWidget("managerButton",
00720 commandWidgetClass,
00721 deftemplatemanager_form,
00722 TheArgs, 3);
00723 XtAddCallback(pprint, XtNcallback, DeftemplatePprint,
00724 manager_list);
00725
00726
00727
00728
00729
00730 XtSetArg(TheArgs[1], XtNfromVert, pprint);
00731 XtSetArg(TheArgs[2], XtNlabel," ");
00732 watch = XtCreateManagedWidget("managerButton",
00733 toggleWidgetClass,
00734 deftemplatemanager_form,
00735 TheArgs, 3);
00736 XtAddCallback(watch,XtNcallback,DeftemplateWatchCallback,manager_list);
00737 XtAddCallback(manager_list,XtNcallback,DeftemplateMngrCheckboxCallback,watch);
00738 XtSetArg(TheArgs[0],XtNfromHoriz,watch);
00739 XtSetArg(TheArgs[1],XtNfromVert,pprint);
00740 XtSetArg(TheArgs[2],XtNlabel,"Watch");
00741 XtSetArg(TheArgs[3],XtNborderWidth,0);
00742 watch_label = XtCreateManagedWidget("checkBoxLabel",
00743 labelWidgetClass,
00744 deftemplatemanager_form,
00745 TheArgs,4);
00746
00747
00748
00749
00750 XtSetArg(TheArgs[0],XtNfromHoriz,deftemplatemanager_viewport);
00751 XtSetArg(TheArgs[1], XtNfromVert, watch);
00752 XtSetArg(TheArgs[2], XtNlabel, "Done");
00753 cancel = XtCreateManagedWidget("managerCancel",
00754 commandWidgetClass,
00755 deftemplatemanager_form,
00756 TheArgs, 3);
00757 XtAddCallback(cancel,XtNcallback,CancelSelectPrimary, deftemplatemanager);
00758
00759 XtPopup(deftemplatemanager, XtGrabNonexclusive);
00760 }
00761
00762
00763
00764
00765
00766
00767
00768
00769
00770 void DeffunctionManagerCallback(
00771 Widget w,
00772 XtPointer client_data,
00773 XtPointer call_data)
00774 {
00775 Widget deffunctionmanager, deffunctionmanager_form,
00776 deffunctionmanager_viewport,watch_label, removeb, pprint, cancel;
00777
00778 static Widget watch;
00779 int itemCount = 0;
00780 char buffer[MAX_CHAR_IN_BUF];
00781
00782 itemCount = IntGetDeffunctionList();
00783
00784 if(item_list == NULL)
00785 {
00786 ClearParameters();
00787 deffunctionmanager_flag = False;
00788 return;
00789 }
00790
00791 deffunctionmanager_flag = True;
00792
00793
00794
00795
00796 sprintf(buffer,"Deffunction Manager - %d Items",itemCount);
00797
00798
00799
00800
00801
00802 deffunctionmanager = XtCreatePopupShell(buffer,
00803 topLevelShellWidgetClass,
00804 toplevel,
00805 NULL, 0);
00806
00807 deffunctionmanager_form = XtCreateManagedWidget("manager_form",
00808 formWidgetClass,
00809 deffunctionmanager,
00810 NULL, 0);
00811 XtSetArg(TheArgs[0],XtNallowHoriz,True);
00812 XtSetArg(TheArgs[1],XtNallowVert,True);
00813 deffunctionmanager_viewport = XtCreateManagedWidget("manager_viewport",
00814 viewportWidgetClass,
00815 deffunctionmanager_form,
00816 TheArgs, 2);
00817
00818 XtSetArg(TheArgs[0], XtNlist, item_list);
00819 manager_list = XtCreateManagedWidget("manager_list",
00820 listWidgetClass,
00821 deffunctionmanager_viewport,
00822 TheArgs, 1);
00823
00824
00825
00826
00827 XtSetArg(TheArgs[0], XtNfromHoriz, deffunctionmanager_viewport);
00828 XtSetArg(TheArgs[1], XtNlabel, "Remove");
00829 removeb = XtCreateManagedWidget("managerButton",
00830 commandWidgetClass,
00831 deffunctionmanager_form,
00832 TheArgs, 2);
00833 XtAddCallback(removeb, XtNcallback, DeffunctionRemoveCallback,
00834 manager_list);
00835
00836
00837
00838
00839 XtSetArg(TheArgs[1], XtNfromVert, removeb);
00840 XtSetArg(TheArgs[2], XtNlabel, "Pprint");
00841 pprint = XtCreateManagedWidget("managerButton",
00842 commandWidgetClass,
00843 deffunctionmanager_form,
00844 TheArgs, 3);
00845 XtAddCallback(pprint, XtNcallback, DeffunctionPprintCallback,
00846 manager_list);
00847
00848
00849
00850
00851
00852 XtSetArg(TheArgs[1], XtNlabel, " ");
00853 XtSetArg(TheArgs[2],XtNfromVert,pprint);
00854 watch = XtCreateManagedWidget("managerButton",
00855 toggleWidgetClass,
00856 deffunctionmanager_form,
00857 TheArgs,3);
00858 XtAddCallback(watch,XtNcallback,DeffunctionWatchCallback,(XtPointer)manager_list);
00859 XtAddCallback(manager_list,XtNcallback,DeffunctionMngrCheckboxCallback,(XtPointer)watch);
00860 XtSetArg(TheArgs[0], XtNfromHoriz,watch);
00861 XtSetArg(TheArgs[1], XtNlabel, "Watch");
00862 watch_label = XtCreateManagedWidget("checkBoxLabel",
00863 labelWidgetClass,
00864 deffunctionmanager_form,
00865 TheArgs,3);
00866
00867
00868
00869
00870
00871 XtSetArg(TheArgs[0], XtNfromHoriz,deffunctionmanager_viewport);
00872 XtSetArg(TheArgs[1], XtNfromVert, watch);
00873 XtSetArg(TheArgs[2], XtNlabel, "Done");
00874 cancel = XtCreateManagedWidget("managerCancel",
00875 commandWidgetClass,
00876 deffunctionmanager_form,
00877 TheArgs, 3);
00878 XtAddCallback(cancel, XtNcallback, CancelSelectPrimary,
00879 (XtPointer)deffunctionmanager);
00880
00881 XtPopup(deffunctionmanager, XtGrabNonexclusive);
00882 }
00883
00884
00885
00886
00887
00888
00889
00890
00891
00892 void DefglobalManagerCallback(
00893 Widget w,
00894 XtPointer client_data,
00895 XtPointer call_data)
00896 {
00897 Widget defglobalmanager, defglobalmanager_form,
00898 defglobalmanager_viewport, removeb, pprint, cancel;
00899 char buffer[MAX_CHAR_IN_BUF];
00900 int itemCount = 0;
00901
00902 itemCount = IntGetDefglobalList();
00903
00904 if(item_list == NULL)
00905 {
00906 ClearParameters();
00907 defglobalmanager_flag = False;
00908 return;
00909 }
00910
00911 defglobalmanager_flag = True;
00912
00913
00914
00915
00916 sprintf(buffer,"Defglobal Manager - %d Items",itemCount);
00917
00918
00919
00920
00921
00922 defglobalmanager = XtCreatePopupShell(buffer,
00923 topLevelShellWidgetClass,
00924 toplevel,
00925 NULL, 0);
00926
00927 defglobalmanager_form = XtCreateManagedWidget("manager_form",
00928 formWidgetClass,
00929 defglobalmanager,
00930 NULL, 0);
00931 XtSetArg(TheArgs[0],XtNallowHoriz,True);
00932 XtSetArg(TheArgs[1],XtNallowVert,True);
00933 defglobalmanager_viewport = XtCreateManagedWidget("manager_viewport",
00934 viewportWidgetClass,
00935 defglobalmanager_form,
00936 TheArgs, 2);
00937
00938 XtSetArg(TheArgs[0], XtNlist, item_list);
00939 manager_list = XtCreateManagedWidget("manager_list",
00940 listWidgetClass,
00941 defglobalmanager_viewport,
00942 TheArgs, 1);
00943
00944
00945
00946
00947 XtSetArg(TheArgs[0], XtNfromHoriz, defglobalmanager_viewport);
00948 XtSetArg(TheArgs[1], XtNlabel, "Remove");
00949 removeb = XtCreateManagedWidget("managerButton",
00950 commandWidgetClass,
00951 defglobalmanager_form,
00952 TheArgs, 2);
00953 XtAddCallback(removeb, XtNcallback, DefglobalRemoveCallback,
00954 (XtPointer)manager_list);
00955
00956
00957
00958
00959 XtSetArg(TheArgs[1], XtNfromVert, removeb);
00960 XtSetArg(TheArgs[2], XtNlabel, "Pprint");
00961 pprint = XtCreateManagedWidget("managerButton",
00962 commandWidgetClass,
00963 defglobalmanager_form,
00964 TheArgs, 3);
00965 XtAddCallback(pprint, XtNcallback,DefglobalPprintCallback,
00966 (XtPointer)manager_list);
00967
00968
00969
00970
00971 XtSetArg(TheArgs[1], XtNfromVert, pprint);
00972 XtSetArg(TheArgs[2], XtNlabel, "Done");
00973 cancel = XtCreateManagedWidget("managerCancel",
00974 commandWidgetClass,
00975 defglobalmanager_form,
00976 TheArgs, 3);
00977 XtAddCallback(cancel, XtNcallback, CancelSelectPrimary,
00978 (XtPointer)defglobalmanager);
00979
00980 XtPopup(defglobalmanager, XtGrabNonexclusive);
00981
00982
00983 }
00984
00985
00986
00987
00988
00989
00990
00991
00992 int IntGetDefglobalList()
00993 {
00994 void *theEnv = GetCurrentEnvironment();
00995 struct defglobal* defglPtr = NULL;
00996 int itemCount = 0,maxItems = 20;
00997 char *name;
00998
00999 if ((defglPtr = (struct defglobal*) EnvGetNextDefglobal(theEnv,NULL)) == NULL)
01000 {
01001 item_list = NULL;
01002 return(0);
01003 }
01004
01005 item_list = (String*)calloc(maxItems,sizeof(String));
01006 while(defglPtr != NULL)
01007 {
01008 name = (char*) EnvGetDefglobalName(theEnv,(struct constructHeader *) defglPtr);
01009 item_list[itemCount] = balloc(strlen(name) + 1,char);
01010 strcpy(item_list[itemCount++],name);
01011 if (itemCount == (maxItems - 1))
01012 {
01013 maxItems = maxItems * 2;
01014 item_list = (String *)realloc(item_list,maxItems * sizeof(String));
01015 }
01016 defglPtr = (struct defglobal*) EnvGetNextDefglobal(theEnv,defglPtr);
01017 }
01018
01019 item_list[itemCount] = NULL;
01020 sortList(item_list,itemCount);
01021 return(itemCount);
01022 }
01023
01024
01025
01026
01027
01028
01029
01030 static void DefglobalRemoveCallback(
01031 Widget w,
01032 XtPointer client_data,
01033 XtPointer call_data)
01034 {
01035 void *theEnv = GetCurrentEnvironment();
01036 Widget list_widget = (Widget)client_data;
01037 XawListReturnStruct *current = XawListShowCurrent(list_widget);
01038
01039
01040 if(current->list_index == XAW_LIST_NONE)
01041 return;
01042 MoveEndOfFile(dialog_text, &TheEvent);
01043 SetCommandString(theEnv,"(undefglobal ");
01044 EnvPrintRouter(theEnv,"wclips","(undefglobal ");
01045 AppendCommandString(theEnv,current->string);
01046 EnvPrintRouter(theEnv,"wclips",current->string);
01047 AppendCommandString(theEnv,")\n");
01048 EnvPrintRouter(theEnv,"wclips",")\n");
01049
01050
01051
01052 quit_get_event = True;
01053 list_change = True;
01054
01055 }
01056
01057
01058
01059
01060
01061
01062
01063
01064 static void DefglobalPprintCallback(
01065 Widget w,
01066 XtPointer client_data,
01067 XtPointer call_data)
01068 {
01069 void *theEnv = GetCurrentEnvironment();
01070 Widget list_widget = (Widget)client_data;
01071 XawListReturnStruct *current = XawListShowCurrent(list_widget);
01072
01073 if(current->list_index == XAW_LIST_NONE ||
01074 EnvGetDefglobalPPForm(theEnv,(struct constructHeader *) EnvFindDefglobal(theEnv,current->string)) == NULL)
01075 return;
01076 MoveEndOfFile(dialog_text, &TheEvent);
01077 SetCommandString(theEnv,"(ppdefglobal ");
01078 EnvPrintRouter(theEnv,"wclips","(ppdefglobal ");
01079 AppendCommandString(theEnv,current->string);
01080 EnvPrintRouter(theEnv,"wclips",current->string);
01081 AppendCommandString(theEnv,")\n");
01082 EnvPrintRouter(theEnv,"wclips",")\n");
01083
01084
01085
01086 quit_get_event = True;
01087
01088 }
01089
01090
01091
01092
01093
01094
01095
01096
01097
01098 void DefgenericManagerCallback(
01099 Widget w,
01100 XtPointer client_data,
01101 XtPointer call_data)
01102 {
01103 Widget defgenericmanager, defgenericmanager_form, defgenericmanager_viewport,
01104 watch, watch_label,removeb, pprint, methods, cancel;
01105 char buffer[MAX_CHAR_IN_BUF];
01106 int itemCount = 0;
01107
01108 itemCount = IntGetDefgenericList();
01109
01110 if(item_list == NULL)
01111 {
01112 ClearParameters();
01113 defgenericmanager_flag = False;
01114 release(curr_def_name);
01115 return;
01116 }
01117
01118 defgenericmanager_flag = True;
01119
01120
01121
01122
01123 sprintf(buffer,"Defgeneric Manager - %d Items",itemCount);
01124
01125
01126
01127
01128
01129 defgenericmanager = XtCreatePopupShell(buffer,
01130 topLevelShellWidgetClass,
01131 toplevel,
01132 NULL, 0);
01133
01134 defgenericmanager_form = XtCreateManagedWidget("manager_form",
01135 formWidgetClass,
01136 defgenericmanager,
01137 NULL, 0);
01138 XtSetArg(TheArgs[0],XtNallowHoriz,True);
01139 XtSetArg(TheArgs[1],XtNallowVert,True);
01140 defgenericmanager_viewport = XtCreateManagedWidget("manager_viewport",
01141 viewportWidgetClass,
01142 defgenericmanager_form,
01143 TheArgs, 2);
01144
01145 XtSetArg(TheArgs[0], XtNlist, item_list);
01146 manager_list = XtCreateManagedWidget("manager_list",
01147 listWidgetClass,
01148 defgenericmanager_viewport,
01149 TheArgs, 1);
01150
01151
01152
01153
01154 XtSetArg(TheArgs[0], XtNfromHoriz, defgenericmanager_viewport);
01155 XtSetArg(TheArgs[1], XtNlabel, "Remove");
01156 removeb = XtCreateManagedWidget("managerButton",
01157 commandWidgetClass,
01158 defgenericmanager_form,
01159 TheArgs, 2);
01160 XtAddCallback(removeb, XtNcallback, DefgenericRemoveCallback, (XtPointer)manager_list);
01161
01162
01163
01164
01165
01166 XtSetArg(TheArgs[1], XtNfromVert, removeb);
01167 XtSetArg(TheArgs[2], XtNlabel, "Pprint");
01168 pprint = XtCreateManagedWidget("managerButton",
01169 commandWidgetClass,
01170 defgenericmanager_form,
01171 TheArgs, 3);
01172 XtAddCallback(pprint, XtNcallback, DefgenericPprintCallback, (XtPointer)manager_list);
01173
01174
01175
01176
01177
01178 XtSetArg(TheArgs[1], XtNfromVert, pprint);
01179 XtSetArg(TheArgs[2], XtNlabel, "Methods...");
01180 methods = XtCreateManagedWidget("managerButton",
01181 commandWidgetClass,
01182 defgenericmanager_form,
01183 TheArgs, 3);
01184 XtAddCallback(methods,XtNcallback,DefgenericMethodCallback, (XtPointer)manager_list);
01185
01186
01187
01188
01189 XtSetArg(TheArgs[1], XtNlabel, " ");
01190 XtSetArg(TheArgs[2],XtNfromVert,methods);
01191 watch = XtCreateManagedWidget("managerButton",
01192 toggleWidgetClass,
01193 defgenericmanager_form,
01194 TheArgs,3);
01195 XtAddCallback(watch,XtNcallback,DefgenericWatchCallback,(XtPointer)manager_list);
01196 XtAddCallback(manager_list,XtNcallback,DefgenericMngrCheckBoxCallback,(XtPointer)watch);
01197 XtSetArg(TheArgs[0], XtNfromHoriz,watch);
01198 XtSetArg(TheArgs[1], XtNlabel, "Watch");
01199 watch_label = XtCreateManagedWidget("checkBoxLabel",
01200 labelWidgetClass,
01201 defgenericmanager_form,
01202 TheArgs,3);
01203
01204
01205
01206
01207 XtSetArg(TheArgs[0], XtNfromHoriz,defgenericmanager_viewport);
01208 XtSetArg(TheArgs[1], XtNfromVert, watch);
01209 XtSetArg(TheArgs[2], XtNlabel, "Done");
01210 cancel = XtCreateManagedWidget("managerCancel",
01211 commandWidgetClass,
01212 defgenericmanager_form,
01213 TheArgs, 3);
01214 XtAddCallback(cancel, XtNcallback, CancelSelectPrimary,(XtPointer)defgenericmanager);
01215
01216 XtPopup(defgenericmanager, XtGrabNonexclusive);
01217 }
01218
01219
01220
01221
01222
01223
01224
01225
01226
01227
01228 void DefinstancesManagerCallback(
01229 Widget w,
01230 XtPointer client_data,
01231 XtPointer call_data)
01232 {
01233 Widget definstancesmanager, definstancesmanager_form,
01234 definstancesmanager_viewport, removeb, pprint, cancel;
01235 char buffer[MAX_CHAR_IN_BUF];
01236 int itemCount = 0;
01237
01238 itemCount = IntGetDefinstancesList();
01239
01240 if(item_list == NULL)
01241 {
01242 ClearParameters();
01243 definstancesmanager_flag = False;
01244 return;
01245 }
01246
01247 definstancesmanager_flag = True;
01248
01249
01250
01251 sprintf(buffer,"Definstance Manager - %d Items",itemCount);
01252
01253
01254
01255
01256
01257 definstancesmanager = XtCreatePopupShell(buffer,
01258 topLevelShellWidgetClass,
01259 toplevel,
01260 NULL, 0);
01261
01262 definstancesmanager_form = XtCreateManagedWidget("manager_form",
01263 formWidgetClass,
01264 definstancesmanager,
01265 NULL, 0);
01266
01267 XtSetArg(TheArgs[0],XtNallowHoriz,True);
01268 XtSetArg(TheArgs[1],XtNallowVert,True);
01269 definstancesmanager_viewport = XtCreateManagedWidget("manager_viewport",
01270 viewportWidgetClass,
01271 definstancesmanager_form,
01272 TheArgs, 2);
01273
01274 XtSetArg(TheArgs[0], XtNlist, item_list);
01275 manager_list = XtCreateManagedWidget("manager_list",
01276 listWidgetClass,
01277 definstancesmanager_viewport,
01278 TheArgs, 1);
01279 XtSetArg(TheArgs[0], XtNfromHoriz, definstancesmanager_viewport);
01280
01281
01282
01283
01284 XtSetArg(TheArgs[1], XtNlabel, "Remove");
01285 removeb = XtCreateManagedWidget("managerButton",
01286 commandWidgetClass,
01287 definstancesmanager_form,
01288 TheArgs, 2);
01289 XtAddCallback(removeb, XtNcallback, DefinstancesRemoveCallback,
01290 (XtPointer)manager_list);
01291
01292
01293
01294
01295
01296 XtSetArg(TheArgs[1], XtNfromVert, removeb);
01297 XtSetArg(TheArgs[2], XtNlabel, "Pprint");
01298 pprint = XtCreateManagedWidget("managerButton",
01299 commandWidgetClass,
01300 definstancesmanager_form,
01301 TheArgs, 3);
01302 XtAddCallback(pprint, XtNcallback, DefinstancesPprintCallback,
01303 (XtPointer)manager_list);
01304
01305
01306
01307
01308
01309 XtSetArg(TheArgs[1], XtNfromVert, pprint);
01310 XtSetArg(TheArgs[2], XtNlabel, "Done");
01311 cancel = XtCreateManagedWidget("managerCancel",
01312 commandWidgetClass,
01313 definstancesmanager_form,
01314 TheArgs, 3);
01315 XtAddCallback(cancel, XtNcallback, CancelSelectPrimary,
01316 (XtPointer)definstancesmanager);
01317
01318 XtPopup(definstancesmanager, XtGrabNonexclusive);
01319 }
01320
01321
01322
01323
01324
01325
01326
01327
01328
01329 void DefclassManagerCallback(
01330 Widget w,
01331 XtPointer client_data,
01332 XtPointer call_data)
01333 {
01334 Widget defclassmanager, defclassmanager_form, defclassmanager_viewport,
01335 removeb, describe, browse, pprint, message_handlers, watch_instances,
01336 watch_slot, watch_instances_label,watch_slot_label,cancel;
01337 static Widget CheckBoxes[3];
01338 char buffer[MAX_CHAR_IN_BUF];
01339 int itemCount = 0;
01340
01341 itemCount = IntGetDefclassList();
01342
01343 if(item_list == NULL)
01344 {
01345 ClearParameters();
01346 release(curr_def_name);
01347 defclassmanager_flag = False;
01348 return;
01349 }
01350
01351 defclassmanager_flag = True;
01352
01353
01354
01355 sprintf(buffer,"Defclass Manager - %d Items",itemCount);
01356
01357
01358
01359
01360
01361
01362 defclassmanager = XtCreatePopupShell(buffer,
01363 topLevelShellWidgetClass,
01364 toplevel,
01365 NULL, 0);
01366
01367 defclassmanager_form = XtCreateManagedWidget("manager_form",
01368 formWidgetClass,
01369 defclassmanager,
01370 NULL, 0);
01371
01372
01373
01374
01375
01376
01377 XtSetArg(TheArgs[0],XtNallowHoriz,True);
01378 XtSetArg(TheArgs[1],XtNallowVert,True);
01379 defclassmanager_viewport = XtCreateManagedWidget("manager_viewport",
01380 viewportWidgetClass,
01381 defclassmanager_form,
01382 TheArgs, 2);
01383
01384 XtSetArg(TheArgs[0], XtNlist, item_list);
01385 manager_list = XtCreateManagedWidget("manager_list",
01386 listWidgetClass,
01387 defclassmanager_viewport,
01388 TheArgs, 1);
01389
01390
01391
01392
01393
01394 XtSetArg(TheArgs[0], XtNfromHoriz, defclassmanager_viewport);
01395 XtSetArg(TheArgs[1], XtNlabel, "Remove");
01396 removeb = XtCreateManagedWidget("managerButton",
01397 commandWidgetClass,
01398 defclassmanager_form,
01399 TheArgs, 2);
01400 XtAddCallback(removeb, XtNcallback, DefclassRemoveCallback, (XtPointer)manager_list);
01401
01402
01403
01404
01405
01406 XtSetArg(TheArgs[1], XtNfromVert, removeb);
01407 XtSetArg(TheArgs[2], XtNlabel, "Describe");
01408 describe = XtCreateManagedWidget("managerButton",
01409 commandWidgetClass,
01410 defclassmanager_form,
01411 TheArgs, 3);
01412 XtAddCallback(describe, XtNcallback, DefclassDescribeCallback, (XtPointer)manager_list);
01413
01414
01415
01416
01417
01418 XtSetArg(TheArgs[1], XtNfromVert, describe);
01419 XtSetArg(TheArgs[2], XtNlabel, "Browse");
01420 browse = XtCreateManagedWidget("managerButton",
01421 commandWidgetClass,
01422 defclassmanager_form,
01423 TheArgs, 3);
01424 XtAddCallback(browse, XtNcallback, DefclassBrowseCallback, (XtPointer)manager_list);
01425
01426
01427
01428
01429
01430 XtSetArg(TheArgs[1], XtNfromVert, browse);
01431 XtSetArg(TheArgs[2], XtNlabel, "Pprint");
01432 pprint = XtCreateManagedWidget("managerButton",
01433 commandWidgetClass,
01434 defclassmanager_form,
01435 TheArgs, 3);
01436 XtAddCallback(pprint, XtNcallback, DefclassPprintCallback, (XtPointer)manager_list);
01437
01438
01439
01440
01441
01442 XtSetArg(TheArgs[1], XtNfromVert, pprint);
01443 XtSetArg(TheArgs[2], XtNlabel, "Message Handlers...");
01444 message_handlers = XtCreateManagedWidget("managerButton",
01445 commandWidgetClass,
01446 defclassmanager_form,
01447 TheArgs, 3);
01448 XtAddCallback(message_handlers,XtNcallback, DefclassMessageHandlersCallback,(XtPointer)manager_list);
01449
01450
01451
01452
01453 XtSetArg(TheArgs[1], XtNfromVert, message_handlers);
01454 XtSetArg(TheArgs[2], XtNlabel," ");
01455 CheckBoxes[0] = watch_instances = XtCreateManagedWidget("managerButton",
01456 toggleWidgetClass,
01457 defclassmanager_form,
01458 TheArgs, 3);
01459 XtAddCallback(watch_instances,XtNcallback,WatchInstancesCallback,(XtPointer)manager_list);
01460
01461
01462
01463
01464 XtSetArg(TheArgs[1], XtNfromVert, message_handlers);
01465 XtSetArg(TheArgs[2], XtNlabel,"Watch Instances");
01466 XtSetArg(TheArgs[0],XtNfromHoriz,watch_instances);
01467 XtSetArg(TheArgs[3],XtNborderWidth,0);
01468 watch_instances_label = XtCreateManagedWidget("checkBoxLabel",
01469 labelWidgetClass,
01470 defclassmanager_form,
01471 TheArgs, 4);
01472
01473
01474
01475
01476 XtSetArg(TheArgs[0],XtNfromHoriz,defclassmanager_viewport);
01477 XtSetArg(TheArgs[1], XtNfromVert,watch_instances);
01478 XtSetArg(TheArgs[2], XtNlabel," ");
01479 CheckBoxes[1] = watch_slot = XtCreateManagedWidget("managerButton",
01480 toggleWidgetClass,
01481 defclassmanager_form,
01482 TheArgs, 3);
01483 XtAddCallback(watch_slot,XtNcallback,WatchSlotCallback,(XtPointer)manager_list);
01484
01485
01486
01487
01488 XtSetArg(TheArgs[0],XtNfromHoriz,watch_slot);
01489 XtSetArg(TheArgs[1], XtNfromVert,watch_instances);
01490 XtSetArg(TheArgs[2], XtNlabel,"Watch Slots");
01491 XtSetArg(TheArgs[3], XtNborderWidth,0);
01492 watch_slot_label = XtCreateManagedWidget("checkBoxLabel",
01493 labelWidgetClass,
01494 defclassmanager_form,
01495 TheArgs,4);
01496
01497
01498
01499
01500 XtSetArg(TheArgs[0],XtNfromHoriz,defclassmanager_viewport);
01501 XtSetArg(TheArgs[1], XtNfromVert, watch_slot);
01502 XtSetArg(TheArgs[2], XtNlabel, "Done");
01503 cancel = XtCreateManagedWidget("managerCancel",
01504 commandWidgetClass,
01505 defclassmanager_form,
01506 TheArgs, 3);
01507 XtAddCallback(cancel, XtNcallback, CancelSelectPrimary, (XtPointer)defclassmanager);
01508
01509
01510
01511
01512
01513 XtAddCallback(manager_list,XtNcallback,DefclssMngrChckbxCallback,(XtPointer)CheckBoxes);
01514
01515 XtPopup(defclassmanager, XtGrabNonexclusive);
01516 }
01517
01518
01519
01520
01521
01522
01523
01524
01525
01526
01527 void AgendaManagerCallback(
01528 Widget w,
01529 XtPointer client_data,
01530 XtPointer call_data)
01531 {
01532 Widget agendamanager, agendamanager_form, agendamanager_viewport, removeb,
01533 fire, cancel;
01534 char buffer[MAX_CHAR_IN_BUF];
01535
01536 int itemCount = IntGetAgendaList();
01537
01538 if(item_list == NULL)
01539 {
01540 ClearParameters();
01541 agendamanager_flag = False;
01542 return;
01543 }
01544
01545 agendamanager_flag = True;
01546
01547
01548
01549 sprintf(buffer,"Agenda Manager - %d Items",itemCount);
01550
01551
01552
01553
01554
01555 agendamanager = XtCreatePopupShell(buffer,
01556 topLevelShellWidgetClass,
01557 toplevel,
01558 NULL, 0);
01559
01560 agendamanager_form = XtCreateManagedWidget("manager_form",
01561 formWidgetClass,
01562 agendamanager,
01563 NULL, 0);
01564
01565 XtSetArg(TheArgs[0],XtNallowHoriz,True);
01566 XtSetArg(TheArgs[1],XtNallowVert,True);
01567 agendamanager_viewport = XtCreateManagedWidget("manager_viewport",
01568 viewportWidgetClass,
01569 agendamanager_form,
01570 TheArgs, 2);
01571
01572 XtSetArg(TheArgs[0], XtNlist, item_list);
01573 manager_list = XtCreateManagedWidget("manager_list",
01574 listWidgetClass,
01575 agendamanager_viewport,
01576 TheArgs, 1);
01577
01578
01579
01580
01581
01582 XtSetArg(TheArgs[0], XtNfromHoriz, agendamanager_viewport);
01583 XtSetArg(TheArgs[1], XtNlabel, "Remove");
01584 removeb = XtCreateManagedWidget("managerButton",
01585 commandWidgetClass,
01586 agendamanager_form,
01587 TheArgs, 2);
01588 XtAddCallback(removeb, XtNcallback, AgendaRemove, (XtPointer)manager_list);
01589
01590
01591
01592
01593
01594 XtSetArg(TheArgs[1], XtNfromVert, removeb);
01595 XtSetArg(TheArgs[2], XtNlabel, "Fire");
01596 fire = XtCreateManagedWidget("managerButton",
01597 commandWidgetClass,
01598 agendamanager_form,
01599 TheArgs, 3);
01600 XtAddCallback(fire, XtNcallback, AgendaFire,(XtPointer)manager_list);
01601
01602
01603
01604
01605
01606 XtSetArg(TheArgs[1], XtNfromVert, fire);
01607 XtSetArg(TheArgs[2], XtNlabel, "Done");
01608 cancel = XtCreateManagedWidget("managerCancel",
01609 commandWidgetClass,
01610 agendamanager_form,
01611 TheArgs, 3);
01612 XtAddCallback(cancel, XtNcallback, CancelSelectPrimary, (XtPointer) agendamanager);
01613
01614 XtPopup(agendamanager, XtGrabNonexclusive);
01615 }
01616
01617
01618
01619
01620
01621
01622
01623 int IntGetAgendaList()
01624 {
01625 void *theEnv = GetCurrentEnvironment();
01626 int maxItems = 20,itemCount = 0;
01627 struct activation *act_ptr;
01628 char buffer[MAX_CHAR_IN_BUF];
01629
01630 if((act_ptr = (struct activation *) EnvGetNextActivation(theEnv,NULL)) == NULL)
01631 {
01632 item_list = NULL;
01633 return(0);
01634 }
01635 item_list = (String *)calloc(maxItems,sizeof(String));
01636 while(act_ptr != NULL)
01637 {
01638
01639 EnvGetActivationPPForm(theEnv,buffer,MAX_CHAR_IN_BUF - 1,act_ptr);
01640 item_list[itemCount] = balloc(strlen(buffer) + 1, char);
01641 strcpy(item_list[itemCount++],buffer);
01642 if(itemCount == (maxItems - 1))
01643 {
01644 maxItems = maxItems * 2;
01645 item_list = (String *)realloc(item_list,maxItems*sizeof(String));
01646 }
01647 act_ptr = (struct activation *) EnvGetNextActivation(theEnv,act_ptr);
01648 }
01649 item_list[itemCount] = NULL;
01650
01651 return(itemCount);
01652 }
01653
01654
01655
01656
01657
01658
01659
01660
01661
01662 static void AgendaRemove(
01663 Widget w,
01664 XtPointer client_data,
01665 XtPointer call_data)
01666 {
01667 void *theEnv = GetCurrentEnvironment();
01668 register int i;
01669 struct activation *act_ptr;
01670 Widget list_widget = (Widget)client_data;
01671 XawListReturnStruct *current = XawListShowCurrent(list_widget);
01672
01673 if (current->list_index == XAW_LIST_NONE)
01674 { return; }
01675
01676 act_ptr = (struct activation *) EnvGetNextActivation(theEnv,NULL);
01677 for (i = 0; i < current->list_index ; i++)
01678 { act_ptr = (struct activation *) EnvGetNextActivation(theEnv,act_ptr); }
01679
01680 EnvDeleteActivation(theEnv, (void *) act_ptr);
01681
01682
01683
01684
01685
01686 quit_get_event = True;
01687 list_change = True;
01688 }
01689
01690
01691
01692
01693
01694
01695
01696
01697
01698 static void AgendaFire(
01699 Widget w,
01700 XtPointer client_data,
01701 XtPointer call_data)
01702 {
01703 void *theEnv = GetCurrentEnvironment();
01704 register int i;
01705 struct activation *act_ptr;
01706 Widget list_widget = (Widget)client_data;
01707 XawListReturnStruct *current = XawListShowCurrent(list_widget);
01708
01709
01710 if(current->list_index == XAW_LIST_NONE)
01711 return;
01712 act_ptr = (struct activation *) EnvGetNextActivation(theEnv,NULL);
01713 for (i = 0; i < current->list_index ; i++)
01714 act_ptr = (struct activation *) EnvGetNextActivation(theEnv,act_ptr);
01715 MoveActivationToTop(theEnv,(void*)act_ptr);
01716 MoveEndOfFile(dialog_text, &TheEvent);
01717 SetCommandString(theEnv,"(run 1)\n");
01718 EnvPrintRouter(theEnv,"wclips","(run 1)\n");
01719
01720
01721
01722
01723
01724 quit_get_event = True;
01725 list_change = True;
01726 }
01727
01728
01729
01730
01731
01732
01733
01734
01735
01736
01737 void FactsWindowCallback(
01738 Widget w,
01739 XtPointer client_data,
01740 XtPointer call_data)
01741 {
01742 void *theEnv = GetCurrentEnvironment();
01743
01744 if (Browse_status[FACT_WIN])
01745 {
01746 XtSetArg(TheArgs[0], XtNleftBitmap, None);
01747 XtPopdown(facts);
01748 }
01749 else if (facts_text != NULL)
01750 {
01751 XtPopup(facts,XtGrabNone);
01752 EnvSetFactListChanged(theEnv,FALSE);
01753 PrintChangedFacts();
01754 XtSetArg(TheArgs[0], XtNleftBitmap, checker);
01755 }
01756 else
01757 {
01758 CreateFactWindow();
01759 EnvSetFactListChanged(theEnv,FALSE);
01760 PrintChangedFacts();
01761 XtSetArg(TheArgs[0], XtNleftBitmap, checker);
01762 }
01763
01764 XtSetValues(facts_window, TheArgs, 1);
01765 Browse_status[FACT_WIN] = !Browse_status[FACT_WIN];
01766 }
01767
01768
01769
01770
01771
01772
01773 void CreateFactWindow()
01774 {
01775 void *theEnv = GetCurrentEnvironment();
01776 Dimension height;
01777 int n = 0;
01778 char *name,labelBuffer[256];
01779 struct defmodule* theModule = (struct defmodule *) EnvGetCurrentModule(theEnv);
01780
01781
01782
01783
01784 if(theModule != NULL)
01785 {
01786 name = EnvGetDefmoduleName(theEnv,theModule);
01787 strcpy(labelBuffer,"Facts Window(");
01788 strcat(labelBuffer,name);
01789 strcat(labelBuffer,")");
01790 }
01791 else
01792 {
01793 strcpy(labelBuffer,"Facts Window");
01794 }
01795
01796 XtSetArg(TheArgs[n], XtNheight, &height);n++;
01797 XtGetValues(dialog, TheArgs, n);
01798 height = (height + 150) / 3;
01799 n = 0;
01800 XtSetArg(TheArgs[n], XtNheight, height);n++;
01801 facts = XtCreatePopupShell(labelBuffer,
01802 topLevelShellWidgetClass,
01803 toplevel,
01804 TheArgs, n);
01805 n = 0;
01806 XtSetArg(TheArgs[n], XtNdefaultDistance, 0);n++;
01807 facts_form = XtCreateManagedWidget("facts_form",
01808 formWidgetClass,
01809 facts,
01810 TheArgs, n);
01811 n = 0;
01812 XtSetArg(TheArgs[n], XtNwidth, 250);n++;
01813 XtSetArg(TheArgs[n], XtNeditType, XawtextAppend);n++;
01814 XtSetArg(TheArgs[n], XtNscrollHorizontal, XawtextScrollAlways);n++;
01815 XtSetArg(TheArgs[n], XtNscrollVertical, XawtextScrollAlways);n++;
01816 facts_text = XtCreateManagedWidget("facts_text",
01817 asciiTextWidgetClass,
01818 facts_form,
01819 TheArgs, n);
01820
01821 XtOverrideTranslations(facts_text,
01822 XtParseTranslationTable(xclips_translation2));
01823
01824 XtPopup(facts, XtGrabNone);
01825
01826 if(! EnvAddRouter(theEnv,"xfacts", 10, XclipsQuery, XclipsPrint, NULL, NULL, XclipsExit))
01827 {
01828 EnvPrintRouter(theEnv,"werror", "Could not allocate xfacts router!\n");
01829 XclipsExit(theEnv,0);
01830 EnvExitRouter(theEnv,0);
01831 }
01832
01833 }
01834
01835
01836
01837
01838
01839
01840
01841
01842
01843 void AgendaWindowCallback(
01844 Widget w,
01845 XtPointer client_data,
01846 XtPointer call_data)
01847 {
01848 void *theEnv = GetCurrentEnvironment();
01849
01850 if (Browse_status[AGENDA_WIN])
01851 {
01852 XtSetArg(TheArgs[0], XtNleftBitmap, None);
01853 XtPopdown(agenda);
01854 }
01855 else if(agenda != NULL)
01856 {
01857 XtPopup(agenda,XtGrabNone);
01858 EnvSetAgendaChanged(theEnv,FALSE);
01859 PrintChangedAgenda();
01860 XtSetArg(TheArgs[0], XtNleftBitmap,checker);
01861 }
01862 else
01863 {
01864 CreateAgendaWindow();
01865 EnvSetAgendaChanged(theEnv,FALSE);
01866 PrintChangedAgenda();
01867 XtSetArg(TheArgs[0], XtNleftBitmap, checker);
01868 }
01869
01870 XtSetValues(agenda_window, TheArgs, 1);
01871 Browse_status[AGENDA_WIN] = !Browse_status[AGENDA_WIN];
01872 }
01873
01874
01875
01876
01877
01878
01879
01880 void CreateAgendaWindow()
01881 {
01882 void *theEnv = GetCurrentEnvironment();
01883 Dimension width;
01884 char *name,labelBuffer[256];
01885 struct defmodule* theModule = (struct defmodule *) EnvGetCurrentModule(theEnv);
01886
01887 XtSetArg(TheArgs[0], XtNwidth, &width);
01888 XtGetValues(dialog, TheArgs, 1);
01889 XtSetArg(TheArgs[0], XtNwidth,2 * width/3);
01890 if(theModule != NULL)
01891 {
01892 name = EnvGetDefmoduleName(theEnv,theModule);
01893 strcpy(labelBuffer,"Agenda Window(");
01894 strcat(labelBuffer,name);
01895 strcat(labelBuffer,")");
01896 }
01897 else
01898 {
01899 strcpy(labelBuffer,"Agenda Window");
01900 }
01901 agenda = XtCreatePopupShell(labelBuffer,
01902 topLevelShellWidgetClass,
01903 toplevel,
01904 TheArgs, 1);
01905
01906 XtSetArg(TheArgs[0], XtNdefaultDistance, 0);
01907 agenda_form = XtCreateManagedWidget("agenda_form",
01908 formWidgetClass,
01909 agenda,
01910 TheArgs, 1);
01911
01912 XtSetArg(TheArgs[0], XtNheight, 150);
01913 XtSetArg(TheArgs[1], XtNeditType, XawtextAppend);
01914 XtSetArg(TheArgs[2], XtNscrollHorizontal, XawtextScrollAlways);
01915 XtSetArg(TheArgs[3], XtNscrollVertical, XawtextScrollAlways);
01916 agenda_text = XtCreateManagedWidget("agenda_text",
01917 asciiTextWidgetClass,
01918 agenda_form,
01919 TheArgs, 4);
01920 XtOverrideTranslations(agenda_text,
01921 XtParseTranslationTable(xclips_translation2));
01922
01923 XtPopup(agenda, XtGrabNone);
01924
01925 if(!EnvAddRouter(theEnv, "xagenda", 10, XclipsQuery, XclipsPrint,NULL,NULL,XclipsExit))
01926 {
01927 EnvPrintRouter(theEnv,WERROR, "Could not allocate xagenda router!\n");
01928 XclipsExit(theEnv,0);
01929 EnvExitRouter(theEnv,0);
01930 }
01931 }
01932
01933
01934
01935
01936
01937
01938 void FocusWindowCallback(
01939 Widget w,
01940 XtPointer client_data,
01941 XtPointer call_data)
01942 {
01943 void *theEnv = GetCurrentEnvironment();
01944
01945 if (Browse_status[FOCUS_WIN])
01946 {
01947 XtSetArg(TheArgs[0], XtNleftBitmap, None);
01948 XtPopdown(focus);
01949 }
01950 else if (focus != NULL)
01951 {
01952 XtPopup(focus,XtGrabNone);
01953 EnvSetFocusChanged(theEnv,FALSE);
01954 PrintChangedFocus();
01955 XtSetArg(TheArgs[0], XtNleftBitmap,checker);
01956 }
01957 else
01958 {
01959 CreateFocusWindow();
01960 EnvSetFocusChanged(theEnv,FALSE);
01961 PrintChangedFocus();
01962 XtSetArg(TheArgs[0], XtNleftBitmap, checker);
01963 }
01964
01965 XtSetValues(focus_window, TheArgs, 1);
01966 Browse_status[FOCUS_WIN] = !Browse_status[FOCUS_WIN];
01967 }
01968
01969
01970
01971
01972
01973
01974
01975 void CreateFocusWindow()
01976 {
01977 void *theEnv = GetCurrentEnvironment();
01978 Dimension width;
01979
01980 XtSetArg(TheArgs[0], XtNwidth, &width);
01981 XtGetValues(dialog, TheArgs, 1);
01982 XtSetArg(TheArgs[0], XtNwidth,width/3);
01983 focus = XtCreatePopupShell("Focus Window",
01984 topLevelShellWidgetClass,
01985 toplevel,
01986 TheArgs, 1);
01987
01988 XtSetArg(TheArgs[0], XtNdefaultDistance, 0);
01989 focus_form = XtCreateManagedWidget("agenda_form",
01990 formWidgetClass,
01991 focus,
01992 TheArgs, 1);
01993
01994 XtSetArg(TheArgs[0], XtNheight, 150);
01995 XtSetArg(TheArgs[1], XtNeditType, XawtextAppend);
01996 XtSetArg(TheArgs[2], XtNscrollHorizontal, XawtextScrollAlways);
01997 XtSetArg(TheArgs[3], XtNscrollVertical, XawtextScrollAlways);
01998 focus_text = XtCreateManagedWidget("focus_text",
01999 asciiTextWidgetClass,
02000 focus_form,
02001 TheArgs, 4);
02002 XtOverrideTranslations(focus_text,
02003 XtParseTranslationTable(xclips_translation2));
02004
02005 XtPopup(focus, XtGrabNone);
02006
02007 if(!EnvAddRouter(theEnv,"xfocus", 10, XclipsQuery, XclipsPrint,NULL,NULL,XclipsExit))
02008 {
02009 EnvPrintRouter(theEnv,"werror", "Could not allocate xfocus router!\n");
02010 XclipsExit(theEnv,0);
02011 EnvExitRouter(theEnv,0);
02012 }
02013 }
02014
02015
02016
02017
02018
02019
02020
02021
02022 void InstancesWindowCallback(
02023 Widget w,
02024 XtPointer client_data,
02025 XtPointer call_data)
02026 {
02027 void *theEnv = GetCurrentEnvironment();
02028
02029 if (Browse_status[INSTANCE_WIN])
02030 {
02031 XtSetArg(TheArgs[0], XtNleftBitmap, None);
02032 XtPopdown(instances);
02033 }
02034 else if (instances != NULL)
02035 {
02036 XtPopup(instances,XtGrabNone);
02037 EnvSetInstancesChanged(theEnv,FALSE);
02038 PrintChangedInstances();
02039 XtSetArg(TheArgs[0], XtNleftBitmap,checker);
02040 }
02041 else
02042 {
02043 CreateInstanceWindow();
02044 EnvSetInstancesChanged(theEnv,FALSE);
02045 PrintChangedInstances();
02046 XtSetArg(TheArgs[0], XtNleftBitmap, checker);
02047 }
02048
02049 XtSetValues(instances_window, TheArgs, 1);
02050 Browse_status[INSTANCE_WIN] = !Browse_status[INSTANCE_WIN];
02051 }
02052
02053
02054
02055
02056 void CreateInstanceWindow()
02057 {
02058 void *theEnv = GetCurrentEnvironment();
02059 Dimension height;
02060 char *name,labelBuffer[256];
02061 struct defmodule* theModule = (struct defmodule *) EnvGetCurrentModule(theEnv);
02062
02063
02064
02065
02066 if(theModule != NULL)
02067 {
02068 name = EnvGetDefmoduleName(theEnv,theModule);
02069 strcpy(labelBuffer,"Instances Window(");
02070 strcat(labelBuffer,name);
02071 strcat(labelBuffer,")");
02072 }
02073 else
02074 {
02075 strcpy(labelBuffer,"Instances Window");
02076 }
02077
02078 XtSetArg(TheArgs[0], XtNheight, &height);
02079 XtGetValues(dialog, TheArgs, 1);
02080 height = (height + 150)/3;
02081 XtSetArg(TheArgs[0], XtNheight, height);
02082 instances = XtCreatePopupShell(labelBuffer,
02083 topLevelShellWidgetClass,
02084 toplevel,
02085 TheArgs, 1);
02086
02087 XtSetArg(TheArgs[0], XtNdefaultDistance, 0);
02088 instances_form = XtCreateManagedWidget("instances_form",
02089 formWidgetClass,
02090 instances,
02091 TheArgs, 1);
02092
02093 XtSetArg(TheArgs[0], XtNwidth, 250);
02094 XtSetArg(TheArgs[1], XtNeditType, XawtextAppend);
02095 XtSetArg(TheArgs[2], XtNscrollHorizontal,XawtextScrollAlways);
02096 XtSetArg(TheArgs[3], XtNscrollVertical, XawtextScrollAlways);
02097 instances_text = XtCreateManagedWidget("instances_text",
02098 asciiTextWidgetClass,
02099 instances_form,
02100 TheArgs, 4);
02101
02102 XtOverrideTranslations(instances_text,
02103 XtParseTranslationTable(xclips_translation2));
02104
02105 XtPopup(instances, XtGrabNone);
02106
02107 if (! EnvAddRouter(theEnv,"xinstances", 10, XclipsQuery, XclipsPrint, NULL, NULL, XclipsExit))
02108 {
02109 EnvPrintRouter(theEnv,"werror", "Could not allocate xinstances router!\n");
02110 XclipsExit(theEnv,0);
02111 EnvExitRouter(theEnv,0);
02112 }
02113 }
02114
02115
02116
02117
02118
02119
02120
02121
02122
02123 void GlobalsWindowCallback(
02124 Widget w,
02125 XtPointer client_data,
02126 XtPointer call_data)
02127 {
02128 void *theEnv = GetCurrentEnvironment();
02129
02130 if (Browse_status[GLOBAL_WIN])
02131 {
02132 XtPopdown(globals);
02133 XtSetArg(TheArgs[0], XtNleftBitmap, None);
02134 }
02135 else if(globals != NULL)
02136 {
02137 XtPopup(globals,XtGrabNone);
02138 EnvSetGlobalsChanged(theEnv,FALSE);
02139 PrintChangedGlobals();
02140 XtSetArg(TheArgs[0], XtNleftBitmap,checker);
02141 }
02142 else
02143 {
02144 CreateGlobalWindow();
02145 EnvSetGlobalsChanged(theEnv,FALSE);
02146 PrintChangedGlobals();
02147 XtSetArg(TheArgs[0], XtNleftBitmap, checker);
02148 }
02149
02150 XtSetValues(globals_window, TheArgs, 1);
02151
02152 Browse_status[GLOBAL_WIN] = !Browse_status[GLOBAL_WIN];
02153
02154 }
02155
02156
02157
02158
02159 void CreateGlobalWindow()
02160 {
02161 void *theEnv = GetCurrentEnvironment();
02162 Dimension height;
02163 char *name,labelBuffer[256];
02164 struct defmodule* theModule = (struct defmodule *) EnvGetCurrentModule(theEnv);
02165
02166
02167
02168
02169 if (theModule != NULL)
02170 {
02171 name = EnvGetDefmoduleName(theEnv,theModule);
02172 strcpy(labelBuffer,"Globals Window(");
02173 strcat(labelBuffer,name);
02174 strcat(labelBuffer,")");
02175 }
02176 else
02177 { strcpy(labelBuffer,"Globals Window"); }
02178
02179 XtSetArg(TheArgs[0], XtNheight, &height);
02180 XtGetValues(dialog, TheArgs, 1);
02181 height = (height + 150)/3;
02182 XtSetArg(TheArgs[0], XtNheight, height);
02183 globals = XtCreatePopupShell(labelBuffer,
02184 topLevelShellWidgetClass,
02185 toplevel,
02186 TheArgs, 1);
02187
02188 XtSetArg(TheArgs[0], XtNdefaultDistance, 0);
02189 globals_form = XtCreateManagedWidget("globals_form",
02190 formWidgetClass,
02191 globals,
02192 TheArgs, 1);
02193
02194 XtSetArg(TheArgs[0], XtNwidth, 250);
02195 XtSetArg(TheArgs[1], XtNeditType, XawtextAppend);
02196 XtSetArg(TheArgs[2], XtNscrollHorizontal,XawtextScrollAlways);
02197 XtSetArg(TheArgs[3], XtNscrollVertical, XawtextScrollAlways);
02198 globals_text = XtCreateManagedWidget("globals_text",
02199 asciiTextWidgetClass,
02200 globals_form,
02201 TheArgs, 4);
02202
02203 XtOverrideTranslations(globals_text,
02204 XtParseTranslationTable(xclips_translation2));
02205
02206 XtPopup(globals, XtGrabNone);
02207
02208 if (! EnvAddRouter(theEnv, "xglobals", 10, XclipsQuery, XclipsPrint, NULL, NULL, XclipsExit))
02209 {
02210 EnvPrintRouter(theEnv,"werror", "Could not allocate xglobals router!\n");
02211 XclipsExit(theEnv,0);
02212 EnvExitRouter(theEnv,0);
02213 }
02214 }
02215
02216
02217
02218
02219
02220
02221
02222
02223
02224 void AllWindowsCallback(
02225 Widget w,
02226 XtPointer client_data,
02227 XtPointer call_data)
02228 {
02229 int n = 0;
02230
02231
02232
02233
02234
02235 if(!Browse_status[FACT_WIN])
02236 {
02237 if(facts != NULL)
02238 XtPopup(facts,XtGrabNone);
02239 else
02240 CreateFactWindow();
02241 XtSetArg(TheArgs[n],XtNleftBitmap,checker);n++;
02242 XtSetValues(facts_window,TheArgs,n);
02243 Browse_status[FACT_WIN] = !Browse_status[FACT_WIN];
02244 PrintChangedFacts();
02245 }
02246
02247
02248
02249
02250 if(!Browse_status[AGENDA_WIN])
02251 {
02252 if(agenda != NULL)
02253 XtPopup(agenda,XtGrabNone);
02254 else
02255 CreateAgendaWindow();
02256 XtSetArg(TheArgs[n],XtNleftBitmap,checker);n++;
02257 XtSetValues(agenda_window,TheArgs,n);
02258 Browse_status[AGENDA_WIN] = !Browse_status[AGENDA_WIN];
02259 PrintChangedAgenda();
02260 }
02261
02262
02263
02264
02265 if(!Browse_status[INSTANCE_WIN])
02266 {
02267
02268 if(instances != NULL)
02269 XtPopup(instances,XtGrabNone);
02270 else
02271 CreateInstanceWindow();
02272 XtSetArg(TheArgs[n],XtNleftBitmap,checker);n++;
02273 XtSetValues(instances_window,TheArgs,n);
02274 Browse_status[INSTANCE_WIN] = !Browse_status[INSTANCE_WIN];
02275 PrintChangedInstances();
02276 }
02277
02278
02279
02280
02281 if(!Browse_status[GLOBAL_WIN])
02282 {
02283 if(globals != NULL)
02284 XtPopup(globals,XtGrabNone);
02285 else
02286 CreateGlobalWindow();
02287 XtSetArg(TheArgs[n],XtNleftBitmap,checker);n++;
02288 XtSetValues(globals_window,TheArgs,n);
02289 Browse_status[GLOBAL_WIN] = !Browse_status[GLOBAL_WIN];
02290 PrintChangedGlobals();
02291 }
02292
02293
02294
02295
02296 if(!Browse_status[FOCUS_WIN])
02297 {
02298 if(focus != NULL)
02299 XtPopup(focus,XtGrabNone);
02300 else
02301 CreateFocusWindow();
02302 XtSetArg(TheArgs[n],XtNleftBitmap,checker);n++;
02303 XtSetValues(focus_window,TheArgs,n);
02304 Browse_status[FOCUS_WIN] = !Browse_status[FOCUS_WIN];
02305 PrintChangedFocus();
02306 }
02307 }
02308
02309
02310
02311
02312
02313
02314
02315
02316 void NoWindowsCallback(
02317 Widget w,
02318 XtPointer client_data,
02319 XtPointer call_data)
02320 {
02321 int n = 0;
02322
02323 XtSetArg(TheArgs[n], XtNleftBitmap, None); n++;
02324
02325 if (Browse_status[GLOBAL_WIN])
02326 {
02327 XtPopdown(globals);
02328 XtSetValues(globals_window,TheArgs,n);
02329 Browse_status[GLOBAL_WIN] = !Browse_status[GLOBAL_WIN];
02330 }
02331 if (Browse_status[INSTANCE_WIN])
02332 {
02333 XtPopdown(instances);
02334 XtSetValues(instances_window,TheArgs,n);
02335 Browse_status[INSTANCE_WIN] = !Browse_status[INSTANCE_WIN];
02336 }
02337 if(Browse_status[FACT_WIN])
02338 {
02339 XtPopdown(facts);
02340 XtSetValues(facts_window,TheArgs,n);
02341 Browse_status[FACT_WIN] = !Browse_status[FACT_WIN];
02342 }
02343 if(Browse_status[AGENDA_WIN])
02344 {
02345 XtPopdown(agenda);
02346 XtSetValues(agenda_window,TheArgs,n);
02347 Browse_status[AGENDA_WIN] = !Browse_status[AGENDA_WIN];
02348 }
02349 if(Browse_status[FOCUS_WIN])
02350 {
02351 XtPopdown(focus);
02352 XtSetValues(focus_window,TheArgs,n);
02353 Browse_status[FOCUS_WIN] = !Browse_status[FOCUS_WIN];
02354 }
02355
02356 }
02357
02358
02359
02360
02361
02362
02363
02364
02365
02366
02367
02368 void CommandLineCLIPSCallback(
02369 Widget w,
02370 XtPointer client_data,
02371 XtPointer call_data)
02372 {
02373 system("xterm -e clips &");
02374 }
02375
02376
02377
02378
02379
02380
02381
02382
02383
02384 void ColorUtilityCallback(
02385 Widget w,
02386 XtPointer client_data,
02387 XtPointer call_data)
02388 {
02389 system("color&");
02390 }
02391
02392
02393
02394
02395
02396
02397
02398 int IntGetDefruleLis()
02399 {
02400 void *theEnv = GetCurrentEnvironment();
02401 struct defrule *rule_ptr;
02402 int maxItems = 20,itemCount = 0;
02403 char *name;
02404
02405 if ((rule_ptr = (struct defrule *) EnvGetNextDefrule(theEnv,NULL)) == NULL)
02406 {
02407 item_list = NULL;
02408 return(0);
02409 }
02410 item_list = (String *)calloc(maxItems,sizeof(String));
02411
02412 while(rule_ptr != NULL)
02413 {
02414 name = EnvGetDefruleName(theEnv,(void*) rule_ptr);
02415 item_list[itemCount] = balloc(strlen(name) + 1,char);
02416 strcpy(item_list[itemCount], name);
02417 itemCount++;
02418 if (itemCount == (maxItems -1))
02419 {
02420 maxItems = 2*maxItems;
02421 item_list = (String *)realloc(item_list,maxItems * sizeof(String));
02422 }
02423 rule_ptr = (struct defrule *) EnvGetNextDefrule(theEnv, (void*)rule_ptr);
02424 }
02425
02426 item_list[itemCount] = NULL;
02427 sortList(item_list,itemCount);
02428 return(itemCount);
02429 }
02430
02431
02432
02433
02434
02435
02436
02437
02438
02439 static void DefruleRemoveCallback(
02440 Widget w,
02441 XtPointer client_data,
02442 XtPointer call_data)
02443 {
02444 void *theEnv = GetCurrentEnvironment();
02445 Widget list_widget = (Widget)client_data;
02446 XawListReturnStruct *current = XawListShowCurrent(list_widget);
02447
02448 if (current->list_index == XAW_LIST_NONE)
02449 { return; }
02450
02451 MoveEndOfFile(dialog_text, &TheEvent);
02452 SetCommandString(theEnv,"(undefrule ");
02453 EnvPrintRouter(theEnv,"wclips","(undefrule ");
02454 AppendCommandString(theEnv,current->string);
02455 EnvPrintRouter(theEnv,"wclips",current->string);
02456 AppendCommandString(theEnv,")\n");
02457 EnvPrintRouter(theEnv,"wclips",")\n");
02458
02459
02460
02461
02462
02463 quit_get_event = True;
02464 list_change = True;
02465 }
02466
02467
02468
02469
02470
02471
02472
02473
02474
02475 static void DefruleMatchesCallback(
02476 Widget w,
02477 XtPointer client_data,
02478 XtPointer call_data)
02479 {
02480 void *theEnv = GetCurrentEnvironment();
02481 Widget list_widget = (Widget)client_data;
02482 XawListReturnStruct *current = XawListShowCurrent(list_widget);
02483
02484 if (current->list_index == XAW_LIST_NONE)
02485 { return; }
02486
02487 MoveEndOfFile(dialog_text, &TheEvent);
02488 SetCommandString(theEnv,"(matches ");
02489 EnvPrintRouter(theEnv,"wclips","(matches ");
02490 AppendCommandString(theEnv,current->string);
02491 EnvPrintRouter(theEnv,"wclips",current->string);
02492 AppendCommandString(theEnv,")\n");
02493 EnvPrintRouter(theEnv,"wclips",")\n");
02494
02495
02496
02497
02498
02499 quit_get_event = True;
02500 }
02501
02502
02503
02504
02505
02506
02507
02508
02509
02510 static void DefrulePprintCallback(
02511 Widget w,
02512 XtPointer client_data,
02513 XtPointer call_data)
02514 {
02515 void *theEnv = GetCurrentEnvironment();
02516 Widget list_widget = (Widget)client_data;
02517 XawListReturnStruct *current = XawListShowCurrent(list_widget);
02518
02519
02520 if(current->list_index == XAW_LIST_NONE ||
02521 EnvGetDefrulePPForm(theEnv,(struct constructHeader *) EnvFindDefrule(theEnv,current->string)) == NULL)
02522 return;
02523 MoveEndOfFile(dialog_text, &TheEvent);
02524 SetCommandString(theEnv,"(ppdefrule ");
02525 EnvPrintRouter(theEnv,"wclips","(ppdefrule ");
02526 AppendCommandString(theEnv,current->string);
02527 EnvPrintRouter(theEnv,"wclips",current->string);
02528 AppendCommandString(theEnv,")\n");
02529 EnvPrintRouter(theEnv,"wclips",")\n");
02530
02531
02532
02533
02534
02535 quit_get_event = True;
02536 }
02537
02538
02539
02540
02541
02542
02543
02544
02545
02546 static void DefruleRefreshCallback(
02547 Widget w,
02548 XtPointer client_data,
02549 XtPointer call_data)
02550 {
02551 void *theEnv = GetCurrentEnvironment();
02552 Widget list_widget = (Widget)client_data;
02553 XawListReturnStruct *current = XawListShowCurrent(list_widget);
02554
02555
02556 if(current->list_index == XAW_LIST_NONE)
02557 return;
02558 MoveEndOfFile(dialog_text, &TheEvent);
02559 SetCommandString(theEnv,"(refresh ");
02560 EnvPrintRouter(theEnv,"wclips","(refresh ");
02561 AppendCommandString(theEnv,current->string);
02562 EnvPrintRouter(theEnv,"wclips",current->string);
02563 AppendCommandString(theEnv,")\n");
02564 EnvPrintRouter(theEnv,"wclips",")\n");
02565 quit_get_event = True;
02566 }
02567
02568
02569
02570
02571
02572
02573
02574 int IntGetFactList()
02575 {
02576 void *theEnv = GetCurrentEnvironment();
02577 struct deffacts *fact_ptr;
02578 int maxItems = 20,itemCount = 0;
02579 char *name;
02580
02581 if((fact_ptr = (struct deffacts *) EnvGetNextDeffacts(theEnv,NULL)) == NULL)
02582 {
02583 item_list = NULL;
02584 return(0);
02585 }
02586 item_list = (String*)calloc(maxItems,sizeof(String));
02587 while(fact_ptr != NULL)
02588 {
02589 name = (char*) EnvGetDeffactsName(theEnv,fact_ptr);
02590 item_list[itemCount] = balloc(strlen(name) + 1,char);
02591 strcpy(item_list[itemCount],name);
02592 itemCount += 1;
02593 if(itemCount == (maxItems - 1))
02594 {
02595 maxItems = 2 * (maxItems);
02596 item_list = (String*)realloc(item_list,maxItems * sizeof(String));
02597 }
02598 fact_ptr = (struct deffacts *) EnvGetNextDeffacts(theEnv,(void*)fact_ptr);
02599 }
02600 item_list[itemCount] = NULL;
02601 sortList(item_list,itemCount);
02602 return(itemCount);
02603 }
02604
02605
02606
02607
02608
02609
02610
02611
02612
02613 static void DeffactsRemove(
02614 Widget w,
02615 XtPointer client_data,
02616 XtPointer call_data)
02617 {
02618 void *theEnv = GetCurrentEnvironment();
02619 Widget list_widget = (Widget)client_data;
02620 XawListReturnStruct *current = XawListShowCurrent(list_widget);
02621
02622
02623 if(current->list_index == XAW_LIST_NONE)
02624 return;
02625 MoveEndOfFile(dialog_text, &TheEvent);
02626 SetCommandString(theEnv,"(undeffacts ");
02627 EnvPrintRouter(theEnv,"wclips","(undeffacts ");
02628 AppendCommandString(theEnv,current->string);
02629 EnvPrintRouter(theEnv,"wclips",current->string);
02630 AppendCommandString(theEnv,")\n");
02631 EnvPrintRouter(theEnv,"wclips",")\n");
02632
02633
02634
02635
02636
02637 quit_get_event = True;
02638 list_change = True;
02639 }
02640
02641
02642
02643
02644
02645
02646
02647
02648
02649 static void DeffactsPprint(
02650 Widget w,
02651 XtPointer client_data,
02652 XtPointer call_data)
02653 {
02654 void *theEnv = GetCurrentEnvironment();
02655 Widget list_widget = (Widget)client_data;
02656 XawListReturnStruct *current = XawListShowCurrent(list_widget);
02657
02658
02659 if(current->list_index == XAW_LIST_NONE)
02660 return;
02661 MoveEndOfFile(dialog_text, &TheEvent);
02662 SetCommandString(theEnv,"(ppdeffacts ");
02663 EnvPrintRouter(theEnv,"wclips","(ppdeffacts ");
02664 AppendCommandString(theEnv,current->string);
02665 EnvPrintRouter(theEnv,"wclips",current->string);
02666 AppendCommandString(theEnv,")\n");
02667 EnvPrintRouter(theEnv,"wclips",")\n");
02668
02669
02670
02671
02672 quit_get_event = True;
02673 }
02674
02675
02676
02677
02678
02679
02680
02681 int IntGetDeftemplateList()
02682 {
02683 void *theEnv = GetCurrentEnvironment();
02684 struct deftemplate *dtmpl_ptr;
02685 int itemCount = 0,maxItems = 20;
02686 char *name;
02687
02688 if((dtmpl_ptr = (struct deftemplate *) EnvGetNextDeftemplate(theEnv,NULL)) == NULL)
02689 {
02690 item_list = NULL;
02691 return(0);
02692 }
02693 item_list = (String *)calloc(maxItems,sizeof(String));
02694 while(dtmpl_ptr != NULL)
02695 {
02696 name = EnvGetDeftemplateName(theEnv,(struct constructHeader *) dtmpl_ptr);
02697 item_list[itemCount] = balloc(strlen(name) + 1, char);
02698 strcpy(item_list[itemCount++],name);
02699 if(itemCount == (maxItems - 1))
02700 {
02701 maxItems = 2 * maxItems;
02702 item_list = (String*)realloc(item_list,maxItems * sizeof(String));
02703 }
02704 dtmpl_ptr = (struct deftemplate *) EnvGetNextDeftemplate(theEnv,(void*)dtmpl_ptr);
02705 }
02706 item_list[itemCount] = NULL;
02707 sortList(item_list,itemCount);
02708 return(itemCount);
02709 }
02710
02711
02712
02713
02714
02715
02716
02717
02718
02719 static void DeftemplateRemove(
02720 Widget w,
02721 XtPointer client_data,
02722 XtPointer call_data)
02723 {
02724 void *theEnv = GetCurrentEnvironment();
02725 Widget list_widget = (Widget)client_data;
02726 XawListReturnStruct *current = XawListShowCurrent(list_widget);
02727
02728
02729 if(current->list_index == XAW_LIST_NONE)
02730 return;
02731 MoveEndOfFile(dialog_text, &TheEvent);
02732 SetCommandString(theEnv,"(undeftemplate ");
02733 EnvPrintRouter(theEnv,"wclips","(undeftemplate ");
02734 AppendCommandString(theEnv,current->string);
02735 EnvPrintRouter(theEnv,"wclips",current->string);
02736 AppendCommandString(theEnv,")\n");
02737 EnvPrintRouter(theEnv,"wclips",")\n");
02738
02739
02740
02741
02742
02743 quit_get_event = True;
02744 list_change = True;
02745 }
02746
02747
02748
02749
02750
02751
02752
02753
02754
02755
02756 static void DeftemplatePprint(
02757 Widget w,
02758 XtPointer client_data,
02759 XtPointer call_data)
02760 {
02761 void *theEnv = GetCurrentEnvironment();
02762 Widget list_widget = (Widget)client_data;
02763 XawListReturnStruct *current = XawListShowCurrent(list_widget);
02764
02765
02766 if(current->list_index == XAW_LIST_NONE)
02767 return;
02768 MoveEndOfFile(dialog_text, &TheEvent);
02769 SetCommandString(theEnv,"(ppdeftemplate ");
02770 EnvPrintRouter(theEnv,"wclips","(ppdeftemplate ");
02771 AppendCommandString(theEnv,current->string);
02772 EnvPrintRouter(theEnv,"wclips",current->string);
02773 AppendCommandString(theEnv,")\n");
02774 EnvPrintRouter(theEnv,"wclips",")\n");
02775
02776
02777
02778
02779 quit_get_event = True;
02780 }
02781
02782
02783
02784
02785
02786
02787
02788 int IntGetDeffunctionList()
02789 {
02790 void *theEnv = GetCurrentEnvironment();
02791 DEFFUNCTION * dfunc_ptr;
02792 int itemCount = 0,maxItems = 20;
02793 char *name;
02794
02795 if((dfunc_ptr = (DEFFUNCTION *) EnvGetNextDeffunction(theEnv,NULL)) == NULL)
02796 {
02797 item_list = NULL;
02798 return(0);
02799 }
02800 item_list = (String *)calloc(maxItems,sizeof(String));
02801 while(dfunc_ptr != NULL)
02802 {
02803 name = EnvGetDeffunctionName(theEnv,(void *) dfunc_ptr);
02804 item_list[itemCount] = balloc(strlen(name) + 1, char);
02805 strcpy(item_list[itemCount++],name);
02806 if(itemCount == (maxItems - 1))
02807 {
02808 maxItems = maxItems * 2;
02809 item_list = (String *)realloc(item_list,maxItems * sizeof(String));
02810 }
02811 dfunc_ptr = (DEFFUNCTION *) EnvGetNextDeffunction(theEnv,(void*)dfunc_ptr);
02812 }
02813 item_list[itemCount] = NULL;
02814 sortList(item_list,itemCount);
02815 return(itemCount);
02816 }
02817
02818
02819
02820
02821
02822
02823
02824
02825
02826 static void DeffunctionRemoveCallback(
02827 Widget w,
02828 XtPointer client_data,
02829 XtPointer call_data)
02830 {
02831 void *theEnv = GetCurrentEnvironment();
02832 Widget list_widget = (Widget)client_data;
02833 XawListReturnStruct *current = XawListShowCurrent(list_widget);
02834
02835
02836 if(current->list_index == XAW_LIST_NONE)
02837 return;
02838 MoveEndOfFile(dialog_text, &TheEvent);
02839 SetCommandString(theEnv,"(undeffunction ");
02840 EnvPrintRouter(theEnv,"wclips","(undeffunction ");
02841 AppendCommandString(theEnv,current->string);
02842 EnvPrintRouter(theEnv,"wclips",current->string);
02843 AppendCommandString(theEnv,")\n");
02844 EnvPrintRouter(theEnv,"wclips",")\n");
02845
02846
02847
02848 quit_get_event = True;
02849 list_change = True;
02850 }
02851
02852
02853
02854
02855
02856
02857
02858
02859
02860
02861 static void DeffunctionPprintCallback(
02862 Widget w,
02863 XtPointer client_data,
02864 XtPointer call_data)
02865 {
02866 void *theEnv = GetCurrentEnvironment();
02867 Widget list_widget = (Widget)client_data;
02868 XawListReturnStruct *current = XawListShowCurrent(list_widget);
02869
02870 if (current->list_index == XAW_LIST_NONE ||
02871 EnvGetDeffunctionPPForm(theEnv,EnvFindDeffunction(theEnv,current->string)) == NULL)
02872 { return; }
02873
02874 MoveEndOfFile(dialog_text, &TheEvent);
02875 SetCommandString(theEnv,"(ppdeffunction ");
02876 EnvPrintRouter(theEnv,"wclips","(ppdeffunction ");
02877 AppendCommandString(theEnv,current->string);
02878 EnvPrintRouter(theEnv,"wclips",current->string);
02879 AppendCommandString(theEnv,")\n");
02880 EnvPrintRouter(theEnv,"wclips",")\n");
02881
02882
02883
02884
02885 quit_get_event = True;
02886 }
02887
02888
02889
02890
02891
02892
02893
02894 int IntGetDefgenericList()
02895 {
02896 void *theEnv = GetCurrentEnvironment();
02897 int maxItems = 20,itemCount = 0;
02898 struct generic_func *generic_func_ptr;
02899 char *name;
02900
02901 if ((generic_func_ptr = (struct generic_func *) EnvGetNextDefgeneric(theEnv,NULL)) == NULL)
02902 {
02903 item_list = NULL;
02904 return(0);
02905 }
02906
02907 item_list = (String *)calloc(maxItems,sizeof(String));
02908 while( generic_func_ptr != NULL)
02909 {
02910 name = (char*) EnvGetDefgenericName(theEnv,generic_func_ptr);
02911 item_list[itemCount] = balloc(strlen(name) + 1, char);
02912 strcpy(item_list[itemCount++],name);
02913 if (itemCount == (maxItems - 1))
02914 {
02915 maxItems = maxItems * 2;
02916 item_list = (String *)realloc(item_list,maxItems*sizeof(String));
02917 }
02918 generic_func_ptr = (struct generic_func *) EnvGetNextDefgeneric(theEnv,(void*)generic_func_ptr);
02919 }
02920 item_list[itemCount] = NULL;
02921 sortList(item_list,itemCount);
02922 return(itemCount);
02923 }
02924
02925
02926
02927
02928
02929
02930
02931
02932
02933 static void DefgenericRemoveCallback(
02934 Widget w,
02935 XtPointer client_data,
02936 XtPointer call_data)
02937 {
02938 void *theEnv = GetCurrentEnvironment();
02939 Widget list_widget = (Widget)client_data;
02940 XawListReturnStruct *current = XawListShowCurrent(list_widget);
02941
02942
02943 if(current->list_index == XAW_LIST_NONE)
02944 return;
02945 MoveEndOfFile(dialog_text, &TheEvent);
02946 SetCommandString(theEnv,"(undefgeneric ");
02947 EnvPrintRouter(theEnv,"wclips","(undefgeneric ");
02948 AppendCommandString(theEnv,current->string);
02949 EnvPrintRouter(theEnv,"wclips",current->string);
02950 AppendCommandString(theEnv,")\n");
02951 EnvPrintRouter(theEnv,"wclips",")\n");
02952
02953
02954
02955 quit_get_event = True;
02956 list_change = True;
02957 }
02958
02959
02960
02961
02962
02963
02964
02965
02966
02967
02968 static void DefgenericPprintCallback(
02969 Widget w,
02970 XtPointer client_data,
02971 XtPointer call_data)
02972 {
02973 void *theEnv = GetCurrentEnvironment();
02974 Widget list_widget = (Widget)client_data;
02975 XawListReturnStruct *current = XawListShowCurrent(list_widget);
02976
02977
02978 if(current->list_index == XAW_LIST_NONE ||
02979 EnvGetDefgenericPPForm(theEnv,EnvFindDefgeneric(theEnv,current->string)) == NULL)
02980 return;
02981 MoveEndOfFile(dialog_text, &TheEvent);
02982 SetCommandString(theEnv,"(ppdefgeneric ");
02983 EnvPrintRouter(theEnv,"wclips","(ppdefgeneric ");
02984 AppendCommandString(theEnv,current->string);
02985 EnvPrintRouter(theEnv,"wclips",current->string);
02986 AppendCommandString(theEnv,")\n");
02987 EnvPrintRouter(theEnv,"wclips",")\n");
02988
02989
02990
02991 quit_get_event = True;
02992 }
02993
02994
02995
02996
02997
02998
02999
03000 static void DefgenericWatchCallback(
03001 Widget w,
03002 XtPointer client_data,
03003 XtPointer call_data)
03004 {
03005 void *theEnv = GetCurrentEnvironment();
03006 void* defgenericPtr = NULL;
03007 Widget list_widget = (Widget)client_data;
03008 XawListReturnStruct *current = XawListShowCurrent(list_widget);
03009
03010 if(current->list_index == XAW_LIST_NONE)
03011 return;
03012 defgenericPtr = EnvFindDefgeneric(theEnv,current->string);
03013 EnvSetDefgenericWatch(theEnv,!EnvGetDefgenericWatch(theEnv,defgenericPtr),defgenericPtr);
03014 }
03015
03016
03017
03018
03019
03020
03021
03022 static void DefgenericMngrCheckBoxCallback(
03023 Widget w,
03024 XtPointer client_data,
03025 XtPointer call_data)
03026 {
03027 void *theEnv = GetCurrentEnvironment();
03028 void *defgenericPtr = NULL;
03029 Widget checkbox = (Widget)client_data;
03030 XawListReturnStruct *current = XawListShowCurrent(w);
03031
03032 if (current->list_index == XAW_LIST_NONE)
03033 { return; }
03034
03035 defgenericPtr = EnvFindDefgeneric(theEnv,current->string);
03036 XtSetArg(TheArgs[0],XtNstate,EnvGetDefgenericWatch(theEnv,defgenericPtr));
03037 XtSetValues(checkbox,TheArgs,1);
03038 }
03039
03040
03041
03042
03043
03044
03045
03046
03047
03048
03049 static void DefgenericMethodCallback(
03050 Widget w,
03051 XtPointer client_data,
03052 XtPointer call_data)
03053 {
03054
03055
03056 Widget defmethodmanager, defmethodmanager_form, defmethodmanager_viewport,
03057 removeb, pprint, cancel,watch_label;
03058 static Widget watch;
03059 char title[MAX_CHAR_IN_BUF];
03060 Widget list_widget = (Widget)client_data;
03061 XawListReturnStruct *current = XawListShowCurrent(list_widget);
03062 int itemCount = 0;
03063
03064
03065 if(current->list_index == XAW_LIST_NONE)
03066 return;
03067
03068
03069
03070
03071
03072 itemCount = IntGetDefmethodList(current->string);
03073 if(item_list1 == NULL)
03074 {
03075 defmethodmanager_flag = False;
03076 return;
03077 }
03078 curr_def_name = balloc(strlen(current->string) + 1,char);
03079 strcpy(curr_def_name,current->string);
03080 defmethodmanager_flag = True;
03081 title[0] = 0;
03082 sprintf(title,"%s Defmethod Manager - %d Items",curr_def_name,itemCount);
03083
03084
03085
03086
03087
03088 defmethodmanager = XtCreatePopupShell(title,
03089 topLevelShellWidgetClass,
03090 toplevel,
03091 NULL, 0);
03092
03093 defmethodmanager_form = XtCreateManagedWidget("manager_form",
03094 formWidgetClass,
03095 defmethodmanager,
03096 NULL, 0);
03097
03098 XtSetArg(TheArgs[0],XtNallowHoriz,True);
03099 XtSetArg(TheArgs[1],XtNallowVert,True);
03100 defmethodmanager_viewport = XtCreateManagedWidget("manager_viewport",
03101 viewportWidgetClass,
03102 defmethodmanager_form,
03103 TheArgs, 2);
03104
03105 XtSetArg(TheArgs[0], XtNlist, item_list1);
03106 manager_list1 = XtCreateManagedWidget("manager_list",
03107 listWidgetClass,
03108 defmethodmanager_viewport,
03109 TheArgs, 1);
03110
03111
03112
03113
03114 XtSetArg(TheArgs[0], XtNfromHoriz, defmethodmanager_viewport);
03115 XtSetArg(TheArgs[1], XtNlabel, "Remove");
03116 removeb = XtCreateManagedWidget("managerButton",
03117 commandWidgetClass,
03118 defmethodmanager_form,
03119 TheArgs, 2);
03120 XtAddCallback(removeb,XtNcallback,RemoveDefmethodCallback,(XtPointer)manager_list1);
03121
03122 XtSetArg(TheArgs[1], XtNfromVert, removeb);
03123 XtSetArg(TheArgs[2], XtNlabel, "Pprint");
03124 pprint = XtCreateManagedWidget("managerButton",
03125 commandWidgetClass,
03126 defmethodmanager_form,
03127 TheArgs, 3);
03128 XtAddCallback(pprint,XtNcallback,DefmethodPprintCallback,(XtPointer)manager_list1);
03129
03130
03131
03132
03133
03134 XtSetArg(TheArgs[1], XtNfromVert,pprint );
03135 XtSetArg(TheArgs[2], XtNlabel, " ");
03136 watch = XtCreateManagedWidget("managerButton",
03137 toggleWidgetClass,
03138 defmethodmanager_form,
03139 TheArgs, 3);
03140 XtAddCallback(watch,XtNcallback,DefmethodWatchCallback,(XtPointer)manager_list1);
03141 XtAddCallback(manager_list1,XtNcallback,DefmethodMngrCheckBoxCallback,(XtPointer)watch);
03142 XtSetArg(TheArgs[2], XtNlabel,"Watch");
03143 XtSetArg(TheArgs[0],XtNfromHoriz,watch);
03144 watch_label = XtCreateManagedWidget("checkBoxLabel",
03145 labelWidgetClass,
03146 defmethodmanager_form,
03147 TheArgs,3);
03148
03149
03150
03151
03152
03153 XtSetArg(TheArgs[0], XtNfromHoriz, defmethodmanager_viewport);
03154 XtSetArg(TheArgs[1], XtNfromVert, watch);
03155 XtSetArg(TheArgs[2], XtNlabel, "Done");
03156 cancel = XtCreateManagedWidget("managerCancel",
03157 commandWidgetClass,
03158 defmethodmanager_form,
03159 TheArgs, 3);
03160 XtAddCallback(cancel, XtNcallback, CancelSelectSecondary,
03161 (XtPointer) defmethodmanager);
03162
03163 XtPopup(defmethodmanager, XtGrabNonexclusive);
03164
03165 }
03166
03167
03168
03169
03170
03171
03172
03173
03174
03175 static void RemoveDefmethodCallback(
03176 Widget w,
03177 XtPointer client_data,
03178 XtPointer call_data)
03179 {
03180 void *theEnv = GetCurrentEnvironment();
03181 char theIndex[5];
03182 int i;
03183 Widget aList = (Widget)client_data;
03184 XawListReturnStruct *current = XawListShowCurrent(aList);
03185
03186 if(current->list_index == XAW_LIST_NONE)
03187 return;
03188 for (i = 0; ('0' <= current->string[i]) && (current->string[i] <= '9');i++)
03189 theIndex[i] = current->string[i];
03190
03191 theIndex[i] = 0;
03192 MoveEndOfFile(dialog_text, &TheEvent);
03193 SetCommandString(theEnv,"(undefmethod ");
03194 EnvPrintRouter(theEnv,"wclips","(undefmethod ");
03195 AppendCommandString(theEnv,curr_def_name);
03196 EnvPrintRouter(theEnv,"wclips",curr_def_name);
03197 AppendCommandString(theEnv," ");
03198 EnvPrintRouter(theEnv,"wclips"," ");
03199 AppendCommandString(theEnv,theIndex);
03200 EnvPrintRouter(theEnv,"wclips",theIndex);
03201 AppendCommandString(theEnv,")\n");
03202 EnvPrintRouter(theEnv,"wclips",")\n");
03203
03204
03205
03206 quit_get_event = True;
03207 list1_change = True;
03208
03209 }
03210
03211
03212
03213
03214
03215
03216
03217
03218 static void DefmethodPprintCallback(
03219 Widget w,
03220 XtPointer client_data,
03221 XtPointer call_data)
03222
03223 {
03224 void *theEnv = GetCurrentEnvironment();
03225 char theIndex[5];
03226 int i;
03227 unsigned methodIndex;
03228 Widget aList = (Widget)client_data;
03229 XawListReturnStruct *current = XawListShowCurrent(aList);
03230
03231 if(current->list_index == XAW_LIST_NONE)
03232 return;
03233 for (i = 0; ('0' <= current->string[i]) && (current->string[i] <= '9');i++)
03234 theIndex[i] = current->string[i];
03235
03236 theIndex[i] = 0;
03237 methodIndex = (unsigned)atoi(theIndex);
03238 if(EnvGetDefmethodPPForm(theEnv,EnvFindDefgeneric(theEnv,curr_def_name),methodIndex) == NULL)
03239 return;
03240
03241 MoveEndOfFile(dialog_text, &TheEvent);
03242 AppendCommandString(theEnv,"(ppdefmethod ");
03243 EnvPrintRouter(theEnv,"wclips","(ppdefmethod ");
03244 AppendCommandString(theEnv,curr_def_name);
03245 EnvPrintRouter(theEnv,"wclips",curr_def_name);
03246 AppendCommandString(theEnv," ");
03247 EnvPrintRouter(theEnv,"wclips"," ");
03248 AppendCommandString(theEnv,theIndex);
03249 EnvPrintRouter(theEnv,"wclips",theIndex);
03250 AppendCommandString(theEnv,")\n");
03251 EnvPrintRouter(theEnv,"wclips",")\n");
03252
03253
03254
03255 quit_get_event = True;
03256
03257 }
03258
03259
03260
03261
03262
03263
03264
03265 static void DefmethodWatchCallback(
03266 Widget w,
03267 XtPointer client_data,
03268 XtPointer call_data)
03269 {
03270 void *theEnv = GetCurrentEnvironment();
03271 char theIndex[5];
03272 int i;
03273 unsigned MethodIndex;
03274 void *defgenericPtr = NULL;
03275 Widget aList = (Widget)client_data;
03276 XawListReturnStruct *current = XawListShowCurrent(aList);
03277
03278 if (current->list_index == XAW_LIST_NONE)
03279 { return; }
03280
03281 for (i = 0; ('0' <= current->string[i]) && (current->string[i] <= '9');i++)
03282 theIndex[i] = current->string[i];
03283
03284 theIndex[i] = 0;
03285 MethodIndex = (unsigned) atoi(theIndex);
03286 defgenericPtr = EnvFindDefgeneric(theEnv,curr_def_name);
03287 EnvSetDefmethodWatch(theEnv,! EnvGetDefmethodWatch(theEnv,defgenericPtr,MethodIndex),
03288 defgenericPtr,MethodIndex);
03289
03290 }
03291
03292
03293
03294
03295
03296
03297
03298
03299 static void DefmethodMngrCheckBoxCallback(
03300 Widget w,
03301 XtPointer client_data,
03302 XtPointer call_data)
03303 {
03304 void *theEnv = GetCurrentEnvironment();
03305 char theIndex[5];
03306 int i;
03307 unsigned MethodIndex;
03308 XawListReturnStruct *current = XawListShowCurrent(w);
03309
03310 if (current->list_index == XAW_LIST_NONE)
03311 { return; }
03312
03313 for (i = 0; ('0' <= current->string[i]) && (current->string[i] <= '9');i++)
03314 theIndex[i] = current->string[i];
03315 theIndex[i] = 0;
03316 MethodIndex = (unsigned)atoi(theIndex);
03317 XtSetArg(TheArgs[0],XtNstate,EnvGetDefmethodWatch(theEnv,EnvFindDefgeneric(theEnv,curr_def_name),MethodIndex));
03318 XtSetValues((Widget)client_data,TheArgs,1);
03319
03320 }
03321
03322
03323
03324
03325
03326
03327
03328 int IntGetDefmethodList(
03329 char *Aname)
03330 {
03331 void *theEnv = GetCurrentEnvironment();
03332 void *genrc_ptr;
03333 unsigned theIndex;
03334 char buf[61];
03335 register int itemCount = 0;
03336 int maxItems = 20;
03337
03338 genrc_ptr = EnvFindDefgeneric(theEnv,Aname);
03339 if (item_list1 != NULL)
03340 { free(item_list1); }
03341 if ((theIndex = EnvGetNextDefmethod(theEnv,genrc_ptr,0)) == 0)
03342 {
03343 item_list1 = NULL;
03344 return(0);
03345 }
03346
03347 item_list1 = (String*) calloc(maxItems,sizeof(String));
03348 while (theIndex != 0)
03349 {
03350 EnvGetDefmethodDescription(theEnv,buf,60,genrc_ptr,theIndex);
03351 item_list1[itemCount] = balloc(strlen(buf) + 1,char);
03352 strcpy(item_list1[itemCount++],buf);
03353 if (itemCount == (maxItems - 1))
03354 {
03355 maxItems = 2 * maxItems;
03356 item_list1 = (String*)realloc(item_list1,maxItems*sizeof(String));
03357 }
03358 theIndex = EnvGetNextDefmethod(theEnv,genrc_ptr,theIndex);
03359 }
03360 item_list1[itemCount] = NULL;
03361 sortList(item_list1,itemCount);
03362 return(itemCount);
03363 }
03364
03365
03366
03367
03368
03369
03370
03371 int IntGetDefinstancesList()
03372 {
03373 void *theEnv = GetCurrentEnvironment();
03374 int maxItems = 20, itemCount = 0;
03375 struct definstance *definstance_ptr;
03376 char *name;
03377
03378
03379 if((definstance_ptr = (struct definstance *) EnvGetNextDefinstances(theEnv,NULL)) == NULL)
03380 {
03381 item_list = NULL;
03382 return(0);
03383 }
03384 item_list = (String*)calloc(maxItems,sizeof(String));
03385 while( definstance_ptr != NULL)
03386 {
03387 name = EnvGetDefinstancesName(theEnv, (void*)definstance_ptr);
03388 item_list[itemCount] = balloc(strlen(name) + 1, char);
03389 strcpy(item_list[itemCount++],name);
03390 if(itemCount == (maxItems - 1))
03391 {
03392 maxItems = maxItems * 2;
03393 item_list = (String*)realloc(item_list,maxItems * sizeof(String));
03394 }
03395 definstance_ptr = (struct definstance *) EnvGetNextDefinstances(theEnv,(void*)definstance_ptr);
03396 }
03397 item_list[itemCount] = NULL;
03398 sortList(item_list,itemCount);
03399 return(itemCount);
03400 }
03401
03402
03403
03404
03405
03406
03407
03408
03409
03410 static void DefinstancesRemoveCallback(
03411 Widget w,
03412 XtPointer client_data,
03413 XtPointer call_data)
03414 {
03415 void *theEnv = GetCurrentEnvironment();
03416 Widget list_widget = (Widget)client_data;
03417 XawListReturnStruct *current = XawListShowCurrent(list_widget);
03418
03419
03420 if(current->list_index == XAW_LIST_NONE)
03421 return;
03422 MoveEndOfFile(dialog_text, &TheEvent);
03423 SetCommandString(theEnv,"(undefinstances ");
03424 EnvPrintRouter(theEnv,"wclips","(undefinstances ");
03425 AppendCommandString(theEnv,current->string);
03426 EnvPrintRouter(theEnv,"wclips",current->string);
03427 AppendCommandString(theEnv,")\n");
03428 EnvPrintRouter(theEnv,"wclips",")\n");
03429
03430
03431
03432 quit_get_event = True;
03433 list_change = True;
03434 }
03435
03436
03437
03438
03439
03440
03441
03442
03443
03444
03445 static void DefinstancesPprintCallback(
03446 Widget w,
03447 XtPointer client_data,
03448 XtPointer call_data)
03449 {
03450 void *theEnv = GetCurrentEnvironment();
03451 Widget list_widget = (Widget)client_data;
03452 XawListReturnStruct *current = XawListShowCurrent(list_widget);
03453
03454
03455 if(current->list_index == XAW_LIST_NONE ||
03456 EnvGetDefinstancesPPForm(theEnv,EnvFindDefinstances(theEnv,current->string)) == NULL)
03457 return;
03458 MoveEndOfFile(dialog_text, &TheEvent);
03459 SetCommandString(theEnv,"(ppdefinstances ");
03460 EnvPrintRouter(theEnv,"wclips","(ppdefinstances ");
03461 AppendCommandString(theEnv,current->string);
03462 EnvPrintRouter(theEnv,"wclips",current->string);
03463 AppendCommandString(theEnv,")\n");
03464 EnvPrintRouter(theEnv,"wclips",")\n");
03465
03466
03467
03468 quit_get_event = True;
03469 }
03470
03471
03472
03473
03474
03475
03476
03477 int IntGetDefclassList()
03478 {
03479 void *theEnv = GetCurrentEnvironment();
03480 int maxItems = 20, itemCount = 0;
03481 struct cls *cls_ptr;
03482 char *name;
03483
03484 if ((cls_ptr = (struct cls *) EnvGetNextDefclass(theEnv,NULL)) == NULL)
03485 {
03486 item_list = NULL;
03487 return(0);
03488 }
03489 item_list = (String*)calloc(maxItems,sizeof(String));
03490 while( cls_ptr != NULL)
03491 {
03492 name = (char*)EnvGetDefclassName(theEnv,cls_ptr);
03493 item_list[itemCount] = balloc(strlen(name) + 1, char);
03494 strcpy(item_list[itemCount++], name);
03495 if(itemCount == (maxItems - 1))
03496 {
03497 maxItems = maxItems * 2;
03498 item_list = (String*)realloc(item_list,maxItems * sizeof(String));
03499 }
03500 cls_ptr = (struct cls *) EnvGetNextDefclass(theEnv,(void*)cls_ptr);
03501 }
03502 item_list[itemCount] = NULL;
03503 sortList(item_list,itemCount);
03504 return(itemCount);
03505 }
03506
03507
03508
03509
03510
03511
03512
03513
03514
03515 static void DefclassRemoveCallback(
03516 Widget w,
03517 XtPointer client_data,
03518 XtPointer call_data)
03519 {
03520 void *theEnv = GetCurrentEnvironment();
03521 Widget list_widget = (Widget)client_data;
03522 XawListReturnStruct *current = XawListShowCurrent(list_widget);
03523
03524
03525 if(current->list_index == XAW_LIST_NONE)
03526 return;
03527 MoveEndOfFile(dialog_text, &TheEvent);
03528 SetCommandString(theEnv,"(undefclass ");
03529 EnvPrintRouter(theEnv,"wclips","(undefclass ");
03530 AppendCommandString(theEnv,current->string);
03531 EnvPrintRouter(theEnv,"wclips",current->string);
03532 AppendCommandString(theEnv,")\n");
03533 EnvPrintRouter(theEnv,"wclips",")\n");
03534
03535
03536
03537 quit_get_event = True;
03538 list_change = True;
03539
03540 }
03541
03542
03543
03544
03545
03546
03547
03548
03549
03550 static void DefclassDescribeCallback(
03551 Widget w,
03552 XtPointer client_data,
03553 XtPointer call_data)
03554 {
03555 void *theEnv = GetCurrentEnvironment();
03556 Widget list_widget = (Widget)client_data;
03557 XawListReturnStruct *current = XawListShowCurrent(list_widget);
03558
03559
03560 if(current->list_index == XAW_LIST_NONE)
03561 return;
03562 MoveEndOfFile(dialog_text, &TheEvent);
03563 SetCommandString(theEnv,"(describe-class ");
03564 EnvPrintRouter(theEnv,"wclips","(describe-class ");
03565 AppendCommandString(theEnv,current->string);
03566 EnvPrintRouter(theEnv,"wclips",current->string);
03567 AppendCommandString(theEnv,")\n");
03568 EnvPrintRouter(theEnv,"wclips",")\n");
03569
03570
03571
03572 quit_get_event = True;
03573 }
03574
03575
03576
03577
03578
03579
03580
03581
03582
03583 static void DefclassBrowseCallback(
03584 Widget w,
03585 XtPointer client_data,
03586 XtPointer call_data)
03587 {
03588 void *theEnv = GetCurrentEnvironment();
03589 Widget list_widget = (Widget)client_data;
03590 XawListReturnStruct *current = XawListShowCurrent(list_widget);
03591
03592
03593 if(current->list_index == XAW_LIST_NONE)
03594 return;
03595 MoveEndOfFile(dialog_text, &TheEvent);
03596 SetCommandString(theEnv,"(browse-classes ");
03597 EnvPrintRouter(theEnv,"wclips","(browse-classes ");
03598 AppendCommandString(theEnv,current->string);
03599 EnvPrintRouter(theEnv,"wclips",current->string);
03600 AppendCommandString(theEnv,")\n");
03601 EnvPrintRouter(theEnv,"wclips",")\n");
03602
03603
03604
03605 quit_get_event = True;
03606 }
03607
03608
03609
03610
03611
03612
03613
03614
03615
03616
03617 static void DefclassPprintCallback(
03618 Widget w,
03619 XtPointer client_data,
03620 XtPointer call_data)
03621 {
03622 void *theEnv = GetCurrentEnvironment();
03623 Widget list_widget = (Widget)client_data;
03624 XawListReturnStruct *current = XawListShowCurrent(list_widget);
03625
03626
03627 if(current->list_index == XAW_LIST_NONE ||
03628 EnvGetDefclassPPForm(theEnv,EnvFindDefclass(theEnv,current->string)) == NULL)
03629 return;
03630 MoveEndOfFile(dialog_text, &TheEvent);
03631 SetCommandString(theEnv,"(ppdefclass ");
03632 EnvPrintRouter(theEnv,"wclips","(ppdefclass ");
03633 AppendCommandString(theEnv,current->string);
03634 EnvPrintRouter(theEnv,"wclips",current->string);
03635 AppendCommandString(theEnv,")\n");
03636 EnvPrintRouter(theEnv,"wclips",")\n");
03637
03638
03639
03640 quit_get_event = True;
03641 }
03642
03643
03644
03645
03646
03647
03648
03649
03650
03651
03652 static void DefclassMessageHandlersCallback(
03653 Widget w,
03654 XtPointer client_data,
03655 XtPointer call_data)
03656 {
03657 char title[MAX_CHAR_IN_BUF];
03658 Widget defmessHdlrManager, defmessHdlrManager_form, defmessHdlrManager_viewport,
03659 removeb, pprint, cancel,watch,watch_label;
03660 int itemCount = 0;
03661
03662 Widget list_widget = (Widget)client_data;
03663 XawListReturnStruct *current = XawListShowCurrent(list_widget);
03664
03665
03666 if(current->list_index == XAW_LIST_NONE)
03667 return;
03668 itemCount = IntGetDefmessgHndlerList(current->string);
03669 if(item_list1 == NULL)
03670 {
03671 defmessagehandler_flag = False;
03672 return;
03673 }
03674 curr_def_name = balloc(strlen(current->string) + 1,char);
03675 strcpy(curr_def_name,current->string);
03676 title[0] = 0;
03677 sprintf(title,"%s Defmessage-Handler Manager - %d Items",curr_def_name,itemCount);
03678 defmessagehandler_flag = True;
03679
03680
03681
03682
03683
03684 defmessHdlrManager = XtCreatePopupShell(title,
03685 topLevelShellWidgetClass,
03686 toplevel,
03687 NULL, 0);
03688 defmessHdlrManager_form = XtCreateManagedWidget("manager_form",
03689 formWidgetClass,
03690 defmessHdlrManager,
03691 NULL, 0);
03692 XtSetArg(TheArgs[0],XtNallowHoriz,True);
03693 XtSetArg(TheArgs[1],XtNallowVert,True);
03694 defmessHdlrManager_viewport = XtCreateManagedWidget("manager_viewport",
03695 viewportWidgetClass,
03696 defmessHdlrManager_form,
03697 TheArgs,2);
03698 XtSetArg(TheArgs[0], XtNlist, item_list1);
03699 manager_list1 = XtCreateManagedWidget("manager_list",
03700 listWidgetClass,
03701 defmessHdlrManager_viewport,
03702 TheArgs, 1);
03703
03704
03705
03706
03707
03708 XtSetArg(TheArgs[0], XtNfromHoriz, defmessHdlrManager_viewport);
03709 XtSetArg(TheArgs[1], XtNlabel, "Remove");
03710 removeb = XtCreateManagedWidget("managerButton",
03711 commandWidgetClass,
03712 defmessHdlrManager_form,
03713 TheArgs, 2);
03714 XtAddCallback(removeb,XtNcallback,RemoveMessageHandlerCallback,(XtPointer)manager_list1);
03715
03716
03717
03718
03719
03720 XtSetArg(TheArgs[1], XtNfromVert, removeb);
03721 XtSetArg(TheArgs[2], XtNlabel, "Pprint");
03722 pprint = XtCreateManagedWidget("managerButton",
03723 commandWidgetClass,
03724 defmessHdlrManager_form,
03725 TheArgs, 3);
03726 XtAddCallback(pprint,XtNcallback,MessageHandlerPprintCallback,manager_list1);
03727
03728
03729
03730
03731
03732 XtSetArg(TheArgs[1],XtNfromVert,pprint);
03733 XtSetArg(TheArgs[2],XtNlabel," ");
03734 watch = XtCreateManagedWidget("managerButton",
03735 toggleWidgetClass,
03736 defmessHdlrManager_form,
03737 TheArgs, 3);
03738 XtAddCallback(watch,XtNcallback,DefmessHdlrMngrWatchCallback,manager_list1);
03739 XtAddCallback(manager_list1,XtNcallback,DefmessHdlrMngrCheckBoxCallback,watch);
03740 XtSetArg(TheArgs[0],XtNfromHoriz,watch);
03741 XtSetArg(TheArgs[1],XtNfromVert,pprint);
03742 XtSetArg(TheArgs[2],XtNlabel,"Watch");
03743 watch_label = XtCreateManagedWidget("checkBoxLabel",
03744 labelWidgetClass,
03745 defmessHdlrManager_form,
03746 TheArgs, 3);
03747
03748
03749
03750
03751
03752 XtSetArg(TheArgs[0], XtNfromHoriz,defmessHdlrManager_viewport);
03753 XtSetArg(TheArgs[1], XtNfromVert, watch);
03754 XtSetArg(TheArgs[2], XtNlabel, "Done");
03755 cancel = XtCreateManagedWidget("managerCancel",
03756 commandWidgetClass,
03757 defmessHdlrManager_form,
03758 TheArgs, 3);
03759 XtAddCallback(cancel,XtNcallback,CancelSelectSecondary,defmessHdlrManager);
03760 XtPopup(defmessHdlrManager, XtGrabNonexclusive);
03761 }
03762
03763
03764
03765
03766
03767
03768
03769 int IntGetDefmessgHndlerList(
03770 char *name)
03771 {
03772 void *theEnv = GetCurrentEnvironment();
03773 void *defclass_ptr;
03774 unsigned theIndex;
03775 char *buf1,*buf2;
03776 unsigned int maxItems = 20;
03777 int itemCount = 0;
03778
03779 defclass_ptr = EnvFindDefclass(theEnv,name);
03780 if(item_list1 != NULL)
03781 free(item_list1);
03782 if((theIndex = EnvGetNextDefmessageHandler(theEnv,defclass_ptr,0)) == 0)
03783 {
03784 item_list1 = NULL;
03785 return(0);
03786 }
03787 item_list1 = (String*)calloc(maxItems,sizeof(String));
03788 while(theIndex != 0)
03789 {
03790 buf1 = EnvGetDefmessageHandlerName(theEnv,defclass_ptr,theIndex);
03791 buf2 = EnvGetDefmessageHandlerType(theEnv,defclass_ptr,theIndex);
03792 item_list1[itemCount] = balloc(strlen(buf1) + strlen(buf2) + 2,char);
03793 strcpy(item_list1[itemCount],buf1);
03794 strcat(item_list1[itemCount]," ");
03795 strcat(item_list1[itemCount++],buf2);
03796 if(itemCount == (maxItems - 1))
03797 {
03798 maxItems = 2 * maxItems;
03799 item_list1 = (String*)realloc(item_list1,maxItems * sizeof(String));
03800 }
03801 theIndex = EnvGetNextDefmessageHandler(theEnv,defclass_ptr,theIndex);
03802 }
03803 item_list1[itemCount] = NULL;
03804 sortList(item_list1,itemCount);
03805 return(itemCount);
03806 }
03807
03808
03809
03810
03811
03812
03813
03814
03815
03816 static void RemoveMessageHandlerCallback(
03817 Widget w,
03818 XtPointer client_data,
03819 XtPointer call_data)
03820 {
03821 void *theEnv = GetCurrentEnvironment();
03822 char buf[256];
03823 int i;
03824 Widget aList = (Widget)client_data;
03825 XawListReturnStruct *current = XawListShowCurrent(aList);
03826
03827 if(current->list_index == XAW_LIST_NONE)
03828 return;
03829 for (i = 0; current->string[i] != ' '; i++)
03830 buf[i] = current->string[i];
03831
03832 buf[i] = 0;
03833 MoveEndOfFile(dialog_text, &TheEvent);
03834 AppendCommandString(theEnv,"(undefmessage-handler ");
03835 EnvPrintRouter(theEnv,"wclips","(undefmessage-handler ");
03836 AppendCommandString(theEnv,curr_def_name);
03837 EnvPrintRouter(theEnv,"wclips",curr_def_name);
03838 AppendCommandString(theEnv," ");
03839 EnvPrintRouter(theEnv,"wclips"," ");
03840 AppendCommandString(theEnv,buf);
03841 EnvPrintRouter(theEnv,"wclips",buf);
03842 strcpy(buf,&(current->string[i]));
03843 AppendCommandString(theEnv," ");
03844 EnvPrintRouter(theEnv,"wclips"," ");
03845 AppendCommandString(theEnv,buf);
03846 EnvPrintRouter(theEnv,"wclips",buf);
03847 AppendCommandString(theEnv,")\n");
03848 EnvPrintRouter(theEnv,"wclips",")\n");
03849
03850
03851
03852 quit_get_event = True;
03853 list1_change = True;
03854
03855 }
03856
03857
03858
03859
03860
03861
03862
03863
03864
03865 static void MessageHandlerPprintCallback(
03866 Widget w,
03867 XtPointer client_data,
03868 XtPointer call_data)
03869 {
03870 void *theEnv = GetCurrentEnvironment();
03871 char buf[256];
03872 int i;
03873 unsigned messageIndex;
03874 Widget aList = (Widget)client_data;
03875 XawListReturnStruct *current = XawListShowCurrent(aList);
03876
03877 if(current->list_index == XAW_LIST_NONE)
03878 return;
03879 for (i = 0; current->string[i] != ' '; i++)
03880 buf[i] = current->string[i];
03881 buf[i] = 0;
03882 i++;
03883 messageIndex = EnvFindDefmessageHandler(theEnv,EnvFindDefclass(theEnv,curr_def_name),
03884 buf,&(current->string[i]));
03885 if(EnvGetDefmessageHandlerPPForm(theEnv,EnvFindDefclass(theEnv,curr_def_name),messageIndex) == NULL)
03886 return;
03887 MoveEndOfFile(dialog_text, &TheEvent);
03888 AppendCommandString(theEnv,"(ppdefmessage-handler ");
03889 EnvPrintRouter(theEnv,"wclips","(ppdefmessage-handler ");
03890 AppendCommandString(theEnv,curr_def_name);
03891 EnvPrintRouter(theEnv,"wclips",curr_def_name);
03892 AppendCommandString(theEnv," ");
03893 EnvPrintRouter(theEnv,"wclips"," ");
03894 AppendCommandString(theEnv,buf);
03895 EnvPrintRouter(theEnv,"wclips",buf);
03896 strcpy(buf,&(current->string[i]));
03897 AppendCommandString(theEnv," ");
03898 EnvPrintRouter(theEnv,"wclips"," ");
03899 AppendCommandString(theEnv,buf);
03900 EnvPrintRouter(theEnv,"wclips",buf);
03901 AppendCommandString(theEnv,")\n");
03902 EnvPrintRouter(theEnv,"wclips",")\n");
03903
03904
03905
03906 quit_get_event = True;
03907
03908 }
03909
03910
03911
03912
03913
03914
03915 void InitializeList(
03916 String list[1000])
03917 {
03918 register int i = 0;
03919
03920 while(list[i] != NULL)
03921 {
03922 release(list[i]);
03923 list[i++] = NULL;
03924 }
03925 }
03926
03927
03928
03929
03930
03931
03932
03933 void SetManagerList(
03934 Widget widget)
03935 {
03936 manager_list = widget;
03937 }
03938
03939
03940
03941
03942
03943
03944
03945 Widget GetManagerList()
03946 {
03947 return(manager_list);
03948 }
03949
03950
03951
03952
03953
03954
03955
03956
03957
03958
03959 int RefreshMngrList()
03960 {
03961 int itemCount = 0;
03962 char buffer[MAX_CHAR_IN_BUF];
03963 Window theWindow;
03964 Display *theDisplay;
03965
03966 if(list_change)
03967 {
03968 list_change = False;
03969
03970
03971
03972
03973
03974 if(defrulemanager_flag)
03975 {
03976 itemCount = IntGetDefruleLis();
03977 if(item_list == NULL)
03978 {
03979 XtDestroyWidget(XtParent(XtParent(XtParent(manager_list))));
03980 ClearParameters();
03981 defrulemanager_flag = False;
03982 }
03983 else
03984 {
03985 defrulemanager_flag = True;
03986 theWindow = XtWindow(XtParent(XtParent(XtParent(manager_list))));
03987 theDisplay = XtDisplay(XtParent(XtParent(XtParent(manager_list))));
03988 sprintf(buffer,"Defrule Manager - %d Items",itemCount);
03989 XStoreName(theDisplay,theWindow,buffer);
03990 XawListChange(manager_list,item_list,0,0,False);
03991 }
03992 }
03993
03994
03995
03996
03997 else if (deffactsmanager_flag)
03998 {
03999 itemCount = IntGetFactList();
04000 if(item_list == NULL)
04001 {
04002 XtDestroyWidget(XtParent(XtParent(XtParent(manager_list))));
04003 ClearParameters();
04004 deffactsmanager_flag = False;
04005 }
04006 else
04007 {
04008 deffactsmanager_flag = True;
04009 theWindow = XtWindow(XtParent(XtParent(XtParent(manager_list))));
04010 theDisplay = XtDisplay(XtParent(XtParent(XtParent(manager_list))));
04011 sprintf(buffer,"Deffacts Manager - %d Items",itemCount);
04012 XStoreName(theDisplay,theWindow,buffer);
04013 XawListChange(manager_list,item_list,0,0,False);
04014 }
04015
04016 }
04017
04018
04019
04020
04021 else if (deftemplatemanager_flag)
04022 {
04023 itemCount = IntGetDeftemplateList();
04024 if(item_list == NULL)
04025 {
04026 XtDestroyWidget(XtParent(XtParent(XtParent(manager_list))));
04027 ClearParameters();
04028 deftemplatemanager_flag = False;
04029 }
04030 else
04031 {
04032 deftemplatemanager_flag = True;
04033 theWindow = XtWindow(XtParent(XtParent(XtParent(manager_list))));
04034 theDisplay = XtDisplay(XtParent(XtParent(XtParent(manager_list))));
04035 sprintf(buffer,"Deftemplate Manager - %d Items",itemCount);
04036 XStoreName(theDisplay,theWindow,buffer);
04037 XawListChange(manager_list,item_list,0,0,False);
04038 }
04039 }
04040
04041
04042
04043
04044 else if (deffunctionmanager_flag)
04045 {
04046 itemCount = IntGetDeffunctionList();
04047 if(item_list == NULL)
04048 {
04049 XtDestroyWidget(XtParent(XtParent(XtParent(manager_list))));
04050 ClearParameters();
04051 deffunctionmanager_flag = False;
04052 }
04053 else
04054 {
04055 deffunctionmanager_flag = True;
04056 theWindow = XtWindow(XtParent(XtParent(XtParent(manager_list))));
04057 theDisplay = XtDisplay(XtParent(XtParent(XtParent(manager_list))));
04058 sprintf(buffer,"Deffunction Manager - %d Items",itemCount);
04059 XStoreName(theDisplay,theWindow,buffer);
04060 XawListChange(manager_list,item_list,0,0,False);
04061 }
04062 }
04063
04064
04065
04066
04067 else if (defglobalmanager_flag)
04068 {
04069 itemCount = IntGetDefglobalList();
04070 if(item_list == NULL)
04071 {
04072 XtDestroyWidget(XtParent(XtParent(XtParent(manager_list))));
04073 ClearParameters();
04074 defglobalmanager_flag = False;
04075 }
04076 else
04077 {
04078 defglobalmanager_flag = True;
04079 theWindow = XtWindow(XtParent(XtParent(XtParent(manager_list))));
04080 theDisplay = XtDisplay(XtParent(XtParent(XtParent(manager_list))));
04081 sprintf(buffer,"Defglobal Manager - %d Items",itemCount);
04082 XStoreName(theDisplay,theWindow,buffer);
04083 XawListChange(manager_list,item_list,0,0,False);
04084 }
04085 }
04086
04087
04088
04089
04090
04091 else if (defgenericmanager_flag)
04092 {
04093 itemCount = IntGetDefgenericList();
04094 if(item_list == NULL)
04095 {
04096 XtDestroyWidget(XtParent(XtParent(XtParent(manager_list))));
04097 ClearParameters();
04098 defgenericmanager_flag = False;
04099 }
04100 else
04101 {
04102
04103 theWindow = XtWindow(XtParent(XtParent(XtParent(manager_list))));
04104 theDisplay = XtDisplay(XtParent(XtParent(XtParent(manager_list))));
04105 sprintf(buffer,"Defgeneric Manager - %d Items",itemCount);
04106 XStoreName(theDisplay,theWindow,buffer);
04107 XawListChange(manager_list,item_list,0,0,False);
04108 }
04109 }
04110
04111
04112
04113
04114
04115 else if (definstancesmanager_flag)
04116 {
04117 itemCount = IntGetDefinstancesList();
04118 if(item_list == NULL)
04119 {
04120 XtDestroyWidget(XtParent(XtParent(XtParent(manager_list))));
04121 ClearParameters();
04122 definstancesmanager_flag = False;
04123 }
04124 else
04125 {
04126 definstancesmanager_flag = True;
04127 theWindow = XtWindow(XtParent(XtParent(XtParent(manager_list))));
04128 theDisplay = XtDisplay(XtParent(XtParent(XtParent(manager_list))));
04129 sprintf(buffer,"Definstances Manager - %d Items",itemCount);
04130 XStoreName(theDisplay,theWindow,buffer);
04131 XawListChange(manager_list,item_list,0,0,False);
04132 }
04133 }
04134
04135
04136
04137
04138 else if (defclassmanager_flag)
04139 {
04140 itemCount = IntGetDefclassList();
04141 if(item_list == NULL)
04142 {
04143 XtDestroyWidget(XtParent(XtParent(XtParent(manager_list))));
04144 ClearParameters();
04145 defclassmanager_flag = False;
04146 }
04147 else
04148 {
04149 defclassmanager_flag = True;
04150 theWindow = XtWindow(XtParent(XtParent(XtParent(manager_list))));
04151 theDisplay = XtDisplay(XtParent(XtParent(XtParent(manager_list))));
04152 sprintf(buffer,"Defclass Manager - %d Items",itemCount);
04153 XStoreName(theDisplay,theWindow,buffer);
04154 XawListChange(manager_list,item_list,0,0,False);
04155 }
04156 }
04157
04158
04159
04160
04161 else if (agendamanager_flag)
04162 {
04163 itemCount = IntGetAgendaList();
04164 if(item_list == NULL)
04165 {
04166 XtDestroyWidget(XtParent(XtParent(XtParent(manager_list))));
04167 ClearParameters();
04168 agendamanager_flag = False;
04169 }
04170 else
04171 {
04172 agendamanager_flag = True;
04173 theWindow = XtWindow(XtParent(XtParent(XtParent(manager_list))));
04174 theDisplay = XtDisplay(XtParent(XtParent(XtParent(manager_list))));
04175 sprintf(buffer,"Agenda Manager - %d Items",itemCount);
04176 XStoreName(theDisplay,theWindow,buffer);
04177 XawListChange(manager_list,item_list,0,0,False);
04178 }
04179 }
04180 }
04181
04182
04183
04184
04185 else if (list1_change)
04186 {
04187 if ((defmethodmanager_flag)&&(list1_change))
04188 {
04189
04190 list1_change = False;
04191 itemCount = IntGetDefmethodList(curr_def_name);
04192 if(item_list1 == NULL)
04193 {
04194 XtDestroyWidget(XtParent(XtParent(XtParent(manager_list1))));
04195 defmethodmanager_flag = False;
04196 release(curr_def_name);
04197 }
04198 else
04199 {
04200 theWindow = XtWindow(XtParent(XtParent(XtParent(manager_list1))));
04201 theDisplay = XtDisplay(XtParent(XtParent(XtParent(manager_list1))));
04202 sprintf(buffer,"%s Defmethod Manager - %d Items",curr_def_name,itemCount);
04203 XStoreName(theDisplay,theWindow,buffer);
04204 XawListChange(manager_list1,item_list1,0,0,False);
04205 }
04206
04207 }
04208
04209
04210
04211
04212 else if((defmessagehandler_flag)&&(list1_change))
04213 {
04214
04215 list1_change = False;
04216 itemCount = IntGetDefmessgHndlerList(curr_def_name);
04217 if(item_list1 == NULL)
04218 {
04219 XtDestroyWidget(XtParent(XtParent(XtParent(manager_list1))));
04220 defmessagehandler_flag = False;
04221 release(curr_def_name);
04222 }
04223 else
04224 {
04225 theWindow = XtWindow(XtParent(XtParent(XtParent(manager_list1))));
04226 theDisplay = XtDisplay(XtParent(XtParent(XtParent(manager_list1))));
04227 sprintf(buffer,"%s Defmessage-Handler Manager - %d Items",curr_def_name,itemCount);
04228 XStoreName(theDisplay,theWindow,buffer);
04229 XawListChange(manager_list1,item_list1,0,0,False);
04230 }
04231 }
04232 }
04233 return(0);
04234 }
04235
04236
04237
04238
04239
04240
04241
04242
04243 void ClearParameters()
04244 {
04245 list_change = False;
04246 SetManagerList((Widget)NULL);
04247 }
04248
04249
04250
04251
04252
04253
04254
04255
04256
04257 void CancelSelectPrimary(
04258 Widget w,
04259 XtPointer client_data,
04260 XtPointer call_data)
04261 {
04262 Widget widget = (Widget) client_data;
04263
04264 XtDestroyWidget(widget);
04265 ClearParameters();
04266 free(item_list);
04267 item_list = NULL;
04268 defrulemanager_flag = False;
04269 deffactsmanager_flag = False;
04270 deftemplatemanager_flag = False;
04271 deffunctionmanager_flag = False;
04272 defglobalmanager_flag = False;
04273 defgenericmanager_flag = False;
04274 definstancesmanager_flag = False;
04275 defclassmanager_flag = False;
04276 agendamanager_flag = False;
04277 }
04278
04279
04280
04281
04282
04283
04284
04285
04286
04287 static void CancelSelectSecondary(
04288 Widget w,
04289 XtPointer client_data,
04290 XtPointer call_data)
04291 {
04292 Widget widget = (Widget) client_data;
04293
04294 XtDestroyWidget(widget);
04295 list1_change = False;
04296 manager_list1 = NULL;
04297 release(curr_def_name);
04298 free(item_list1);
04299 item_list1 = NULL;
04300 defmethodmanager_flag = False;
04301 defmessagehandler_flag = False;
04302 }
04303
04304
04305
04306
04307
04308
04309
04310
04311 static void DefruleBreakPointCallback(
04312 Widget w,
04313 XtPointer client_data,
04314 XtPointer call_data)
04315 {
04316 void *theEnv = GetCurrentEnvironment();
04317 Boolean OnOff = False;
04318 void *defrulePtr;
04319 Widget list_widget = (Widget)client_data;
04320 XawListReturnStruct *current = XawListShowCurrent(list_widget);
04321
04322 if (current->list_index == XAW_LIST_NONE)
04323 { return; }
04324
04325 defrulePtr = EnvFindDefrule(theEnv,current->string);
04326 XtSetArg(TheArgs[0],XtNstate,&OnOff);
04327 XtGetValues(w,TheArgs,1);
04328
04329 if (OnOff == True)
04330 { EnvSetBreak(theEnv,defrulePtr); }
04331 else
04332 {
04333 if (EnvRemoveBreak(theEnv,defrulePtr) == CLIPS_FALSE)
04334 {
04335 EnvPrintRouter(theEnv,"werror","Rule ");
04336 EnvPrintRouter(theEnv,"werror",current->string);
04337 EnvPrintRouter(theEnv,"werror"," does not have a breakpoint set.\n");
04338 }
04339 }
04340 }
04341
04342
04343
04344
04345
04346
04347
04348 static void DefruleActivationCallback(
04349 Widget w,
04350 XtPointer client_data,
04351 XtPointer call_data)
04352 {
04353 void *theEnv = GetCurrentEnvironment();
04354 void *defrulePtr;
04355 Widget list_widget = (Widget)client_data;
04356 XawListReturnStruct *current = XawListShowCurrent(list_widget);
04357
04358 if(current->list_index == XAW_LIST_NONE)
04359 return;
04360 defrulePtr = EnvFindDefrule(theEnv,current->string);
04361 EnvSetDefruleWatchActivations(theEnv,(! EnvGetDefruleWatchActivations(theEnv,defrulePtr)),defrulePtr);
04362
04363 }
04364
04365
04366
04367
04368
04369
04370
04371 static void DefruleFiringsCallback(
04372 Widget w,
04373 XtPointer client_data,
04374 XtPointer call_data)
04375 {
04376 void *theEnv = GetCurrentEnvironment();
04377 void *defrulePtr;
04378 Widget list_widget = (Widget)client_data;
04379 XawListReturnStruct *current = XawListShowCurrent(list_widget);
04380
04381 if (current->list_index == XAW_LIST_NONE)
04382 { return; }
04383 defrulePtr = EnvFindDefrule(theEnv,current->string);
04384 EnvSetDefruleWatchFirings(theEnv,(! EnvGetDefruleWatchFirings(theEnv,defrulePtr)),defrulePtr);
04385 }
04386
04387
04388
04389
04390
04391
04392
04393 static void DefruleMngrCheckboxesCallback(
04394 Widget w,
04395 XtPointer client_data,
04396 XtPointer call_data)
04397 {
04398 void *theEnv = GetCurrentEnvironment();
04399 void *defrulePtr;
04400 Widget *CheckBoxes = (Widget*)client_data;
04401 XawListReturnStruct *current = XawListShowCurrent(w);
04402
04403 if (current->list_index == XAW_LIST_NONE)
04404 { return; }
04405
04406 defrulePtr = EnvFindDefrule(theEnv,current->string);
04407 XtSetArg(TheArgs[0],XtNstate,EnvDefruleHasBreakpoint(theEnv,defrulePtr));
04408 XtSetValues(CheckBoxes[0],TheArgs,1);
04409 XtSetArg(TheArgs[0],XtNstate,EnvGetDefruleWatchActivations(theEnv,defrulePtr));
04410 XtSetValues(CheckBoxes[1],TheArgs,1);
04411 XtSetArg(TheArgs[0],XtNstate,EnvGetDefruleWatchFirings(theEnv,defrulePtr));
04412 XtSetValues(CheckBoxes[2],TheArgs,1);
04413 }
04414
04415
04416
04417
04418
04419
04420
04421 static void WatchInstancesCallback(
04422 Widget w,
04423 XtPointer client_data,
04424 XtPointer call_data)
04425 {
04426 void *theEnv = GetCurrentEnvironment();
04427 void *defclassPtr;
04428 Widget list_widget = (Widget)client_data;
04429 XawListReturnStruct *current = XawListShowCurrent(list_widget);
04430
04431 if(current->list_index == XAW_LIST_NONE)
04432 return;
04433 defclassPtr = EnvFindDefclass(theEnv,current->string);
04434 EnvSetDefclassWatchInstances(theEnv,! EnvGetDefclassWatchInstances(theEnv,defclassPtr),defclassPtr);
04435 }
04436
04437
04438
04439
04440
04441
04442
04443 static void WatchSlotCallback(
04444 Widget w,
04445 XtPointer client_data,
04446 XtPointer call_data)
04447 {
04448 void *theEnv = GetCurrentEnvironment();
04449 void *defclassPtr;
04450 Widget list_widget = (Widget)client_data;
04451 XawListReturnStruct *current = XawListShowCurrent(list_widget);
04452
04453 if(current->list_index == XAW_LIST_NONE)
04454 return;
04455 defclassPtr = EnvFindDefclass(theEnv,current->string);
04456 EnvSetDefclassWatchSlots(theEnv, ! EnvGetDefclassWatchSlots(theEnv,defclassPtr),defclassPtr);
04457 }
04458
04459
04460
04461
04462
04463
04464
04465
04466 static void DefclssMngrChckbxCallback(
04467 Widget w,
04468 XtPointer client_data,
04469 XtPointer call_data)
04470 {
04471 void *theEnv = GetCurrentEnvironment();
04472 void *defclassPtr;
04473 Widget *CheckBoxes = (Widget*)client_data;
04474 XawListReturnStruct *current = XawListShowCurrent(w);
04475
04476 if (current->list_index == XAW_LIST_NONE)
04477 return;
04478 defclassPtr = EnvFindDefclass(theEnv,current->string);
04479 XtSetArg(TheArgs[0],XtNstate,EnvGetDefclassWatchInstances(theEnv,defclassPtr));
04480 XtSetValues(CheckBoxes[0],TheArgs,1);
04481 XtSetArg(TheArgs[0],XtNstate,EnvGetDefclassWatchSlots(theEnv,defclassPtr));
04482 XtSetValues(CheckBoxes[1],TheArgs,1);
04483
04484 }
04485
04486
04487
04488
04489
04490
04491
04492 static void DeftemplateWatchCallback(
04493 Widget w,
04494 XtPointer client_data,
04495 XtPointer call_data)
04496 {
04497 void *theEnv = GetCurrentEnvironment();
04498 void *deftemplatePtr = NULL;
04499 Widget list_widget = (Widget)client_data;
04500 XawListReturnStruct *current = XawListShowCurrent(list_widget);
04501
04502 if (current->list_index == XAW_LIST_NONE)
04503 { return; }
04504
04505 deftemplatePtr = EnvFindDeftemplate(theEnv,current->string);
04506 EnvSetDeftemplateWatch(theEnv,! EnvGetDeftemplateWatch(theEnv,deftemplatePtr),deftemplatePtr);
04507 }
04508
04509
04510
04511
04512
04513
04514
04515 static void DeftemplateMngrCheckboxCallback(
04516 Widget w,
04517 XtPointer client_data,
04518 XtPointer call_data)
04519 {
04520 void *theEnv = GetCurrentEnvironment();
04521 void* deftemplatePtr = NULL;
04522 Widget checkbox = (Widget)client_data;
04523 XawListReturnStruct *current = XawListShowCurrent(w);
04524
04525 if(current->list_index == XAW_LIST_NONE)
04526 return;
04527
04528 deftemplatePtr = EnvFindDeftemplate(theEnv,current->string);
04529 XtSetArg(TheArgs[0],XtNstate,EnvGetDeftemplateWatch(theEnv,deftemplatePtr));
04530 XtSetValues(checkbox,TheArgs,1);
04531 }
04532
04533
04534
04535
04536
04537
04538
04539
04540 static void DeffunctionWatchCallback(
04541 Widget w,
04542 XtPointer client_data,
04543 XtPointer call_data)
04544 {
04545 void *theEnv = GetCurrentEnvironment();
04546 void* deffunctionPtr = NULL;
04547 Widget list_widget = (Widget)client_data;
04548 XawListReturnStruct *current = XawListShowCurrent(list_widget);
04549
04550 if(current->list_index == XAW_LIST_NONE)
04551 return;
04552 deffunctionPtr = EnvFindDeffunction(theEnv,current->string);
04553 EnvSetDeffunctionWatch(theEnv,! EnvGetDeffunctionWatch(theEnv,deffunctionPtr),deffunctionPtr);
04554 }
04555
04556
04557
04558
04559
04560
04561
04562
04563
04564 static void DeffunctionMngrCheckboxCallback(
04565 Widget w,
04566 XtPointer client_data,
04567 XtPointer call_data)
04568 {
04569 void *theEnv = GetCurrentEnvironment();
04570 void *deffunctionPtr = NULL;
04571 Widget checkbox = (Widget)client_data;
04572 XawListReturnStruct *current = XawListShowCurrent(w);
04573
04574 if (current->list_index == XAW_LIST_NONE)
04575 return;
04576
04577 deffunctionPtr = EnvFindDeffunction(theEnv,current->string);
04578 XtSetArg(TheArgs[0],XtNstate,EnvGetDeffunctionWatch(theEnv,deffunctionPtr));
04579 XtSetValues(checkbox,TheArgs,1);
04580
04581 }
04582
04583
04584
04585
04586
04587
04588
04589 static void DefmessHdlrMngrWatchCallback(
04590 Widget w,
04591 XtPointer client_data,
04592 XtPointer call_data)
04593 {
04594 void *theEnv = GetCurrentEnvironment();
04595 void *defclassPtr = NULL;
04596 char *buf1,buf2[20];
04597 unsigned i,j = 0,theIndex;
04598 Widget list_widget = (Widget)client_data;
04599 XawListReturnStruct *current = XawListShowCurrent(list_widget);
04600
04601 if(current->list_index == XAW_LIST_NONE)
04602 return;
04603
04604
04605
04606
04607 buf1 = (char*)balloc(strlen(current->string),char);
04608 for (i = 0; current->string[i] != ' '; i++)
04609 buf1[i] = current->string[i];
04610 buf1[i] = 0;
04611
04612 while(current->string[i] == ' ')
04613 i++;
04614
04615
04616
04617
04618
04619 while(current->string[i] != 0)
04620 buf2[j++] = current->string[i++];
04621
04622 buf2[j] = 0;
04623
04624 defclassPtr = EnvFindDefclass(theEnv,curr_def_name);
04625 theIndex = EnvFindDefmessageHandler(theEnv,defclassPtr,buf1,buf2);
04626 EnvSetDefmessageHandlerWatch(theEnv,
04627 (! EnvGetDefmessageHandlerWatch(theEnv,defclassPtr,theIndex)),
04628 defclassPtr,theIndex);
04629 free(buf1);
04630 }
04631
04632
04633
04634
04635
04636
04637
04638 static void DefmessHdlrMngrCheckBoxCallback(
04639 Widget w,
04640 XtPointer client_data,
04641 XtPointer call_data)
04642 {
04643 void *theEnv = GetCurrentEnvironment();
04644 void* defclassPtr = NULL;
04645 char *buf1;
04646 char buf2[20];
04647 unsigned i,j = 0, theIndex;
04648 Widget checkbox = (Widget)client_data;
04649 XawListReturnStruct *current = XawListShowCurrent(w);
04650
04651 if (current->list_index == XAW_LIST_NONE)
04652 { return; }
04653
04654
04655
04656
04657
04658 buf1 = (char*)balloc(strlen(current->string),char);
04659 for (i = 0; current->string[i] != ' '; i++)
04660 buf1[i] = current->string[i];
04661 buf1[i] = 0;
04662
04663 while(current->string[i] == ' ')
04664 i++;
04665
04666
04667
04668
04669
04670 while(current->string[i] != 0)
04671 buf2[j++] = current->string[i++];
04672
04673 buf2[j] = 0;
04674
04675 defclassPtr = EnvFindDefclass(theEnv,curr_def_name);
04676 theIndex = EnvFindDefmessageHandler(theEnv,defclassPtr,buf1,buf2);
04677 XtSetArg(TheArgs[0],XtNstate,EnvGetDefmessageHandlerWatch(theEnv,defclassPtr,theIndex));
04678 XtSetValues(checkbox,TheArgs,1);
04679 free(buf1);
04680 }