00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <stdio.h>
00024 #include "xsetup.h"
00025 #include "xclips.h"
00026 #include "setup.h"
00027 #include "constant.h"
00028 #include "watch.h"
00029 #include "xmain.h"
00030 #include "xmenu.h"
00031
00032 #include "xmenu_watch.h"
00033
00034
00035 char *WatchName[MAX_WATCH] = {"compilations","facts","rules","statistics","activations",
00036 "focus","globals","deffunctions","generic-functions","methods",
00037 "instances","slots","message-handlers","messages"};
00038 Widget watchShell = NULL,watchForm = NULL;
00039 Widget watch_widgets[MAX_WATCH];
00040
00041
00042
00043
00044
00045
00046
00047 void WatchWindow(
00048 Widget w,
00049 XtPointer client_data,
00050 XtPointer call_data)
00051
00052 {
00053 void *theEnv = GetCurrentEnvironment();
00054 int n = 0,i;
00055
00056 Widget Okay,cancel,All,none;
00057 static char *WidgetName[MAX_WATCH] = {"Compilations","Facts","Rules","Statistics","Activations",
00058 "Focus","Globals","Deffunctions","Generic Functions","Methods",
00059 "Instances","Slots","Messages-handlers","Messages"};
00060
00061
00062
00063
00064
00065
00066 if(watchShell != NULL)
00067 {
00068 for(i = 0; i < MAX_WATCH; i++)
00069 {
00070 n = 0;
00071 if (EnvGetWatchItem(theEnv,WatchName[i]))
00072 XtSetArg( TheArgs[n],XtNstate,True);
00073 else
00074 XtSetArg( TheArgs[n],XtNstate,False);
00075 n++;
00076 XtSetValues(watch_widgets[i],TheArgs,n);
00077 }
00078 XtPopup(watchShell,XtGrabExclusive);
00079 return;
00080 }
00081
00082
00083
00084
00085 XtSetArg( TheArgs[n], XtNwidth,250);n++;
00086 XtSetArg( TheArgs[n], XtNheight,400);n++;
00087 watchShell = XtCreatePopupShell("Watch Menu",topLevelShellWidgetClass,XtParent(w),NULL,0);
00088 n = 0;
00089 watchForm = XtCreateManagedWidget( "watch_form", formWidgetClass,
00090 watchShell, TheArgs,n);
00091 n = 0;
00092 XtSetArg(TheArgs[n],XtNwidth,150);n++;
00093 XtSetArg(TheArgs[n],XtNhorizDistance,15);n++;
00094 for(i = 0; i < 7;i++)
00095 {
00096 if (EnvGetWatchItem(theEnv,WatchName[i]))
00097 XtSetArg( TheArgs[n],XtNstate,True);
00098 else
00099 XtSetArg( TheArgs[n],XtNstate,False);
00100 n++;
00101 watch_widgets[i] = XtCreateManagedWidget(WidgetName[i],
00102 toggleWidgetClass,
00103 watchForm,
00104 TheArgs, n);
00105 n = 2;
00106 XtSetArg(TheArgs[n],XtNfromVert,watch_widgets[i]);n++;
00107 }
00108 n = 1;
00109 XtSetArg(TheArgs[n],XtNfromHoriz,watch_widgets[0]);n++;
00110 for(; i < MAX_WATCH ; i++)
00111 {
00112 if (EnvGetWatchItem(theEnv,WatchName[i]))
00113 XtSetArg( TheArgs[n],XtNstate,True);
00114 else
00115 XtSetArg( TheArgs[n],XtNstate,False);
00116 n++;
00117 watch_widgets[i] = XtCreateManagedWidget(WidgetName[i],
00118 toggleWidgetClass,
00119 watchForm,
00120 TheArgs, n);
00121 n = 1;
00122 XtSetArg(TheArgs[n],XtNfromVert,watch_widgets[i]);n++;
00123 XtSetArg(TheArgs[n],XtNfromHoriz,watch_widgets[i - 7]);n++;
00124 }
00125
00126
00127
00128
00129 n = 0;
00130 XtSetArg(TheArgs[n],XtNcornerRoundPercent,40);n++;
00131 XtSetArg(TheArgs[n],XtNshapeStyle,XmuShapeRoundedRectangle);n++;
00132 XtSetArg(TheArgs[n],XtNwidth,150);n++;
00133 XtSetArg(TheArgs[n],XtNfromVert,watch_widgets[6]);n++;
00134 XtSetArg(TheArgs[n],XtNvertDistance,31);n++;
00135 XtSetArg(TheArgs[n],XtNlabel,"All");n++;
00136 All = XtCreateManagedWidget("watchButton",
00137 commandWidgetClass,
00138 watchForm,
00139 TheArgs, n);
00140 XtAddCallback(All, XtNcallback, WatchAllCallback, NULL);
00141
00142
00143
00144
00145
00146 n = 3;
00147 XtSetArg(TheArgs[n],XtNfromHoriz,All);n++;
00148 XtSetArg(TheArgs[n],XtNfromVert,watch_widgets[6]);n++;
00149 XtSetArg(TheArgs[n],XtNvertDistance,31);n++;
00150 XtSetArg(TheArgs[n],XtNhorizDistance,30);n++;
00151 XtSetArg(TheArgs[n],XtNlabel,"None");n++;
00152 none = XtCreateManagedWidget("watchButton",
00153 commandWidgetClass,
00154 watchForm,TheArgs,n);
00155 XtAddCallback(none, XtNcallback, WatchNoneCallback, NULL);
00156
00157
00158
00159
00160
00161 n = 3;
00162 XtSetArg(TheArgs[n],XtNfromVert,All);n++;
00163 XtSetArg(TheArgs[n],XtNvertDistance,15);n++;
00164 XtSetArg(TheArgs[n],XtNlabel,"Okay");n++;
00165 Okay = XtCreateManagedWidget("watchButton",
00166 commandWidgetClass,
00167 watchForm,
00168 TheArgs, n);
00169 XtAddCallback(Okay,XtNcallback,OkWatchCallback,(XtPointer)watchForm);
00170
00171
00172
00173
00174
00175 n = 3;
00176 XtSetArg(TheArgs[n],XtNfromVert,none);n++;
00177 XtSetArg(TheArgs[n],XtNvertDistance,15);n++;
00178 XtSetArg(TheArgs[n],XtNfromHoriz,Okay);n++;
00179 XtSetArg(TheArgs[n],XtNlabel,"Cancel");n++;
00180 XtSetArg(TheArgs[n],XtNhorizDistance,30);n++;
00181 cancel = XtCreateManagedWidget("watchButton",
00182 commandWidgetClass,
00183 watchForm,
00184 TheArgs, n);
00185 XtAddCallback(cancel,XtNcallback,PopdownSelect,(XtPointer)watchForm);
00186 XtPopup(watchShell,XtGrabExclusive);
00187 }
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199 void OkWatchCallback(
00200 Widget w,
00201 XtPointer client_data,
00202 XtPointer call_data)
00203 {
00204 void *theEnv = GetCurrentEnvironment();
00205 int i,n;
00206 Boolean OnOff = False;
00207
00208 for(i = 0; i< MAX_WATCH; i++)
00209 {
00210 n = 0;
00211 XtSetArg(TheArgs[n],XtNstate,&OnOff);n++;
00212 XtGetValues(watch_widgets[i],TheArgs,n);
00213
00214
00215
00216
00217 if((OnOff == True)&&(EnvGetWatchItem(theEnv,WatchName[i])!= CLIPS_TRUE))
00218 {
00219 EnvSetWatchItem(theEnv,WatchName[i], ON,NULL);
00220 }
00221 else if((OnOff == False) && (EnvGetWatchItem(theEnv,WatchName[i]) == CLIPS_TRUE))
00222 {
00223 EnvSetWatchItem(theEnv,WatchName[i], OFF,NULL);
00224 }
00225 }
00226 XtPopdown(XtParent(XtParent(w)));
00227 quit_get_event = True;
00228 }
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241 void WatchAllCallback(
00242 Widget w,
00243 XtPointer client_data,
00244 XtPointer call_data)
00245 {
00246 int i, n = 0;
00247
00248 XtSetArg(TheArgs[n],XtNstate,True);n++;
00249 for(i = 0;i < MAX_WATCH; i++)
00250 {
00251 XtSetValues(watch_widgets[i],TheArgs,n);
00252 }
00253 quit_get_event = True;
00254 }
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267 void WatchNoneCallback(
00268 Widget w,
00269 XtPointer client_data,
00270 XtPointer call_data)
00271 {
00272 int i, n = 0;
00273
00274 XtSetArg(TheArgs[n],XtNstate,False);n++;
00275 for(i = 0;i < MAX_WATCH ; i++)
00276 {
00277 XtSetValues(watch_widgets[i],TheArgs,n);
00278 }
00279 quit_get_event = True;
00280 }
00281