What’s New in GoFish 5
GoFish 4 introduced the blindingly fast GoFish Search Engine.
In GoFish 5, the Search Engine is essentially unchanged, but a suite of improvements provide a range of new features: (I think that the bold bullets below should be linked to their detail further on, but I always forget how to do that)
- Saved Search History– You can now save the history of your searches, either automatically (for all searches) or selectively, and can restore the search parameters and results grid from these saved searches. You can also selectively delete your saved searches or use the GF Janitor to automatically delete old ones.
- More powerful filter options– You can filter on secondary matches in the code “in the neighborhood” (that is, in the same statement or same procedure) of the original match; the filter form has been re-organized to provide clarity; and filters can be combined using logical operators AND or OR.
- Handling of PRG-based classes– Special attention has been paid to matches in PRG-based classes, which now are treated as much as possible like VCX-based classes. Their names appear in the “Class” column (are there other columns?) and also in the new category “Classes” in the Treeview.
- Treeview changes– There are a few new categories: “Classes”, “Menus”, and “Projects”. The “Classes” category, unlike all the other categories which have files as sub-nodes, has classes as the sub-nodes.
- Column Changes – There are two new columns, “Parent Class VCX” and “Containing Class”; the column headings for some of the other columns have been reworded; and the contents of some of the class-related columns have been enhanced.
- Plug-In to control the grid display– You can set the use the plug-in to set the Dynamic* (or any other) properties of the grid. The sample provided changes the colors used for each row.
- Other UI changes– There are many, many other UI changes, including the ability to select the location of the Code View window relative to the grid.
Saved Search History
You can save the history of your searches, either automatically (for all searches) or selectively, and can restore the search parameters and results grid from these saved searches. When search results are restored, the results grid and all search parameters (as are now visible at top right of the form) are restored to their saved values. You can also selectively delete your saved searches or use the GF Janitor to automatically delete old ones.
On the Preferences page of the Options form you can enable the retention of your saved searches and also whether the most recent saved search is to be restored when you start GoFish.
The context on the new “History” button includes those options and two others having to do with the last saved search.
Clicking the “History” button brings up the form from which you can choose which saved search to restore, showing when it was saved, what was searched for, what project or folder was searched, and how many matches were found. Double-clicking a row causes the row to be restored. You can also delete rows singly by clicking the row and then the “Delete” button
You can also use the GoFish Janitor to automatically delete old searches by setting values on the Janitor page on the Options form.
More powerful filter options
The Filter Builder has been re-designed, using a pageframe with six pages to show related search terms together. If there are changes on any page, the caption of that page turns red.
The first page shows four new (and closely related) filter options.
The “Within Same Statement” option, which replaces the “MatchedLine” filter from GoFish 4, allows you to find a secondary match in the same statement, spanning multiple physical lines. All text within a TEXT/ENDTEXT block is also treated as a single statement, useful if you use TEXT/ENDTEXT to create SQL statements.
Similarly, “Within Same Procedure” allows you to find a second match in the same Procedure / Function / Method.
There are also two self-explanatory options, “Only show first match in each STATEMENT” (using the same definition of statement as explained above) and “Only show first match in each STATEMENT”.
Note also the other checkboxes at the bottom of this form. You can enable wildcards (* and ?), the use of a leading ! (for NOT), and use logical connectives |AND| or |OR| within any filter text box.
The context menu for rows of the grid provides additional filtering mechanisms (where appropriate), which equate to clicking on nodes in the Treeview:
Handling of PRG-based classes
Special attention has been paid to matches in PRG-based classes, which now are treated as much as possible like VCX-based classes. Their names appear in the “Class”, “Base Class”, and “Parent Class” columns in the grid and also in the new category“Classes” in the Treeview.
Treeview Changes:
The Treeview on the left now has the following categories:
- Classes
- ClassLibs
- Forms
- Programs
- Reports
- Tables
- Projects
- Other
The “Classes” category shows the names of classes, found in either PRGs or VCXs. Nodes for PRG-based classes only appear under the “Classes” category. Nodes for VCX-based classes appear under the “Classes” category and also under the “ClassLibs” category.
As before, clicking on any node in the Treeview filters the results grid appropriately.
Column Changes:
There are two new columns, “Parent Class VCX” and “Containing Class”. While you can choose to display all 30+ columns in the results grid, the following columns (some with slightly modified captions) contain the most relevant search information.(perhaps re-ordered? did I miss any)
- Match Line
- Match Type (“Code”, “Property Def”, “Method Def”, and so on)
- Method/Property Name (name of the Method, Procedure, Method, or Property where match found)
- Name (name of the object where match found … (any other use? If not, why not “Object Name”?)
- Class (in which match found, including both PRG ad VCX-based classes)
- Base Class (of the object in which match was found)
- Parent Class (of the object in which match was found)
- Parent Class VCX (of the object in which match was found)
- Containing Class
- File Name
- File Name with Path
- Timestamp (for VCXs and SCXs, timestamp when the row in the VCX/SCX was saved)
- <!--EndFragment-->
- <!--EndFragment-->
Plug-In to control the grid display
There is a plug-in PRG, accessible through Thor, which can be used to control the look and feel (that is, Dynamic* properties) of the results grid. This is accessed via the Thor | More | Manage Plug-Ins menu, which brings up Thor’s Manage Plug-Ins dialog. The default plug-in provides some examples so you can see how simple it is to manipulate the grid properties.
Other UI Changes
There are extensive UI changes, initiated by the investigation of the location of the Code View window relative to the grid.
In GoFish 4, the Code View window sits below the grid, in a window that is short and (relatively) wide, pretty much the opposite of normal code windows which are more tall than wide.
The combobox just above the left corner of the Code View window allows you to choose where the window lives, relative to the grid. Choosing to place the window to the left or right of the grid may produce pleasing results, particularly if have ample horizontal space over multiple monitors.
There are additional command buttons to the right of the combobox, each explained in its tooltip.
There are five new icons above the left corner of the grid, each explained in its tooltip. They appear when appropriate. Briefly:
- Edit (same as double-clicking a row in the grid)
- Open Class Browser (if the current row is from a VCX)
- “Select Object” -- if the current row is for a method or property of an object contained in a class or form, clicking it opens it (like “Edit”, above) and an attempt is made to select that object. This might not work if the object is not selectable by clicking, as may happen with pageframes or overlapping objects.
- “Open Folder” opens the folder in Windows Explorer.
- “Menu display” – if the current row is to a match in a menu, displays a text file showing all the menu items, highlighting the option corresponding to the current row.
Clicking the “Export” button provides three different options for exporting the current results grid
Finally, GoFish 5 now allows you to sort on three columns. The first time you click a column to sort, it sorts on that column, as expected. Clicking on a second header makes that column the primary sort, and the previous sort a secondary sort. Clicking on a third header makes the new column the primary, and the previous two columns the secondary and third sort order. It only allows sorting on three columns.
Additionally, the results grid in GoFish 5 can be sorted by using a context menu from the column headers. You can select a column to be the primary sort, secondary sort, or reset the sort order to the default sort implemented by GoFish.