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: 

  • 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 either 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”, “Base Class”, and “Parent Class” columns in the grid 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 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.

 5.0.162 (2016-12-06)

  • There is a new filter checkbox that allows selection of only those rows that are "Code" rows (in the "Match Type" column), eliminating matches to file names, procedure, method, or property names, and so on.  This duplicates functionality already available in the Filter form while making it much more accessible and visible.
  • The Skip Files list, accessed in the Advanced form, now recognizes both wildcards and folder names,  (Note that the list only applies if the "Skip Files" checkbox is selected.)
The rules for this list are simple (and are contained in the file when you open it)
 
The file contains names of files and folders to be skipped: one per line, case insensitive, wildcards allowed
  -- File name (no path)
        Main.PRG
        FOO*.TXT
  -- Folders (with leading and trailing backslash)
        \Purchased\WestWind\
        \Temp*\
  -- Or combined
        \Temp*\*.txt

 

Prior updates:

 

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.

SNAGHTML15ac047b

 

The context on the new “History” button includes those options and two others having to do with the last saved search.

image

 

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

SNAGHTML15bb4071

 

You can also use the GoFish Janitor to automatically delete old searches by setting values on the Janitor page on the Options form.

image

 

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”.

SNAGHTML15d973d4

 

Note also the other checkboxes at the bottom of this form, where you can enable wildcards (* and ?) or the use of a leading ! (for NOT)

You can always use logical connectives |AND| or |OR| within any filter text box to form compound statements, although parentheses are not recognized. You can simply use | instead of |OR|, as in regular expressions.

The context menu for rows of the grid provides additional filtering mechanisms (where appropriate), which equate to clicking on nodes in the Treeview:

image

 

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.

  • 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.

SNAGHTML15c7e0ed

 

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.

image

 

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

clip_image002

 

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.

Last edited Dec 6, 2016 at 7:21 PM by mattslay, version 27

Comments

KoenPiller Sep 13, 2016 at 5:33 AM 
Hi,
Hmm problem is solved by simply restarting VFP.
Regards,
Koen

KoenPiller Sep 12, 2016 at 4:28 AM 
Hi,
This seems to be a good update on an already fine working application!
One thing: when a prg is found to contain the searched for expression and when you than double click on either the prg name in the treeview or on any textbox in the grid an empty form, with the prg name appears, initialy only with one black thick cursor and on a second click a completely blank form. Is this done on purpose? And if so what is the use for that blank form?
Regards,
Koen