2
3
4:- ensure_loaded(dmiles). 5
7:- use_module_if_exists(library(proxt)). 8:- use_module_if_exists(library(ctypes)). 9:- use_module_if_exists(library(strings)). 10:- use_module_if_exists(library(basics)). 11:- consult(miles). 13:- consult(xmiles_functions). 14
15
16
34
35runtime_entry(start) :- xm.
36
37:- dynamic listItems/1, my_exit_loop/1, toplevel/1. 38
39my_exit_loop(no).
40
41
42
43
44
56
57
58xm :-
59 ( toplevel(Widget) ->
60 XMiles = Widget,
61 open('xmProtocol.tmp',write,F),
62 recordz(messages,file(F),_),
63 updateEvaluationLabel,
64 refreshKnowledgeList(_Widget,rules,_Calldata),
65 refreshKnowledgeList(_Widget,examples,_Calldata)
66 ; xtToolkitInitialize,
67 xtInitialize('X-MILES',xMILES,XMiles),
68 assert(toplevel(XMiles)),
69 clear_kb,
70
71 xmCreateRowColumn(XMiles,xMilesRow,
72 [xmNorientation(xmHORIZONTAL),
73 xmNpacking(xmPACK_TIGHT),
74 xmNrowColumnType(xmWORK_AREA)],
75 XMilesRow),
76 xtManageChild(XMilesRow),
77
78 xmCreateRowColumn(XMilesRow,xMilesColumn1,
79 [xmNorientation(xmVERTICAL),
80 xmNpacking(xmPACK_TIGHT),
81 xmNrowColumnType(xmWORK_AREA)],
82 XMilesColumn1),
83 xtManageChild(XMilesColumn1),
84
85 createCommandArea(XMilesColumn1),
86 createFunctionArea(XMilesColumn1),
87 createArgumentArea(XMilesColumn1),
88 createMessageArea(XMilesColumn1),
89
90 xmCreateRowColumn(XMilesRow,xMilesColumn2,
91 [xmNorientation(xmVERTICAL),
92 xmNpacking(xmPACK_TIGHT),
93 xmNrowColumnType(xmWORK_AREA)],
94 XMilesColumn2),
95 xtManageChild(XMilesColumn2),
96
97 createEditorArea(XMilesColumn2),
98 createKnowledgeBaseArea(XMilesColumn2),
99
100 xtRealizeWidget(XMiles)
101 ),
102
103 my_main_loop(XMiles).
104
105my_main_loop(Shell):-
106 ( my_exit_loop(yes) ->
107 retract(my_exit_loop(yes)),
108 assert(my_exit_loop(no))
109 ; xtNextEvent(Event),
110 xtDispatchEvent(Event),
111 my_main_loop(Shell)
112 ).
113
114
129
130createKnowledgeBaseArea(Parent) :-
131 xmCreateFrame(Parent,'KnowledgeBaseFrame',
132 [],KnowledgeBaseFrame),
133 xtManageChild(KnowledgeBaseFrame),
134
135 xmCreateRowColumn(KnowledgeBaseFrame,'KnowledgeBaseColumn',
136 [xmNadjustLast(true),
137 xmNorientation(xmVERTICAL),
138 xmNpacking(xmPACK_TIGHT),
139 xmNrowColumnType(xmWORK_AREA)],
140 KnowledgeBaseColumn),
141 xtManageChild(KnowledgeBaseColumn),
142
143 xmCreateRowColumn(KnowledgeBaseColumn,titleRC,
144 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN)],
145 TitleRowColumn),
146 xtManageChild(TitleRowColumn),
147
148 proxtGetDefaultCharset(DCharset),
149 proxtStringToCharPtr('Knowledge Base',KbCP),
150 xmStringCreate(KbCP,DCharset,StatusStr),
151 xmCreateLabelGadget(TitleRowColumn,titleLabel,
152 [xmNlabelType(xmSTRING),xmNlabelString(StatusStr)],
153 KbLabel),
154 xtManageChild(KbLabel),
155
156 createEvaluationString(EString),
157 proxtStringToCharPtr(EString,KbCP1),
158 xmStringCreate(KbCP1,DCharset,StatusStr1),
159 xmCreateLabelGadget(TitleRowColumn,titleEvaluation,
160 [xmNlabelType(xmSTRING),xmNlabelString(StatusStr1)],
161 KbLabel1),
162 xtManageChild(KbLabel1),
163 recordz(irene,KbLabel1,_),
164
165 xmCreateRowColumn(KnowledgeBaseColumn,kbRowColumn,
166 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN)],
167 KnowledgeBaseRow),
168 xtManageChild(KnowledgeBaseRow),
169
170 createRuleArea(KnowledgeBaseRow),
171 createExampleArea(KnowledgeBaseRow),
172 createKbButtons(KnowledgeBaseColumn).
173
174
189
190createRuleArea(Parent):-
191 xmCreateFrame(Parent,'RuleFrame',
192 [],RuleFrame),
193 xtManageChild(RuleFrame),
194
195 xmCreateRowColumn(RuleFrame,'RuleRowColumn',
196 [xmNwidth(300),xmNadjustLast(true),
197 xmNorientation(xmVERTICAL),
198 xmNpacking(xmPACK_TIGHT),
199 xmNrowColumnType(xmWORK_AREA)],
200 RuleColumn),
201 xtManageChild(RuleColumn),
202
203 xmCreateRowColumn(RuleColumn,ruleRow,
204 [xmNorientation(xmHORIZONTAL),xmNmarginHeight(0),
205 xmNpacking(xmPACK_TIGHT)],
206 RuleRow),
207 xtManageChild(RuleRow),
208
209 proxtGetDefaultCharset(DCharset),
210 proxtStringToCharPtr('Rules ',RuleCP),
211 xmStringCreate(RuleCP,DCharset,RuleStr),
212 xmCreateLabelGadget(RuleRow,ruleLabel,
213 [xmNlabelType(xmSTRING),xmNlabelString(RuleStr)],
214 RuleLabel),
215 xtManageChild(RuleLabel),
216
217 xmCreatePushButton(RuleRow,'Examine ...',
218 [],Examine),
219 xtManageChild(Examine),
220 createExamineRulesPopup(Examine),
221
222 createKnowledgeList(RuleColumn,rules),
223 createKbSubButtons(RuleColumn,rules).
224
225
226
227
242
243createExampleArea(Parent) :-
244 xmCreateFrame(Parent,'ExampleFrame',
245 [],ExampleFrame),
246 xtManageChild(ExampleFrame),
247
248 xmCreateRowColumn(ExampleFrame,'ExampleRowColumn',
249 [xmNwidth(300),xmNadjustLast(true),
250 xmNorientation(xmVERTICAL),
251 xmNpacking(xmPACK_TIGHT),
252 xmNrowColumnType(xmWORK_AREA)],
253 ExampleRowColumn),
254 xtManageChild(ExampleRowColumn),
255
256 proxtGetDefaultCharset(DCharset),
257 proxtStringToCharPtr('Examples',ExampleCP),
258 xmStringCreate(ExampleCP,DCharset,ExampleStr),
259 xmCreateLabelGadget(ExampleRowColumn,exampleLabel,
260 [xmNlabelType(xmSTRING),xmNlabelString(ExampleStr)],
261 ExampleLabel),
262 xtManageChild(ExampleLabel),
263
264 createKnowledgeList(ExampleRowColumn,examples),
265 createKbSubButtons(ExampleRowColumn,examples).
266
267
281
282createKnowledgeList(Parent,KindOfKnowledge) :-
283 xmCreateScrolledWindow(Parent,knowledgelistSW,
284 [xmNheight(300),xmNwidth(300),
285 xmNlistSizePolicy(xmCONSTANT),
286 xmNscrollBarDisplayPolicy(xmSTATIC),
287 xmNscrollingPolicy(xmAUTOMATIC)],
288 KL),
289 xtManageChild(KL),
290
291 xmCreateRowColumn(KL,knowledgelistRC,
292 [xmNadjustLast(false),
293 xmNorientation(xmVERTICAL),
294 xmNpacking(xmPACK_TIGHT),
295 xmNrowColumnType(xmWORK_AREA)],
296 KnowledgeRC),
297 recordz(KindOfKnowledge,knowledgeList(KnowledgeRC),_Ref),
298 xtGetValues(KnowledgeRC,[xmNbackground(B)]),
299 xtGetValues(KL,[xmNclipWindow(CW)]),
300 xtSetValues(CW,[xmNbackground(B)]),
301 addKnowledgeListItems(KindOfKnowledge),
302 xtManageChild(KnowledgeRC).
303
304
318
319addKnowledgeListItems(rules) :-
320 getNextId(Id),
321 get_clause(Id,H,B,S,O),
322 addRuleItem(Id,H,B,S,O),
323 fail.
324addKnowledgeListItems(examples) :-
325 getNextId(Id),
326 get_example(Id,F,C),
327 addExampleItem(Id,F,C),
328 fail.
329addKnowledgeListItems(_) :- !.
330
331
343
344getNextId(Id) :-
345 id_count(MaxId),
346 repeat,
347 ( recorded(knowledgeList,xm_id_count(I_old),Ref) ->
348 erase(Ref),
349 Id is I_old + 1,
350 recordz(knowledgeList,xm_id_count(Id),_)
351 ; Id = 1,
352 recordz(knowledgeList,xm_id_count(Id),_)
353 ),
354 ( MaxId < Id ->
355 recorded(knowledgeList,xm_id_count(_),Ref2),
356 erase(Ref2),!,fail
357 ; otherwise
358 ).
359
360
373
374deleteKnowledgeListItems(rules) :-
375 recorded(current,clause(_,Label,_),Ref),
376 xtDestroyWidget(Label),
377 erase(Ref),!,
378 deleteKnowledgeListItems(rules).
379deleteKnowledgeListItems(examples) :-
380 recorded(current,example(_,Label,_),Ref),
381 xtDestroyWidget(Label),
382 erase(Ref),!,
383 deleteKnowledgeListItems(examples).
384deleteKnowledgeListItems(_) :- !.
385
386
404
405addRuleItem(I,H,B,_S,O):-
406 ( recorded(rules,viewMin(MinText),_) ->
407 xmTextGetString(MinText,MinCP),
408 proxtCharPtrToString(MinCP,MinStr),
409 atom_chars(MinStr,MinC),
410 number_chars(Min,MinC)
411 ),
412
413 ( recorded(rules,viewMax(MaxText),_) ->
414 xmTextGetString(MaxText,MaxCP),
415 proxtCharPtrToString(MaxCP,MaxStr),
416 atom_chars(MaxStr,MaxC),
417 number_chars(Max,MaxC)
418 ),
419
420 ( recorded(rules,view(all),_)
421 ; ( recorded(rules,view(labels,LabelList),_),
422 recorded(rules,view(clause_heads,CHList),_),
423 I >= Min,
424 I =< Max,
425 functor(H,CH,_),
426 ( LabelList=[]
427 ; member(O,LabelList)
428 ),
429 ( CHList=[]
430 ; member(CH,CHList)
431 )
432 )
433 ),
434
435 proxtGetDefaultCharset(DCharset),
436 recorded(rules,knowledgeList(KL),_),
437 xxmWriteToString(show_kb_clause(I,H,B,O),DCharset,XmS),
438
439 ( recorded(current,clause(I,W,_),_) ->
440 xtSetValues(W, [xmNlabelString(XmS)])
441 ; xmCreateLabel(KL,anyClause,
442 [xmNalignment(xmALIGNMENT_BEGINNING),
443 xmNlabelString(XmS),xmNlabelType(xmSTRING)],
444 Label),
445 xtManageChild(Label),
446 recordz(current,clause(I,Label,notselected),_Ref),
447 xtAddEventHandler(Label,[buttonReleaseMask],
448 false,selectClause,rules),
449 xtAddEventHandler(Label,[buttonPressMask],false,
450 firstClauseClick,rules)
451 ),!.
452
453addRuleItem(_,_,_,_,_) :- !.
454
455
456
472
473addExampleItem(I,F,C):-
474 ( recorded(examples,viewMin(MinText),_) ->
475 xmTextGetString(MinText,MinCP),
476 proxtCharPtrToString(MinCP,MinStr),
477 atom_chars(MinStr,MinC),
478 number_chars(Min,MinC)
479 ),
480
481 ( recorded(examples,viewMax(MaxText),_) ->
482 xmTextGetString(MaxText,MaxCP),
483 proxtCharPtrToString(MaxCP,MaxStr),
484 atom_chars(MaxStr,MaxC),
485 number_chars(Max,MaxC)
486 ),
487
488 ( recorded(examples,view(all),_)
489 ; ( recorded(examples,view(clause_heads,CHList),_),
490 functor(F,CH,_),
491 I >= Min,
492 I =< Max,
493 ( CHList=[]
494 ; member(CH,CHList)
495 )
496 )
497 ),
498
499 proxtGetDefaultCharset(DCharset),
500 recorded(examples,knowledgeList(KL),_),
501
502 number_chars(I,S1),
503 append(S1," (",S2),
504 atom_chars(C,S3),
505 append(S2,S3,S4),
506 append(S4,"): ",S5),
507 atom_chars(A5,S5),
508 proxtStringToCharPtr(A5,CP5),
509 xmStringCreateLtoR(CP5,DCharset,XmS1),
510
511 xxmWriteToString(write(F),DCharset,XmS2),
512 xmStringConcat(XmS1,XmS2,XmS3),
513 xmStringSeparatorCreate(XmSep),
514 xmStringConcat(XmS3,XmSep,XmS),
515
516 ( recorded(current,example(I,W,_),_) ->
517 xtSetValues(W,[xmNlabelString(XmS)])
518 ; xmCreateLabel(KL,anyExample,
519 [xmNalignment(xmALIGNMENT_BEGINNING),
520 xmNlabelString(XmS),xmNlabelType(xmSTRING)],
521 Label),
522 xtManageChild(Label),
523 xtAddEventHandler(Label,[buttonReleaseMask],false,
524 selectClause,examples),
525 xtAddEventHandler(Label,[buttonPressMask],false,
526 firstClauseClick,examples),
527 recordz(current,example(I,Label,notselected),_Ref)
528 ),!.
529
530
545
546refreshKnowledgeList(_Widget,KindOfKnowledge,_Calldata) :-
547 deleteKnowledgeListItems(KindOfKnowledge),
548 addKnowledgeListItems(KindOfKnowledge),
549 updateEvaluationLabel.
550
551
567
568selectClause(Widget,rules,_CallData) :-
569 recorded(current,clause(I,Widget,notselected),Ref),
570 xtGetValues(Widget,[xmNbackground(B),xmNforeground(F)]),
571 xtSetValues(Widget,[xmNbackground(F),xmNforeground(B)]),
572 erase(Ref),
573 recordz(current,clause(I,Widget,selected),_),
574 recorded(state,getId(GetId),_),
575 xtGetValues(GetId,[xmNset(GetState)]),
576 ( GetState = true ->
577 copyId(I,1)
578 ; otherwise
579 ).
580
581selectClause(Widget,rules,_CallData) :-
582 recorded(current,clause(I,Widget,selected),Ref),
583 xtGetValues(Widget,[xmNbackground(B),xmNforeground(F)]),
584 xtSetValues(Widget,[xmNbackground(F),xmNforeground(B)]),
585 erase(Ref),
586 recordz(current,clause(I,Widget,notselected),_Ref),
587 recorded(state,getId(GetId),_),
588 xtGetValues(GetId,[xmNset(GetState)]),
589 ( GetState = true ->
590 copyId(I,1)
591 ; otherwise
592 ).
593
594selectClause(Widget,examples,_CallData) :-
595 recorded(current,example(I,Widget,notselected),Ref),
596 xtGetValues(Widget,[xmNbackground(B),xmNforeground(F)]),
597 xtSetValues(Widget,[xmNbackground(F),xmNforeground(B)]),
598 erase(Ref),
599 recordz(current,example(I,Widget,selected),_Ref),
600 recorded(state,getId(GetId),_),
601 xtGetValues(GetId,[xmNset(GetState)]),
602 ( GetState = true ->
603 copyId(I,1)
604 ; otherwise
605 ).
606
607selectClause(Widget,examples,_CallData) :-
608 recorded(current,example(I,Widget,selected),Ref),
609 xtGetValues(Widget,[xmNbackground(B),xmNforeground(F)]),
610 xtSetValues(Widget,[xmNbackground(F),xmNforeground(B)]),
611 erase(Ref),
612 recordz(current,example(I,Widget,notselected),_Ref),
613 recorded(state,getId(GetId),_),
614 xtGetValues(GetId,[xmNset(GetState)]),
615 ( GetState = true ->
616 copyId(I,1)
617 ; otherwise
618 ).
619
620
637
638firstClauseClick(Widget,_ClientData,_CallData) :-
639 xtAddEventHandler(Widget,[buttonPressMask],false,copyClause,_),
640 xtAddTimeOut(1000,noDoubleClick,Widget,_ID).
641
642
657
658copyClause(Widget,_ClientData,_CallData) :-
659 recorded(editor,label(Label),_),
660 proxtGetDefaultCharset(DCharset),
661 (recorded(editor,editing(_,_),Ref) -> erase(Ref),
662 proxtStringToCharPtr('Editor',LblCP1),
663 xmStringCreate(LblCP1,DCharset,LblS1),
664 xtSetValues(Label,[xmNlabelString(LblS1)]) |
665 otherwise),
666 (recorded(current,clause(Id,Widget,_),_) ->
667 get_clause(Id,H,B,_,_),
668 xxmWriteToCharPtr(portray_clause((H:-B)),CP),
669 recorded(editor,textWidget(Editor),_),
670 xmTextSetString(Editor,CP),
671 recordz(editor,editing(rules,Id),_),
672 number_chars(Id,IdCS),
673 append("Editor editing rule ",IdCS,LblCS),
674 atom_chars(LblAS,LblCS),
675 proxtStringToCharPtr(LblAS,LblCP),
676 xmStringCreate(LblCP,DCharset,LblS),
677 xtSetValues(Label,[xmNlabelString(LblS)]) |
678 recorded(current,example(Id,Widget,_),_) ->
679 get_example(Id,F,_),
680 xxmWriteToCharPtr(writeFullstop(F),CP),
681 recorded(editor,textWidget(Editor),_),
682 xmTextSetString(Editor,CP),
683 recordz(editor,editing(examples,Id),_),
684 number_chars(Id,IdCS),
685 append("Editor editing example ",IdCS,LblCS),
686 atom_chars(LblAS,LblCS),
687 proxtStringToCharPtr(LblAS,LblCP),
688 xmStringCreate(LblCP,DCharset,LblS),
689 xtSetValues(Label,[xmNlabelString(LblS)])).
690
691
706
707noDoubleClick(Widget,_IntervallId) :-
708 xtRemoveEventHandler(Widget,[buttonPressMask],false,copyClause,_).
709
710
726
727selectAll(_Widget,rules,_CallData) :-
728 recorded(current,clause(I,Widget,notselected),Ref),!,
729 xtGetValues(Widget,[xmNbackground(B),xmNforeground(F)]),
730 xtSetValues(Widget,[xmNbackground(F),xmNforeground(B)]),
731 erase(Ref),
732 recordz(current,clause(I,Widget,selected),_Ref),
733 selectAll(_Widget,rules,_CallData).
734
735selectAll(_Widget,examples,_CallData) :-
736 recorded(current,example(I,Widget,notselected),Ref),!,
737 xtGetValues(Widget,[xmNbackground(B),xmNforeground(F)]),
738 xtSetValues(Widget,[xmNbackground(F),xmNforeground(B)]),
739 erase(Ref),
740 recordz(current,example(I,Widget,selected),_Ref),
741 selectAll(_Widget,examples,_CallData).
742
743selectAll(_,_,_).
744
745
761
762unselectAll(_Widget,rules,_CallData) :-
763 recorded(current,clause(I,Widget,selected),Ref),!,
764 xtGetValues(Widget,[xmNbackground(B),xmNforeground(F)]),
765 xtSetValues(Widget,[xmNbackground(F),xmNforeground(B)]),
766 erase(Ref),
767 recordz(current,clause(I,Widget,notselected),_Ref),
768 unselectAll(_Widget,rules,_CallData).
769
770unselectAll(_Widget,examples,_CallData) :-
771 recorded(current,example(I,Widget,selected),Ref),!,
772 xtGetValues(Widget,[xmNbackground(B),xmNforeground(F)]),
773 xtSetValues(Widget,[xmNbackground(F),xmNforeground(B)]),
774 erase(Ref),
775 recordz(current,example(I,Widget,notselected),_Ref),
776 unselectAll(_Widget,examples,_CallData).
777
778unselectAll(_,_,_).
779
780
794
795deleteKnowledge(_Widget,rules,_CallData) :-
796 recorded(current,clause(I,Widget,selected),Ref),!,
797 (recorded(editor,editing(rules,I),_) -> clearEditor(_,_,_)|
798 otherwise),
799 xtGetValues(Widget,[xmNbackground(B),xmNforeground(F)]),
800 xtSetValues(Widget,[xmNbackground(F),xmNforeground(B)]),
801 erase(Ref),
802 xtDestroyWidget(Widget),
803 delete_clause(I),
804 writeMessage(':- delete_clause('),
805 writeMessage(I),
806 writelnMessage(').'),
807 deleteKnowledge(_Widget,rules,_CallData).
808
809deleteKnowledge(_Widget,examples,_CallData) :-
810 (recorded(editor,editing(examples,I),_) -> clearEditor(_,_,_)|
811 otherwise),
812 recorded(current,example(I,Widget,selected),Ref),!,
813 xtGetValues(Widget,[xmNbackground(B),xmNforeground(F)]),
814 xtSetValues(Widget,[xmNbackground(F),xmNforeground(B)]),
815 erase(Ref),
816 xtDestroyWidget(Widget),
817 delete_example(I),
818 writeMessage(':- delete_example('),
819 writeMessage(I),
820 writelnMessage(').'),
821 deleteKnowledge(_Widget,examples,_CallData).
822
823deleteKnowledge(_,KindOfKnowledge,_) :-
824 writeMessage('% selected '),
825 writeMessage(KindOfKnowledge),
826 writelnMessage(' deleted.'),
827 updateEvaluationLabel.
828
829
844
845deleteAllKnowledge(_Widget,rules,_CallData) :-
846 (recorded(editor,editing(rules,_),_) -> clearEditor(_,_,_)|
847 otherwise),
848 recorded(current,clause(I,Widget,_),Ref),!,
849 xtGetValues(Widget,[xmNbackground(B),xmNforeground(F)]),
850 xtSetValues(Widget,[xmNbackground(F),xmNforeground(B)]),
851 erase(Ref),
852 xtDestroyWidget(Widget),
853 delete_clause(I),
854 writeMessage(':- delete_clause('),
855 writeMessage(I),
856 writelnMessage(').'),
857 deleteAllKnowledge(_Widget,rules,_CallData).
858
859deleteAllKnowledge(_Widget,examples,_CallData) :-
860 (recorded(editor,editing(examples,_),_) -> clearEditor(_,_,_)|
861 otherwise),
862 recorded(current,example(I,Widget,_),Ref),!,
863 xtGetValues(Widget,[xmNbackground(B),xmNforeground(F)]),
864 xtSetValues(Widget,[xmNbackground(F),xmNforeground(B)]),
865 erase(Ref),
866 xtDestroyWidget(Widget),
867 delete_example(I),
868 writeMessage(':- delete_example('),
869 writeMessage(I),
870 writelnMessage(').'),
871 deleteAllKnowledge(_Widget,examples,_CallData).
872
873deleteAllKnowledge(_,KindOfKnowledge,_) :-
874 writeMessage('% all '),
875 writeMessage(KindOfKnowledge),
876 writelnMessage(' deleted.').
877
878
892
893saveKnowledgeBegin(_Widget,FileSelectionDialog,_CallData) :-
894 xtManageChild(FileSelectionDialog),
895 xtAddCallback(FileSelectionDialog,xmNokCallback,
896 saveKnowledgeEnd,FileSelectionDialog),
897 xtAddCallback(FileSelectionDialog,xmNcancelCallback,
898 cancelSaveFileSelect,FileSelectionDialog).
899
900
901
915
916saveKnowledgeEnd(_Widget,FileSelectionDialog,CallData) :-
917 xtUnmanageChild(FileSelectionDialog),
918 xtRemoveCallback(FileSelectionDialog,xmNokCallback,
919 saveKnowledgeEnd,FileSelectionDialog),
920 xtRemoveCallback(FileSelectionDialog,xmNcancelCallback,
921 cancelSaveFileSelect,FileSelectionDialog),
922 sucheInListe(value(FileNameString),CallData),
923 proxtGetDefaultCharset(DCharset),
924 xmStringGetLtoR(FileNameString,DCharset,FileNameCP,_),
925 proxtCharPtrToString(FileNameCP,FileName),
926 ((midstring(FileName,_,'.qof',0) ->
927 save_kb(FileName),
928 writeMessage(':- save_kb('),
929 writeMessage(FileName),
930 writelnMessage(').'))|
931 (otherwise ->
932 print_kb(FileName),
933 writeMessage(':- print_kb('),
934 writeMessage(FileName),
935 writelnMessage(').'))),
936 writeMessage('% file "'),
937 writeMessage(FileName),
938 writelnMessage('" saved.').
939
940
954
955loadKnowledgeBegin(_Widget,FileSelectionDialog,_CallData) :-
956 xtManageChild(FileSelectionDialog),
957 xtAddCallback(FileSelectionDialog,xmNokCallback,
958 loadKnowledgeEnd,FileSelectionDialog),
959 xtAddCallback(FileSelectionDialog,xmNcancelCallback,
960 cancelLoadFileSelect,FileSelectionDialog).
961
962
976
977loadKnowledgeEnd(_Widget,FileSelectionDialog,CallData) :-
978 xtUnmanageChild(FileSelectionDialog),
979 xtRemoveCallback(FileSelectionDialog,xmNokCallback,
980 loadKnowledgeEnd,FileSelectionDialog),
981 xtRemoveCallback(FileSelectionDialog,xmNcancelCallback,
982 cancelLoadFileSelect,FileSelectionDialog),
983 sucheInListe(value(FileNameString),CallData),
984 proxtGetDefaultCharset(DCharset),
985 xmStringGetLtoR(FileNameString,DCharset,FileNameCP,_),
986 proxtCharPtrToString(FileNameCP,FileName),
987 ((midstring(FileName,_,'.qof',0) ->
988 consult_kb(FileName),
989 writeMessage(':- consult_kb('),
990 writeMessage(FileName),
991 writelnMessage(').'))|
992 (otherwise ->
993 init_kb(FileName),
994 writeMessage(':- init_kb('),
995 writeMessage(FileName),
996 writelnMessage(').'))),
997 writeMessage('% file "'),
998 writeMessage(FileName),
999 writelnMessage('" consulted.'),
1000 refreshKnowledgeList(_Widget,rules,_Calldata),
1001 refreshKnowledgeList(_Widget,examples,_Calldata),
1002 updateEvaluationLabel.
1003
1004
1018
1019clearAllKnowledge(_Widget,_ClientData,_CallData) :-
1020 deleteAllKnowledge(_Widget,rules,_CallData),
1021 deleteAllKnowledge(_Widget,examples,_CallData),
1022 clearEditor(_,_,_),
1023 writelnMessage(':- clear_kb.'),
1024 writelnMessage('% knowledgebase cleared.'),
1025 clear_kb,
1026 updateEvaluationLabel.
1027
1042
1043cancelLoadFileSelect(_Widget,FileSelectionDialog,_CallData) :-
1044 xtRemoveCallback(FileSelectionDialog,xmNokCallback,
1045 loadKnowledgeEnd,FileSelectionDialog),
1046 xtRemoveCallback(FileSelectionDialog,xmNcancelCallback,
1047 cancelLoadFileSelect,FileSelectionDialog),
1048 xtUnmanageChild(FileSelectionDialog).
1049
1050
1065
1066cancelSaveFileSelect(_Widget,FileSelectionDialog,_CallData) :-
1067 xtRemoveCallback(FileSelectionDialog,xmNokCallback,
1068 saveKnowledgeEnd,FileSelectionDialog),
1069 xtRemoveCallback(FileSelectionDialog,xmNcancelCallback,
1070 cancelSaveFileSelect,FileSelectionDialog),
1071 xtUnmanageChild(FileSelectionDialog).
1072
1073
1087
1088createKbButtons(Parent) :-
1089 xmCreateRowColumn(Parent,'ButtonRowColumn',
1090 [xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER),
1091 xmNnumColumns(1),
1092 xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN)],
1093 ButtonRowColumn),
1094 xtManageChild(ButtonRowColumn),
1095
1096 xmCreateFileSelectionDialog(ButtonRowColumn,'KBFileSelect',
1097 [],KbFileSelectionDialog),
1098
1099 xmCreatePushButton(ButtonRowColumn,'Load',
1100 [],Load),
1101 xtManageChild(Load),
1102 xtAddCallback(Load,xmNactivateCallback,
1103 loadKnowledgeBegin,KbFileSelectionDialog),
1104
1105 xmCreatePushButton(ButtonRowColumn,'Save',
1106 [],Save),
1107 xtManageChild(Save),
1108 xtAddCallback(Save,xmNactivateCallback,
1109 saveKnowledgeBegin,KbFileSelectionDialog),
1110
1111 xmCreatePushButton(ButtonRowColumn,'Clear',
1112 [],Clear),
1113 xtManageChild(Clear),
1114 createYesNoPopup(Clear,_YesNoPopup,clearAllKnowledge,_).
1115
1116
1132
1133createKbSubButtons(Parent,KindOfKnowledge) :-
1134 xmCreateRowColumn(Parent,'ButtonRowColumn',
1135 [xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER),
1136 xmNnumColumns(2),
1137 xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN)],
1138 ButtonRowColumn),
1139 xtManageChild(ButtonRowColumn),
1140
1141 xmCreatePushButton(ButtonRowColumn,'View ...',
1142 [],View),
1143 xtManageChild(View),
1144
1145 xmCreatePushButton(ButtonRowColumn,'Select All',
1146 [],Select),
1147 xtManageChild(Select),
1148 xtAddCallback(Select,xmNactivateCallback,
1149 selectAll,KindOfKnowledge),
1150
1151 xmCreatePushButton(ButtonRowColumn,'Unselect All',
1152 [],Unselect),
1153 xtManageChild(Unselect),
1154 xtAddCallback(Unselect,xmNactivateCallback,
1155 unselectAll,KindOfKnowledge),
1156
1157 xmCreatePushButton(ButtonRowColumn,'Refresh',
1158 [],Refresh),
1159 xtManageChild(Refresh),
1160 xtAddCallback(Refresh,xmNactivateCallback,
1161 refreshKnowledgeList,KindOfKnowledge),
1162
1163 xmCreatePushButton(ButtonRowColumn,'Delete',
1164 [],Delete),
1165 xtManageChild(Delete),
1166 xtAddCallback(Delete,xmNactivateCallback,
1167 deleteKnowledge,KindOfKnowledge),
1168
1169 (KindOfKnowledge = rules ->
1170 createViewRulesPopup(View),
1171 createLabelChangeButton(ButtonRowColumn) |
1172 KindOfKnowledge = examples ->
1173 createViewExamplesPopup(View),
1174 createClassChangeButtons(ButtonRowColumn)).
1175
1176
1189
1190createLabelChangeButton(Parent) :-
1191 xmCreatePushButton(Parent,'Label',
1192 [],Label),
1193 xtManageChild(Label),
1194
1195 xmCreateBulletinBoardDialog(Label,'Label Change',
1196 [],LabelChangeDialog),
1197 xtAddCallback(Label,xmNactivateCallback,
1198 popupDialog,LabelChangeDialog),
1199 xmCreateFrame(LabelChangeDialog,'LabelFrame',
1200 [],LabelFrame),
1201 xtManageChild(LabelFrame),
1202
1203 xmCreateRowColumn(LabelFrame,labelChangeColumn,
1204 [xmNorientation(xmVERTICAL),xmNpacking(xmPACK_COLUMN)],
1205 LabelChangeColumn),
1206 xtManageChild(LabelChangeColumn),
1207
1208 proxtGetDefaultCharset(DCharset),
1209 proxtStringToCharPtr(
1210 'Change Label of all selected rules to:',LCP),
1211 xmStringCreate(LCP,DCharset,LabelStr),
1212 xmCreateLabelGadget(LabelChangeColumn,labelchange,
1213 [xmNlabelType(xmSTRING),xmNlabelString(LabelStr)],
1214 KStatus),
1215 xtManageChild(KStatus),
1216
1217 xmCreateText(LabelChangeColumn,labelChangeText,
1218 [xmNeditable(true),xmNeditMode(xmSINGLE_LINE_EDIT),
1219 xmNwidth(150),
1220 xmNautoShowCursorPosition(true)],LabelChangeText),
1221 xtManageChild(LabelChangeText),
1222 xtAddActions([action(label_ok,changeSelectedLabels,LabelChangeDialog)]),
1223 proxtStringToCharPtr('<Key>Return: label_ok()',TranslationString),
1224 xtParseTranslationTable(TranslationString,TranslationTable),
1225 xtOverrideTranslations(LabelChangeText,TranslationTable),
1226
1227 xmCreateRowColumn(LabelChangeColumn,buttonrow,
1228 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN),
1229 xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER)],
1230 ButtonRow),
1231 xtManageChild(ButtonRow),
1232
1233 xmCreatePushButton(ButtonRow,'OK!',
1234 [],OK),
1235 xtManageChild(OK),
1236 xtAddCallback(OK,xmNactivateCallback,
1237 changeSelectedLabels,[LabelChangeDialog,LabelChangeText]),
1238
1239 xmCreatePushButton(ButtonRow,'Cancel',
1240 [],Cancel),
1241 xtManageChild(Cancel),
1242 xtAddCallback(Cancel,xmNactivateCallback,
1243 cancelLabelChange,LabelChangeDialog).
1244
1245
1258
(Parent) :-
1260
1261 xmCreateBulletinBoardDialog(Parent,'SelectRules',
1262 [],SelectRulesDialog),
1263 xtAddCallback(Parent,xmNactivateCallback,
1264 popupDialog,SelectRulesDialog),
1265 xmCreateFrame(SelectRulesDialog,'SelectRulesFrame',
1266 [],SelectRulesFrame),
1267 xtManageChild(SelectRulesFrame),
1268
1269 xmCreateRowColumn(SelectRulesFrame,selectRulesColumn,
1270 [xmNorientation(xmVERTICAL),xmNpacking(xmPACK_COLUMN)],
1271 SelectRulesColumn),
1272 xtManageChild(SelectRulesColumn),
1273
1274 proxtGetDefaultCharset(DCharset),
1275 proxtStringToCharPtr('Select rules:',TitleCP),
1276 xmStringCreate(TitleCP,DCharset,TitleStr),
1277 xmCreateLabelGadget(SelectRulesColumn,title,
1278 [xmNlabelType(xmSTRING),xmNlabelString(TitleStr)],
1279 TitleLabel),
1280 xtManageChild(TitleLabel),
1281
1282 xmCreateText(SelectRulesColumn,selectRulesText,
1283 [xmNeditable(true),xmNeditMode(xmSINGLE_LINE_EDIT),
1284 xmNwidth(150),
1285 xmNautoShowCursorPosition(true)],SelectRulesText),
1286 xtManageChild(SelectRulesText),
1287 xtAddActions([action(select_ok,selectRules,SelectRulesDialog)]),
1288 proxtStringToCharPtr('<Key>Return: select_ok()',TranslationString),
1289 xtParseTranslationTable(TranslationString,TranslationTable),
1290 xtOverrideTranslations(SelectRulesText,TranslationTable),
1291
1292 xmCreateRowColumn(SelectRulesColumn,buttonrow,
1293 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN),
1294 xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER)],
1295 ButtonRow),
1296 xtManageChild(ButtonRow),
1297
1298 xmCreatePushButton(ButtonRow,'Select',
1299 [],Select),
1300 xtManageChild(Select),
1301 xtAddCallback(Select,xmNactivateCallback,
1302 selectRules,SelectRulesDialog),
1303
1304 xmCreatePushButton(ButtonRow,'Select All',
1305 [],SelectAll),
1306 xtManageChild(SelectAll),
1307 xtAddCallback(SelectAll,xmNactivateCallback,
1308 selectRules,[rules,SelectRulesDialog]),
1309
1310 xmCreatePushButton(ButtonRow,'Cancel',
1311 [],Cancel),
1312 xtManageChild(Cancel),
1313 xtAddCallback(Cancel,xmNactivateCallback,
1314 yesNoPopdown,SelectRulesDialog).
1315
1316
1329
(Parent) :-
1331
1332 xmCreateBulletinBoardDialog(Parent,'ExamineRules',
1333 [],ExamineRulesDialog),
1334 xtAddCallback(Parent,xmNactivateCallback,
1335 popupExamineRules,_),
1336 recordz(rules,examine(dialog,ExamineRulesDialog),_),
1337
1338 xmCreateFrame(ExamineRulesDialog,'ExamineRulesFrame',
1339 [],ExamineRulesFrame),
1340 xtManageChild(ExamineRulesFrame),
1341
1342 xmCreateRowColumn(ExamineRulesFrame,examineRulesColumn,
1343 [xmNorientation(xmVERTICAL),xmNpacking(xmPACK_TIGHT)],
1344 ExamineRulesColumn),
1345 xtManageChild(ExamineRulesColumn),
1346
1347 xmCreateRowColumn(ExamineRulesColumn,titlerow,
1348 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN),
1349 xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER)],
1350 TitleRow),
1351 xtManageChild(TitleRow),
1352
1353 proxtGetDefaultCharset(DCharset),
1354 proxtStringToCharPtr('Examine rule:',TitleCP),
1355 xmStringCreate(TitleCP,DCharset,TitleStr),
1356 xmCreateLabelGadget(TitleRow,title,
1357 [xmNlabelType(xmSTRING),xmNlabelString(TitleStr)],
1358 TitleLabel),
1359 xtManageChild(TitleLabel),
1360
1361 xmCreateScrolledWindow(ExamineRulesColumn,ruleSW,
1362 [xmNheight(200),xmNwidth(250),
1363 xmNlistSizePolicy(xmCONSTANT),
1364 xmNscrollBarDisplayPolicy(xmSTATIC),
1365 xmNscrollingPolicy(xmAUTOMATIC)],
1366 RuleSW),
1367 xtManageChild(RuleSW),
1368
1369 xmCreateRowColumn(RuleSW,ruleRC,
1370 [xmNadjustLast(false),
1371 xmNorientation(xmVERTICAL),
1372 xmNpacking(xmPACK_TIGHT),
1373 xmNrowColumnType(xmWORK_AREA)],
1374 RuleRC),
1375 recordz(rules,examineRC(RuleRC),_Ref),
1376 xtGetValues(RuleRC,[xmNbackground(B)]),
1377 xtGetValues(RuleSW,[xmNclipWindow(CW)]),
1378 xtSetValues(CW,[xmNbackground(B)]),
1379 xtManageChild(RuleRC),
1380
1381 xmCreateRowColumn(ExamineRulesColumn,buttonrow,
1382 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN),
1383 xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER)],
1384 ButtonRow),
1385 xtManageChild(ButtonRow),
1386
1387 xmCreatePushButton(ButtonRow,'Examine',
1388 [],Examine),
1389 xtManageChild(Examine),
1390 xtAddCallback(Examine,xmNactivateCallback,
1391 showExaminedRule,_),
1392 showExaminedRule(_,_,_),
1393
1394 xmCreatePushButton(ButtonRow,'Cancel',
1395 [],Cancel),
1396 xtManageChild(Cancel),
1397 xtAddCallback(Cancel,xmNactivateCallback,
1398 cancelExamineRules,_).
1399
1400
1401
1402
1412
1413showExaminedRule(_Widget, _RuleNoText, _CallData) :-
1414 proxtGetDefaultCharset(DCharset),
1415 (recorded(rules,examineText(OldText),Ref) ->
1416 erase(Ref),
1417 xtDestroyWidget(OldText)|
1418 otherwise),
1419 recorded(rules,examineRC(ExamineRC),_),
1420
1421 ( ( recorded(current,clause(RuleNo,_,selected),_),
1422 get_clause(RuleNo,H,B,_S,O)) ->
1423 get_evaluation(RuleNo,Evaluation),
1424 Evaluation = evaluation(E1,E2,E3,E4,E5,E6,E7,E8,E9),
1425 ( type_restriction(H,R)
1426 ; R='No type restriction found!'
1427 ),
1428 numbervars((H,B),0,_), 1429 xxmWriteToString((show_kb_clause(RuleNo,H,B,O),
1430 nl,write('type_restriction:'),
1431 nl,write(R),nl),
1432 DCharset,XmS3),
1433 xxmWriteToString((nl,write('evaluation:'),nl,
1434 write(E1),nl,write(E2),nl,write(E3),nl,
1435 write(E4),nl,write(E5),nl,write(E6),nl,
1436 write(E7),nl,write(E8),nl,write(E9),nl),
1437 DCharset,XmS4),
1438 xmStringConcat(XmS3,XmS4,XmS),
1439
1440 xmCreateLabel(ExamineRC,anyClause,
1441 [xmNalignment(xmALIGNMENT_BEGINNING),
1442 xmNlabelString(XmS),xmNlabelType(xmSTRING)],
1443 Label)
1444
1445 ; atom_chars(ASno,"No rule selected!"),
1446 proxtStringToCharPtr(ASno,CPno),
1447 xmStringCreateLtoR(CPno,DCharset,XmSno),
1448 xmCreateLabel(ExamineRC,anyClause,
1449 [xmNalignment(xmALIGNMENT_BEGINNING),
1450 xmNlabelString(XmSno),xmNlabelType(xmSTRING)],
1451 Label)
1452 ),
1453
1454 xtManageChild(Label),
1455 recordz(rules,examineText(Label),_),!.
1456
1457
1467
(Parent) :-
1469
1470 xmCreateBulletinBoardDialog(Parent,'ViewRules',
1471 [],ViewRulesDialog),
1472 xtAddCallback(Parent,xmNactivateCallback,
1473 popupViewRules,_),
1474
1475 xmCreateFrame(ViewRulesDialog,'ViewRulesFrame',
1476 [],ViewRulesFrame),
1477 xtManageChild(ViewRulesFrame),
1478
1479 xmCreateRowColumn(ViewRulesFrame,viewRulesColumn,
1480 [xmNorientation(xmVERTICAL),xmNpacking(xmPACK_TIGHT)],
1481 ViewRulesColumn),
1482 xtManageChild(ViewRulesColumn),
1483
1484 proxtGetDefaultCharset(DCharset),
1485 proxtStringToCharPtr('View rules:',TitleCP),
1486 xmStringCreate(TitleCP,DCharset,TitleStr),
1487 xmCreateLabelGadget(ViewRulesColumn,title,
1488 [xmNlabelType(xmSTRING),xmNlabelString(TitleStr)],
1489 TitleLabel),
1490 xtManageChild(TitleLabel),
1491
1492 xmCreateFrame(ViewRulesColumn,'ViewLabelsFrame',
1493 [],ViewLabelFrame),
1494 xtManageChild(ViewLabelFrame),
1495
1496 xmCreateRowColumn(ViewLabelFrame,labelrow,
1497 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN),
1498 xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER)],
1499 LabelRow),
1500 xtManageChild(LabelRow),
1501
1502 xmCreateRowColumn(LabelRow,exLabColumn,
1503 [xmNorientation(xmVERTICAL),xmNpacking(xmPACK_TIGHT)],
1504 ExLabColumn),
1505 xtManageChild(ExLabColumn),
1506
1507 xmCreateRowColumn(LabelRow,viewLabColumn,
1508 [xmNorientation(xmVERTICAL),xmNpacking(xmPACK_TIGHT)],
1509 ViewLabColumn),
1510 xtManageChild(ViewLabColumn),
1511
1512 proxtStringToCharPtr('existing labels',ExLabCP),
1513 xmStringCreate(ExLabCP,DCharset,ExLabStr),
1514 xmCreateLabelGadget(ExLabColumn,subtitle,
1515 [xmNlabelType(xmSTRING),xmNlabelString(ExLabStr)],
1516 ExLabLabel),
1517 xtManageChild(ExLabLabel),
1518
1519 proxtStringToCharPtr('viewed labels',ViewLabCP),
1520 xmStringCreate(ViewLabCP,DCharset,ViewLabStr),
1521 xmCreateLabelGadget(ViewLabColumn,subtitle,
1522 [xmNlabelType(xmSTRING),xmNlabelString(ViewLabStr)],
1523 ViewLabLabel),
1524 xtManageChild(ViewLabLabel),
1525
1526 xmCreateScrolledWindow(ExLabColumn,exLabSW,
1527 [xmNheight(150),xmNwidth(140),
1528 xmNlistSizePolicy(xmCONSTANT),
1529 xmNscrollBarDisplayPolicy(xmSTATIC),
1530 xmNscrollingPolicy(xmAUTOMATIC)],
1531 ExLabSW),
1532 xtManageChild(ExLabSW),
1533 xmCreateRowColumn(ExLabSW,exLabRC,
1534 [xmNadjustLast(false),
1535 xmNorientation(xmVERTICAL),
1536 xmNpacking(xmPACK_TIGHT),
1537 xmNrowColumnType(xmWORK_AREA)],
1538 ExLabRC),
1539 xtGetValues(ExLabRC,[xmNbackground(ExLabB)]),
1540 xtGetValues(ExLabSW,[xmNclipWindow(ExLabCW)]),
1541 xtSetValues(ExLabCW,[xmNbackground(ExLabB)]),
1542 xtManageChild(ExLabRC),
1543
1544 xmCreateScrolledWindow(ViewLabColumn,viewedLabSW,
1545 [xmNheight(150),xmNwidth(140),
1546 xmNlistSizePolicy(xmCONSTANT),
1547 xmNscrollBarDisplayPolicy(xmSTATIC),
1548 xmNscrollingPolicy(xmAUTOMATIC)],
1549 ViewLabSW),
1550 xtManageChild(ViewLabSW),
1551 xmCreateRowColumn(ViewLabSW,viewLabRC,
1552 [xmNadjustLast(false),
1553 xmNorientation(xmVERTICAL),
1554 xmNpacking(xmPACK_TIGHT),
1555 xmNrowColumnType(xmWORK_AREA)],
1556 ViewLabRC),
1557 xtGetValues(ViewLabRC,[xmNbackground(ViewLabB)]),
1558 xtGetValues(ViewLabSW,[xmNclipWindow(ViewLabCW)]),
1559 xtSetValues(ViewLabCW,[xmNbackground(ViewLabB)]),
1560 xtManageChild(ViewLabRC),
1561
1562 xmCreateFrame(ViewRulesColumn,'ViewClauseHeadFrame',
1563 [],ViewClauseHeadFrame),
1564 xtManageChild(ViewClauseHeadFrame),
1565
1566 xmCreateRowColumn(ViewClauseHeadFrame,clauseHeadrow,
1567 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN),
1568 xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER)],
1569 ClauseHeadRow),
1570 xtManageChild(ClauseHeadRow),
1571
1572 xmCreateRowColumn(ClauseHeadRow,exCHColumn,
1573 [xmNorientation(xmVERTICAL),xmNpacking(xmPACK_TIGHT)],
1574 ExCHColumn),
1575 xtManageChild(ExCHColumn),
1576
1577 xmCreateRowColumn(ClauseHeadRow,viewCHColumn,
1578 [xmNorientation(xmVERTICAL),xmNpacking(xmPACK_TIGHT)],
1579 ViewCHColumn),
1580 xtManageChild(ViewCHColumn),
1581
1582 proxtStringToCharPtr('existing clause heads',ExCHCP),
1583 xmStringCreate(ExCHCP,DCharset,ExCHStr),
1584 xmCreateLabelGadget(ExCHColumn,subtitle,
1585 [xmNlabelType(xmSTRING),xmNlabelString(ExCHStr)],
1586 ExCHLabel),
1587 xtManageChild(ExCHLabel),
1588
1589 proxtStringToCharPtr('viewed clause heads',ViewCHCP),
1590 xmStringCreate(ViewCHCP,DCharset,ViewCHStr),
1591 xmCreateLabelGadget(ViewCHColumn,subtitle,
1592 [xmNlabelType(xmSTRING),xmNlabelString(ViewCHStr)],
1593 ViewCHLabel),
1594 xtManageChild(ViewCHLabel),
1595
1596 xmCreateScrolledWindow(ExCHColumn,existingCHSW,
1597 [xmNheight(150),xmNwidth(140),
1598 xmNlistSizePolicy(xmCONSTANT),
1599 xmNscrollBarDisplayPolicy(xmSTATIC),
1600 xmNscrollingPolicy(xmAUTOMATIC)],
1601 ExCHSW),
1602 xtManageChild(ExCHSW),
1603 xmCreateRowColumn(ExCHSW,exCHRC,
1604 [xmNadjustLast(false),
1605 xmNorientation(xmVERTICAL),
1606 xmNpacking(xmPACK_TIGHT),
1607 xmNrowColumnType(xmWORK_AREA)],
1608 ExCHRC),
1609 xtGetValues(ExCHRC,[xmNbackground(ExCHB)]),
1610 xtGetValues(ExCHSW,[xmNclipWindow(ExCHCW)]),
1611 xtSetValues(ExCHCW,[xmNbackground(ExCHB)]),
1612 xtManageChild(ExCHRC),
1613
1614 xmCreateScrolledWindow(ViewCHColumn,viewedCHSW,
1615 [xmNheight(150),xmNwidth(140),
1616 xmNlistSizePolicy(xmCONSTANT),
1617 xmNscrollBarDisplayPolicy(xmSTATIC),
1618 xmNscrollingPolicy(xmAUTOMATIC)],
1619 ViewCHSW),
1620 xtManageChild(ViewCHSW),
1621 xmCreateRowColumn(ViewCHSW,viewCHRC,
1622 [xmNadjustLast(false),
1623 xmNorientation(xmVERTICAL),
1624 xmNpacking(xmPACK_TIGHT),
1625 xmNrowColumnType(xmWORK_AREA)],
1626 ViewCHRC),
1627 xtGetValues(ViewCHRC,[xmNbackground(ViewCHB)]),
1628 xtGetValues(ViewCHSW,[xmNclipWindow(ViewCHCW)]),
1629 xtSetValues(ViewCHCW,[xmNbackground(ViewCHB)]),
1630 xtManageChild(ViewCHRC),
1631
1632 xmCreateRowColumn(ViewRulesColumn,minMaxRow,
1633 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN),
1634 xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER)],
1635 MinMaxRow),
1636 xtManageChild(MinMaxRow),
1637
1638 proxtStringToCharPtr( 'Min: ', MinLabelChrPtr),
1639 xmStringCreate(MinLabelChrPtr,DCharset,MinLabelStr),
1640 xmCreateLabelGadget(MinMaxRow,minLabel,
1641 [xmNlabelType(xmSTRING),xmNlabelString(MinLabelStr)],
1642 MinLabel),
1643 xtManageChild(MinLabel),
1644
1645 xmCreateRowColumn(MinMaxRow,'Min',
1646 [xmNadjustLast(true), xmNmarginHeight(0),
1647 xmNorientation(xmHORIZONTAL),
1648 xmNpacking(xmPACK_TIGHT)],
1649 MinRow),
1650 xtManageChild(MinRow),
1651
1652 xmCreatePushButton(MinRow,'<',
1653 [],Lower),
1654 xtManageChild(Lower),
1655
1656 xmCreateText(MinRow,argumentText,
1657 [xmNeditable(true),xmNeditMode(xmSINGLE_LINE_EDIT),
1658 xmNwidth(30),
1659 xmNautoShowCursorPosition(true)],MinText),
1660 proxtStringToCharPtr('1',MinChrPtr),
1661 xmTextSetString(MinText,MinChrPtr),
1662 xtManageChild(MinText),
1663 recordz(rules,viewMin(MinText),_),
1664
1665 xtAddCallback(Lower,xmNactivateCallback,lowerMin,MinText),
1666 xmCreatePushButton(MinRow,'>',
1667 [],Raise),
1668 xtManageChild(Raise),
1669 xtAddCallback(Raise,xmNactivateCallback,raiseMin,MinText),
1670
1671 proxtStringToCharPtr( 'Max: ', MaxLabelChrPtr),
1672 xmStringCreate(MaxLabelChrPtr,DCharset,MaxLabelStr),
1673 xmCreateLabelGadget(MinMaxRow,maxLabel,
1674 [xmNlabelType(xmSTRING),xmNlabelString(MaxLabelStr)],
1675 MaxLabel),
1676 xtManageChild(MaxLabel),
1677
1678 xmCreateRowColumn(MinMaxRow,'Max',
1679 [xmNadjustLast(true), xmNmarginHeight(0),
1680 xmNorientation(xmHORIZONTAL),
1681 xmNpacking(xmPACK_TIGHT)],
1682 MaxRow),
1683 xtManageChild(MaxRow),
1684
1685 xmCreatePushButton(MaxRow,'<',
1686 [],LowerMax),
1687 xtManageChild(LowerMax),
1688
1689 xmCreateText(MaxRow,argumentText,
1690 [xmNeditable(true),xmNeditMode(xmSINGLE_LINE_EDIT),
1691 xmNwidth(30),
1692 xmNautoShowCursorPosition(true)],MaxText),
1693 proxtStringToCharPtr('100',MaxChrPtr),
1694 xmTextSetString(MaxText,MaxChrPtr),
1695 xtManageChild(MaxText),
1696 recordz(rules,viewMax(MaxText),_),
1697
1698 xtAddCallback(LowerMax,xmNactivateCallback,lowerMax,MaxText),
1699 xmCreatePushButton(MaxRow,'>',
1700 [],RaiseMax),
1701 xtManageChild(RaiseMax),
1702 xtAddCallback(RaiseMax,xmNactivateCallback,raiseMax,MaxText),
1703
1704
1705
1706 recordz(rules,view(all),_),
1707 recordz(rules,view(labels,[]),_),
1708 recordz(rules,view(clause_heads,[]),_),
1709 recordz(rules,view(dialog,ViewRulesDialog),_),
1710 recordz(rules,view(exLabRC,ExLabRC),_),
1711 recordz(rules,view(viewLabRC,ViewLabRC),_),
1712 recordz(rules,view(exCHRC,ExCHRC),_),
1713 recordz(rules,view(viewCHRC,ViewCHRC),_),
1714
1715 xmCreateRowColumn(ViewRulesColumn,buttonrow,
1716 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN),
1717 xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER)],
1718 ButtonRow),
1719 xtManageChild(ButtonRow),
1720
1721 xmCreatePushButton(ButtonRow,'View',
1722 [],View),
1723 xtManageChild(View),
1724 xtAddCallback(View,xmNactivateCallback,
1725 viewRules,_),
1726
1727 xmCreatePushButton(ButtonRow,'View All',
1728 [],ViewAll),
1729 xtManageChild(ViewAll),
1730 xtAddCallback(ViewAll,xmNactivateCallback,
1731 viewAllRules,_),
1732
1733 xmCreatePushButton(ButtonRow,'Cancel',
1734 [],Cancel),
1735 xtManageChild(Cancel),
1736 xtAddCallback(Cancel,xmNactivateCallback,
1737 cancelViewRules,_).
1738
1739
1740
1741
1752
(Parent) :-
1754
1755 xmCreateBulletinBoardDialog(Parent,'ViewExamples',
1756 [],ViewExamplesDialog),
1757 xtAddCallback(Parent,xmNactivateCallback,
1758 popupViewExamples,_),
1759
1760 xmCreateFrame(ViewExamplesDialog,'ViewExamplesFrame',
1761 [],ViewExamplesFrame),
1762 xtManageChild(ViewExamplesFrame),
1763
1764 xmCreateRowColumn(ViewExamplesFrame,viewExamplesColumn,
1765 [xmNorientation(xmVERTICAL),xmNpacking(xmPACK_TIGHT)],
1766 ViewExamplesColumn),
1767 xtManageChild(ViewExamplesColumn),
1768
1769 proxtGetDefaultCharset(DCharset),
1770 proxtStringToCharPtr('View examples:',TitleCP),
1771 xmStringCreate(TitleCP,DCharset,TitleStr),
1772 xmCreateLabelGadget(ViewExamplesColumn,title,
1773 [xmNlabelType(xmSTRING),xmNlabelString(TitleStr)],
1774 TitleLabel),
1775 xtManageChild(TitleLabel),
1776
1777 xmCreateFrame(ViewExamplesColumn,'ViewClauseHeadFrame',
1778 [],ViewClauseHeadFrame),
1779 xtManageChild(ViewClauseHeadFrame),
1780
1781 xmCreateRowColumn(ViewClauseHeadFrame,clauseHeadrow,
1782 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN),
1783 xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER)],
1784 ClauseHeadRow),
1785 xtManageChild(ClauseHeadRow),
1786
1787 xmCreateRowColumn(ClauseHeadRow,exCHColumn,
1788 [xmNorientation(xmVERTICAL),xmNpacking(xmPACK_TIGHT)],
1789 ExCHColumn),
1790 xtManageChild(ExCHColumn),
1791
1792 xmCreateRowColumn(ClauseHeadRow,viewCHColumn,
1793 [xmNorientation(xmVERTICAL),xmNpacking(xmPACK_TIGHT)],
1794 ViewCHColumn),
1795 xtManageChild(ViewCHColumn),
1796
1797 proxtStringToCharPtr('existing clause heads',ExCHCP),
1798 xmStringCreate(ExCHCP,DCharset,ExCHStr),
1799 xmCreateLabelGadget(ExCHColumn,subtitle,
1800 [xmNlabelType(xmSTRING),xmNlabelString(ExCHStr)],
1801 ExCHLabel),
1802 xtManageChild(ExCHLabel),
1803
1804 proxtStringToCharPtr('viewed clause heads',ViewCHCP),
1805 xmStringCreate(ViewCHCP,DCharset,ViewCHStr),
1806 xmCreateLabelGadget(ViewCHColumn,subtitle,
1807 [xmNlabelType(xmSTRING),xmNlabelString(ViewCHStr)],
1808 ViewCHLabel),
1809 xtManageChild(ViewCHLabel),
1810
1811 xmCreateScrolledWindow(ExCHColumn,existingCHSW,
1812 [xmNheight(150),xmNwidth(140),
1813 xmNlistSizePolicy(xmCONSTANT),
1814 xmNscrollBarDisplayPolicy(xmSTATIC),
1815 xmNscrollingPolicy(xmAUTOMATIC)],
1816 ExCHSW),
1817 xtManageChild(ExCHSW),
1818 xmCreateRowColumn(ExCHSW,exCHRC,
1819 [xmNadjustLast(false),
1820 xmNorientation(xmVERTICAL),
1821 xmNpacking(xmPACK_TIGHT),
1822 xmNrowColumnType(xmWORK_AREA)],
1823 ExCHRC),
1824 xtGetValues(ExCHRC,[xmNbackground(ExCHB)]),
1825 xtGetValues(ExCHSW,[xmNclipWindow(ExCHCW)]),
1826 xtSetValues(ExCHCW,[xmNbackground(ExCHB)]),
1827 xtManageChild(ExCHRC),
1828
1829 xmCreateScrolledWindow(ViewCHColumn,viewedCHSW,
1830 [xmNheight(150),xmNwidth(140),
1831 xmNlistSizePolicy(xmCONSTANT),
1832 xmNscrollBarDisplayPolicy(xmSTATIC),
1833 xmNscrollingPolicy(xmAUTOMATIC)],
1834 ViewCHSW),
1835 xtManageChild(ViewCHSW),
1836 xmCreateRowColumn(ViewCHSW,viewCHRC,
1837 [xmNadjustLast(false),
1838 xmNorientation(xmVERTICAL),
1839 xmNpacking(xmPACK_TIGHT),
1840 xmNrowColumnType(xmWORK_AREA)],
1841 ViewCHRC),
1842 xtGetValues(ViewCHRC,[xmNbackground(ViewCHB)]),
1843 xtGetValues(ViewCHSW,[xmNclipWindow(ViewCHCW)]),
1844 xtSetValues(ViewCHCW,[xmNbackground(ViewCHB)]),
1845 xtManageChild(ViewCHRC),
1846
1847 xmCreateRowColumn(ViewExamplesColumn,minMaxRow,
1848 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN),
1849 xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER)],
1850 MinMaxRow),
1851 xtManageChild(MinMaxRow),
1852
1853 proxtStringToCharPtr( 'Min: ', MinLabelChrPtr),
1854 xmStringCreate(MinLabelChrPtr,DCharset,MinLabelStr),
1855 xmCreateLabelGadget(MinMaxRow,minLabel,
1856 [xmNlabelType(xmSTRING),xmNlabelString(MinLabelStr)],
1857 MinLabel),
1858 xtManageChild(MinLabel),
1859
1860 xmCreateRowColumn(MinMaxRow,'Min',
1861 [xmNadjustLast(true), xmNmarginHeight(0),
1862 xmNorientation(xmHORIZONTAL),
1863 xmNpacking(xmPACK_TIGHT)],
1864 MinRow),
1865 xtManageChild(MinRow),
1866
1867 xmCreatePushButton(MinRow,'<',
1868 [],Lower),
1869 xtManageChild(Lower),
1870
1871 xmCreateText(MinRow,argumentText,
1872 [xmNeditable(true),xmNeditMode(xmSINGLE_LINE_EDIT),
1873 xmNwidth(30),
1874 xmNautoShowCursorPosition(true)],MinText),
1875 proxtStringToCharPtr('1',MinChrPtr),
1876 xmTextSetString(MinText,MinChrPtr),
1877 xtManageChild(MinText),
1878 recordz(examples,viewMin(MinText),_),
1879
1880 xtAddCallback(Lower,xmNactivateCallback,lowerMin,MinText),
1881 xmCreatePushButton(MinRow,'>',
1882 [],Raise),
1883 xtManageChild(Raise),
1884 xtAddCallback(Raise,xmNactivateCallback,raiseMin,MinText),
1885
1886 proxtStringToCharPtr( 'Max: ', MaxLabelChrPtr),
1887 xmStringCreate(MaxLabelChrPtr,DCharset,MaxLabelStr),
1888 xmCreateLabelGadget(MinMaxRow,maxLabel,
1889 [xmNlabelType(xmSTRING),xmNlabelString(MaxLabelStr)],
1890 MaxLabel),
1891 xtManageChild(MaxLabel),
1892
1893 xmCreateRowColumn(MinMaxRow,'Max',
1894 [xmNadjustLast(true), xmNmarginHeight(0),
1895 xmNorientation(xmHORIZONTAL),
1896 xmNpacking(xmPACK_TIGHT)],
1897 MaxRow),
1898 xtManageChild(MaxRow),
1899
1900 xmCreatePushButton(MaxRow,'<',
1901 [],LowerMax),
1902 xtManageChild(LowerMax),
1903
1904 xmCreateText(MaxRow,argumentText,
1905 [xmNeditable(true),xmNeditMode(xmSINGLE_LINE_EDIT),
1906 xmNwidth(30),
1907 xmNautoShowCursorPosition(true)],MaxText),
1908 proxtStringToCharPtr('100',MaxChrPtr),
1909 xmTextSetString(MaxText,MaxChrPtr),
1910 xtManageChild(MaxText),
1911 recordz(examples,viewMax(MaxText),_),
1912
1913 xtAddCallback(LowerMax,xmNactivateCallback,lowerMax,MaxText),
1914 xmCreatePushButton(MaxRow,'>',
1915 [],RaiseMax),
1916 xtManageChild(RaiseMax),
1917 xtAddCallback(RaiseMax,xmNactivateCallback,raiseMax,MaxText),
1918
1919
1920 recordz(examples,view(all),_),
1921 recordz(examples,view(clause_heads,[]),_),
1922 recordz(examples,view(dialog,ViewExamplesDialog),_),
1923 recordz(examples,view(exCHRC,ExCHRC),_),
1924 recordz(examples,view(viewCHRC,ViewCHRC),_),
1925
1926 xmCreateRowColumn(ViewExamplesColumn,buttonrow,
1927 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN),
1928 xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER)],
1929 ButtonRow),
1930 xtManageChild(ButtonRow),
1931
1932 xmCreatePushButton(ButtonRow,'View',
1933 [],View),
1934 xtManageChild(View),
1935 xtAddCallback(View,xmNactivateCallback,
1936 viewExamples,_),
1937
1938 xmCreatePushButton(ButtonRow,'View All',
1939 [],ViewAll),
1940 xtManageChild(ViewAll),
1941 xtAddCallback(ViewAll,xmNactivateCallback,
1942 viewAllExamples,_),
1943
1944 xmCreatePushButton(ButtonRow,'Cancel',
1945 [],Cancel),
1946 xtManageChild(Cancel),
1947 xtAddCallback(Cancel,xmNactivateCallback,
1948 cancelViewExamples,_).
1949
1950
1965
1966changeSelectedLabels(_Widget,[LabelChangeDialog,LabelText],_CallData) :-
1967 xtUnmanageChild(LabelChangeDialog),
1968 xmTextGetString(LabelText,LabelCP),
1969 proxtCharPtrToString(LabelCP,LabelAS),
1970 setSelectedLabels(LabelAS).
1971
1972
1984
1985setSelectedLabels(Label) :-
1986 recorded(current,clause(Id,Widget,selected),Ref),
1987 erase(Ref),
1988 get_clause(Id,H,B,CL,_),
1989 delete_clause(Id),
1990 store_clause(_,CL,Label,Id),
1991 setSelectedLabels(Label),
1992 recorda(current,clause(Id,Widget,selected),_),
1993 addRuleItem(Id,H,B,CL,Label),
1994 updateEvaluationLabel.
1995setSelectedLabels(_) :- !.
1996
1997
2011
2012cancelLabelChange(_Widget,LabelChangeDialog,_CallData) :-
2013 xtUnmanageChild(LabelChangeDialog).
2014
2015
2026
2027createClassChangeButtons(Parent) :-
2028 xmCreateRowColumn(Parent,'Class Change',
2029 [xmNadjustLast(true),xmNmarginHeight(0),
2030 xmNorientation(xmHORIZONTAL),
2031 xmNpacking(xmPACK_COLUMN),
2032 xmNrowColumnType(xmWORK_AREA)],
2033 ClassChangeRow),
2034 xtManageChild(ClassChangeRow),
2035
2036 xmCreatePushButton(ClassChangeRow,'+',
2037 [],Positive),
2038 xtManageChild(Positive),
2039 xtAddCallback(Positive,xmNactivateCallback,
2040 classChangeSelected,'+'),
2041
2042 xmCreatePushButton(ClassChangeRow,'-',
2043 [],Negative),
2044 xtManageChild(Negative),
2045 xtAddCallback(Negative,xmNactivateCallback,
2046 classChangeSelected,'-'),
2047
2048 xmCreatePushButton(ClassChangeRow,'?',
2049 [],Quest),
2050 xtManageChild(Quest),
2051 xtAddCallback(Quest,xmNactivateCallback,
2052 classChangeSelected,'?').
2053
2054
2069
2070classChangeSelected(_Widget,Classification,_CallData) :-
2071 recorded(current,example(Id,Label,selected),Ref),
2072 erase(Ref),
2073 get_example(Id,Fact,_),
2074 delete_example(Id),
2075 store_ex(Fact,Classification,Id),
2076 classChangeSelected(_Widget,Classification,_CallData),
2077 recorda(current,example(Id,Label,selected),_),
2078 addExampleItem(Id,Fact,Classification),
2079 updateEvaluationLabel.
2080classChangeSelected(_,_,_) :- !.
2081
2082
2095
2096createArgumentArea(Parent) :-
2097 xmCreateFrame(Parent,'Arguments',
2098 [],ArgumentFrame),
2099 xtManageChild(ArgumentFrame),
2100
2101 xmCreateRowColumn(ArgumentFrame,'Arguments',
2102 [xmNwidth(300),xmNadjustLast(true),
2103 xmNorientation(xmVERTICAL),
2104 xmNpacking(xmPACK_TIGHT),
2105 xmNrowColumnType(xmWORK_AREA)],
2106 ArgumentColumn),
2107 xtManageChild(ArgumentColumn),
2108
2109 proxtStringToCharPtr(
2110 'Arguments',
2111 ArgumentChrPtr),
2112 proxtGetDefaultCharset(DCharset),
2113 xmStringCreate(ArgumentChrPtr,DCharset,ArgumentStr),
2114 xmCreateLabelGadget(ArgumentColumn,argumentLabel,
2115 [xmNlabelType(xmSTRING),xmNlabelString(ArgumentStr)],
2116 ArgumentLabel),
2117 xtManageChild(ArgumentLabel),
2118
2119 xmCreateRowColumn(ArgumentColumn,kommandoRC,
2120 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN),
2121 xmNnumColumns(2)],
2122 ArgumentRow),
2123 xtManageChild(ArgumentRow),
2124
2125 createArguments(ArgumentRow,12),
2126
2127 xmCreateRowColumn(ArgumentColumn,buttonrow,
2128 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_TIGHT),
2129 xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER)],
2130 ButtonRow),
2131 xtManageChild(ButtonRow),
2132
2133 xmCreateToggleButton(ButtonRow,'Get Id ',
2134 [],GetId),
2135 xtManageChild(GetId),
2136 recordz(state,getId(GetId),_),
2137
2138 xmCreatePushButton(ButtonRow,'Clear',
2139 [],Clear),
2140 xtManageChild(Clear),
2141 xtAddCallback(Clear,xmNactivateCallback,clearArguments,12),
2142
2143 proxtStringToCharPtr( ' Depth: ', DepthChrPtr),
2144 xmStringCreate(DepthChrPtr,DCharset,DepthStr),
2145 xmCreateLabelGadget(ButtonRow,depthLabel,
2146 [xmNlabelType(xmSTRING),xmNlabelString(DepthStr)],
2147 DepthLabel),
2148 xtManageChild(DepthLabel),
2149
2150 xmCreateRowColumn(ButtonRow,'Depth',
2151 [xmNadjustLast(true), xmNmarginHeight(0),
2152 xmNorientation(xmHORIZONTAL),
2153 xmNpacking(xmPACK_TIGHT)],
2154 DepthRow),
2155 xtManageChild(DepthRow),
2156
2157 xmCreatePushButton(DepthRow,'<',
2158 [],Lower),
2159 xtManageChild(Lower),
2160
2161 xmCreateText(DepthRow,argumentText,
2162 [xmNeditable(true),xmNeditMode(xmSINGLE_LINE_EDIT),
2163 xmNwidth(30),
2164 xmNautoShowCursorPosition(true)],DText),
2165 proxtStringToCharPtr('5',DChrPtr),
2166 xmTextSetString(DText,DChrPtr),
2167 xtManageChild(DText),
2168 recordz(state,argumentWidget(depth,DText),_),
2169
2170 xtAddCallback(Lower,xmNactivateCallback,lowerDepth,DText),
2171 xmCreatePushButton(DepthRow,'>',
2172 [],Raise),
2173 xtManageChild(Raise),
2174 xtAddCallback(Raise,xmNactivateCallback,raiseDepth,DText).
2175
2176
2189
2190createArguments(_,0) :- !.
2191createArguments(Parent,Count) :-
2192 C1 is Count - 1,
2193 createArguments(Parent,C1),
2194
2195 xmCreateText(Parent,argumentText,
2196 [xmNeditable(true),xmNeditMode(xmSINGLE_LINE_EDIT),
2197 xmNwidth(50),
2198 xmNautoShowCursorPosition(true)],ArgumentText),
2199 xtManageChild(ArgumentText),
2200 recordz(state,argumentWidget(Count,ArgumentText),_).
2201
2202
2216
2217clearArguments(_Widget,0,_CallData).
2218clearArguments(_Widget,Count,_CallData) :-
2219 C1 is Count - 1,
2220 clearArguments(_Widget,C1,_CallData),
2221 recorded(state,argumentWidget(Count,Text),_),
2222 proxtStringToCharPtr('',EmptyChrPtr),
2223 xmTextSetString(Text,EmptyChrPtr).
2224
2225
2241
2242lowerDepth(_Widget,DepthText,_CallData) :-
2243 xmTextGetString(DepthText,OldDepthCP),
2244 proxtCharPtrToString(OldDepthCP,OldDepthStr),
2245 atom_chars(OldDepthStr,OldDepthC),
2246 number_chars(OldDepth,OldDepthC),
2247 (OldDepth = 0 -> NewDepth is 100|
2248 otherwise -> NewDepth is OldDepth - 1),
2249 number_chars(NewDepth,NewDepthC),
2250 atom_chars(NewDepthStr,NewDepthC),
2251 proxtStringToCharPtr(NewDepthStr,NewDepthCP),
2252 xmTextSetString(DepthText,NewDepthCP).
2253
2254
2270
2271lowerID(_Widget,IDText,_CallData) :-
2272 xmTextGetString(IDText,OldIDCP),
2273 proxtCharPtrToString(OldIDCP,OldIDStr),
2274 atom_chars(OldIDStr,OldIDC),
2275 number_chars(OldID,OldIDC),
2276 (OldID = 0 -> NewID is 9999|
2277 otherwise -> NewID is OldID - 1),
2278 number_chars(NewID,NewIDC),
2279 atom_chars(NewIDStr,NewIDC),
2280 proxtStringToCharPtr(NewIDStr,NewIDCP),
2281 xmTextSetString(IDText,NewIDCP).
2282
2283
2297
2298lowerMin(_Widget,MinText,_CallData) :-
2299 (recorded(rules,viewMin(MinText),_) -> KindOfKnowledge = rules|
2300 otherwise -> KindOfKnowledge = examples),
2301 xmTextGetString(MinText,OldMinCP),
2302 proxtCharPtrToString(OldMinCP,OldMinStr),
2303 atom_chars(OldMinStr,OldMinC),
2304 number_chars(OldMin,OldMinC),
2305 recorded(KindOfKnowledge,viewMax(MaxText),_),
2306 xmTextGetString(MaxText,MaxCP),
2307 proxtCharPtrToString(MaxCP,MaxStr),
2308 atom_chars(MaxStr,MaxC),
2309 number_chars(Max,MaxC),
2310
2311 (OldMin =< 1 -> NewMin is Max|
2312 otherwise -> NewMin is OldMin - 1),
2313 number_chars(NewMin,NewMinC),
2314 atom_chars(NewMinStr,NewMinC),
2315 proxtStringToCharPtr(NewMinStr,NewMinCP),
2316 xmTextSetString(MinText,NewMinCP).
2317
2318
2332
2333lowerMax(_Widget,MaxText,_CallData) :-
2334 (recorded(rules,viewMin(MinText),_) -> KindOfKnowledge = rules|
2335 otherwise -> KindOfKnowledge = examples),
2336 xmTextGetString(MaxText,OldMaxCP),
2337 proxtCharPtrToString(OldMaxCP,OldMaxStr),
2338 atom_chars(OldMaxStr,OldMaxC),
2339 number_chars(OldMax,OldMaxC),
2340 recorded(KindOfKnowledge,viewMin(MinText),_),
2341 xmTextGetString(MinText,MinCP),
2342 proxtCharPtrToString(MinCP,MinStr),
2343 atom_chars(MinStr,MinC),
2344 number_chars(Min,MinC),
2345
2346 (OldMax =< Min -> NewMax is 9999|
2347 otherwise -> NewMax is (OldMax - 1)),
2348 number_chars(NewMax,NewMaxC),
2349 atom_chars(NewMaxStr,NewMaxC),
2350 proxtStringToCharPtr(NewMaxStr,NewMaxCP),
2351 xmTextSetString(MaxText,NewMaxCP).
2352
2353
2367
2368raiseDepth(_Widget,DepthText,_CallData) :-
2369 xmTextGetString(DepthText,OldDepthCP),
2370 proxtCharPtrToString(OldDepthCP,OldDepthStr),
2371 atom_chars(OldDepthStr,OldDepthC),
2372 number_chars(OldDepth,OldDepthC),
2373 (OldDepth = 100 -> NewDepth is 0|
2374 otherwise -> NewDepth is OldDepth + 1),
2375 number_chars(NewDepth,NewDepthC),
2376 atom_chars(NewDepthStr,NewDepthC),
2377 proxtStringToCharPtr(NewDepthStr,NewDepthCP),
2378 xmTextSetString(DepthText,NewDepthCP).
2379
2380
2394
2395raiseID(_Widget,IDText,_CallData) :-
2396 xmTextGetString(IDText,OldIDCP),
2397 proxtCharPtrToString(OldIDCP,OldIDStr),
2398 atom_chars(OldIDStr,OldIDC),
2399 number_chars(OldID,OldIDC),
2400 (OldID = 9999 -> NewID is 0|
2401 otherwise -> NewID is OldID + 1),
2402 number_chars(NewID,NewIDC),
2403 atom_chars(NewIDStr,NewIDC),
2404 proxtStringToCharPtr(NewIDStr,NewIDCP),
2405 xmTextSetString(IDText,NewIDCP).
2406
2420
2421raiseMin(_Widget,MinText,_CallData) :-
2422 (recorded(rules,viewMin(MinText),_) -> KindOfKnowledge = rules|
2423 otherwise -> KindOfKnowledge = examples),
2424 xmTextGetString(MinText,OldMinCP),
2425 proxtCharPtrToString(OldMinCP,OldMinStr),
2426 atom_chars(OldMinStr,OldMinC),
2427 number_chars(OldMin,OldMinC),
2428 recorded(KindOfKnowledge,viewMax(MaxText),_),
2429 xmTextGetString(MaxText,MaxCP),
2430 proxtCharPtrToString(MaxCP,MaxStr),
2431 atom_chars(MaxStr,MaxC),
2432 number_chars(Max,MaxC),
2433
2434 (OldMin >= Max -> NewMin is 1|
2435 otherwise -> NewMin is (OldMin + 1)),
2436 number_chars(NewMin,NewMinC),
2437 atom_chars(NewMinStr,NewMinC),
2438 proxtStringToCharPtr(NewMinStr,NewMinCP),
2439 xmTextSetString(MinText,NewMinCP).
2440
2441
2442
2456
2457raiseMax(_Widget,MaxText,_CallData) :-
2458 (recorded(rules,viewMin(MinText),_) -> KindOfKnowledge = rules|
2459 otherwise -> KindOfKnowledge = examples),
2460 xmTextGetString(MaxText,OldMaxCP),
2461 proxtCharPtrToString(OldMaxCP,OldMaxStr),
2462 atom_chars(OldMaxStr,OldMaxC),
2463 number_chars(OldMax,OldMaxC),
2464 recorded(KindOfKnowledge,viewMin(MinText),_),
2465 xmTextGetString(MinText,MinCP),
2466 proxtCharPtrToString(MinCP,MinStr),
2467 atom_chars(MinStr,MinC),
2468 number_chars(Min,MinC),
2469
2470 (OldMax >= 9999 -> NewMax is Min|
2471 otherwise -> NewMax is (OldMax + 1)),
2472 number_chars(NewMax,NewMaxC),
2473 atom_chars(NewMaxStr,NewMaxC),
2474 proxtStringToCharPtr(NewMaxStr,NewMaxCP),
2475 xmTextSetString(MaxText,NewMaxCP).
2476
2477
2492
2493copyId(_,13) :- !.
2494copyId(Id,Count) :-
2495 recorded(state,argumentWidget(Count,Text),_),
2496 xmTextGetLastPosition(Text,Length),
2497 Length = 0, !,
2498 number_chars(Id,IdChars),
2499 atom_chars(IdStr,IdChars),
2500 proxtStringToCharPtr(IdStr,IdCharPtr),
2501 xmTextSetString(Text,IdCharPtr).
2502copyId(Id,Count) :-
2503 C1 is Count + 1,
2504 copyId(Id,C1).
2505
2506
2516
2517createCommandArea(Parent) :-
2518 xmCreateFrame(Parent,'Controll',
2519 [],ControllFrame),
2520 xtManageChild(ControllFrame),
2521
2522 xmCreateRowColumn(ControllFrame,controll,
2523 [xmNwidth(300),xmNadjustLast(true),
2524 xmNorientation(xmVERTICAL),
2525 xmNpacking(xmPACK_TIGHT),
2526 xmNrowColumnType(xmWORK_AREA)],
2527 ControllRowColumn),
2528 xtManageChild(ControllRowColumn),
2529
2530 xmCreateRowColumn(ControllRowColumn,kommandoRC,
2531 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN)],
2532 KommandoRowColumn),
2533 xtManageChild(KommandoRowColumn),
2534
2535 proxtStringToCharPtr('Comand:',KommandoChrPtr),
2536 proxtGetDefaultCharset(DCharset),
2537 xmStringCreate(KommandoChrPtr,DCharset,KommandoStr),
2538 xmCreateLabelGadget(KommandoRowColumn,kommandoLabel,
2539 [xmNlabelType(xmSTRING),xmNlabelString(KommandoStr)],
2540 Klabel),
2541 xtManageChild(Klabel),
2542
2543 proxtStringToCharPtr(' Input',StatusCP),
2544 xmStringCreate(StatusCP,DCharset,StatusStr),
2545 xmCreateLabelGadget(KommandoRowColumn,kommandoStatus,
2546 [xmNlabelType(xmSTRING),xmNlabelString(StatusStr)],
2547 KStatus),
2548 xtManageChild(KStatus),
2549
2550 xmCreateText(ControllRowColumn,kommandotext,
2551 [xmNeditable(true), xmNeditMode(xmSINGLE_LINE_EDIT),
2552 xmNwidth(290),
2553 xmNautoShowCursorPosition(true)],Ktext),
2554 xtManageChild(Ktext),
2555 xtAddActions([action(ok,doKommando,[Ktext,KStatus])]),
2556 proxtStringToCharPtr('<Key>Return: ok()',TranslationString),
2557 xtParseTranslationTable(TranslationString,TranslationTable),
2558 xtOverrideTranslations(Ktext,TranslationTable),
2559
2560 xmCreateRowColumn(ControllRowColumn,buttonrow,
2561 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN),
2562 xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER)],
2563 ButtonRow),
2564 xtManageChild(ButtonRow),
2565
2566 xmCreatePushButton(ButtonRow,'OK!',
2567 [],OK),
2568 xtManageChild(OK),
2569
2570 xmCreatePushButton(ButtonRow,'Clear',
2571 [],Clear),
2572 xtManageChild(Clear),
2573
2574 xmCreatePushButton(ButtonRow,'Quit X-Miles',
2575 [],Beenden),
2576 createYesNoPopup(Beenden,_YesNoPopup,beenden,_),
2577 xtManageChild(Beenden),
2578
2579 xtSetValues(ControllRowColumn,[xmNdefaultButton(OK)]),
2580 xtAddCallback(OK,xmNactivateCallback,doKommando,[Ktext,KStatus]),
2581 xtAddCallback(Clear,xmNactivateCallback,doEmptyKommando,Ktext).
2582
2583
2596
2597createFunctionArea(Parent) :-
2598 xmCreateFrame(Parent,'Functions',
2599 [],FunctionFrame),
2600 xtManageChild(FunctionFrame),
2601
2602 xmCreateRowColumn(FunctionFrame,'Function',
2603 [xmNwidth(300),xmNadjustLast(true),
2604 xmNorientation(xmVERTICAL),
2605 xmNpacking(xmPACK_TIGHT),
2606 xmNrowColumnType(xmWORK_AREA)],
2607 FunctionColumn),
2608 xtManageChild(FunctionColumn),
2609
2610 proxtStringToCharPtr('Learning Operators',FunctionChrPtr),
2611 proxtGetDefaultCharset(DCharset),
2612 xmStringCreate(FunctionChrPtr,DCharset,FunctionStr),
2613 xmCreateLabelGadget(FunctionColumn,functionLabel,
2614 [xmNlabelType(xmSTRING),xmNlabelString(FunctionStr)],
2615 FunctionLabel),
2616 xtManageChild(FunctionLabel),
2617
2618 xmCreateRowColumn(FunctionColumn,functionRC,
2619 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN),
2620 xmNnumColumns(2),
2621 xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER)],
2622 FunctionRowColumn),
2623 xtManageChild(FunctionRowColumn),
2624
2625 groups(ListOfGroups),
2626 createFunctionGroups(FunctionRowColumn,ListOfGroups).
2627
2628
2642
2643createFunctionGroups(_,[]).
2644createFunctionGroups(Parent,[Groupname|ListOfGroups]) :-
2645 xmCreatePushButton(Parent,Groupname,
2646 [],ButtonWidget),
2647 xtManageChild(ButtonWidget),
2648
2649 xmCreatePopupMenu(ButtonWidget,'Learning functions',
2650 [xmNorientation(xmVERTICAL),
2651 xmNpacking(xmPACK_COLUMN),
2652 xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER)],
2653 LearningFunctions),
2654
2655 xtAddEventHandler(LearningFunctions,[buttonReleaseMask],false,
2656 functionsPopdown,_),
2657 xtAddCallback(ButtonWidget,xmNactivateCallback,
2658 popupFunctions,LearningFunctions),
2659
2660 groupdef(Groupname,ListOfButtons),
2661 createFunctionButtons(LearningFunctions,ListOfButtons),
2662 createFunctionGroups(Parent,ListOfGroups).
2663
2664
2678
2679createFunctionButtons(_,[]).
2680createFunctionButtons(Parent,[Button|ListOfButtons]) :-
2681 xmCreatePushButton(Parent,Button,
2682 [],ButtonWidget),
2683 xtManageChild(ButtonWidget),
2684 xtAddCallback(ButtonWidget,xmNactivateCallback,
2685 callFunction,Button),
2686 createFunctionButtons(Parent,ListOfButtons).
2687
2688
2703
2704callFunction(_Widget,Buttonname,_CallData) :-
2705 recorded(learnfuncs,popedup(PopupShell),Ref),
2706 erase(Ref),
2707 xtUnmanageChild(PopupShell),
2708 operatordef(Buttonname,Funcname,InOutPattern,InChecks,XOuts,Refresh),
2709 writeMessage(':- '),writeMessage(Funcname),
2710 (InOutPattern=[] -> writelnMessage('.'),
2711 Fails=[], Args=[]|
2712 otherwise -> writeMessage('('),
2713 replaceXmVars(InOutPattern,InChecks,Args,Fails)),
2714 flushErrorBuffer,
2715 (Fails=[] ->
2716 F =.. [Funcname|Args],
2717 ((call(F) -> writelnMessage('% yes'),
2718 outVars(Args,InOutPattern,XOuts),
2719 refresh(Refresh))|
2720 otherwise -> writelnMessage('% no'))|
2721 otherwise ->
2722 writelnMessage('% Error occured, function not executed!')),
2723 updateEvaluationLabel.
2724
2725
2741
2742replaceXmVars([],_,[],[]):- !, writelnMessage(').').
2743replaceXmVars([Pat|InOutPattern],InChecks,Args,Fails) :-
2744 (atom(Pat) -> atom_chars(Pat,PatC)|
2745 otherwise -> PatC = "constant"),
2746 append("xmarg",[M1],Argstr),
2747 append("xmarg",[M3,M4],Argstr2),
2748 append("xmopt",[M2],Optstr),
2749 append("xmopt",[M5,M6],Optstr2),
2750 append("xmout",[_],Outstr),
2751 (PatC = "xmdepth" -> recorded(state,argumentWidget(depth,Text),_),
2752 xmTextGetString(Text,ArgCP),
2753 proxtCharPtrToString(ArgCP,ArgStr),
2754 atom_chars(ArgStr,ArgChars),
2755 (number_chars(Value,ArgChars) | Value = ArgStr),
2756 InChecks = [IC|ICs],
2757 C =.. [IC,Value],
2758 (call(C) -> Fail=[]|
2759 Fail=[0]),
2760 writeMessage(ArgStr),
2761 (InOutPattern=[]|writeMessage(','))|
2762 PatC = Argstr -> number_chars(N,[M1]),
2763 recorded(state,argumentWidget(N,Text),_),
2764 xmTextGetString(Text,ArgCP),
2765 proxtCharPtrToString(ArgCP,ArgStr),
2766 atom_chars(ArgStr,ArgChars),
2767 (number_chars(Value,ArgChars) | Value = ArgStr),
2768 InChecks = [IC|ICs],
2769 C =.. [IC,Value],
2770 (call(C) -> Fail=[]|
2771 Fail=[N]),
2772 writeMessage(ArgStr),
2773 (InOutPattern=[]|writeMessage(','))|
2774 PatC = Argstr2 -> number_chars(N,[M3,M4]),
2775 recorded(state,argumentWidget(N,Text),_),
2776 xmTextGetString(Text,ArgCP),
2777 proxtCharPtrToString(ArgCP,ArgStr),
2778 atom_chars(ArgStr,ArgChars),
2779 (number_chars(Value,ArgChars) | Value = ArgStr),
2780 InChecks = [IC|ICs],
2781 C =.. [IC,Value],
2782 (call(C) -> Fail=[]|
2783 Fail=[N]),
2784 writeMessage(ArgStr),
2785 (InOutPattern=[]|writeMessage(','))|
2786 PatC = "xmoptdepth" -> recorded(state,argumentWidget(depth,Text),_),
2787 xmTextGetString(Text,ArgCP),
2788 proxtCharPtrToString(ArgCP,ArgStr),
2789 atom_chars(ArgStr,ArgChars),
2790 InChecks = [IC|ICs],
2791 (ArgChars = [] ->
2792 Value = novalue|
2793 otherwise ->
2794 (number_chars(Value,ArgChars) | Value = ArgStr),
2795 C =.. [IC,Value],
2796 (call(C) -> Fail=[]|
2797 Fail=[0]),
2798 writeMessage(ArgStr),
2799 (InOutPattern=[]|writeMessage(',')))|
2800 PatC = Optstr -> number_chars(N,[M2]),
2801 recorded(state,argumentWidget(N,Text),_),
2802 xmTextGetString(Text,ArgCP),
2803 proxtCharPtrToString(ArgCP,ArgStr),
2804 atom_chars(ArgStr,ArgChars),
2805 InChecks = [IC|ICs],
2806 (ArgChars = [] ->
2807 Value = novalue|
2808 otherwise ->
2809 (number_chars(Value,ArgChars) | Value = ArgStr),
2810 C =.. [IC,Value],
2811 (call(C) -> Fail=[]|
2812 Fail=[N]),
2813 writeMessage(ArgStr),
2814 (InOutPattern=[]|writeMessage(',')))|
2815 PatC = Optstr2 -> number_chars(N,[M5,M6]),
2816 recorded(state,argumentWidget(N,Text),_),
2817 xmTextGetString(Text,ArgCP),
2818 proxtCharPtrToString(ArgCP,ArgStr),
2819 atom_chars(ArgStr,ArgChars),
2820 InChecks = [IC|ICs],
2821 (ArgChars = [] ->
2822 Value = novalue|
2823 otherwise ->
2824 (number_chars(Value,ArgChars) | Value = ArgStr),
2825 C =.. [IC,Value],
2826 (call(C) -> Fail=[]|
2827 Fail=[N]),
2828 writeMessage(ArgStr),
2829 (InOutPattern=[]|writeMessage(',')))|
2830 PatC = Outstr -> InChecks = ICs,
2831 PatC = [_|P1],
2832 append("X",P1,P2),
2833 atom_chars(P3,P2),
2834 writeMessage(P3),
2835 Fail=[],
2836 Value = variable,
2837 (InOutPattern=[]|writeMessage(','))|
2838 otherwise -> Value = Pat,
2839 InChecks = ICs,
2840 Fail=[],
2841 writeMessage(Pat),
2842 (InOutPattern=[]|writeMessage(','))),!,
2843 replaceXmVars(InOutPattern,ICs,Values,F),
2844 append(Fail,F,Fails),
2845 (Value = novalue -> Args = Values|
2846 Value = variable -> Args = [_Var|Values]|
2847 otherwise -> Args = [Value|Values]).
2848
2849
2864
2865outVars(_,_,[]).
2866outVars([Arg1|Args],[Pat|InOutPattern],XOuts) :-
2867 atom_chars(Pat,PatC),
2868 append("xmout",[_],Outstr),
2869 (PatC = Outstr -> XOuts = [XO|XOs],
2870 C =.. [XO,Arg1],
2871 call(C)|
2872 otherwise -> XOuts = XOs),!,
2873 outVars(Args,InOutPattern,XOs).
2874
2875
2888
2889refresh([]).
2890refresh([KindOfKnowledge|R]) :-
2891 refreshKnowledgeList(_,KindOfKnowledge,_),
2892 refresh(R).
2893
2910
( Parent,YesNoPopup,YesPred,YesArg ) :-
2912 xmCreatePopupMenu(Parent,'YesNo',
2913 [xmNorientation(xmVERTICAL),
2914 xmNpacking(xmPACK_COLUMN),
2915 xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER)],
2916 YesNoPopup),
2917 xmCreatePushButton(YesNoPopup,'Yes',
2918 [],Yes),
2919 xmCreatePushButton(YesNoPopup,'No',
2920 [],No),
2921 xtAddCallback(Parent,xmNactivateCallback,popupDialog,
2922 YesNoPopup),
2923 xtAddCallback(Yes,xmNactivateCallback,YesPred,YesArg),
2924 xtAddCallback(No,xmNactivateCallback,yesNoPopdown,YesNoPopup),
2925 xtAddEventHandler(YesNoPopup,[buttonReleaseMask],false,
2926 yesNoPopdown,YesNoPopup),
2927 xtManageChildren([Yes,No]).
2928
2929
2943
(Widget,PopupShell,_CallData) :-
2945 xtGetValues(Widget,[xmNwidth(Xs)]),
2946 xtTranslateCoords(Widget,Xs,0,X,Y),
2947 xtSetValues(PopupShell,[xmNx(X),xmNy(Y)]),
2948 xtManageChild(PopupShell).
2949
2950
2964
(Widget,_ClientData,_CallData) :-
2966 recorded(rules,view(dialog,VRDialog),_),
2967 xtGetValues(Widget,[xmNwidth(Xs)]),
2968 xtTranslateCoords(Widget,Xs,0,X,Y),
2969 xtSetValues(VRDialog,[xmNx(X),xmNy(Y)]),
2970 xtManageChild(VRDialog),
2971
2972 fillExistingLabels,
2973 fillViewedLabels,
2974 fillExistingClauseHeads,
2975 fillViewedClauseHeads.
2976
2977
2978
2979
2993
(Widget,_ClientData,_CallData) :-
2995 recorded(rules,examine(dialog,ERDialog),_),
2996 xtGetValues(Widget,[xmNwidth(Xs)]),
2997 xtTranslateCoords(Widget,Xs,0,X,Y),
2998 xtSetValues(ERDialog,[xmNx(X),xmNy(Y)]),
2999 showExaminedRule(_,_,_),
3000 xtManageChild(ERDialog).
3001
3002
3003
3017
(Widget,_ClientData,_CallData) :-
3019 recorded(examples,view(dialog,VRDialog),_),
3020 xtGetValues(Widget,[xmNwidth(Xs)]),
3021 xtTranslateCoords(Widget,Xs,0,X,Y),
3022 xtSetValues(VRDialog,[xmNx(X),xmNy(Y)]),
3023 xtManageChild(VRDialog),
3024
3025 fillExistingExampleCHs,
3026 fillViewedExampleCHs.
3027
3028
3040
3041fillExistingLabels :-
3042 recorded(rules,view(exLabRC,ExLabRC),_),
3043 listLabels(LabelList),
3044 createLabelWidgets(ExLabRC,LabelList).
3045
3046
3058
3059fillViewedLabels:-
3060 recorded(rules,view(viewLabRC,ViewLabRC),_),
3061 recorded(rules,view(labels,LabelList),_),
3062 createLabelWidgets(ViewLabRC,LabelList).
3063
3064
3076
3077fillExistingClauseHeads:-
3078 recorded(rules,view(exCHRC,ExCHRC),_),
3079 listClauseHeads(LabelList),
3080 createLabelWidgets(ExCHRC,LabelList).
3081
3082
3094
3095fillViewedClauseHeads:-
3096 recorded(rules,view(viewCHRC,ViewCHRC),_),
3097 recorded(rules,view(clause_heads,CHList),_),
3098 createLabelWidgets(ViewCHRC,CHList).
3099
3100
3112
3113fillExistingExampleCHs:-
3114 recorded(examples,view(exCHRC,ExCHRC),_),
3115 listExampleCHs(LabelList),
3116 createLabelWidgets(ExCHRC,LabelList).
3117
3118
3130
3131fillViewedExampleCHs:-
3132 recorded(examples,view(viewCHRC,ViewCHRC),_),
3133 recorded(examples,view(clause_heads,CHList),_),
3134 createLabelWidgets(ViewCHRC,CHList).
3135
3136
3149
3150createLabelWidgets(Parent,[Name|NameList]) :-
3151 proxtStringToCharPtr(Name,NameChrPtr),
3152 proxtGetDefaultCharset(DCharset),
3153 xmStringCreate(NameChrPtr,DCharset,NameStr),
3154 xmCreateLabel(Parent,nameLabel,
3155 [xmNalignment(xmALIGNMENT_BEGINNING),
3156 xmNlabelType(xmSTRING),xmNlabelString(NameStr)],
3157 NameLabel),
3158 xtManageChild(NameLabel),
3159 recordz(labels,parent_child(Parent,NameLabel,NameStr),_),
3160 xtAddEventHandler(NameLabel,[buttonReleaseMask],
3161 false,selectLabel,_),!,
3162 createLabelWidgets(Parent,NameList).
3163createLabelWidgets(_,[]) :- !.
3164
3165
3175
3176destroyLabelWidgets(Parent) :-
3177 var(Parent),
3178 recorded(labels,parent_child(Parent,L,_),Ref),!,
3179 erase(Ref),
3180 xtDestroyWidget(L),
3181 destroyLabelWidgets(_).
3182destroyLabelWidgets(Parent) :-
3183 recorded(labels,parent_child(Parent,L,_),Ref),!,
3184 erase(Ref),
3185 xtDestroyWidget(L),
3186 destroyLabelWidgets(Parent).
3187destroyLabelWidgets(_) :- !.
3188
3189
3201
3202listLabels(LabelList) :-
3203 recorded(rules,view(labels,ViewedLabels),_),
3204 listLabels(ViewedLabels,LL1),
3205 append(LabelList,ViewedLabels,LL1),!.
3206listLabels(LLin,LLout) :-
3207 get_clause(_,_,_,_,Label),
3208 nonmember(Label,LLin),!,
3209 LLin2=[Label|LLin],
3210 listLabels(LLin2,LLout).
3211listLabels(A,A) :- !.
3212
3213
3225
3226listClauseHeads(LabelList) :-
3227 recorded(rules,view(clause_heads,ViewedCHs),_),
3228 listClauseHeads(ViewedCHs,LL1),
3229 append(LabelList,ViewedCHs,LL1),!.
3230listClauseHeads(LLin,LLout) :-
3231 get_clause(_,C,_,_,_),
3232 functor(C,CH,_),
3233 nonmember(CH,LLin),!,
3234 LLin2=[CH|LLin],
3235 listClauseHeads(LLin2,LLout).
3236listClauseHeads(A,A) :- !.
3237
3238
3250
3251listExampleCHs(LabelList) :-
3252 recorded(examples,view(clause_heads,ViewedCHs),_),
3253 listExampleCHs(ViewedCHs,LL1),
3254 append(LabelList,ViewedCHs,LL1),!.
3255listExampleCHs(LLin,LLout) :-
3256 get_example(_,C,_),
3257 functor(C,CH,_),
3258 nonmember(CH,LLin),!,
3259 LLin2=[CH|LLin],
3260 listExampleCHs(LLin2,LLout).
3261listExampleCHs(A,A) :- !.
3262
3263
3277
3278selectLabel(Widget,_ClientData,_CallData) :-
3279 recorded(labels,parent_child(P,Widget,N),Ref), !,
3280 erase(Ref),
3281 xtDestroyWidget(Widget),
3282 (recorded(rules,view(exLabRC,P),_) ->
3283 recorded(rules,view(viewLabRC,P2),_)|
3284 recorded(rules,view(viewLabRC,P),_) ->
3285 recorded(rules,view(exLabRC,P2),_)|
3286 recorded(rules,view(exCHRC,P),_) ->
3287 recorded(rules,view(viewCHRC,P2),_)|
3288 recorded(rules,view(viewCHRC,P),_) ->
3289 recorded(rules,view(exCHRC,P2),_)|
3290 recorded(examples,view(exCHRC,P),_) ->
3291 recorded(examples,view(viewCHRC,P2),_)|
3292 recorded(examples,view(viewCHRC,P),_) ->
3293 recorded(examples,view(exCHRC,P2),_)|
3294 recorded(examples,view(exCHRC,P),_) ->
3295 recorded(examples,view(viewCHRC,P2),_)|
3296 recorded(examples,view(viewCHRC,P),_) ->
3297 recorded(examples,view(exCHRC,P2),_)),
3298 xmCreateLabel(P2,nameLabel,
3299 [xmNalignment(xmALIGNMENT_BEGINNING),
3300 xmNlabelType(xmSTRING),xmNlabelString(N)],
3301 NameLabel),
3302 xtManageChild(NameLabel),
3303 recordz(labels,parent_child(P2,NameLabel,N),_),
3304 xtAddEventHandler(NameLabel,[buttonReleaseMask],
3305 false,selectLabel,_),!.
3306
3307
3308viewRules(_Widget,_ClientData,_CallData) :-
3309 (recorded(rules,view(all),R1) -> erase(R1)|
3310 otherwise),
3311 recorded(rules,view(labels,_),R2),
3312 erase(R2),
3313 recorded(rules,view(clause_heads,_),R3),
3314 erase(R3),
3315 recorded(rules,view(viewLabRC,ViewLabRC),_),
3316 recorded(rules,view(viewCHRC,ViewCHRC),_),
3317 viewRules(ViewLabRC,LabelList),
3318 recordz(rules,view(labels,LabelList),_),
3319 viewRules(ViewCHRC,CHList),
3320 recordz(rules,view(clause_heads,CHList),_),
3321 destroyLabelWidgets(_),
3322 refresh([rules]),
3323 recorded(rules,view(dialog,X),_),
3324 xtUnmanageChild(X).
3325viewRules(P,List) :-
3326 recorded(labels,parent_child(P,C,N),Ref),
3327 xtDestroyWidget(C),
3328 erase(Ref),
3329 proxtGetDefaultCharset(DCharset),
3330 xmStringGetLtoR(N,DCharset,NCP,_),
3331 proxtCharPtrToString(NCP,Name),
3332 viewRules(P,L2),
3333 List=[Name|L2].
3334viewRules(_,[]) :- !.
3335
3336
3337viewAllRules(_Widget,_ClientData,_CallData) :-
3338 (recorded(rules,view(all),_)|
3339 recordz(rules,view(all),_)),
3340 refresh([rules]),
3341 destroyLabelWidgets(_),
3342 recorded(rules,view(dialog,X),_),
3343 xtUnmanageChild(X).
3344
3345
3346cancelViewRules(_Widget,_ClientData,_CallData) :-
3347 destroyLabelWidgets(_),
3348 recorded(rules,view(dialog,X),_),
3349 xtUnmanageChild(X).
3350
3351
3352cancelExamineRules(_Widget,_ClientData,_CallData) :-
3353 destroyLabelWidgets(_),
3354 recorded(rules,examine(dialog,X),_),
3355 xtUnmanageChild(X).
3356
3357
3358viewExamples(_Widget,_ClientData,_CallData) :-
3359 (recorded(examples,view(all),R1) -> erase(R1)|
3360 otherwise),
3361 recorded(examples,view(clause_heads,_),R3),
3362 erase(R3),
3363 recorded(examples,view(viewCHRC,ViewCHRC),_),
3364 viewExamples(ViewCHRC,CHList),
3365 recordz(examples,view(clause_heads,CHList),_),
3366 destroyLabelWidgets(_),
3367 refresh([examples]),
3368 recorded(examples,view(dialog,X),_),
3369 xtUnmanageChild(X).
3370viewExamples(P,List) :-
3371 recorded(labels,parent_child(P,C,N),Ref),
3372 xtDestroyWidget(C),
3373 erase(Ref),
3374 proxtGetDefaultCharset(DCharset),
3375 xmStringGetLtoR(N,DCharset,NCP,_),
3376 proxtCharPtrToString(NCP,Name),
3377 viewExamples(P,L2),
3378 List=[Name|L2].
3379viewExamples(_,[]) :- !.
3380
3381
3382viewAllExamples(_Widget,_ClientData,_CallData) :-
3383 (recorded(examples,view(all),_)|
3384 recordz(examples,view(all),_)),
3385 refresh([examples]),
3386 destroyLabelWidgets(_),
3387 recorded(examples,view(dialog,X),_),
3388 xtUnmanageChild(X).
3389
3390
3391cancelViewExamples(_Widget,_ClientData,_CallData) :-
3392 destroyLabelWidgets(_),
3393 recorded(examples,view(dialog,X),_),
3394 xtUnmanageChild(X).
3395
3396
3410
(Widget,PopupShell,_CallData) :-
3412 xtGetValues(Widget,[xmNheight(Ys)]),
3413 xtTranslateCoords(Widget,0,Ys,X,Y),
3414 xtSetValues(PopupShell,[xmNx(X),xmNy(Y)]),
3415 xtManageChild(PopupShell),
3416 recordz(learnfuncs,popedup(PopupShell),_).
3417
3418
3432
3433yesNoPopdown(_Widget,JaNeinPopup,_CallData) :-
3434 xtUnmanageChild(JaNeinPopup).
3435
3436
3450
3451functionsPopdown(_Widget,_ClientData,_CallData) :-
3452 recorded(learnfuncs,popedup(PopupShell),Ref),
3453 erase(Ref),
3454 xtUnmanageChild(PopupShell).
3455
3456
3470
3471doKommando(_Widget,[KommandoText,KStatus],_CallData) :-
3472 proxtGetDefaultCharset(DCharset),
3473 proxtStringToCharPtr('-EXIT- Input',ACP),
3474 xmStringCreate(ACP,DCharset,AXmS),
3475 xtSetValues(KStatus,[xmNlabelString(AXmS)]),
3476 xmTextGetString(KommandoText,KcharPtr),
3477 proxtCharPtrToString(KcharPtr,KS),
3478 xxmStringToTerm(KcharPtr,_Charset,Term),
3479
3480 writeMessage(':- '),
3481 writelnMessage(KS),
3482 (call(Term) ->
3483 (proxtStringToCharPtr('- yes - Input',YesCP),
3484 xmStringCreate(YesCP,DCharset,YesXmS),
3485 xtSetValues(KStatus,[xmNlabelString(YesXmS)]),
3486 writelnMessage('% yes'))|
3487 otherwise ->
3488 (proxtStringToCharPtr('- no - Input',NoCP),
3489 xmStringCreate(NoCP,DCharset,NoXmS),
3490 xtSetValues(KStatus,[xmNlabelString(NoXmS)]),
3491 writelnMessage('% no'))),
3492
3493 doEmptyKommando(_,KommandoText,_).
3494
3495
3509
3510doEmptyKommando(_Widget,KommandoText,_CallData) :-
3511 proxtStringToCharPtr('',KommandoChrPtr),
3512 xmTextSetString(KommandoText,KommandoChrPtr),
3513 refreshKnowledgeList(_Widget,rules,_Calldata),
3514 refreshKnowledgeList(_Widget,examples,_Calldata),
3515 updateEvaluationLabel.
3516
3517
3531
3532beenden(_Widget,_ClientData,_CallData) :-
3533 recorded(messages,file(F),Ref),
3534 erase(Ref),
3535 close(F),
3536 write('X-MILES korrekt beendet!'),nl,
3537 retract(my_exit_loop(no)),
3538 assert(my_exit_loop(yes)).
3539
3540
3552
3553createMessageArea(Parent) :-
3554 xmCreateFrame(Parent,'Messages',
3555 [],MessageFrame),
3556 xtManageChild(MessageFrame),
3557 xmCreateRowColumn(MessageFrame,messages,
3558 [xmNadjustLast(true),
3559 xmNorientation(xmVERTICAL),
3560 xmNpacking(xmPACK_TIGHT),
3561 xmNrowColumnType(xmWORK_AREA)],
3562 MessageColumn),
3563 xtManageChild(MessageColumn),
3564
3565 proxtStringToCharPtr('Messages',MessageTitleChrPtr),
3566 proxtGetDefaultCharset(DCharset),
3567 xmStringCreate(MessageTitleChrPtr,DCharset,MessageTitleStr),
3568 xmCreateLabelGadget(MessageColumn,messageLabel,
3569 [xmNlabelType(xmSTRING),xmNlabelString(MessageTitleStr)],
3570 MessageLabel),
3571 xtManageChild(MessageLabel),
3572
3573 xmCreateScrolledText(MessageColumn,messageText,
3574 [xmNeditable(false),xmNeditMode(xmMULTI_LINE_EDIT),
3575 xmNrows(8),
3576 xmNlistSizePolicy(xmCONSTANT),
3577 xmNscrollBarDisplayPolicy(xmSTATIC),
3578 xmNscrollingPolicy(xmAUTOMATIC),
3579 xmNautoShowCursorPosition(true)],MessageText),
3580 xtManageChild(MessageText),
3581 recordz(messages,textWidget(MessageText),_),
3582
3583 xmCreateRowColumn(MessageColumn,'ButtonRow',
3584 [xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER),
3585 xmNnumColumns(1),
3586 xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN)],
3587 ButtonRow),
3588 xtManageChild(ButtonRow),
3589
3590 xmCreatePushButton(ButtonRow,'Save',
3591 [],Save),
3592 xtManageChild(Save),
3593 xtAddCallback(Save,xmNactivateCallback,saveMessages,_),
3594
3595 xmCreatePushButton(ButtonRow,'Clear',
3596 [],Clear),
3597 xtManageChild(Clear),
3598 xtAddCallback(Clear,xmNactivateCallback,clearMessages,_),
3599
3600 open('xmProtocol.tmp',write,F),
3601 recordz(messages,file(F),_).
3602
3603
3617
3618saveMessages(_Widget,_ClientData,_CallData) :-
3619 recorded(messages,textWidget(MessageText),_),
3620 proxtStringToCharPtr('',EmptyCharPtr),
3621 xmTextSetString(MessageText,EmptyCharPtr),
3622 recorded(messages,file(F),Ref),
3623 erase(Ref),
3624 close(F),
3625 unix(shell('mv xmProtocol.tmp xmProtocol.sav')),
3626 open('xmProtocol.tmp',write,Fnew),
3627 recordz(messages,file(Fnew),_),
3628 writelnMessage('% wrote "xmProtocol.sav"').
3629
3630
3644
3645clearMessages(_Widget,_ClientData,_CallData) :-
3646 recorded(messages,textWidget(MessageText),_),
3647 proxtStringToCharPtr('',EmptyCharPtr),
3648 xmTextSetString(MessageText,EmptyCharPtr),
3649 recorded(messages,file(F),Ref),
3650 erase(Ref),
3651 close(F),
3652 open('xmProtocol.tmp',write,Fnew),
3653 recordz(messages,file(Fnew),_).
3654
3655
3667
3668writeError(Message) :-
3669 (number(Message) -> number_chars(Message,MsgChars),
3670 atom_chars(MsgStr,MsgChars)|
3671 otherwise -> MsgStr = Message),
3672 (recorded(error,errorText(EText),Ref) -> erase(Ref),
3673 concat(EText,MsgStr,NewEText)|
3674 otherwise -> NewEText = MsgStr),
3675 recordz(error,errorText(NewEText),_).
3676
3677
3689
3690writelnError(Message) :-
3691 (number(Message) -> number_chars(Message,MsgChars),
3692 append(MsgChars,[10],MC),
3693 atom_chars(MsgStr,MC)|
3694 otherwise -> atom_chars(Message,MsgChars),
3695 append(MsgChars,[10],MC),
3696 atom_chars(MsgStr,MC)),
3697 (recorded(error,errorText(EText),Ref) -> erase(Ref),
3698 concat(EText,MsgStr,NewEText)|
3699 otherwise -> NewEText = MsgStr),
3700 recordz(error,errorText(NewEText),_).
3701
3702
3714
3715flushErrorBuffer :-
3716 (recorded(error,errorText(EText),Ref) -> erase(Ref),
3717 writeMessage(EText)|
3718 otherwise).
3719
3720
3732
3733writeMessage(Message) :-
3734 recorded(messages,textWidget(MessageText),_),
3735 (number(Message) -> number_chars(Message,MsgChars),
3736 atom_chars(MsgStr,MsgChars),
3737 proxtStringToCharPtr(MsgStr,MessageCharPtr)|
3738 atom(Message) -> proxtStringToCharPtr(Message,MessageCharPtr)|
3739 otherwise -> xxmWriteToCharPtr(write(Message),MessageCharPtr)),
3740 xmTextGetLastPosition(MessageText,LastPos),
3741 xmTextReplace(MessageText,LastPos,LastPos,MessageCharPtr),
3742 recorded(messages,file(F),_),
3743 write(F,Message).
3744
3745
3757
3758writelnMessage(Message) :-
3759 recorded(messages,textWidget(MessageText),_),
3760 (number(Message) -> number_chars(Message,MsgChars),
3761 append(MsgChars,[10],MC2),
3762 atom_chars(MsgStr,MC2),
3763 proxtStringToCharPtr(MsgStr,MessageCharPtr)|
3764 atom(Message) -> atom_chars(Message,MsgChars),
3765 append(MsgChars,[10],MC2),
3766 atom_chars(MsgStr,MC2),
3767 proxtStringToCharPtr(MsgStr,MessageCharPtr)|
3768 otherwise -> xxmWriteToCharPtr((write(Message),nl),MessageCharPtr)),
3769 xmTextGetLastPosition(MessageText,LastPos),
3770 xmTextReplace(MessageText,LastPos,LastPos,MessageCharPtr),
3771 xmTextScroll(MessageText,1),
3772 recorded(messages,file(F),_),
3773 write(F,Message),
3774 nl(F).
3775
3776
3789
3790createEditorArea(Parent) :-
3791 xmCreateFrame(Parent,'Editor',
3792 [],EditorFrame),
3793 xtManageChild(EditorFrame),
3794
3795 xmCreateRowColumn(EditorFrame,editor,
3796 [xmNadjustLast(true),
3797 xmNorientation(xmVERTICAL),
3798 xmNpacking(xmPACK_TIGHT),
3799 xmNrowColumnType(xmWORK_AREA)],
3800 EditorRowColumn),
3801 xtManageChild(EditorRowColumn),
3802
3803 proxtStringToCharPtr('Editor',EditorTitleChrPtr),
3804 proxtGetDefaultCharset(DCharset),
3805 xmStringCreate(EditorTitleChrPtr,DCharset,EditorTitleStr),
3806 xmCreateLabelGadget(EditorRowColumn,editorLabel,
3807 [xmNlabelType(xmSTRING),xmNlabelString(EditorTitleStr)],
3808 EditorLabel),
3809 xtManageChild(EditorLabel),
3810 recordz(editor,label(EditorLabel),_),
3811
3812 xmCreateScrolledText(EditorRowColumn,kommandotext,
3813 [xmNeditable(true),xmNeditMode(xmMULTI_LINE_EDIT),
3814 xmNrows(5),
3815 xmNlistSizePolicy(xmCONSTANT),
3816 xmNscrollBarDisplayPolicy(xmSTATIC),
3817 xmNscrollingPolicy(xmAUTOMATIC),
3818 xmNautoShowCursorPosition(true)],EditorText),
3819 xtManageChild(EditorText),
3820 recordz(editor,textWidget(EditorText),_Ref),
3821
3822 xmCreateRowColumn(EditorRowColumn,'ButtonRowColumn',
3823 [xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER),
3824 xmNnumColumns(1),
3825 xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN)],
3826 ButtonRowColumn),
3827 xtManageChild(ButtonRowColumn),
3828
3829 xmCreatePushButton(ButtonRowColumn,'Add rule',
3830 [],AddRule),
3831 xtManageChild(AddRule),
3832
3833 xmCreatePushButton(ButtonRowColumn,'Change rule',
3834 [],ChangeRule),
3835 createYesNoPopup(ChangeRule,_YesNoPopup,changeRule,_),
3836 xtManageChild(ChangeRule),
3837
3838 xmCreatePushButton(ButtonRowColumn,'Add example',
3839 [],AddExample),
3840 xtManageChild(AddExample),
3841
3842 xmCreatePushButton(ButtonRowColumn,'Change example',
3843 [],ChangeExample),
3844 createYesNoPopup(ChangeExample,_YesNoPopup2,changeExample,_),
3845 xtManageChild(ChangeExample),
3846
3847 xmCreatePushButton(ButtonRowColumn,'Clear',
3848 [],Clear),
3849 xtManageChild(Clear),
3850
3851 xtAddCallback(Clear,xmNactivateCallback,clearEditor,_),
3852 xtAddCallback(AddRule,xmNactivateCallback,addRule,_),
3853 xtAddCallback(AddExample,xmNactivateCallback,addExample,_).
3854
3855
3869
3870clearEditor(_Widget,_ClientData,_CallData) :-
3871 recorded(editor,textWidget(EditorText),_),
3872 recorded(editor,label(Label),_),
3873 proxtGetDefaultCharset(DCharset),
3874 (recorded(editor,editing(_,_),Ref) -> erase(Ref),
3875 proxtStringToCharPtr('Editor',LblCP),
3876 xmStringCreate(LblCP,DCharset,LblS),
3877 xtSetValues(Label,[xmNlabelString(LblS)]) |
3878 otherwise),
3879 proxtStringToCharPtr('',EmptyChrPtr),
3880 xmTextSetString(EditorText,EmptyChrPtr).
3881
3882
3896
3897addRule(_Widget,_ClientData,_CallData) :-
3898 recorded(editor,textWidget(EditorText),_Ref),
3899 xmTextGetString(EditorText,RuleCP),
3900 xxmStringToTerm(RuleCP,_,RuleTerm),
3901 proxtCharPtrToString(RuleCP,RulePString),
3902 span_left(RulePString,".",N),
3903 substring(RulePString,RuleString,0,N,_),
3904 store_clause(RuleTerm,_,user,ID),
3905 writeMessage(':- store_clause('),
3906 writeMessage(RuleString),
3907 writeMessage(',_,user,'),
3908 writeMessage(ID),
3909 writelnMessage(').'),
3910 writelnMessage('% rule added.'),
3911 updateEvaluationLabel,
3912 get_clause(ID,H,B,S,L),
3913 addRuleItem(ID,H,B,S,L).
3914
3915
3927
3928resultAddRule(Id) :-
3929 get_clause(Id,H,B,S,L),
3930 addRuleItem(Id,H,B,S,L),
3931 writeMessage('% rule '),
3932 number_chars(Id,IdChars),
3933 atom_chars(IdString,IdChars),
3934 writeMessage(IdString),
3935 writelnMessage(' created.').
3936
3937
3950
3951resultAddNewpreds((ID,Reflist)):-
3952 toplevel(Shell),
3953 xmCreateBulletinBoardDialog(Shell,'Newpreds',
3954 [],NewpredDialog),
3955 recordz(newpreddialog,ID:NewpredDialog,_),
3956 xtManageChild(NewpredDialog),
3957
3958 xmCreateFrame(NewpredDialog,'Newpred Frame',
3959 [],NewpredFrame),
3960 xtManageChild(NewpredFrame),
3961
3962 xmCreateRowColumn(NewpredFrame,newpredColumn,
3963 [xmNorientation(xmVERTICAL),xmNpacking(xmPACK_TIGHT)],
3964 NewpredColumn),
3965 xtManageChild(NewpredColumn),
3966
3967 xmCreateRowColumn(NewpredColumn,titlerow,
3968 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN),
3969 xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER)],
3970 TitleRow),
3971 xtManageChild(TitleRow),
3972
3973 proxtGetDefaultCharset(DCharset),
3974 proxtStringToCharPtr('Choose Specialisation',TitleCP),
3975 xmStringCreate(TitleCP,DCharset,TitleStr),
3976 xmCreateLabelGadget(TitleRow,title,
3977 [xmNlabelType(xmSTRING),xmNlabelString(TitleStr)],
3978 TitleLabel),
3979 xtManageChild(TitleLabel),
3980
3981 xmCreateScrolledWindow(NewpredColumn,newpredSW,
3982 [xmNheight(300),xmNwidth(300),
3983 xmNlistSizePolicy(xmCONSTANT),
3984 xmNscrollBarDisplayPolicy(xmSTATIC),
3985 xmNscrollingPolicy(xmAUTOMATIC)],
3986 NewpredSW),
3987 xtManageChild(NewpredSW),
3988
3989 xmCreateRowColumn(NewpredSW,newpredRC,
3990 [xmNadjustLast(false),
3991 xmNorientation(xmVERTICAL),
3992 xmNpacking(xmPACK_TIGHT),
3993 xmNrowColumnType(xmWORK_AREA)],
3994 NewpredRC),
3995 xtGetValues(NewpredRC,[xmNbackground(B)]),
3996 xtGetValues(NewpredSW,[xmNclipWindow(CW)]),
3997 xtSetValues(CW,[xmNbackground(B)]),
3998 xtManageChild(NewpredRC),
3999 addnewpredclauses(Reflist,NewpredRC),
4000
4001 xmCreateRowColumn(NewpredColumn,buttonrow,
4002 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN),
4003 xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER)],
4004 ButtonRow),
4005 xtManageChild(ButtonRow),
4006
4007 xmCreatePushButton(ButtonRow,'Add Rule',
4008 [],AddRule),
4009 xtManageChild(AddRule),
4010 xtAddCallback(AddRule,xmNactivateCallback,
4011 addselectedRule,_),
4012
4013 xmCreatePushButton(ButtonRow,'None',
4014 [],None),
4015 xtManageChild(None),
4016 xtAddCallback(None,xmNactivateCallback,
4017 addnorule,_).
4018
4019
4020addnewpredclauses([],_).
4021addnewpredclauses([(NC,Pos,Neg,TR)|R],Widget):-
4022 proxtGetDefaultCharset(DCharset),
4023 xxmWriteToString(portray_clause(NC),DCharset,XmS),
4024 xmCreateLabel(Widget,newpredClause,
4025 [xmNalignment(xmALIGNMENT_BEGINNING),
4026 xmNlabelString(XmS),xmNlabelType(xmSTRING)],
4027 Label),
4028 xtManageChild(Label),
4029 recordz(newpred,np(Label,NC,Pos,Neg,TR,notselected),_Ref),
4030 xtAddEventHandler(Label,[buttonReleaseMask],
4031 false,selectnpclause,_),
4032 addnewpredclauses(R,Widget).
4033
4034
4035selectnpclause(Widget,_,_CallData) :-
4036 recorded(newpred,np(Widget,NC,Pos,Neg,TR,notselected),Ref),
4037 turnoff_other_selected,
4038 xtGetValues(Widget,[xmNbackground(B),xmNforeground(F)]),
4039 xtSetValues(Widget,[xmNbackground(F),xmNforeground(B)]),
4040 erase(Ref),
4041 recordz(newpred,np(Widget,NC,Pos,Neg,TR,selected),_).
4042
4043selectnpclause(Widget,rules,_CallData) :-
4044 recorded(newpred,np(Widget,NC,Pos,Neg,TR,selected),Ref),
4045 xtGetValues(Widget,[xmNbackground(B),xmNforeground(F)]),
4046 xtSetValues(Widget,[xmNbackground(F),xmNforeground(B)]),
4047 erase(Ref),
4048 recordz(newpred,np(Widget,NC,Pos,Neg,TR,notselected),_).
4049
4050turnoff_other_selected:-
4051 mysetof(Ref,Widget^NC^Pos^Neg^TR^B^F^(
4052 recorded(newpred,np(Widget,NC,Pos,Neg,TR,selected),Ref),
4053 erase(Ref),
4054 recordz(newpred,np(Widget,NC,Pos,Neg,TR,notselected),_),
4055 xtGetValues(Widget,[xmNbackground(B),xmNforeground(F)]),
4056 xtSetValues(Widget,[xmNbackground(F),xmNforeground(B)])),_).
4057
4058
4059addnorule(_,_,_):-
4060 recorded(newpreddialog,_:Widget,Ref),
4061 erase(Ref),
4062 mysetof(Ref1,X^(recorded(newpred,X,Ref1),erase(Ref1)),_),
4063 xtDestroyWidget(Widget).
4064
4065addselectedRule(_,_,_):-
4066 ( recorded(newpred,np(_,NC,Pos,Neg,TR,selected),_) ->
4067 recorded(newpreddialog,ID:Widget,Ref0),
4068 delete_clause(ID),
4069 store_clause(NC,_,newpred,ID),
4070 mysetof(P,PID^(member(P,Pos),store_ex(P,+,PID)),_),
4071 mysetof(N,NID^(member(N,Neg),store_ex(N,-,NID)),_),
4072 assertz(kb:TR),
4073 erase(Ref0),
4074 mysetof(Ref1,X^(recorded(newpred,X,Ref1),erase(Ref1)),_),
4075 xtDestroyWidget(Widget),
4076 refresh([rules,examples])
4077 ; true
4078 ).
4079
4080
4081
4094
4095resultAddSpec((ID,Reflist)):-
4096 toplevel(Shell),
4097 xmCreateBulletinBoardDialog(Shell,'Specs',
4098 [],SpecsDialog),
4099 recordz(specsdialog,ID:SpecsDialog,_),
4100 xtManageChild(SpecsDialog),
4101
4102 xmCreateFrame(SpecsDialog,'Specs Frame',
4103 [],SpecsFrame),
4104 xtManageChild(SpecsFrame),
4105
4106 xmCreateRowColumn(SpecsFrame,specsColumn,
4107 [xmNorientation(xmVERTICAL),xmNpacking(xmPACK_TIGHT)],
4108 SpecsColumn),
4109 xtManageChild(SpecsColumn),
4110
4111 xmCreateRowColumn(SpecsColumn,titlerow,
4112 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN),
4113 xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER)],
4114 TitleRow),
4115 xtManageChild(TitleRow),
4116
4117 proxtGetDefaultCharset(DCharset),
4118 proxtStringToCharPtr('Choose Specialisation',TitleCP),
4119 xmStringCreate(TitleCP,DCharset,TitleStr),
4120 xmCreateLabelGadget(TitleRow,title,
4121 [xmNlabelType(xmSTRING),xmNlabelString(TitleStr)],
4122 TitleLabel),
4123 xtManageChild(TitleLabel),
4124
4125 xmCreateScrolledWindow(SpecsColumn,specsSW,
4126 [xmNheight(300),xmNwidth(300),
4127 xmNlistSizePolicy(xmCONSTANT),
4128 xmNscrollBarDisplayPolicy(xmSTATIC),
4129 xmNscrollingPolicy(xmAUTOMATIC)],
4130 SpecsSW),
4131 xtManageChild(SpecsSW),
4132
4133 xmCreateRowColumn(SpecsSW,newpredRC,
4134 [xmNadjustLast(false),
4135 xmNorientation(xmVERTICAL),
4136 xmNpacking(xmPACK_TIGHT),
4137 xmNrowColumnType(xmWORK_AREA)],
4138 SpecsRC),
4139 xtGetValues(SpecsRC,[xmNbackground(B)]),
4140 xtGetValues(SpecsSW,[xmNclipWindow(CW)]),
4141 xtSetValues(CW,[xmNbackground(B)]),
4142 xtManageChild(SpecsRC),
4143 addspecclauses(Reflist,SpecsRC),
4144
4145 xmCreateRowColumn(SpecsColumn,buttonrow,
4146 [xmNorientation(xmHORIZONTAL),xmNpacking(xmPACK_COLUMN),
4147 xmNisAligned(true),xmNentryAlignment(xmALIGNMENT_CENTER)],
4148 ButtonRow),
4149 xtManageChild(ButtonRow),
4150
4151 xmCreatePushButton(ButtonRow,'Add Rule',
4152 [],AddRule),
4153 xtManageChild(AddRule),
4154 xtAddCallback(AddRule,xmNactivateCallback,
4155 addselectedSpec,_),
4156
4157 xmCreatePushButton(ButtonRow,'None',
4158 [],None),
4159 xtManageChild(None),
4160 xtAddCallback(None,xmNactivateCallback,
4161 addnospec,_).
4162
4163
4164addspecclauses([],_).
4165addspecclauses([NC|R],Widget):-
4166 proxtGetDefaultCharset(DCharset),
4167 xxmWriteToString(portray_clause(NC),DCharset,XmS),
4168 xmCreateLabel(Widget,specClause,
4169 [xmNalignment(xmALIGNMENT_BEGINNING),
4170 xmNlabelString(XmS),xmNlabelType(xmSTRING)],
4171 Label),
4172 xtManageChild(Label),
4173 recordz(spec,np(Label,NC,notselected),_Ref),
4174 xtAddEventHandler(Label,[buttonReleaseMask],
4175 false,selectspecclause,_),
4176 addspecclauses(R,Widget).
4177
4178
4179selectspecclause(Widget,_,_CallData) :-
4180 recorded(spec,np(Widget,NC,notselected),Ref),
4181 turnoff_other_selected_spec,
4182 xtGetValues(Widget,[xmNbackground(B),xmNforeground(F)]),
4183 xtSetValues(Widget,[xmNbackground(F),xmNforeground(B)]),
4184 erase(Ref),
4185 recordz(spec,np(Widget,NC,selected),_).
4186
4187selectspecclause(Widget,rules,_CallData) :-
4188 recorded(spec,np(Widget,NC,selected),Ref),
4189 xtGetValues(Widget,[xmNbackground(B),xmNforeground(F)]),
4190 xtSetValues(Widget,[xmNbackground(F),xmNforeground(B)]),
4191 erase(Ref),
4192 recordz(spec,np(Widget,NC,notselected),_).
4193
4194turnoff_other_selected_spec:-
4195 mysetof(Ref,Widget^NC^B^F^(
4196 recorded(spec,np(Widget,NC,selected),Ref),
4197 erase(Ref),
4198 recordz(spec,np(Widget,NC,notselected),_),
4199 xtGetValues(Widget,[xmNbackground(B),xmNforeground(F)]),
4200 xtSetValues(Widget,[xmNbackground(F),xmNforeground(B)])),_).
4201
4202
4203addnospec(_,_,_):-
4204 recorded(specsdialog,_:Widget,Ref),
4205 erase(Ref),
4206 mysetof(Ref1,X^(recorded(spec,X,Ref1),erase(Ref1)),_),
4207 xtDestroyWidget(Widget).
4208
4209addselectedSpec(_,_,_):-
4210 ( recorded(spec,np(_,NC,selected),_) ->
4211 recorded(specsdialog,ID:Widget,Ref0),
4212 delete_clause(ID),
4213 store_clause(NC,_,spec,ID),
4214 erase(Ref0),
4215 mysetof(Ref1,X^(recorded(spec,X,Ref1),erase(Ref1)),_),
4216 xtDestroyWidget(Widget),
4217 refresh([rules])
4218 ; true
4219 ).
4220
4232
4233resultAddRuleList([]):-!.
4234resultAddRuleList([Id|IdList]) :-
4235 resultAddRule(Id),
4236 resultAddRuleList(IdList).
4237
4238
4250
4251resultSelectRules([]):- unselectAll(_,rules,_),!,
4252 writelnMessage('% resulting rules selected').
4253resultSelectRules([Id:_|IdList]) :-
4254 resultSelectRules(IdList),
4255 recorded(current,clause(Id,Widget,notselected),_),
4256 selectClause(Widget,rules,_).
4257
4258
4270
4271resultSelectExamples([]):- unselectAll(_,examples,_),!,
4272 writelnMessage('% resulting examples selected').
4273resultSelectExamples([Id|IdList]) :-
4274 resultSelectExamples(IdList),
4275 recorded(current,example(Id,Widget,notselected),_),
4276 selectClause(Widget,examples,_).
4277
4278
4292
4293changeRule(_Widget,_ClientData,_CallData) :-
4294 recorded(editor,textWidget(EditorText),_Ref),
4295 recorded(editor,editing(rules,ID),_),
4296 delete_clause(ID),
4297 xmTextGetString(EditorText,RuleCP),
4298 xxmStringToTerm(RuleCP,_,RuleTerm),
4299 store_clause(RuleTerm,_,user,ID),
4300 proxtCharPtrToString(RuleCP,RulePString),
4301 span_left(RulePString,".",N),
4302 substring(RulePString,RuleString,0,N,_),
4303 writeMessage(':- delete_clause('),
4304 writeMessage(ID),
4305 writelnMessage(').'),
4306 writeMessage(':- store_clause('),
4307 writeMessage(RuleString),
4308 writeMessage(',_,user,'),
4309 writeMessage(ID),
4310 writelnMessage(').'),
4311 writelnMessage('% rule changed.'),
4312 get_clause(ID,H,B,S,L),
4313 addRuleItem(ID,H,B,S,L),
4314 updateEvaluationLabel.
4315
4316
4331
4332addExample(_Widget,_ClientData,_CallData) :-
4333 recorded(editor,textWidget(EditorText),_Ref),
4334 xmTextGetString(EditorText,ExampleCP),
4335 xxmStringToTerm(ExampleCP,_,ExampleTerm),
4336 store_ex(ExampleTerm,?,ID),
4337 proxtCharPtrToString(ExampleCP,ExamplePString),
4338 span_left(ExamplePString,".",N),
4339 substring(ExamplePString,ExampleString,0,N,_),
4340 writeMessage(':- store_ex('),
4341 writeMessage(ExampleString),
4342 writeMessage(',?,'),
4343 writeMessage(ID),
4344 writelnMessage(').'),
4345 writelnMessage('% example added.'),
4346 get_example(ID,F,C),
4347 addExampleItem(ID,F,C),
4348 updateEvaluationLabel.
4349
4350
4364
4365changeExample(_Widget,_ClientData,_CallData) :-
4366 recorded(editor,textWidget(EditorText),_Ref),
4367 recorded(editor,editing(examples,ID),_),
4368 get_example(ID,_,C),
4369 delete_example(ID),
4370 xmTextGetString(EditorText,ExampleCP),
4371 xxmStringToTerm(ExampleCP,_,ExampleTerm),
4372 proxtCharPtrToString(ExampleCP,ExamplePString),
4373 span_left(ExamplePString,".",N),
4374 substring(ExamplePString,ExampleString,0,N,_),
4375 store_ex(ExampleTerm,C,ID),
4376 writeMessage(':- delete_example('),
4377 writeMessage(ID),
4378 writelnMessage(').'),
4379 writeMessage(':- store_ex('),
4380 writeMessage(ExampleString),
4381 writeMessage(',?,'),
4382 writeMessage(ID),
4383 writelnMessage(').'),
4384 writelnMessage('% example changed.'),
4385 get_example(ID,F,C),
4386 addExampleItem(ID,F,C),
4387 updateEvaluationLabel.
4388
4389
4403
4404xxmStringToTerm(S,_Charset,T) :-
4405 var(T),nonvar(S),
4406 proxtCharPtrToString(S,X1),
4407 tell(xmTemporary),
4408 write(X1),
4409 nl,
4410 told,
4411 see(xmTemporary),
4412 read(T),
4413 seen,!.
4414
4415xxmStringToTerm(XmS,Charset,T) :-
4416 var(XmS),nonvar(T),
4417 tell(xmTemporary),
4418 write(T),
4419 told,
4420 see(xmTemporary),
4421 xxmStringRead(XmS,Charset),
4422 seen,!.
4423
4424
4438
4439xxmStringRead(S,Charset) :-
4440 stringRead(100,S1),
4441 atom_chars(AS,S1),
4442 proxtStringToCharPtr(AS,CP),
4443 xmStringCreateLtoR(CP,Charset,XmS),
4444 (length(S1,100) -> xxmStringAppendRead(XmS,S,Charset)
4445 | otherwise -> S = XmS),!.
4446
4447
4462
4463xxmStringAppendRead(S1,S,Charset) :-
4464 stringRead(100,S2),
4465 atom_chars(AS,S2),
4466 proxtStringToCharPtr(AS,CP),
4467 xmStringCreateLtoR(CP,Charset,XmS),
4468 xmStringConcat(S1,XmS,XmS1),
4469 (length(S2,100) -> xxmStringAppendRead(XmS1,S,Charset)
4470 | otherwise -> S = XmS1),!.
4471
4472
4482
4483stringRead(0,[]).
4484stringRead(N,S) :-
4485 get0(Char),
4486 (Char =:= -1 -> S = []
4487 | otherwise -> M is N - 1,
4488 stringRead(M,S1),
4489 S = [Char|S1]).
4490
4491
4505
4506xxmWriteToString(W,Charset,XmS) :-
4507 tell(xmTemporary),
4508 call(W),
4509 told,
4510 see(xmTemporary),
4511 xxmStringRead(XmS,Charset),
4512 seen,!.
4513
4514
4528
4529xxmWriteToCharPtr(W,CP) :-
4530 tell(xmTemporary),
4531 call(W),
4532 told,
4533 see(xmTemporary),
4534 stringRead(1023,S),
4535 seen,
4536 atom_chars(AS,S),
4537 proxtStringToCharPtr(AS,CP),!.
4538
4539
4551
4552isDepth(D) :-
4553 (number(D), D>0, D<101|
4554 (number(D) -> number_chars(D,M1)|
4555 otherwise -> atom_chars(D,M1)),
4556 writeError('% '),
4557 append("'",M1,M2),
4558 append(M2,"' is not between the range of 1 - 100!",M3),
4559 atom_chars(Message,M3),
4560 writelnError(Message),!,fail).
4561
4562
4574
4575isExample(Id) :-
4576 (get_example(Id,_,_) |
4577 (number(Id) -> number_chars(Id,M1)|
4578 otherwise -> atom_chars(Id,M1)),
4579 writeError('% '),
4580 append("'",M1,M2),
4581 append(M2,"' is not an example id!",M3),
4582 atom_chars(Message,M3),
4583 writelnError(Message),!,fail).
4584
4585
4597
4598isRule(Id) :-
4599 (get_clause(Id,_,_,_,_) |
4600 (number(Id) -> number_chars(Id,M1)|
4601 otherwise -> atom_chars(Id,M1)),
4602 writeError('% '),
4603 append("'",M1,M2),
4604 append(M2,"' is not a rule id!",M3),
4605 atom_chars(Message,M3),
4606 writelnError(Message),!,fail).
4607
4608
4620
4621isExOrRule(Id) :-
4622 (get_clause(Id,_,_,_,_) | get_example(Id,_,_) |
4623 (number(Id) -> number_chars(Id,M1)|
4624 otherwise -> atom_chars(Id,M1)),
4625 writeError('% '),
4626 append("'",M1,M2),
4627 append(M2,"' is not a rule id nor an example id!",M3),
4628 atom_chars(Message,M3),
4629 writelnError(Message),fail).
4630
4631
4644
4645sucheInListe(A,[A|_]).
4646sucheInListe(_,[]).
4647sucheInListe(A,[_|Rest]) :- sucheInListe(A,Rest).
4648
4649writeFullstop(X) :- write(X),write('.').
4650true(_).
4651
4652
4653
4665
4666createEvaluationString(S):-
4667 ( evaluated(no) ->
4668 S = '(not evaluated)'
4669 ; S = ' (evaluated)'
4670 ).
4671
4672
4685
4686updateEvaluationLabel:-
4687 recorded(irene,Widget,_),
4688 createEvaluationString(S),
4689 proxtGetDefaultCharset(DCharset),
4690 proxtStringToCharPtr(S,ACP),
4691 xmStringCreate(ACP,DCharset,AXmS),
4692 xtSetValues(Widget,[xmNlabelString(AXmS)])