GUI part 2

>> << Ndx Usr Pri Phr Dic Rel Voc !: wd Help Primer

# GUI

The GUI part of the application is specified as follows:

The form should have a File button, a Close button, and a multiline edit control. The File button allows the user to select a text file. The report on the selected text file is displayed in the multiline edit control.

You need to design the form and define the event handlers.

The GUI definitions will be in a different script from the DP definitions to keep clear the distinction between the two parts. Create a new script file and save it as user\textgui.ijs. Start the form editor and design the form. The File button should have an id of `file` and the Close button should have an id of `close`. The large edit control is a multiline edit control that has a class of `editm` in the New Control dialog. The multiline edit control should have an id of `editm` (the default is `cceditm` , so you must specify `editm` ). The form should look like the following:

You need to add event handlers for the Close and File buttons. The code for the event handlers is in the following listing. This listing should be similar to your final textgui.ijs script.

    FILEREP=: noun define
    pc filerep;
    xywh 9 7 34 14;cc file button;cn "File";
    xywh 47 7 34 14;cc close button;cn "Close";
    xywh 9 27 119 134;cc editm editm ws_border es_autovscroll;
    pas 6 6;pcenter;
    rem form end;
    )

    filerep_run=: 3 : 0
    wd FILEREP
    NB. initialize form here
    wd 'pshow;'
    )

    filerep_close_button=: 3 : 0
    wd'pclose'
    )

    filerep_file_button=: 3 : 0
    p =. '"" "" "" "Text(*.txt)|*.txt" ofn_filemustexist'
    fn =. wd 'mbopen ' , p
    if. 0 ~: #fn do.
     wd 'set editm *' , report fn end.
    )

The only part that is new is the use of the `wd` command `mbopen`. This command brings up the common file open dialog box that allows the user to select a file. Local `p` contains the parameters for the `mbopen` command. These parameters are critical and must be defined properly. If you want to know more about the `mbopen` parameters, you can check in the J Online Documentation.

The result of the `mbopen` command is the file name selected by the user. If the user pressed cancel in the open dialog the result will be an empty string and there is nothing to do. If `fn` is not empty then you execute `report fn` to generate the report and set it into the `editm` control.

The `*` in the line `wd 'set editm *' , report fn end.` indicates that the rest of the string, which is the result of `report fn`, is the data to set into the `editm` multiline edit control.

Run the textdp.ijs and textgui.ijs scripts and then start the application.

       filerep_run 0

Press the File button and select your user\text.txt file and press OK. Try other text files.

The application uses definitions from four scripts: textdp.ijs, textgui.ijs, files.ijs, and misc.ijs. It makes sense to create a single script that will load all the scripts and then run the application.

Create a new script file, save it as user\textapp.ijs, and add the following lines.

    NB. this application reports file character frequencies
    load 'files'
    load 'misc'
    0!:0 < 'user\textdp.ijs'
    0!:0 < 'user\textgui.ijs'
    filerep_run 0

Save the script. Close J and restart it to get a clean slate. Run the application by using Run|File to run the script user\textapp.ijs.

>> << Ndx Usr Pri Phr Dic Rel Voc !: wd Help Primer