Tuesday, June 7, 2011

June 14, 2011--Jim Nelson on Thor--6:30 PM

This month's meeting will begin at 6:30 PM; feel free to come as early as 6 PM and bring dinner.

We will be joining with the Chicago FoxPro Users and Developers Group for a remote presentation by Jim Nelson titled "To boldly go where no VFP'er has gone before -- the Tools of Thor." This will be the first of this year's Southwest Fox preview sessions.

Jim Nelson is a relative newcomer to the FoxPro world. He spent the first thirty years of his professional life programming in APL, a long-since extinct programming language. For the last twenty of those years, he worked for a company that sold Workers' Compensation Self-Insurance. During those years, he had a reputation throughout the APL community as a tool builder for utilities not available within the APL language.

His VFP career began in 2003, working for the Kong Company in Golden, Colorado. He now works full-time for them, acting as their software development department.

His involvement in VFPx projects (such as Thor, PEM Editor, and FoxCharts) mirrors his earlier interest in developing programmers' tools. He has been a presenter at SWFox once before, in 2009.

Jim lives in Newbury Park, California, with his wife of 38 years.

Abstract: There are a number of valuable tools that are available in other development environments, but are sadly lacking in FoxPro's own IDE. For some time, there has been a considerable effort afoot to expand the list of IDE tools by reproducing (where possible) the tools from other IDEs (such as Visual Studio), by building on and enhancing existing tools, and by creating brand new tools appropriate to FoxPro.

The most visible of these new tools is named Thor. Thor is a tool for managing add-on tools in the IDE. It provides a unified method for registering other tools, simplifying the task of disseminating them, and a user interface to control the assignment of hot keys and developer-defined menus. The UI provides four different methods for accessing these tools:

* By assigning hot keys to them
* By creating pop-up menus accessible via hot keys
* By adding them as bars under any of the VFP system pads (File, Edit, View, etc.)
* By creating new pads in the VFP system menu and adding them as bars under these new pads

Unlike the normal limited set of hot keys available from ON KEY LABEL, Thor provides for the full range of multiple-keystroke combinations (Ctrl + Alt + A, for instance).

This session will start by showing how to install and start using Thor, how to use its UI to assign hot keys and create menus and submenus, and how to use Thor to simplify access to your own private tools. We'll also delve into some of the more interesting details on how Thor works.

Using Thor as the backbone for the remainder of the session, we will explore published tools that can be made accessible in Thor, with particular emphasis on the tools mentioned in the first paragraph. The result of the work mentioned here is a suite of tools that provides a large number of features never before available in VFP. You will find that these tools will rapidly become indispensable in your day-to-day programming life.

There is a lengthy list of tools that will be covered, including the following:

* GoToDefinition: When editing code, you can go to the definition of a method, property or object, PRG file, procedure or function in a PRG file, constant (created by #Define), class or form with a single keystroke.

* GoToDefinition #2: When editing code, you can create new properties or methods with a single keystroke (and begin editing the method immediately, if desired).

* ExtractToMethod: When editing code, you can highlight a block of text and extract it to a new method (yes, with a single ...).

* BeautifyX: Apply native VFP Beautify and more: provide standard within-line spacing, choose standard operators for string delimiters and others, auto align assignments on consecutive lines, create LOCAL statements, and impose standard formatting on SQL-Select, Update and Replace statements, with a wide range of customization available.

* Compare objects with other objects or their parent class, change their parent class, or edit their parent class.

* Use the Format form, which provides enhanced options to the Format pad in the VFP system menu.

* And many, many more...