|
Post by Pjot on Apr 2, 2020 18:38:50 GMT 1
All, For fun I made a small demonstration for the WALK$ function, using some selected HUG functions. Enjoy, Peter '--------------------------------------------------------------------------------------- ' ' Graphical frontend to WALK$ using HUG ' ' Version 1.0: Initial release ' Version 1.1: Fixed wrapping issue ' '---------------------------------------------------------------------------------------
INCLUDE "hug.bac", INIT, SHOW, HIDE, GRAB$, TEXT, FOCUS, WINDOW, FRAME, ATTACH, ENTRY, STOCK, \ BUTTON, MARK, FILEDIALOG, MSGDIALOG, CALLBACK, DISPLAY, EDIT, SYNC, CHECK, SET, GET, QUIT
'---------------------------------------------------------------------------------------
SUB Get_Directory
SHOW(dirdlg)
END SUB
'---------------------------------------------------------------------------------------
SUB Close_Dir_Dialog(NUMBER widget, int button)
LOCAL txt$
HIDE(widget)
IF button != GTK_RESPONSE_CANCEL THEN txt$ = GRAB$(widget) TEXT(in, REPLACE$(txt$, "%20", " ")) END IF
FOCUS(in)
END SUB
'---------------------------------------------------------------------------------------
SUB Close_Dialog(NUMBER widget)
HIDE(widget) FOCUS(in)
ENDSUB
'---------------------------------------------------------------------------------------
SUB Find_Term
LOCAL dir$, reg$, result$
dir$ = GRAB$(in)
IF LEN(dir$) = 0 THEN SHOW(errdlg1) EXIT SUB ENDIF
IF FILETYPE(dir$) != 2 THEN SHOW(errdlg3) EXIT SUB ENDIF
reg$ = GRAB$(reg)
IF LEN(reg$) = 0 THEN SHOW(errdlg4) EXIT SUB ENDIF
SHOW(msgdlg) SYNC
IF GET(sensitive) = TRUE THEN OPTION COMPARE FALSE ELSE OPTION COMPARE TRUE ENDIF
result$ = SORT$(WALK$(dir$, 1|2, reg$, GET(recursive), NL$), NL$)
HIDE(msgdlg)
IF LEN(result$)= 0 THEN SHOW(errdlg2) ELSE SHOW(infodlg) TEXT(txt, "===> " & BASENAME$(dir$) & " <===" & NL$) TEXT(txt, result$ & NL$) ENDIF
ENDSUB
'---------------------------------------------------------------------------------------
SUB Wipe_Results(NUMBER widget)
TEXT(txt, "")
ENDSUB
'---------------------------------------------------------------------------------------
SETENVIRON "LC_ALL", "C"
INIT
' Create main window mainwin = WINDOW("WALK$ Front End", 600, 570)
' Browse to directory frame1 = FRAME(590, 80) ATTACH(mainwin, frame1, 5, 5) TEXT(frame1, "| Define directory |") in = ENTRY("</Your/directory/here>", 470, 30) ATTACH(mainwin, in, 15, 40) browse = BUTTON("SELECT", 90, 40) ATTACH(mainwin, browse, 495, 30)
' Action part frame2 = FRAME(590, 110) ATTACH(mainwin, frame2, 5, 95) TEXT(frame2, "| Define regex |") reg = ENTRY("<regex term here>", 470, 30) ATTACH(mainwin, reg, 15, 130) start = STOCK("gtk-find", 90, 40) ATTACH(mainwin, start, 495, 120) sensitive = CHECK("Case sensitive", 140, 30) ATTACH(mainwin, sensitive, 15, 170) SET(sensitive, FALSE) recursive = CHECK("Recursive search", 140, 30) ATTACH(mainwin, recursive, 170, 170) SET(recursive, TRUE)
wipe = STOCK("gtk-clear", 120, 40) ATTACH(mainwin, wipe, 5, 530)
quit = STOCK("gtk-quit", 120, 40) ATTACH(mainwin, quit, 475, 530)
' Result part frame3 = FRAME(590, 310) ATTACH(mainwin, frame3, 5, 215) TEXT(frame3, "| Results |") txt = EDIT(570, 265) ATTACH(mainwin, txt, 15, 245)
' No wrapping of results SETPROPERTY(hug_widget_font(STR$(txt)), "wrap-mode", 0)
' Create dirbrowser dirdlg = FILEDIALOG("Select directory...", "gtk-open", 120, 80, 2)
' Create error/information dialogs errdlg1 = MSGDIALOG("No directory selected!", 250, 120, 3, 2) errdlg2 = MSGDIALOG("No files found!", 250, 120, 3, 2) errdlg3 = MSGDIALOG("Invalid directory selected!", 270, 120, 3, 2) errdlg4 = MSGDIALOG("No search terms defined!", 270, 120, 3, 2) msgdlg = MSGDIALOG("Searching directory...", 270, 120, 0, 0) infodlg = MSGDIALOG("Search action ready.", 270, 120, 0, 2)
FOCUS(reg)
' Define the callbacks CALLBACK(quit, QUIT) CALLBACK(wipe, Wipe_Results) CALLBACK(browse, Get_Directory) CALLBACK(dirdlg, Close_Dir_Dialog) CALLBACK(errdlg1, Close_Dialog) CALLBACK(errdlg2, Close_Dialog) CALLBACK(errdlg3, Close_Dialog) CALLBACK(infodlg, Close_Dialog) CALLBACK(start, Find_Term)
' Endless GTK loop DISPLAY
Attachments:
|
|
|
Post by bigbass on Apr 2, 2020 19:59:35 GMT 1
Hello Peter
Thank you for the HUG demo its very useful and a nice example how to use WALK$ we could use many more new HUG demos !
Joe
*The Default icon themes For RPI3 are lacking But all Is working correctly
|
|
|
Post by Pjot on Apr 26, 2020 12:37:57 GMT 1
All, The same program, now ported to Motif using the new GUI engine functions. The Motif program shown below is approx. 20 lines shorter compared to the HUG program above. Also, note that in case of HUG, the "INCLUDE HUG" statement actually adds almost 3000 lines of additional code to achieve GUI programming. This has impact on the binary sizes. After compilation on my system, the HUG version needs 286192 bytes, while the Motif version needs 98448 bytes. So the Motif binary is 65% smaller! Regards Peter OPTION GUI TRUE PRAGMA GUI motif
SUB Find_Term
LOCAL dir$, re$, result$
CALL GUIGET(window, "dir", XtNvalue, &dir$)
IF LEN(dir$) = 0 THEN CALL XtPopup(GUIWIDGET(window, "errform1"), XtGrabNonexclusive) EXIT SUB ENDIF
IF FILETYPE(dir$) != 2 THEN CALL XtPopup(GUIWIDGET(window, "errform3"), XtGrabNonexclusive) EXIT SUB ENDIF
CALL GUIGET(window, "regex", XtNvalue, &re$)
IF LEN(re$) = 0 THEN CALL XtPopup(GUIWIDGET(window, "errform4"), XtGrabNonexclusive) EXIT SUB ENDIF
IF XmToggleButtonGetState(GUIWIDGET(window, "cse")) THEN OPTION COMPARE FALSE ELSE OPTION COMPARE TRUE ENDIF
result$ = SORT$(WALK$(dir$, 1|2, re$, XmToggleButtonGetState(GUIWIDGET(window, "rec")), NL$), NL$)
IF LEN(result$)= 0 THEN CALL XtPopup(GUIWIDGET(window, "errform2"), XtGrabNonexclusive) ELSE CALL XtPopup(GUIWIDGET(window, "infoform"), XtGrabNonexclusive) CALL GUISET(window, "result", XmNvalue, "===> " & BASENAME$(dir$) & " <===" & NL$ & result$ & NL$) ENDIF
ENDSUB
FUNCTION Create_Gui
window = GUIDEFINE( " \ { type=window name=window XmNtitle=\"Walk$ Front End\" XmNwidth=600 XmNheight=570 } \ { type=xmFormWidgetClass name=mainform parent=window } \ { type=xmFrameWidgetClass name=frame1 parent=mainform XmNborderWidth=0 XmNleftAttachment=XmATTACH_FORM XmNrightAttachment=XmATTACH_FORM XmNtopAttachment=XmATTACH_FORM } \ { type=xmLabelWidgetClass name=label1 parent=frame1 XmNframeChildType=XmFRAME_TITLE_CHILD XmNchildVerticalAlignment=XmALIGNMENT_CENTER } \ { type=xmFormWidgetClass name=form1 parent=frame1 XmNframeChildType=XmFRAME_WORKAREA_CHILD XmNborderWidth=0 } \ { type=xmTextWidgetClass name=dir parent=form1 XmNbottomAttachment=XmATTACH_FORM XmNleftAttachment=XmATTACH_FORM XmNheight=30 } \ { type=xmPushButtonWidgetClass name=Browse parent=form1 callback=XmNactivateCallback XmNbottomAttachment=XmATTACH_FORM XmNrightAttachment=XmATTACH_FORM XmNheight=30 XmNwidth=95 } \ { type=xmFrameWidgetClass name=frame2 parent=mainform XmNborderWidth=0 XmNleftAttachment=XmATTACH_FORM XmNrightAttachment=XmATTACH_FORM } \ { type=xmLabelWidgetClass name=label2 parent=frame2 XmNframeChildType=XmFRAME_TITLE_CHILD XmNchildVerticalAlignment=XmALIGNMENT_CENTER } \ { type=xmFormWidgetClass name=form2 parent=frame2 XmNframeChildType=XmFRAME_WORKAREA_CHILD XmNborderWidth=0 } \ { type=xmTextWidgetClass name=regex parent=form2 XmNleftAttachment=XmATTACH_FORM XmNheight=30 } \ { type=xmPushButtonWidgetClass name=Find parent=form2 callback=XmNactivateCallback XmNrightAttachment=XmATTACH_FORM XmNheight=30 XmNwidth=95 } \ { type=xmToggleButtonGadgetClass name=cse parent=form2 XmNleftAttachment=XmATTACH_FORM XmNbottomAttachment=XmATTACH_FORM XmNheight=30 } \ { type=xmToggleButtonGadgetClass name=rec parent=form2 XmNbottomAttachment=XmATTACH_FORM XmNheight=30 } \ { type=xmFrameWidgetClass name=frame3 parent=mainform XmNborderWidth=0 XmNleftAttachment=XmATTACH_FORM XmNrightAttachment=XmATTACH_FORM } \ { type=xmLabelWidgetClass name=label3 parent=frame3 XmNframeChildType=XmFRAME_TITLE_CHILD XmNchildVerticalAlignment=XmALIGNMENT_CENTER } \ { type=xmFormWidgetClass name=form3 parent=frame3 XmNframeChildType=XmFRAME_WORKAREA_CHILD XmNborderWidth=0 } \ { type=xmScrolledWindowWidgetClass name=scroll parent=form3 XmNleftAttachment=XmATTACH_FORM XmNrightAttachment=XmATTACH_FORM XmNbottomAttachment=XmATTACH_FORM XmNtopAttachment=XmATTACH_FORM XmNscrollingPolicy=XmAPPLICATION_DEFINED XmNvisualPolicy=XmVARIABLE } \ { type=xmTextWidgetClass name=result parent=scroll XmNeditMode=XmMULTI_LINE_EDIT XmNeditable=False XmNwordWrap=True XmNcursorPositionVisible=False } \ { type=xmPushButtonWidgetClass name=Clear parent=mainform callback=XmNactivateCallback XmNbottomAttachment=XmATTACH_FORM XmNleftAttachment=XmATTACH_FORM XmNheight=30 XmNwidth=95 } \ { type=xmPushButtonWidgetClass name=Exit parent=mainform callback=XmNactivateCallback XmNbottomAttachment=XmATTACH_FORM XmNrightAttachment=XmATTACH_FORM XmNheight=30 XmNwidth=95 } \ { type=sessionShellWidgetClass name=fileform parent=window } \ { type=xmFileSelectionBoxWidgetClass name=dialog parent=fileform callback=XmNcancelCallback,cancel callback=XmNokCallback,ok } \ { type=sessionShellWidgetClass name=errform1 parent=window } \ { type=xmMessageBoxWidgetClass name=errdlg1 parent=errform1 callback=XmNokCallback,err1_ok XmNdialogType=XmDIALOG_ERROR } \ { type=sessionShellWidgetClass name=errform2 parent=window } \ { type=xmMessageBoxWidgetClass name=errdlg2 parent=errform2 callback=XmNokCallback,err2_ok XmNdialogType=XmDIALOG_ERROR } \ { type=sessionShellWidgetClass name=errform3 parent=window } \ { type=xmMessageBoxWidgetClass name=errdlg3 parent=errform3 callback=XmNokCallback,err3_ok XmNdialogType=XmDIALOG_ERROR } \ { type=sessionShellWidgetClass name=errform4 parent=window } \ { type=xmMessageBoxWidgetClass name=errdlg4 parent=errform4 callback=XmNokCallback,err4_ok XmNdialogType=XmDIALOG_ERROR } \ { type=sessionShellWidgetClass name=infoform parent=window } \ { type=xmMessageBoxWidgetClass name=infodlg parent=infoform callback=XmNokCallback,inf_ok XmNdialogType=XmDIALOG_INFORMATION } \ ")
CALL GUISET(window, "label1", XmNlabelString, XmStringCreateLocalized("Define directory")) CALL GUISET(window, "dir", XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, GUIWIDGET(window, "Browse")) CALL GUISET(window, "frame2", XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, GUIWIDGET(window, "frame1")) CALL GUISET(window, "label2", XmNlabelString, XmStringCreateLocalized("Define regex")) CALL GUISET(window, "regex", XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, GUIWIDGET(window, "Find")) CALL GUISET(window, "cse", XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, GUIWIDGET(window, "regex")) CALL GUISET(window, "cse", XmNlabelString, XmStringCreateLocalized("Case sensitive")) CALL GUISET(window, "rec", XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget, GUIWIDGET(window, "cse")) CALL GUISET(window, "rec", XmNlabelString, XmStringCreateLocalized("Recursive search")) CALL GUISET(window, "frame3", XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, GUIWIDGET(window, "frame2")) CALL GUISET(window, "frame3", XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget, GUIWIDGET(window, "Clear")) CALL GUISET(window, "label3", XmNlabelString, XmStringCreateLocalized("Results")) CALL GUISET(window, "Help", XmNsensitive, False) CALL GUISET(window, "Items", XmNsensitive, False) CALL GUISET(window, "ItemsList", XmNsensitive, False) CALL GUISET(window, "dialog", XmNdialogTitle, XmStringCreateLocalized("Select directory")) CALL GUISET(window, "errdlg1", XmNmessageString, XmStringCreateLocalized("No directory selected!")) CALL GUISET(window, "errdlg1", XmNdialogTitle, XmStringCreateLocalized("Error!")) CALL XtUnmanageChild(GUIWIDGET(GUIWIDGET(window, "errdlg1"), "Cancel")) CALL XtUnmanageChild(GUIWIDGET(GUIWIDGET(window, "errdlg1"), "Help")) CALL GUISET(window, "errdlg2", XmNmessageString, XmStringCreateLocalized("No files found!")) CALL GUISET(window, "errdlg2", XmNdialogTitle, XmStringCreateLocalized("Error!")) CALL XtUnmanageChild(GUIWIDGET(GUIWIDGET(window, "errdlg2"), "Cancel")) CALL XtUnmanageChild(GUIWIDGET(GUIWIDGET(window, "errdlg2"), "Help")) CALL GUISET(window, "errdlg3", XmNmessageString, XmStringCreateLocalized("Invalid directory selected!")) CALL GUISET(window, "errdlg3", XmNdialogTitle, XmStringCreateLocalized("Error!")) CALL XtUnmanageChild(GUIWIDGET(GUIWIDGET(window, "errdlg3"), "Cancel")) CALL XtUnmanageChild(GUIWIDGET(GUIWIDGET(window, "errdlg3"), "Help")) CALL GUISET(window, "errdlg4", XmNmessageString, XmStringCreateLocalized("No search terms defined!")) CALL GUISET(window, "errdlg4", XmNdialogTitle, XmStringCreateLocalized("Error!")) CALL XtUnmanageChild(GUIWIDGET(GUIWIDGET(window, "errdlg4"), "Cancel")) CALL XtUnmanageChild(GUIWIDGET(GUIWIDGET(window, "errdlg4"), "Help")) CALL GUISET(window, "infodlg", XmNdialogTitle, XmStringCreateLocalized("Information")) CALL GUISET(window, "infodlg", XmNmessageString, XmStringCreateLocalized("Search action ready.")) CALL XtUnmanageChild(GUIWIDGET(GUIWIDGET(window, "infodlg"), "Cancel")) CALL XtUnmanageChild(GUIWIDGET(GUIWIDGET(window, "infodlg"), "Help")) CALL XmToggleButtonSetState(GUIWIDGET(window, "rec"), 1, 0)
RETURN window
ENDFUNCTION
SUB Main_Function(id)
LOCAL dir$, event$
WHILE TRUE event$ = GUIEVENT$(window) SELECT event$ CASE "Browse" CALL XtPopup(GUIWIDGET(window, "fileform"), XtGrabNonexclusive) CASE "ok" CALL GUIGET(window, "Text", XtNvalue, &dir$) CALL XtPopdown(GUIWIDGET(window, "fileform")) CALL GUISET(window, "dir", XtNvalue, dir$) CASE "cancel" CALL XtPopdown(GUIWIDGET(window, "fileform")) CASE "Find" CALL Find_Term CASE "Clear" CALL GUISET(window, "result", XmNvalue, "") CASE "err1_ok" CALL XtPopdown(GUIWIDGET(window, "errform1")) CASE "err2_ok" CALL XtPopdown(GUIWIDGET(window, "errform2")) CASE "err3_ok" CALL XtPopdown(GUIWIDGET(window, "errform3")) CASE "err4_ok" CALL XtPopdown(GUIWIDGET(window, "errform4")) CASE "inf_ok" CALL XtPopdown(GUIWIDGET(window, "infoform")) CASE "Exit" BREAK ENDSELECT WEND
ENDSUB
Main_Function(Create_Gui())
Attachments:
|
|
|
Post by vovchik on Apr 26, 2020 13:54:57 GMT 1
Dear Peter, Looks good but I get a compile error as a result of this: ®$ in line 22. I think the forum's copy/paste function did not like something...and decided to autocorrect. With kind regards, vovchik
|
|
|
Post by Pjot on Apr 26, 2020 14:31:14 GMT 1
Thanks vovchik, As usual you are right - and how annoying this forum software sometimes is So I have changed the variable name, should be OK now...
Thanks again, Peter
|
|
|
Post by bigbass on Apr 26, 2020 14:33:34 GMT 1
I will adjust my side of the code to increase the entry to XmNheight=40 thanks for the demo looking good! Joe
|
|
|
Post by bigbass on Apr 26, 2020 17:14:50 GMT 1
ALIAS works on the lowlevel also we could shorten and baconize everything now another level of abstraction though
OPTION GUI TRUE PRAGMA GUI motif
ALIAS XmNlabelString TO XLABEL ALIAS XmStringCreateLocalized TO XSTRING ALIAS XmNrightAttachment TO XRIGHT ALIAS XmATTACH_WIDGET TO XATTACH ALIAS XmNtopAttachment TO XTOP ALIAS XmNleftAttachment TO XLEFT ALIAS XmNbottomAttachment TO XBOTTOM ALIAS XmNmessageString TO XMESSAGE ALIAS XmNdialogTitle TO XDIALOG_TITLE ALIAS XmNrightWidget TO RIGHT_WIDGET ALIAS XmNtopWidget TO TOP_WIDGET ALIAS XmNbottomWidget TO BOTTOM_WIDGET ALIAS xmFormWidgetClass TO XFORM_WIDGET ALIAS xmFrameWidgetClass TO XFRAME_WIDGET ALIAS xmTextWidgetClass TO XTEXT_WIDGET ALIAS xmLabelWidgetClass TO XLABEL_WIDGET ALIAS xmPushButtonWidgetClass TO XPUSH_BUTTON_WIDGET ALIAS xmToggleButtonGadgetClass TO XTOGGLE_BUTTON_WIDGET ALIAS xmFileSelectionBoxWidgetClass TO XFILE_BOX_WIDGET ALIAS xmMessageBoxWidgetClass TO XMESSAGE_BOX_WIDGET ALIAS sessionShellWidgetClass TO XSHELL_WIDGET ALIAS xmScrolledWindowWidgetClass TO XSCOLLED_WINDOW_WIDGET ALIAS XtUnmanageChild TO XUCHILD_WIDGET ALIAS XmToggleButtonSetState TO XTOGGLE_SET
SUB Find_Term
LOCAL dir$, re$, result$
CALL GUIGET(window, "dir", XtNvalue, &dir$)
IF LEN(dir$) = 0 THEN CALL XtPopup(GUIWIDGET(window, "errform1"), XtGrabNonexclusive) EXIT SUB ENDIF
IF FILETYPE(dir$) != 2 THEN CALL XtPopup(GUIWIDGET(window, "errform3"), XtGrabNonexclusive) EXIT SUB ENDIF
CALL GUIGET(window, "regex", XtNvalue, &re$)
IF LEN(re$) = 0 THEN CALL XtPopup(GUIWIDGET(window, "errform4"), XtGrabNonexclusive) EXIT SUB ENDIF
IF XmToggleButtonGetState(GUIWIDGET(window, "cse")) THEN OPTION COMPARE FALSE ELSE OPTION COMPARE TRUE ENDIF
result$ = SORT$(WALK$(dir$, 1|2, re$, XmToggleButtonGetState(GUIWIDGET(window, "rec")), NL$), NL$)
IF LEN(result$)= 0 THEN CALL XtPopup(GUIWIDGET(window, "errform2"), XtGrabNonexclusive) ELSE CALL XtPopup(GUIWIDGET(window, "infoform"), XtGrabNonexclusive) CALL GUISET(window, "result", XmNvalue, "===> " & BASENAME$(dir$) & " <===" & NL$ & result$ & NL$) ENDIF
ENDSUB
FUNCTION Create_Gui
window = GUIDEFINE( " \ { type=window name=window XmNtitle=\"Walk$ Front End\" XmNwidth=600 XmNheight=570 } \ { type=XFORM_WIDGET name=mainform parent=window } \ { type=XFRAME_WIDGET name=frame1 parent=mainform XmNborderWidth=0 XLEFT=XmATTACH_FORM XRIGHT=XmATTACH_FORM XTOP=XmATTACH_FORM } \ { type=XLABEL_WIDGET name=label1 parent=frame1 XmNframeChildType=XmFRAME_TITLE_CHILD XmNchildVerticalAlignment=XmALIGNMENT_CENTER } \ { type=XFORM_WIDGET name=form1 parent=frame1 XmNframeChildType=XmFRAME_WORKAREA_CHILD XmNborderWidth=0 } \ { type=XTEXT_WIDGET name=dir parent=form1 XBOTTOM=XmATTACH_FORM XLEFT=XmATTACH_FORM XmNheight=40 } \ { type=XPUSH_BUTTON_WIDGET name=Browse parent=form1 callback=XmNactivateCallback XBOTTOM=XmATTACH_FORM XRIGHT=XmATTACH_FORM XmNheight=40 XmNwidth=95 } \ { type=XFRAME_WIDGET name=frame2 parent=mainform XmNborderWidth=0 XLEFT=XmATTACH_FORM XRIGHT=XmATTACH_FORM } \ { type=XLABEL_WIDGET name=label2 parent=frame2 XmNframeChildType=XmFRAME_TITLE_CHILD XmNchildVerticalAlignment=XmALIGNMENT_CENTER } \ { type=XFORM_WIDGET name=form2 parent=frame2 XmNframeChildType=XmFRAME_WORKAREA_CHILD XmNborderWidth=0 } \ { type=XTEXT_WIDGET name=regex parent=form2 XLEFT=XmATTACH_FORM XmNheight=40 } \ { type=XPUSH_BUTTON_WIDGET name=Find parent=form2 callback=XmNactivateCallback XRIGHT=XmATTACH_FORM XmNheight=40 XmNwidth=95 } \ { type=XTOGGLE_BUTTON_WIDGET name=cse parent=form2 XLEFT=XmATTACH_FORM XBOTTOM=XmATTACH_FORM XmNheight=40 } \ { type=XTOGGLE_BUTTON_WIDGET name=rec parent=form2 XBOTTOM=XmATTACH_FORM XmNheight=40 } \ { type=XFRAME_WIDGET name=frame3 parent=mainform XmNborderWidth=0 XLEFT=XmATTACH_FORM XRIGHT=XmATTACH_FORM } \ { type=XLABEL_WIDGET name=label3 parent=frame3 XmNframeChildType=XmFRAME_TITLE_CHILD XmNchildVerticalAlignment=XmALIGNMENT_CENTER } \ { type=XFORM_WIDGET name=form3 parent=frame3 XmNframeChildType=XmFRAME_WORKAREA_CHILD XmNborderWidth=0 } \ { type=XSCOLLED_WINDOW_WIDGET name=scroll parent=form3 XLEFT=XmATTACH_FORM XRIGHT=XmATTACH_FORM XBOTTOM=XmATTACH_FORM XTOP=XmATTACH_FORM XmNscrollingPolicy=XmAPPLICATION_DEFINED XmNvisualPolicy=XmVARIABLE } \ { type=XTEXT_WIDGET name=result parent=scroll XmNeditMode=XmMULTI_LINE_EDIT XmNeditable=False XmNwordWrap=True XmNcursorPositionVisible=False } \ { type=XPUSH_BUTTON_WIDGET name=Clear parent=mainform callback=XmNactivateCallback XBOTTOM=XmATTACH_FORM XLEFT=XmATTACH_FORM XmNheight=40 XmNwidth=95 } \ { type=XPUSH_BUTTON_WIDGET name=Exit parent=mainform callback=XmNactivateCallback XBOTTOM=XmATTACH_FORM XRIGHT=XmATTACH_FORM XmNheight=40 XmNwidth=95 } \ { type=XSHELL_WIDGET name=fileform parent=window } \ { type=XFILE_BOX_WIDGET name=dialog parent=fileform callback=XmNcancelCallback,cancel callback=XmNokCallback,ok } \ { type=XSHELL_WIDGET name=errform1 parent=window } \ { type=XMESSAGE_BOX_WIDGET name=errdlg1 parent=errform1 callback=XmNokCallback,err1_ok XmNdialogType=XmDIALOG_ERROR } \ { type=XSHELL_WIDGET name=errform2 parent=window } \ { type=XMESSAGE_BOX_WIDGET name=errdlg2 parent=errform2 callback=XmNokCallback,err2_ok XmNdialogType=XmDIALOG_ERROR } \ { type=XSHELL_WIDGET name=errform3 parent=window } \ { type=XMESSAGE_BOX_WIDGET name=errdlg3 parent=errform3 callback=XmNokCallback,err3_ok XmNdialogType=XmDIALOG_ERROR } \ { type=XSHELL_WIDGET name=errform4 parent=window } \ { type=XMESSAGE_BOX_WIDGET name=errdlg4 parent=errform4 callback=XmNokCallback,err4_ok XmNdialogType=XmDIALOG_ERROR } \ { type=XSHELL_WIDGET name=infoform parent=window } \ { type=XMESSAGE_BOX_WIDGET name=infodlg parent=infoform callback=XmNokCallback,inf_ok XmNdialogType=XmDIALOG_INFORMATION } \ ")
CALL GUISET(window, "label1", XLABEL, XSTRING("Define directory")) CALL GUISET(window, "dir", XRIGHT, XATTACH, RIGHT_WIDGET, GUIWIDGET(window, "Browse")) CALL GUISET(window, "frame2", XTOP, XATTACH, TOP_WIDGET, GUIWIDGET(window, "frame1")) CALL GUISET(window, "label2", XLABEL, XSTRING("Define regex")) CALL GUISET(window, "regex", XRIGHT, XATTACH, RIGHT_WIDGET, GUIWIDGET(window, "Find")) CALL GUISET(window, "cse", XTOP, XATTACH, TOP_WIDGET, GUIWIDGET(window, "regex")) CALL GUISET(window, "cse", XLABEL, XSTRING("Case sensitive")) CALL GUISET(window, "rec", XLEFT, XATTACH, XmNleftWidget, GUIWIDGET(window, "cse")) CALL GUISET(window, "rec", XLABEL, XSTRING("Recursive search")) CALL GUISET(window, "frame3", XTOP, XATTACH, TOP_WIDGET, GUIWIDGET(window, "frame2")) CALL GUISET(window, "frame3", XBOTTOM, XATTACH, BOTTOM_WIDGET, GUIWIDGET(window, "Clear")) CALL GUISET(window, "label3", XLABEL, XSTRING("Results")) CALL GUISET(window, "Help", XmNsensitive, False) CALL GUISET(window, "Items", XmNsensitive, False) CALL GUISET(window, "ItemsList", XmNsensitive, False) CALL GUISET(window, "dialog", XDIALOG_TITLE, XSTRING("Select directory")) CALL GUISET(window, "errdlg1", XMESSAGE, XSTRING("No directory selected!")) CALL GUISET(window, "errdlg1", XDIALOG_TITLE, XSTRING("Error!")) CALL XUCHILD_WIDGET(GUIWIDGET(GUIWIDGET(window, "errdlg1"), "Cancel")) CALL XUCHILD_WIDGET(GUIWIDGET(GUIWIDGET(window, "errdlg1"), "Help")) CALL GUISET(window, "errdlg2", XMESSAGE, XSTRING("No files found!")) CALL GUISET(window, "errdlg2", XDIALOG_TITLE, XSTRING("Error!")) CALL XUCHILD_WIDGET(GUIWIDGET(GUIWIDGET(window, "errdlg2"), "Cancel")) CALL XUCHILD_WIDGET(GUIWIDGET(GUIWIDGET(window, "errdlg2"), "Help")) CALL GUISET(window, "errdlg3", XMESSAGE, XSTRING("Invalid directory selected!")) CALL GUISET(window, "errdlg3", XDIALOG_TITLE, XSTRING("Error!")) CALL XUCHILD_WIDGET(GUIWIDGET(GUIWIDGET(window, "errdlg3"), "Cancel")) CALL XUCHILD_WIDGET(GUIWIDGET(GUIWIDGET(window, "errdlg3"), "Help")) CALL GUISET(window, "errdlg4", XMESSAGE, XSTRING("No search terms defined!")) CALL GUISET(window, "errdlg4", XDIALOG_TITLE, XSTRING("Error!")) CALL XUCHILD_WIDGET(GUIWIDGET(GUIWIDGET(window, "errdlg4"), "Cancel")) CALL XUCHILD_WIDGET(GUIWIDGET(GUIWIDGET(window, "errdlg4"), "Help")) CALL GUISET(window, "infodlg", XDIALOG_TITLE, XSTRING("Information")) CALL GUISET(window, "infodlg", XMESSAGE, XSTRING("Search action ready.")) CALL XUCHILD_WIDGET(GUIWIDGET(GUIWIDGET(window, "infodlg"), "Cancel")) CALL XUCHILD_WIDGET(GUIWIDGET(GUIWIDGET(window, "infodlg"), "Help")) CALL XTOGGLE_SET(GUIWIDGET(window, "rec"), 1, 0)
RETURN window
ENDFUNCTION
SUB Main_Function(id)
LOCAL dir$, event$
WHILE TRUE event$ = GUIEVENT$(window) SELECT event$ CASE "Browse" CALL XtPopup(GUIWIDGET(window, "fileform"), XtGrabNonexclusive) CASE "ok" CALL GUIGET(window, "Text", XtNvalue, &dir$) CALL XtPopdown(GUIWIDGET(window, "fileform")) CALL GUISET(window, "dir", XtNvalue, dir$) CASE "cancel" CALL XtPopdown(GUIWIDGET(window, "fileform")) CASE "Find" CALL Find_Term CASE "Clear" CALL GUISET(window, "result", XmNvalue, "") CASE "err1_ok" CALL XtPopdown(GUIWIDGET(window, "errform1")) CASE "err2_ok" CALL XtPopdown(GUIWIDGET(window, "errform2")) CASE "err3_ok" CALL XtPopdown(GUIWIDGET(window, "errform3")) CASE "err4_ok" CALL XtPopdown(GUIWIDGET(window, "errform4")) CASE "inf_ok" CALL XtPopdown(GUIWIDGET(window, "infoform")) CASE "Exit" BREAK ENDSELECT WEND
ENDSUB
Main_Function(Create_Gui())
|
|