&ANALYZE-SUSPEND _VERSION-NUMBER UIB_v9r12 GUI &ANALYZE-RESUME &Scoped-define WINDOW-NAME C-Win &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS C-Win /*------------------------------------------------------------------------ File: proparse/launcher.w Description: Quick and dirty UI for launching Proparse tests and examples Input Parameters: Output Parameters: Author: John Green, Joanju Limited Created: 2001 ------------------------------------------------------------------------*/ /* This .W file was created with the Progress AppBuilder. */ /*----------------------------------------------------------------------*/ /* Create an unnamed pool to store all the widgets created by this procedure. This is a good default which assures that this procedure's triggers and internal procedures will execute in this procedure's storage, and that proper cleanup will occur on deletion of the procedure. */ CREATE WIDGET-POOL. /* *************************** Definitions ************************** */ /* Parameters Definitions --- */ /* Local Variable Definitions --- */ DEFINE VARIABLE attrList AS CHARACTER NO-UNDO INITIAL "linenum,filename":U. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE Window &Scoped-define DB-AWARE no &Scoped-define LAYOUT-VARIABLE C-Win-layout /* Name of first Frame and/or Browse and/or first Query */ &Scoped-define FRAME-NAME DEFAULT-FRAME /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS BtnDone BUTTON-2 BUTTON-3 BUTTON-4 BUTTON-5 ~ BUTTON-6 BUTTON-7 btnScanlister btnScanlisterHelp BUTTON-8 BUTTON-9 ~ BUTTON-10 BUTTON-11 BUTTON-12 BUTTON-13 /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* Define a variable to store the name of the active layout. */ DEFINE VAR C-Win-layout AS CHAR INITIAL "Master Layout":U NO-UNDO. /* *********************** Control Definitions ********************** */ /* Define the widget handle for the window */ DEFINE VAR C-Win AS WIDGET-HANDLE NO-UNDO. /* Definitions of the field level widgets */ DEFINE BUTTON BtnDone DEFAULT LABEL "&Done" &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN SIZE 15 BY 1 &ELSE SIZE 15 BY 1.15 &ENDIF BGCOLOR 8 . DEFINE BUTTON btnScanlister LABEL "Scanlister..." &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN SIZE 24 BY 1 &ELSE SIZE 24 BY 1.15 &ENDIF. DEFINE BUTTON btnScanlisterHelp LABEL "...does what?" &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN SIZE 17 BY 1 &ELSE SIZE 17 BY 1.15 &ENDIF. DEFINE BUTTON BUTTON-10 LABEL "Query No Undo..." &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN SIZE 24 BY 1 &ELSE SIZE 24 BY 1.15 &ENDIF. DEFINE BUTTON BUTTON-11 LABEL "...does what?" &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN SIZE 17 BY 1 &ELSE SIZE 17 BY 1.15 &ENDIF. DEFINE BUTTON BUTTON-12 LABEL "Test Single..." &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN SIZE 24 BY 1 &ELSE SIZE 24 BY 1.15 &ENDIF. DEFINE BUTTON BUTTON-13 LABEL "...does what?" &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN SIZE 17 BY 1 &ELSE SIZE 17 BY 1.15 &ENDIF. DEFINE BUTTON BUTTON-2 LABEL "Test Run..." &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN SIZE 24 BY 1 &ELSE SIZE 24 BY 1.15 &ENDIF. DEFINE BUTTON BUTTON-3 LABEL "...does what?" &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN SIZE 17 BY 1 &ELSE SIZE 17 BY 1.15 &ENDIF. DEFINE BUTTON BUTTON-4 LABEL "Code Print 1..." &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN SIZE 24 BY 1 &ELSE SIZE 24 BY 1.15 &ENDIF. DEFINE BUTTON BUTTON-5 LABEL "...does what?" &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN SIZE 17 BY 1 &ELSE SIZE 17 BY 1.15 &ENDIF. DEFINE BUTTON BUTTON-6 LABEL "Tokenlister..." &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN SIZE 24 BY 1 &ELSE SIZE 24 BY 1.15 &ENDIF. DEFINE BUTTON BUTTON-7 LABEL "...does what?" &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN SIZE 17 BY 1 &ELSE SIZE 17 BY 1.15 &ENDIF. DEFINE BUTTON BUTTON-8 LABEL "Query Length..." &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN SIZE 24 BY 1 &ELSE SIZE 24 BY 1.15 &ENDIF. DEFINE BUTTON BUTTON-9 LABEL "...does what?" &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN SIZE 17 BY 1 &ELSE SIZE 17 BY 1.15 &ENDIF. /* ************************ Frame Definitions *********************** */ DEFINE FRAME DEFAULT-FRAME BtnDone &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN AT ROW 1 COL 64 &ELSE AT ROW 1.27 COL 64 &ENDIF BUTTON-2 &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN AT ROW 4 COL 2 &ELSE AT ROW 3.69 COL 2 &ENDIF BUTTON-3 &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN AT ROW 4 COL 29 &ELSE AT ROW 3.69 COL 29 &ENDIF BUTTON-4 &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN AT ROW 5 COL 2 &ELSE AT ROW 5.04 COL 2 &ENDIF BUTTON-5 &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN AT ROW 5 COL 29 &ELSE AT ROW 5.12 COL 29 &ENDIF BUTTON-6 &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN AT ROW 7 COL 2 &ELSE AT ROW 6.54 COL 2 &ENDIF BUTTON-7 &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN AT ROW 7 COL 29 &ELSE AT ROW 6.54 COL 29 &ENDIF btnScanlister &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN AT ROW 8 COL 2 &ELSE AT ROW 8 COL 2 &ENDIF btnScanlisterHelp &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN AT ROW 8 COL 29 &ELSE AT ROW 8 COL 29 &ENDIF BUTTON-8 &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN AT ROW 9 COL 2 &ELSE AT ROW 9.35 COL 2 &ENDIF BUTTON-9 &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN AT ROW 9 COL 29 &ELSE AT ROW 9.35 COL 29 &ENDIF BUTTON-10 &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN AT ROW 11 COL 2 &ELSE AT ROW 10.81 COL 2 &ENDIF BUTTON-11 &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN AT ROW 11 COL 29 &ELSE AT ROW 10.81 COL 29 &ENDIF BUTTON-12 &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN AT ROW 12 COL 2 &ELSE AT ROW 12.19 COL 2 &ENDIF BUTTON-13 &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN AT ROW 12 COL 29 &ELSE AT ROW 12.19 COL 29 &ENDIF "Proparse Launcher" VIEW-AS TEXT &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN SIZE 54 BY 1 &ELSE SIZE 54 BY .62 &ENDIF &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN AT ROW 1 COL 2 &ELSE AT ROW 1.27 COL 2 &ENDIF "Quick and dirty UI for launching Proparse tests and examples" VIEW-AS TEXT &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN SIZE 59 BY 1 &ELSE SIZE 59 BY .62 &ENDIF &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN AT ROW 2 COL 2 &ELSE AT ROW 2.08 COL 2 &ENDIF WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY SIDE-LABELS NO-UNDERLINE THREE-D AT COL 1 ROW 1 SIZE 80 BY 14.46 DEFAULT-BUTTON BtnDone. /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: Window Allow: Basic,Browse,DB-Fields,Window,Query */ &ANALYZE-RESUME _END-PROCEDURE-SETTINGS /* ************************* Create Window ************************** */ &ANALYZE-SUSPEND _CREATE-WINDOW IF SESSION:DISPLAY-TYPE = "GUI":U THEN CREATE WINDOW C-Win ASSIGN HIDDEN = YES TITLE = "Proparse Launcher" HEIGHT = 14.46 WIDTH = 80 MAX-HEIGHT = 35.65 MAX-WIDTH = 204.86 VIRTUAL-HEIGHT = 35.65 VIRTUAL-WIDTH = 204.86 RESIZE = yes SCROLL-BARS = no STATUS-AREA = no BGCOLOR = ? FGCOLOR = ? KEEP-FRAME-Z-ORDER = yes THREE-D = yes MESSAGE-AREA = no SENSITIVE = yes. ELSE {&WINDOW-NAME} = CURRENT-WINDOW. /* END WINDOW DEFINITION */ &ANALYZE-RESUME /* *********** Runtime Attributes and AppBuilder Settings *********** */ &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES /* SETTINGS FOR WINDOW C-Win VISIBLE,,RUN-PERSISTENT */ /* SETTINGS FOR FRAME DEFAULT-FRAME */ /* _MULTI-LAYOUT-RUN-TIME-ADJUSTMENTS */ /* LAYOUT-NAME: "Standard Character" LAYOUT-TYPE: CHARACTER EXPRESSION: SESSION:DISPLAY-TYPE = 'TTY':U COMMENT: This layout is the standard layout specification for a customized Character based terminal. It is usually selected to modify a window that has a GUI based master layout. */ IF SESSION:DISPLAY-TYPE = 'TTY':U THEN RUN C-Win-layouts (INPUT 'Standard Character':U) NO-ERROR. /* END-OF-LAYOUT-DEFINITIONS */ IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(C-Win) THEN C-Win:HIDDEN = no. /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME C-Win &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL C-Win C-Win ON END-ERROR OF C-Win /* Proparse Launcher */ OR ENDKEY OF {&WINDOW-NAME} ANYWHERE DO: /* This case occurs when the user presses the "Esc" key. In a persistently run window, just ignore this. If we did not, the application would exit. */ IF THIS-PROCEDURE:PERSISTENT THEN RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL C-Win C-Win ON WINDOW-CLOSE OF C-Win /* Proparse Launcher */ DO: /* This event will close the window and terminate the procedure. */ APPLY "CLOSE":U TO THIS-PROCEDURE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME BtnDone &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL BtnDone C-Win ON CHOOSE OF BtnDone IN FRAME DEFAULT-FRAME /* Done */ DO: &IF "{&PROCEDURE-TYPE}" EQ "SmartPanel" &THEN &IF "{&ADM-VERSION}" EQ "ADM1.1" &THEN RUN dispatch IN THIS-PROCEDURE ('exit'). &ELSE RUN exitObject. &ENDIF &ELSE APPLY "CLOSE":U TO THIS-PROCEDURE. &ENDIF END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME btnScanlister &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL btnScanlister C-Win ON CHOOSE OF btnScanlister IN FRAME DEFAULT-FRAME /* Scanlister... */ DO: DEFINE VARIABLE filename AS CHARACTER NO-UNDO. DEFINE VARIABLE scanlister AS HANDLE NO-UNDO. DEFINE VARIABLE go AS LOGICAL NO-UNDO. IF OPSYS = 'UNIX':U THEN DO: RUN proparse/utilities/textprompt.w (INPUT "Enter the path and filename of the program to parse and list tokens for.~n", INPUT-OUTPUT filename ). IF RETURN-VALUE = "cancel" THEN RETURN. FILE-INFO:FILE-NAME = filename. IF FILE-INFO:FILE-TYPE = ? OR INDEX(FILE-INFO:FILE-TYPE, "F":U) = 0 THEN DO: MESSAGE "Invalid file name" VIEW-AS ALERT-BOX. RETURN. END. END. /* opsys = unix */ ELSE DO: ASSIGN go = NO. SYSTEM-DIALOG GET-FILE filename MUST-EXIST TITLE "Scanlister" UPDATE go. IF NOT go THEN RETURN. END. /* opsys <> unix */ &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN HIDE ALL. &ENDIF RUN proparse/utilities/scanlister.p PERSISTENT SET scanlister. RUN setScanFile IN scanlister (filename). RUN main IN scanlister. APPLY "CLOSE":U TO scanlister. &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN VIEW FRAME default-frame. &ENDIF END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME btnScanlisterHelp &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL btnScanlisterHelp C-Win ON CHOOSE OF btnScanlisterHelp IN FRAME DEFAULT-FRAME /* ...does what? */ DO: MESSAGE "Prompts for a program file to scan. Runs proparse/utilities/scanlister.p to display all nodes in the scan list. " VIEW-AS ALERT-BOX. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME BUTTON-10 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL BUTTON-10 C-Win ON CHOOSE OF BUTTON-10 IN FRAME DEFAULT-FRAME /* Query No Undo... */ DO: DEFINE VARIABLE proglist AS CHARACTER NO-UNDO. DEFINE VARIABLE logfile AS CHARACTER NO-UNDO. ASSIGN proglist = SESSION:TEMP-DIRECTORY + "joanju_proglist.txt". ASSIGN logfile = SESSION:TEMP-DIRECTORY + "joanju_qry_undo.out". OS-DELETE VALUE(proglist). OUTPUT TO VALUE(logfile). PUT UNFORMATTED logfile SKIP "Output from proparse/examples/query_noundo.p" SKIP(1). OUTPUT CLOSE. RUN proparse/utilities/build_proglist.p. IF SEARCH(proglist) = ? THEN RETURN. &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN HIDE ALL. &ENDIF RUN proparse/api/testrun.p (proglist, "proparse/examples/query_noundo.p"). OS-DELETE VALUE(proglist). RUN proparse/utilities/resultswindow.p (logfile). &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN VIEW FRAME default-frame. &ENDIF END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME BUTTON-11 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL BUTTON-11 C-Win ON CHOOSE OF BUTTON-11 IN FRAME DEFAULT-FRAME /* ...does what? */ DO: MESSAGE "Similar to Test Run, but also runs proparse/examples/query_noundo.p. Query_noundo.p finds DEFINE VARIABLE statements which do not specify NO-UNDO. " VIEW-AS ALERT-BOX. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME BUTTON-12 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL BUTTON-12 C-Win ON CHOOSE OF BUTTON-12 IN FRAME DEFAULT-FRAME /* Test Single... */ DO: DEFINE VARIABLE filename AS CHARACTER NO-UNDO. DEFINE VARIABLE testrun AS HANDLE NO-UNDO. DEFINE VARIABLE numErrors AS INTEGER NO-UNDO. DEFINE VARIABLE go AS LOGICAL NO-UNDO. IF OPSYS = 'UNIX':U THEN DO: RUN proparse/utilities/textprompt.w (INPUT "Enter the path and filename of the program to parse.~n", INPUT-OUTPUT filename ). IF RETURN-VALUE = "cancel" THEN RETURN. FILE-INFO:FILE-NAME = filename. IF FILE-INFO:FILE-TYPE = ? OR INDEX(FILE-INFO:FILE-TYPE, "F":U) = 0 THEN DO: MESSAGE "Invalid file name" VIEW-AS ALERT-BOX. RETURN. END. END. /* opsys = unix */ ELSE DO: ASSIGN go = NO. SYSTEM-DIALOG GET-FILE filename MUST-EXIST TITLE "Parse Test" UPDATE go. IF NOT go THEN RETURN. END. /* opsys <> unix */ &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN HIDE ALL. &ENDIF RUN proparse/api/testrun2.p PERSISTENT SET testrun. RUN setSingle IN testrun (filename). RUN setDeleteTemps IN testrun (FALSE). RUN setSelfTest IN testrun (FALSE). RUN main IN testrun. APPLY "CLOSE":U TO testrun. &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN VIEW FRAME default-frame. &ENDIF END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME BUTTON-13 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL BUTTON-13 C-Win ON CHOOSE OF BUTTON-13 IN FRAME DEFAULT-FRAME /* ...does what? */ DO: MESSAGE " This option is similar to 'Test Run', but it only parses a single program. This option is mainly intended to be used to help figure out why a compile unit fails to parse. ~n ~n It prompts you for a program name to parse. It then parses that program, checking for any parse errors. ~n ~n Please report any parsing errors to support@joanju.com. The most helpful thing that you could send us would be a snippet of Progress 4GL code that compiles, but which causes an error in Proparse. (Thank you!) " VIEW-AS ALERT-BOX. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME BUTTON-2 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL BUTTON-2 C-Win ON CHOOSE OF BUTTON-2 IN FRAME DEFAULT-FRAME /* Test Run... */ DO: DEFINE VARIABLE action AS CHARACTER NO-UNDO. DEFINE VARIABLE proglist AS CHARACTER NO-UNDO. ASSIGN proglist = SESSION:TEMP-DIRECTORY + "joanju_proglist.txt". OS-DELETE VALUE(proglist). RUN proparse/utilities/build_proglist.p. IF SEARCH(proglist) = ? THEN RETURN. RUN proparse/utilities/textprompt.w (INPUT "Enter the 'action program' to run on each file parsed, or blank for none.~n", INPUT-OUTPUT action ). IF RETURN-VALUE = "cancel" THEN RETURN. &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN HIDE ALL. &ENDIF RUN proparse/api/testrun.p (proglist, action). OS-DELETE VALUE(proglist). &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN VIEW FRAME default-frame. &ENDIF END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME BUTTON-3 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL BUTTON-3 C-Win ON CHOOSE OF BUTTON-3 IN FRAME DEFAULT-FRAME /* ...does what? */ DO: MESSAGE "Test Run is for testing that Proparse is able to parse your application source code without error.~n It prompts you for a directory name, and then builds a list of compilable program files, based on .r code found in that directory and any subdirectories below it.~n It also prompts you for an 'action program' (if any) to run against each file that has been parsed. You will probably just leave this blank.~n It then launches proparse/api/testrun.p, which takes care of parsing each of those, and checks for errors after each parse.~n~n Please report any parsing errors to support@joanju.com. The most helpful thing that you could send us would be a snippet of Progress 4GL code that compiles, but which causes an error in Proparse. (Thank you!) " VIEW-AS ALERT-BOX. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME BUTTON-4 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL BUTTON-4 C-Win ON CHOOSE OF BUTTON-4 IN FRAME DEFAULT-FRAME /* Code Print 1... */ DO: &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN HIDE ALL. &ENDIF RUN proparse/examples/codeprint1.p. &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN VIEW FRAME default-frame. &ENDIF END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME BUTTON-5 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL BUTTON-5 C-Win ON CHOOSE OF BUTTON-5 IN FRAME DEFAULT-FRAME /* ...does what? */ DO: MESSAGE "Code Print 1 (proparse/examples/codeprint1.p) prompts you for the name of a program to print.~n It then prints the program's code similar to PREPROCESS output, with these differences:~n - comments have been stripped~n - shows where include files begin and end " VIEW-AS ALERT-BOX. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME BUTTON-6 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL BUTTON-6 C-Win ON CHOOSE OF BUTTON-6 IN FRAME DEFAULT-FRAME /* Tokenlister... */ DO: DEFINE VARIABLE filename AS CHARACTER NO-UNDO. DEFINE VARIABLE tokenlister AS HANDLE NO-UNDO. DEFINE VARIABLE go AS LOGICAL NO-UNDO. IF OPSYS = 'UNIX':U THEN DO: RUN proparse/utilities/textprompt.w (INPUT "Enter the path and filename of the program to parse and list tokens for.~n", INPUT-OUTPUT filename ). IF RETURN-VALUE = "cancel" THEN RETURN. FILE-INFO:FILE-NAME = filename. IF FILE-INFO:FILE-TYPE = ? OR INDEX(FILE-INFO:FILE-TYPE, "F":U) = 0 THEN DO: MESSAGE "Invalid file name" VIEW-AS ALERT-BOX. RETURN. END. END. /* opsys = unix */ ELSE DO: ASSIGN go = NO. SYSTEM-DIALOG GET-FILE filename MUST-EXIST TITLE "Tokenlister" UPDATE go. IF NOT go THEN RETURN. END. /* opsys <> unix */ /* Prompt for the node attributes to display */ RUN proparse/utilities/attrs_prompt.w (INPUT-OUTPUT attrList). &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN HIDE ALL. &ENDIF RUN proparse/api/tokenlister.p PERSISTENT SET tokenlister. RUN setParseFile IN tokenlister (filename). RUN setDispAttr IN tokenlister (attrList). RUN main IN tokenlister. APPLY "CLOSE":U TO tokenlister. &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN VIEW FRAME default-frame. &ENDIF END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME BUTTON-7 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL BUTTON-7 C-Win ON CHOOSE OF BUTTON-7 IN FRAME DEFAULT-FRAME /* ...does what? */ DO: MESSAGE "Prompts for a program file to parse, and then prompts for a list of node attributes do display. Runs proparse/api/tokenlister.p to display all tokens in the syntax tree. Indents tokens depending on their depth in the tree. " VIEW-AS ALERT-BOX. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME BUTTON-8 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL BUTTON-8 C-Win ON CHOOSE OF BUTTON-8 IN FRAME DEFAULT-FRAME /* Query Length... */ DO: DEFINE VARIABLE proglist AS CHARACTER NO-UNDO. DEFINE VARIABLE logfile AS CHARACTER NO-UNDO. ASSIGN proglist = SESSION:TEMP-DIRECTORY + "joanju_proglist.txt". ASSIGN logfile = SESSION:TEMP-DIRECTORY + "joanju_qry_len.out". OS-DELETE VALUE(proglist). OUTPUT TO VALUE(logfile). PUT UNFORMATTED logfile SKIP "Output from proparse/examples/query_length.p" SKIP(1). OUTPUT CLOSE. RUN proparse/utilities/build_proglist.p. IF SEARCH(proglist) = ? THEN RETURN. &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN HIDE ALL. &ENDIF RUN proparse/api/testrun.p (proglist, "proparse/examples/query_length.p"). OS-DELETE VALUE(proglist). RUN proparse/utilities/resultswindow.p (logfile). &IF '{&WINDOW-SYSTEM}' = 'TTY':U &THEN VIEW FRAME default-frame. &ENDIF END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME BUTTON-9 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL BUTTON-9 C-Win ON CHOOSE OF BUTTON-9 IN FRAME DEFAULT-FRAME /* ...does what? */ DO: MESSAGE "Similar to Test Run, but also runs proparse/examples/query_length.p. Query_length.p finds LENGTH() functions calls which do not provide the second 'type' parameter: 'CHARACTER,' 'RAW,' or 'COLUMN'. You might want to do this as part of your effort to ensure that your application is unicode ready. " VIEW-AS ALERT-BOX. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK C-Win /* *************************** Main Block *************************** */ /* Set CURRENT-WINDOW: this will parent dialog-boxes and frames. */ ASSIGN CURRENT-WINDOW = {&WINDOW-NAME} THIS-PROCEDURE:CURRENT-WINDOW = {&WINDOW-NAME}. /* The CLOSE event can be used from inside or outside the procedure to */ /* terminate it. */ ON CLOSE OF THIS-PROCEDURE RUN disable_UI. /* Best default for GUI applications is... */ PAUSE 0 BEFORE-HIDE. /* Now enable the interface and wait for the exit condition. */ /* (NOTE: handle ERROR and END-KEY so cleanup code will always fire. */ MAIN-BLOCK: DO ON ERROR UNDO MAIN-BLOCK, LEAVE MAIN-BLOCK ON END-KEY UNDO MAIN-BLOCK, LEAVE MAIN-BLOCK: RUN enable_UI. IF NOT THIS-PROCEDURE:PERSISTENT THEN WAIT-FOR CLOSE OF THIS-PROCEDURE. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI C-Win _DEFAULT-DISABLE PROCEDURE disable_UI : /*------------------------------------------------------------------------------ Purpose: DISABLE the User Interface Parameters: Notes: Here we clean-up the user-interface by deleting dynamic widgets we have created and/or hide frames. This procedure is usually called when we are ready to "clean-up" after running. ------------------------------------------------------------------------------*/ /* Delete the WINDOW we created */ IF SESSION:DISPLAY-TYPE = "GUI":U AND VALID-HANDLE(C-Win) THEN DELETE WIDGET C-Win. IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI C-Win _DEFAULT-ENABLE PROCEDURE enable_UI : /*------------------------------------------------------------------------------ Purpose: ENABLE the User Interface Parameters: Notes: Here we display/view/enable the widgets in the user-interface. In addition, OPEN all queries associated with each FRAME and BROWSE. These statements here are based on the "Other Settings" section of the widget Property Sheets. ------------------------------------------------------------------------------*/ ENABLE BtnDone BUTTON-2 BUTTON-3 BUTTON-4 BUTTON-5 BUTTON-6 BUTTON-7 btnScanlister btnScanlisterHelp BUTTON-8 BUTTON-9 BUTTON-10 BUTTON-11 BUTTON-12 BUTTON-13 WITH FRAME DEFAULT-FRAME IN WINDOW C-Win. {&OPEN-BROWSERS-IN-QUERY-DEFAULT-FRAME} VIEW C-Win. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE C-Win-layouts _LAYOUT-CASES PROCEDURE C-Win-layouts: DEFINE INPUT PARAMETER layout AS CHARACTER NO-UNDO. DEFINE VARIABLE lbl-hndl AS WIDGET-HANDLE NO-UNDO. DEFINE VARIABLE widg-pos AS DECIMAL NO-UNDO. /* Copy the name of the active layout into a variable accessible to */ /* the rest of this file. */ C-Win-layout = layout. CASE layout: WHEN "Master Layout" THEN DO: ASSIGN &IF '{&WINDOW-SYSTEM}' NE 'TTY':U &THEN C-Win:HIDDEN = yes &ENDIF &IF '{&WINDOW-SYSTEM}' NE 'TTY' &THEN C-Win:HEIGHT = 14.46 &ENDIF. ASSIGN &IF '{&WINDOW-SYSTEM}' NE 'TTY':U &THEN FRAME DEFAULT-FRAME:HIDDEN = yes &ENDIF FRAME DEFAULT-FRAME:HEIGHT = 14.46. ASSIGN BtnDone:HIDDEN IN FRAME DEFAULT-FRAME = yes BtnDone:HEIGHT IN FRAME DEFAULT-FRAME = 1.15 BtnDone:ROW IN FRAME DEFAULT-FRAME = 1.27 BtnDone:HIDDEN IN FRAME DEFAULT-FRAME = no. ASSIGN btnScanlister:HIDDEN IN FRAME DEFAULT-FRAME = yes btnScanlister:HEIGHT IN FRAME DEFAULT-FRAME = 1.15 btnScanlister:HIDDEN IN FRAME DEFAULT-FRAME = no. ASSIGN btnScanlisterHelp:HIDDEN IN FRAME DEFAULT-FRAME = yes btnScanlisterHelp:HEIGHT IN FRAME DEFAULT-FRAME = 1.15 btnScanlisterHelp:HIDDEN IN FRAME DEFAULT-FRAME = no. ASSIGN BUTTON-10:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-10:HEIGHT IN FRAME DEFAULT-FRAME = 1.15 BUTTON-10:ROW IN FRAME DEFAULT-FRAME = 10.81 BUTTON-10:HIDDEN IN FRAME DEFAULT-FRAME = no. ASSIGN BUTTON-11:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-11:HEIGHT IN FRAME DEFAULT-FRAME = 1.15 BUTTON-11:ROW IN FRAME DEFAULT-FRAME = 10.81 BUTTON-11:HIDDEN IN FRAME DEFAULT-FRAME = no. ASSIGN BUTTON-12:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-12:HEIGHT IN FRAME DEFAULT-FRAME = 1.15 BUTTON-12:ROW IN FRAME DEFAULT-FRAME = 12.19 BUTTON-12:HIDDEN IN FRAME DEFAULT-FRAME = no. ASSIGN BUTTON-13:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-13:HEIGHT IN FRAME DEFAULT-FRAME = 1.15 BUTTON-13:ROW IN FRAME DEFAULT-FRAME = 12.19 BUTTON-13:HIDDEN IN FRAME DEFAULT-FRAME = no. ASSIGN BUTTON-2:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-2:HEIGHT IN FRAME DEFAULT-FRAME = 1.15 BUTTON-2:ROW IN FRAME DEFAULT-FRAME = 3.69 BUTTON-2:HIDDEN IN FRAME DEFAULT-FRAME = no. ASSIGN BUTTON-3:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-3:HEIGHT IN FRAME DEFAULT-FRAME = 1.15 BUTTON-3:ROW IN FRAME DEFAULT-FRAME = 3.69 BUTTON-3:HIDDEN IN FRAME DEFAULT-FRAME = no. ASSIGN BUTTON-4:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-4:HEIGHT IN FRAME DEFAULT-FRAME = 1.15 BUTTON-4:ROW IN FRAME DEFAULT-FRAME = 5.04 BUTTON-4:HIDDEN IN FRAME DEFAULT-FRAME = no. ASSIGN BUTTON-5:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-5:HEIGHT IN FRAME DEFAULT-FRAME = 1.15 BUTTON-5:ROW IN FRAME DEFAULT-FRAME = 5.12 BUTTON-5:HIDDEN IN FRAME DEFAULT-FRAME = no. ASSIGN BUTTON-6:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-6:HEIGHT IN FRAME DEFAULT-FRAME = 1.15 BUTTON-6:ROW IN FRAME DEFAULT-FRAME = 6.54 BUTTON-6:HIDDEN IN FRAME DEFAULT-FRAME = no. ASSIGN BUTTON-7:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-7:HEIGHT IN FRAME DEFAULT-FRAME = 1.15 BUTTON-7:ROW IN FRAME DEFAULT-FRAME = 6.54 BUTTON-7:HIDDEN IN FRAME DEFAULT-FRAME = no. ASSIGN BUTTON-8:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-8:HEIGHT IN FRAME DEFAULT-FRAME = 1.15 BUTTON-8:ROW IN FRAME DEFAULT-FRAME = 9.35 BUTTON-8:HIDDEN IN FRAME DEFAULT-FRAME = no. ASSIGN BUTTON-9:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-9:HEIGHT IN FRAME DEFAULT-FRAME = 1.15 BUTTON-9:ROW IN FRAME DEFAULT-FRAME = 9.35 BUTTON-9:HIDDEN IN FRAME DEFAULT-FRAME = no. ASSIGN FRAME DEFAULT-FRAME:VIRTUAL-HEIGHT = 14.46 WHEN FRAME DEFAULT-FRAME:SCROLLABLE &IF '{&WINDOW-SYSTEM}' NE 'TTY':U &THEN FRAME DEFAULT-FRAME:HIDDEN = no &ENDIF. ASSIGN &IF '{&WINDOW-SYSTEM}' NE 'TTY':U &THEN C-Win:HIDDEN = no &ENDIF. END. /* Master Layout Layout Case */ WHEN "Standard Character":U THEN DO: ASSIGN &IF '{&WINDOW-SYSTEM}' NE 'TTY':U &THEN FRAME DEFAULT-FRAME:HIDDEN = yes &ENDIF FRAME DEFAULT-FRAME:HEIGHT = 12 NO-ERROR. ASSIGN BtnDone:HIDDEN IN FRAME DEFAULT-FRAME = yes BtnDone:HEIGHT IN FRAME DEFAULT-FRAME = 1 BtnDone:ROW IN FRAME DEFAULT-FRAME = 1 BtnDone:HIDDEN IN FRAME DEFAULT-FRAME = no NO-ERROR. ASSIGN btnScanlister:HIDDEN IN FRAME DEFAULT-FRAME = yes btnScanlister:HEIGHT IN FRAME DEFAULT-FRAME = 1 btnScanlister:HIDDEN IN FRAME DEFAULT-FRAME = no NO-ERROR. ASSIGN btnScanlisterHelp:HIDDEN IN FRAME DEFAULT-FRAME = yes btnScanlisterHelp:HEIGHT IN FRAME DEFAULT-FRAME = 1 btnScanlisterHelp:HIDDEN IN FRAME DEFAULT-FRAME = no NO-ERROR. ASSIGN BUTTON-10:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-10:HEIGHT IN FRAME DEFAULT-FRAME = 1 BUTTON-10:ROW IN FRAME DEFAULT-FRAME = 11 BUTTON-10:HIDDEN IN FRAME DEFAULT-FRAME = no NO-ERROR. ASSIGN BUTTON-11:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-11:HEIGHT IN FRAME DEFAULT-FRAME = 1 BUTTON-11:ROW IN FRAME DEFAULT-FRAME = 11 BUTTON-11:HIDDEN IN FRAME DEFAULT-FRAME = no NO-ERROR. ASSIGN BUTTON-12:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-12:HEIGHT IN FRAME DEFAULT-FRAME = 1 BUTTON-12:ROW IN FRAME DEFAULT-FRAME = 12 BUTTON-12:HIDDEN IN FRAME DEFAULT-FRAME = no NO-ERROR. ASSIGN BUTTON-13:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-13:HEIGHT IN FRAME DEFAULT-FRAME = 1 BUTTON-13:ROW IN FRAME DEFAULT-FRAME = 12 BUTTON-13:HIDDEN IN FRAME DEFAULT-FRAME = no NO-ERROR. ASSIGN BUTTON-2:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-2:HEIGHT IN FRAME DEFAULT-FRAME = 1 BUTTON-2:ROW IN FRAME DEFAULT-FRAME = 4 BUTTON-2:HIDDEN IN FRAME DEFAULT-FRAME = no NO-ERROR. ASSIGN BUTTON-3:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-3:HEIGHT IN FRAME DEFAULT-FRAME = 1 BUTTON-3:ROW IN FRAME DEFAULT-FRAME = 4 BUTTON-3:HIDDEN IN FRAME DEFAULT-FRAME = no NO-ERROR. ASSIGN BUTTON-4:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-4:HEIGHT IN FRAME DEFAULT-FRAME = 1 BUTTON-4:ROW IN FRAME DEFAULT-FRAME = 5 BUTTON-4:HIDDEN IN FRAME DEFAULT-FRAME = no NO-ERROR. ASSIGN BUTTON-5:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-5:HEIGHT IN FRAME DEFAULT-FRAME = 1 BUTTON-5:ROW IN FRAME DEFAULT-FRAME = 5 BUTTON-5:HIDDEN IN FRAME DEFAULT-FRAME = no NO-ERROR. ASSIGN BUTTON-6:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-6:HEIGHT IN FRAME DEFAULT-FRAME = 1 BUTTON-6:ROW IN FRAME DEFAULT-FRAME = 7 BUTTON-6:HIDDEN IN FRAME DEFAULT-FRAME = no NO-ERROR. ASSIGN BUTTON-7:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-7:HEIGHT IN FRAME DEFAULT-FRAME = 1 BUTTON-7:ROW IN FRAME DEFAULT-FRAME = 7 BUTTON-7:HIDDEN IN FRAME DEFAULT-FRAME = no NO-ERROR. ASSIGN BUTTON-8:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-8:HEIGHT IN FRAME DEFAULT-FRAME = 1 BUTTON-8:ROW IN FRAME DEFAULT-FRAME = 9 BUTTON-8:HIDDEN IN FRAME DEFAULT-FRAME = no NO-ERROR. ASSIGN BUTTON-9:HIDDEN IN FRAME DEFAULT-FRAME = yes BUTTON-9:HEIGHT IN FRAME DEFAULT-FRAME = 1 BUTTON-9:ROW IN FRAME DEFAULT-FRAME = 9 BUTTON-9:HIDDEN IN FRAME DEFAULT-FRAME = no NO-ERROR. ASSIGN FRAME DEFAULT-FRAME:VIRTUAL-HEIGHT = 12.00 WHEN FRAME DEFAULT-FRAME:SCROLLABLE &IF '{&WINDOW-SYSTEM}' NE 'TTY':U &THEN FRAME DEFAULT-FRAME:HIDDEN = no &ENDIF NO-ERROR. END. /* Standard Character Layout Case */ END CASE. END PROCEDURE. /* C-Win-layouts */ &ANALYZE-RESUME