Welcome!
 Top Next
gbSnippets is an easy-to-use freeware utility that can save and organize any kind of text information - if you can type it, gbSnippets can store it, including single-line and multi-line data. It includes powerful search features that enable you to quickly locate the information you need! Use it for phone numbers, birthdays, recipes, group lists, diaries (encryption is supported) - anything you want to save and search! gbSnippets provides the ability to share your information via email or by exporting the information as HTML to post on the web!

Key features include:
- Tree-Style Organization - Powerful Search (AND, OR)
- Active URLs - Multiple Layouts
- Custom Fonts/Colors - Export to HTML
- Email to Friends - Bookmarking
- Date/Time Stamping - Library Synchronization
- File Encryption - Online Updates

Snippet Libraries
gbSnippets is distributed with several snippet libraries of general interest, including

- 411.gbs area/zip codes, federal government agencies, airlines, hotels and rental cars
- entertain.gbs movie and science fiction book recommendations
- recipes by Chef Nancy

Programmer Support
gbSnippets also offers a special set of optional features for programmers. It is a powerful code librarian with syntax highlighting and other editing features and software analysis tools specifically written to work with source code. Multiple languages are supported and snippet libraries are provided for several languages.

The programmer/code librarian features are hidden by default - kept out of the way unless needed - but available at the press of single button!

Games & Graphics
As a special bonus, gbSnippets provides several built-in games and graphics programs to provide you with amusements for those moments when you get bored - work a while, play a while! There are also some very useful, but simple to use, financial planning tools

Here's what is currently in gbSnippets.

- Text Stereogram - Lifetime Financial Planner
- Mosaic Stereogram - Stock Market Simulator
- 3D Models / Lathe


Main Window

Description
 Previous Top Next
gbSnippets allows a user to store lines/paragraphs of text data (called snippets), using a familiar tree-structure to organize and display the information.

Once entered, the information may be displayed or searched in a variety of ways. Information can be viewed, edited, placed on the clipboard, sent by email, converted to HTML for posting on the web, saved as wallpaper, merged with other gbSnippets files, synchronized to libraries on the web, and printed. Snippet libraries encryption is supported.

gbSnippets's main window (below) consists of 3 basic areas - the tree structure (left), the detailed content of the currently selected tree node (right), and a listing of the snippets resulting from searches (bottom). Just above the tree structure is where search terms may be entered, to produce a list of matching snippets. The tree, textbox, and listbox are the primary areas where information is displayed. The menus, context menus, toolbar, and search controls are used to control the display of information.

Each tree item (node) represents text - one line, several lines, or even many paragraphs. The top line of the text is used to populate the tree node titles. You can edit the top line in-place within the tree, or simply edit it in the textbox. gbSnippets will synchronize your inputs!

URL's found in the textbox are active - they may be clicked to open the selected URL in your default browser. URLs can also point to other snippets in the current library.

Using Boolean (AND, OR) or exact search criteria, all snippets matching the search are displayed in the listbox at the bottom of the screen. Navigation buttons, found next to the combobox where the search term was entered, are used to walk through the list of matching snippets.

In addition to the Tree Search (identifying a list of snippets which contain the search term), a TextBox Search is also available which searches (and highlights) the content of the currently selected snippet.

Snippets can be bookmarked. Then, a list of bookmarked snippets can be displayed in the listbox. In addition to bookmarks, one node may be designated as the home node, to which the tree can be returned at any time.

gbSnippets supports several layout options - positioning of the 3 main sections and optionally hiding the search results listbox.

gbSnippets has one main menu, one main toolbar, and three context menus (one for the tree, node content textbox, and search results listbox. The menu options are discussed in detail below.

gbSnippets opens a single file at a time (multiple open files are not supported). Also, a file is always opened in gbSnippets. When first started, gbSnippets creates a default file or opens the previously opened file. If an attempt is made to open a file that does not exist or is an invalid file, gbSnippets will create a default file for viewing.

To make it easy to switch between commonly used snippet libraries, the main toolbar has 3 QuickOpen selections, to which the user can assign a file name and display title.


Installation
gbSnippets is distributed as a single file, "gbSnippets_install.zip". Simply place the file in a folder of your choice and unzip the file to extract the gbsnippets.exe and supporting files.

The following folder structure is created when the installation file is unzipped.

.

I suggest putting it in c:\program files\, where it will create a subfolder "gbsnippets". However, there is no requirement to use any particular folder.

gbSnippets does not use the Windows registry. To remove gbSnippets from your system, simply delete the folder in which it resides, but be sure to save any data files!


Layout Options
gbSnippets provides several ways to customize the layout to match the way you like to view the data.

Alternate Layout
By default, the search result listbox is shown at the bottom of the main window, stretching all the way across the window. Using the "Options/Alternate Layout" menu option, the node content textbox can be made to extend from the top to bottom of the main window. This limits the width of the search results listbox.

Standard Layout Alternate Layout

The standard layout display more information in the results of a Tree search, whereas the alternate layout displays as much of the textbox content as possible.

Hiding the Search Results ListBox

When a Tree Search is performed, the list of matching snippets is shown in the Search Results listbox. This provides a convenient list of matching snippets, from which the user can select a desired snippet to view. However, when no search is in work it may be convenient to hide the Search Results listbox.

The "Options/Show Search Results" menu option or the toolbar "List" button can be used to hide/show the Search Results listbox. Hiding the listbox provides the maximum view of the contents of the Tree, which can be desirable when visually browsing the Tree for snippets of interest.

When the Search Results are hidden, both the default and alternate layouts look the same - only the Tree and node content textbox are shown.
Search Results ListBox Not Shown

Fixed Splitter Bars
gbSnippets uses both vertical and horizontal splitter bars to adjust the size of the various sections of the display. Normally, the splitter bars will maintain their relative position if the main window is resized.

The "Options/Fixed Splitter Bars" menu option allows the user to lock the position of the splitter bars. When used, this option fixes the distance from the left side of the main window to the vertical splitter bar. It also fixes the distance from the bottom of the main window to the horizontal splitter bar.

This option can ensure that the content of the Tree is always in view, as well as to provide a maximum viewing area for the node content textbox as the window is resized.


Sharing Snippets
gbSnippets provides several ways in which you can share your snippets with others.

Email Sharing
Once you create a list of email recipients, using the "Help/Send Email To..." menu option, you can use gbSnippets to open your default email client with a message pre-addressed to anyone on the list. The content of the snippet (or just the selection, if one has been made) is placed on the clipboard, ready to be pasted into the email body at your convenience.

Future versions of gbSnippets will allow you to send the email directly, without having to work through your default email client.

HTML Sharing
You can export a single node, or even the entire tree to HTML format. When exporting an entire tree (or node with children), each snippet gets its own file. gbSnippets will also create an index page containing a link to each of the individual snippet files.

All of the exported snippets are placed in a subfolder called "HTML", placed beneath the folder where gbSnippets was installed, with no other files. Any pre-existing files contained in the folder are deleted when an export is done. This simplifies finding the newly created files and makes it easy to select/copy/move files as desired.

Future versions of gbSnippets will include the ability to FTP the files directly to your website.


Encryption
gbSnippets allows snippet data files to be encrypted. The current encryption method uses a password string to encrypt the file. Currently, a fairly simple encryption method is used. Future versions of gbSnippets will include stronger encryption algorithms.

However, the mechanism for handling encrypted files will be the same. A user creates a file, adds content, assigns a password and then saves the file. The assigned password will be used to encrypt the content and save it to disk.

gbSnippet can recognize when a file is encrypted. When an encrypted file is opened, the user will be asked to supply the password. When the file is saved, the password will be used again, unless the user changes the password before saving it.

Once the file is opened, the password can be changed or cleared. When a password is cleared, the next time the snippet file is saved, it will be saved unencrypted.

Note:When Windows saves a file it can write the file anywhere on the disk - not necessarily overwriting an earlier saved copy. So if you've previously saved your data as unencrypted, then save it again as encrypted, the hard drive may contain a recoverable copy of the unencrypted data. If this is of concern to you, I suggest using one of the many available utilities which erase unused portions of hard drives.

Also, when you export content of an encrypted file to RTF/HTML, be aware that the exported RTF/HTML files are not encrypted.


QuickOpen
Although mentioned above in the Toolbar section, the QuickOpen feature of gbSnippets deserves more discussion. There are 5 buttons on the toolbar, to which a user can assign a library. Pressing one of those buttons opens the assigned library. So switching between often-used library files is very simple and very quick.

By default, the toolbar items are simply labeled "a", "b", "c", "d", and "e" (see image). The user may rename the toolbar items, as in the second image.

Default Labels Custom Labels

When switching to a new file using QuickOpen, the user will be prompted to save any existing changes to the currently opened library.

When the File/Select FileA (or B-E) menu options are chosen, the user is prompted to select the desired library file. Then the user is also asked to provide an up-to-7 letters title for the library file. That title will be displayed in the toolbar.


Active Links
gbSnippets supports hypertext links. Just as in a browser, the Internet links are highlighted and underlined, needing only to be clicked to open the link location. With gbSnippets, however, links may also points to other snippets within the current library.

Active URL Link (Internet)
This works exactly as you would expect. Simply type in a typical HTTP address and the link will be active. Click on the link to open the URL in your default Internet browser. See the example in the image below.

Active Snippet Link
A snippet link looks either of the bottom two links in the image above:

The gbl format points (is an active link) to another snippet which contains a gbs#. The gbj format points (is an active link) to a snippet which contains a gbu#.

A gbs# is simply a unique number assigned to all snippet distributed with gbSnippets. A gbu# is a unique number assigned to a snippet by a user. A snippet can contain either or both unique numbers.

In addition to being useful for links, a gbs# and a gbu# can be useful for synchronizing local snippet libraries with server libraries.

The use gbs# and gbu# is discussed in more detail later in this Help file.


Menu Summary
Like most Windows programs, gbSnippets provides a wide selection of menu options. Here's a summary listing of the menus and submenus available from the menu bar. Individual menus are discussed further down this page.

File Menu
File
New
Open
Save
Save As
-----
Print Selected Node
Print Selected Node+Children
Print Node+Children (Titles)
Print Search Results (Titles)
Reload
-----
Import Data
Export Node to HTML
Export Node+Children to HTML
Shell To..
DOS
Open
Explorer
-----
Select FileX ...
Select FileY ...
Select FileZ ...
-----
Clear Open File MRU
Clear Search Term MRU
-----
Exit

Edit Menu
Cut
Copy
Paste
Delete
-----
Select All
-----
Edit TreeView Label
-----
Search Snippet (Textbox)

Actions Menu
Screen Capture
Dialog Capture
Set Wallpaper
-----
Time-of-Day Alarm
Countdown Timer
Elapsed Time
-----
TimeStamp Selected Node
UnTimeStamp Selected Node
-----
TimeStamp Node+Children
UnTimeStamp Node+Children
-----
Set Password
Clear Password
-----
Select as Compare Left
Select as Compare Right
Display Comparison
-----
Synchronize With gbSnippets Server
Synchronize With User Server

Options Menu
Confirm Delete -----
AutoSave Changes on Exit
Save Settings on Exit
Load Last File on Startup
Enable URL Highlighting
Import as Single Node
InSitu Import
Convert TABs to Spaces in HTML Export
Open HTML on Export
Recommend Password
-----
Alternate Layout
Fixed Splitter Bars
No Size Limits
File Name in Caption
-----
Save Tree Position
AutoEdit Tree Label
Tree Icons
Hide Root
-----
Large Print Title
-----
Show Search Results
AutoShow Search Results
Case Sensitive Search
Include Parent Title in Search
Search While Typing
-----
Clear Settings on Exit
On Top
-----
Indentation
Tab-2-Spaces
-----
Programmer Features

Format Menu
Std Font
Std Bold Font
Std Fixed Font
Custom Font
-----
Black & White
Custom Color
Preset Color 1
Preset Color 2
Preset Color 3
-----
Select Custom Font
Select Custom FG Color
Select Custom BG Color
-----
Std Font Size +
Std Font Size -
-----
Custom Font Size +
Custom Font Size -
-----
Font Information

Amusements Menu
Text Stereogram
Mosaic Stereogram
Matrix Screen Saver
-----
3D Models
-----
Lifetime Financial Planner
Stock Market Simulator

Help Menu
Send Email To..
Author
New Recipient
Get Daily Message
Local Help
Online Help
Web Site
-----
Online Update
Go-Do List
-----
About


File
gbSnippets files are text files which contain the snippet and the information needed to create the Tree display of the information. The files use a .gbs file extension.

When gbSnippets is installed, it creates a subfolder called "gbsnippets" where the several distributed snippet files are placed. However, there is no limitation to where snippet files may be saved.

New
Creates a new file names "gbsnippets.gbs" and places it in the "snippets" folder. If that filename exists, a different filename is used (typically, "gbsnippets001.gbs"). If the current file has unsaved changes, the user is prompted to save the changes before the new file is created.

Open
Opens an "Open File" dialog asking the user to select an existing *.gbs file to open. If the current file has unsaved changes, the user is prompted to save the changes before the dialog is opened. The selected file to open is added to the file MRU (most recent used) list. If the selected file is encrypted, the user is prompted to enter a password.

Save
Saves all changes, using the current filename. The user is not prompted to confirm. If a password has been assigned, it is used to encrypt the file.

Save As
Opens a "Save As" dialog, prompting the user to select a new filename and location to save the current data. If the current file has been changed, the changes are included in the new file. The current file is not changed. If the current file has a password, it is also used to save the new file.

Print Selected Node
The content of the currently selected node is printed. A Printer dialog is opened to allow the user to select a printer.

Print Selected Node+Children
The content of the currently selected node and all of its children are printed. A Printer dialog is opened to allow the user to select a printer.
Print Node+Children (Titles)
The title of the currently selected node is printed, along with the titles of all children of that node. A Printer dialog is opened to allow the user to select a printer.

Print Search Results (Titles)
The list of matching snippets, as currently displayed in the Search Results listbox, is printed. A Printer dialog is opened to allow the user to select a printer.

Reload
Reopens the current file, losing all changes and any newly assigned password. The user is prompted for confirmation. The reloaded file is placed at the top of the Open File MRU list. If the file to open was saved with a password, entry of that password will be required to open the file.

Import Data
The content of a gbSnippets data file (*.gbs) can be read and added to the current file. This option pens an "Open File" dialog from which the user can select a file to merge with the already opened file.

When importing snippets from another *.gbs file, the nodes under the root of the file to import are placed under the root of the already opened file. The "Options/Import as Single Node" menu option can be used to creates a single node (named for the imported file) and puts all imported snippets under that node.

Export Node to HTML
The content of the currently selected node can be exported to HTML format. Each snippet gets its own file, placed in a folder (subfolder called "HTML", placed beneath the folder where gbSnippets was installed) with no other files. Any pre-existing files contained in the folder are deleted when an export is done. This simplifies finding the newly created files and makes it easy to select/copy/move files as desired.

Export Node+Children to HTML
The content of the currently selected node, and its children, can be exported to HTML format. When exporting an entire Tree (or node and its children), each snippet gets its own file. gbSnippets will also create an index page containing a link to each of the individual snippet files.

All of the exported snippets are placed in a folder (subfolder called "HTML", placed beneath the folder where gbSnippets was installed) with no other files. Any pre-existing files contained in the folder are deleted when an export is done. This simplifies finding the newly created files and makes it easy to select/copy/move files as desired.

Shell To ...
Opens the folder containing the currently opened file. The folder may be opened in a DOS window, Windows folder window, or in Windows Explorer.

Clear Open File MRU
Removes all file names from the Open File MRU (most recently used) list.

Clear Search Term MRU
Removes all entries from the Search Term MRU (most recently used) list. The MRU list can be seen by pressing the down arrow on the Tree Search combobox.

Select FileA ...
Allows the user to select a file which will be opened using the FileA toolbar button. It also allows the user to select the text that will be displayed on the toolbar.

There are also FileB through FileE toolbar buttons, for a total of 5 QuickOpen toolbar buttons.

Clear Open File MRU
Removes all file names from the Open File MRU (most recently used) list.

Clear Search Term MRU
Removes all entries from the Search Term MRU (most recently used) list. The MRU list can be seen by pressing the down arrow on the Tree Search combobox.

Exit
Closes gbSnippets. Depending on settings, closing gbSnippets also saves changes, saves settings, and unregisters the gbSnippet hotkey.


Edit
gbSnippet Edit menu options are pretty standard fare, All options apply to the node content textbox except the "Edit TreeView Label" option, which applies to the Tree.

Cut
Removes the selected text and places a copy on the clipboard.

Copy
Copies the selected text to the clipboard. The original text is not affected.

Paste
Pastes the current contents of the clipboard into the textbox at the caret. If a selection has been made, pasting replaces the selected text.

Delete
Deletes the selected text. The deleted text is NOT placed on the clipboard.

Select All
Selects all text in the textbox.

Edit TreeView Label
Initiates in-place editing of the Tree labels. Each tree item, sometimes called a node, represents a block of text - one line, several lines, or even many paragraphs. The top line of the text block is used to populate the tree node titles (labels). You can edit the top line in-place within the tree, or simply edit it in the textbox. gbSnippets will synchronize your inputs between the Tree and the node content textbox!

Search Node
Opens the Node Search dialog, allowing a user to Enter a search term and to perform forward/backward searches in the node content textbox.


Actions
Options are available which cover screen/dialog capture, timers, time stamping and password management.

Screen Capture
Captures an image of the entire desktop and places it on the clipboard.

Dialog Capture
Captures an image of the gbSnippet main window (dialog) and places it on the clipboard.

Set Wallpaper
Once "Dialog Capture" has been used, this option sets the desktop wallpaper to the dialog image. It's a convenient way of saving information that gbSnippet displays - sort of like a post-it note at the center of the desktop.

Time-of-Day Alarm
When selected, asks the user to select a time of day when an alarm is to be sounded. The alarm time and current time are shown in the first section of the statusbar (it has 3 sections). When the time of day is reached, the alarm sound file "gbsnippets.wav" will be played once.

The file is found in the "support_files" subfolder, under the folder where gbSnippets was installed. A user can replace the file with one of their own as long as the same file name is used. The time-of-day display can be dismissed by unselecting the "Time-of-Day Alarm" menu option.

Countdown Timer
When selected, asks the user for the number of minutes/seconds to count down from. When the timer reaches zero the alarm sound file "gbsnippets.wav" will be played once.

The file is found in the "support_files" subfolder, under the folder where gbSnippets was installed. A user can replace the file with one of their own as long as the same file name is used. The countdown timer is shown in the second section of the statusbar (it has 3 sections). The countdown timer display can be dismissed by unselecting the "Countdown Timer" menu option.

Elapsed Time
When selected, displays a running total of elapsed time, in ss.d or mmm.ss.d formats, starting with zero as the time the selection was made. There is no alarm sound associated with this timer. The elapsed time is shown in the third section of the statusbar (it has 3 sections). The elapsed time display can be dismissed by unselecting the "Elapsed Time" menu option.

TimeStamp Selected Node
Inserts the date/time as the second line of the snippet. If date/time information is already there, it is replaced.

UnTimeStamp Selected Node
Removes the date/time line, if it exists, from a snippet.

TimeStamp Node+Children
Inserts the date/time as the second line of a selected snippet and all of its children. If date/time information is already there, it is replaced.

UnTimeStamp Node+Children
Removes the date/time line, if it exists. from a selected snippet and all of its children.

Set Password
Assigns a password to the currently opened file. When the file is saved, the password will be used to encrypt the file. Replaces an already assigned password.

Clear Password
Removes a password associated with a file. Once the password is removed, encryption is not used to save the file.

Display Comparison
pens a dialog with two side-by-side controls. The first contains the content of the node content textbox. The second is empty so the user can paste in text to compare to text in the first.

Select as Compare Left
Stores the current textbox content for display in the comparison window (left side).

Select as Compare Right
Stores the current textbox content for display in the comparison window (right side).

Display Comparison
Opens a dialog with two side-by-side controls. The first contains the content of the node content textbox. The second is empty so the user can paste in text to compare to text in the first.

Synchronize With Server
Provides a side-by-side comparison of the snippets in a local library and those from a server library. Snippets which do not match can be identified and then manually transferred into the local library.


Options
A wide variety of options are provided underneath the "Options" menu. These menu options primarily allow a user to toggle an option ON/OFf, although a few allow the user to modify a numerical value.

Confirm Delete
Requires the user to confirm deletion of Tree nodes.

AutoSave Changes on Exit
Automatically saves changes when exiting, without any confirmation by the user.

Save Settings on Exit
Saves settings each time gbSnippets is exited. This satisfies the occasional need where a user has experimented with settings but does not want the changes saved.

Load Last File on Startup
On startup, opens the last file that was opened in gbSnippets.

Enable URL Highlighting
Allows the node content textbox to highlight, and make active, URLs.

Import as Single Node
When importing snippets from another *.gbs file, the nodes under the root of the file to import are placed under the root of the already opened file. This option creates a node (named for the file) and puts all imported snippets under that node.

InSitu Import
With this option you can simply drag and drop a text file over the textbox to append the content of the file into the textbox.

Convert TABs to Spaces in HTML Export
HTML does not support TABs, so this option allows TAB characters to be replaced with a series of spaces - placing text in the HTML files at approximately the same location as the tabstops in the snippet.

Open HTML on Export
Automatically opens an exported HTML file. However, if a node + its children are exported, gbSnippets created an index.htm file with links to all of the exported snippets. In that case, the index.htm file is automatically opened.

Recommend Password
Directs gbSnippets to generate a password, to be displayed when the "Actions/Set Password" menu option is selected.

Alternate Layout
Switches between layout options, different primarily in whether the Search Results listbox spans the width of the dialog, of matches the width of the Tree.

Fixed Splitter Bars
Fixed the vertical and horizontal splitter bar positions with respect to the left edge and bottom of the dialog. The default is for the splitter bars to position themselves proportionately across the width/height of the dialog, whenever the dialog is resized.

No Size Limits
Removes limits on the size of the main window. By default, the dialog size of gbSnippets has minimum and maximum size limits. The minimum size is 300x400 and the maximum size is 800x800. This option allows the user to size the window to any dimension supported by the system resolution.

File Name in Caption
Places the name of the currently opened file to the gbSnippets caption.

Save Tree Position
When exiting, the position of the currently selected node is saved. When gbSnippets is restarted, it attempts to open in the same position. This is meaningful when the option to reload the last opened file is set. But even if that option is not set, the saved Tree position is still used.

AutoEdit Tree Label
Automatically start in-place editing of a node when a node is inserted (child or sibling).

Tree Icons
Enables the use of icons in the Tree. By default, the Tree contains lines connecting node. It also include "+/-" signs to indicate whether a node is a parent and whether the node is expanded or collapsed. This option further adds icons to indicate collapsed/expanded and parent/child status.

Hide Root
Removes the root node from the Tree icon. The root node still exists but is not shown. This is strictly a cosmetic option - some folks like to see the root node, some don't.

Large Print Title
Adds a large title (first line of the snippet) to the top of the page when a snippet is printed. By default, no title is shown.

Show Search Results
Shows/hides Search Results listbox. This is particularly useful when no search is being used. By hiding the listbox, more of the Tree and node content textbox can be viewed.

AutoShow Search Results
Automatically displays the Search Results listbox when Enter is pressed in the search combobox or when the "Tree Search" button is pressed. This happens only if matching snippets are found.

Case Sensitive Search
Makes all Tree searches case sensitive. The default is case-insensitive searches.

Include Parent Title in Search
Includes the immediate parent title, but not 2nd level or higher parent titles, in a Tree search.

Search While Typing
Executes a Tree search for each character entered into the Tree search combobox. Focus stays with the combobox. This is especially useful in minimizing the number of keystrokes a user must enter to get the matching snippets.

Clear Settings on Exit
If the INI file setting get corrupted, all a user has to do is delete the "gbsnippets.ini" file. Alternately, this option will delete the file when gbSnippets is closed.

On Top
Places the gbSnippets at the top of the z-order for all open applications.

Indentation
Changes the number of spaces use to Indent or Outdent snippets lines. Indentation adds a fixed number of spaces to the front of each line. The default number of spaces is 4, but may be changed by using this option. The current value is displayed in the menu as "Indentation (4)" - indicating that 4 spaces are used to indent lines. Indent and Outdent options use the same value.

Tab-2-Spaces
Changes the number of spaces used when converting TAB characters to spaces. The number of spaces used defaults to 4 spaces. However, the user can change the value using this option. The current value is displayed in the menu as "Tab-2-Spaces (4)" - indicating that 4 spaces will be use to replace TABs.

Programmer Features
Enables the normally hidden programmer menu, toolbar, and context menu options.


Format
gbSnippets users can select from three pre-programmed, standard fonts or can define a custom font. Whichever font is used is applied to the tree, node content textbox and search results listbox. Here are the pre-programmed, standard values, and the default values for the custom font.

* Std Font - MS Sans Serif, 10pt
* Std Bold Font - MS Sans Serif, 10pt
* Std Fixed Font - Courier New, 10pt
* Custom Font - Comic Sans MS, 10pt

The foreground and background of the 3 display areas can also be set by the user. Four pre-set color schemes (including black on white) are provided, or the user may select BG/FG colors of their choosing.

To simplify changing font size, menu options are also provided which will increment or decrement the standard and custom font sizes. With these options, no other font property is changed.

Std Font
Sets all control fonts to MS Sans Serif, 10pt. Does not change the FG/BG colors.

Std Bold Font
Sets all control fonts to MS Sans Serif, 10pt, bold. Does not change the FG/BG colors.

Std Fixed Font
Sets all control fonts to Courier New, 10pt, bold. Does not change the FG/BG colors.

Custom Font
Sets all control fonts to Comic Sans MS, 10pt as a default, but the user may select new values at any time.

Black & White
Sets all controls to display black letters on white background.

Custom Color
Sets all controls to the custom color. It defaults to a light blue color, but may be changed by the user at any time.

Preset Color 1
Sets all controls to a preset FG/BG color scheme.

Preset Colors 2
Sets all controls to a preset FG/BG color scheme.

Preset Colors 3
Sets all controls to a preset FG/BG color scheme.

Select Custom Font
Opens a font selection dialog, allowing the user to select the custom font (name, style, and size).

Select Custom FG Color
Opens a color dialog, allowing the user to select the custom FG. If the "Options/Custom Color" menu option is selected, the custom FG color will be applied to all controls.

Select Custom BG Color
Opens a color dialog, allowing the user to select the custom BG. If the "Options/Custom Color" menu option is selected, the custom BG color will be applied to all controls.

Std Font Size +
Increases the standard font size by 2 points.

Std Font Size -
Decreases the standard font size by 2 points.

Custom Font Size +
Increases the custom font size by 2 points.

Custom Font Size -
Decreases the custom font size by 2 points.

Font Information
Displays a messagebox with a summary of all fonts used in gbSnippets.


Amusements
gbSnippets includes a variety of games or graphical displays. These have been included simply for the fun of it - I've enjoyed writing them and I hope you enjoy playing/watching them. I expect to improve on the ones that are here, and to add new ones in the future.

Each of amusements are written to occupy the same space as the search results listbox. This allows the user to continue using gbSnippets even as the amusement is being actively played.

Each of the amusements will have their own toolbar, displayed at the bottom of the window rather than at the top. This helps clarify that the toolbar is for the amusement and keeps it out of the way of using gbSnippets for its primary purpose.

Text Stereogram
Demonstrates a stereogram created with nothing but text. Includes animation of the 3D image.

Mosaic Stereogram
Demonstrates a stereogram created using small bitmaps instead of text characters. Includes animation of the 3D image.

Matrix Screen Saver
Displays a screen saver similar to that used in the movie Matrix.

3D Rotating Cube
Displays a simple rotating cube, drawn with a few twists to make it more interesting.

Lifetime Financial Model
Provides a simple, real-life model of investments, income, and expenses over a person's lifetime. It's a very useful look at the basics of saving for retirement.

Stock Market Simulator
A stock market game, where the user tries to buy/sell stocks to reach a $1M fortune.


Help

Encryption
There are several special features included here, including the ability to send snippets via email, download a daily message from the author (regarding gbSnippets) and to perform an online update of the gbSnippets executable.

Send Email To..
Opens the user's default email client with a new message, addressed to a recipient selected from the email address list kept by gbSnippets. Under this menu item is an option to add recipient email addresses to the list. The author of gbSnippets (Gary Beene) is automatically added to the email address list.

Get Daily Message
Retrieves the most recent message posted on the gbSnippet server. The message typically includes usage tips, issues, and future release information.

Local Help
Opens the local Help file distributed with gbSnippets. The filename is "gbsnippets.chm"

Online Help
Opens the user's default browser to the online gbSnippets Help page.

Web Site
Opens the user's default browser to the gbSnippets home page.

Online Update
Checks online to see if a new version is available. If so, and the user confirms, the new version is downloaded and used to update gbSnippets. Only the gbSnippets executable can be updated this way. No other files are affected.

Go-Do List
This is my list of items I'm working on, or want to add at a future date.

About
Opens an About dialog, giving the current version of gbSnippets, a copyright message and a link to the gbSnippets home page.


Buttons

Options
The toolbar provides quick access to some of the more often used features of gbSnippets.

Here's a description of the functions provided by the toolbar.
New
Creates a new file and loads it into gbSnippets. The new file will contain three example nodes - root, parent and child.

Open
Displays the "Open File" dialog, from which the user can select a gbSnippets file to open.

Save
Saves all changes under the current file name. It does NOT open the Save As dialog.

Print
Prints the content of the textbox.

List
Displays the Search Results listbox control. The control may be empty if no search has been executed.

New Sibling
Adds a node to the Tree, as a sibling to the selected node.

New Child
Adds a node to the Tree, as a child of the selected node.

Delete Node
Deletes the selected node, including children. If there are children, the user will be asked to confirm the deletion.

Bookmark Node
Bookmarks the selected node. This is no visible indicator that a node has been bookmarked, but the Toolbar

Display Bookmarked Nodes
Finds all bookmarked snippets and places the list in the Search Results control.

Display Tree Icons
Displays a pre-defined set of icons in the Tree. Normally the Tree contains just lines and "+/-" signs (to indicated whether a node is expanded or collapsed.

Collapse All Nodes
Collapses every node in the Tree. To collapse just the selected node, use the "Collapse Selected Node" option of the TreeView context menu.

Expand All Nodes
Expands every node in the Tree.

Set Home Node
Captures the current location in the Tree

Go To Home Node
Returns to the Home location in the Tree

Search Node
Pops open search dialog which will search only the content of the textbox (the currently selected node). To search from snippet to snippet within the Tree, use the search tools found directly above the TreeView control.

Open Selection
Opens/executes the item defined by the selected text. The textbox will normally highlight and make URLs active. But in the event gbSnippets does not recognize an active string, this toolbar button can be used to send highlighted text to the default client. It can run EXEs, open files with their default clients, or simply open selected text in NotePad.

Send Email
Opens an email to the author. gbSnippets also allows the sending of emails to a user- defined contact list. The Help/Email menu provides this function.

FileA ... FileE
Opens user-specified file. There are 5 icons, labeled by default as a, b, c, d, and e. When the file is selected that the toolbar button will open, the user also selects a 7-letter text title that will be displayed on the toolbar.


Tree

gbSnippets uses a cut/copy/paste method of handling nodes, available from the right context menu for the Tree. Nodes may not be dragged to a new location (this may be added in future releases of gbSnippets).

Node Cut
Removes the node from the Tree and stores the information on a special gbSnippet clipboard for optional pasting back into the Tree. This does NOT use the Windows clipboard.

Node Copy
Copies the node to the special gbSnippet clipboard for optional pasting back into the Tree. This does NOT use the Windows clipboard.

Node Paste as Child
Pastes a cut/copied node into the Tree as a child of the currently selected node.

Node Paste as Sibling
Pastes a cut/copies node into the Tree as a sibling of the currently selected node.

Delete
Permanently deletes the currently selected node from the Tree. Use this when the internal clipboard has a cut/copied node that you don't want to use. Otherwise, it's usually best to use the Cut option.

Edit Label
Starts an in-place edit of the currently selected snippet. Remember that the title in the Tree and the first line of the full snippet content in the textbox are kept synchronized. Whatever is typed in the in-place Tree edit will replace the first line of content in the textbox, and vice versa.

Set Bookmark
Sets the bookmark property of the currently selected snippet. There is no visual indication of the bookmark property of a snippet. To see a list of all snippets whose bookmark properties are set, use the toolbar "Bookmark Search" button. The list will be displayed in the Search Result listbox.

Set As Home Node
Sets a node as Home. The "Go To Home Node" context menu is used to select the Home node. This feature provides an easier way to bookmark a single node and to more easily return to that node.

Go To Home Node
Selects the home node in the tree

Clear Bookmark
Clears the bookmark property of the currently selected snippet. There is no visual indication of the bookmark property of a snippet.

Clear All Bookmarks
Clears the bookmark property of all snippets in the Tree.

BookMark Search
Lists all bookmarked snippets in the Search Result listbox. As with normal search results, selecting an item in the list will also selected the item in the Tree and display the full content of the snippet in the listbox.

Collapse All
Collapses all nodes in the Tree (hides their children). By default, nodes with children will either a "+" or "-" sign in front of them. The "+" sign indicates that the node is collapsed, whereas the "-" sign indicates the node is expanded.

Expand All
Expands all nodes in the Tree (hides their children). By default, nodes with children will either a "+" or "-" sign in front of them. The "+" sign indicates that the node is collapsed, whereas the "-" sign indicates the node is expanded.

Expand Node
Expands the currently selected node, including all of its children which also have sub-nodes.

New Sibling
Creates a new node as a sibling to the currently selected node. The new node is placed below the selected node.

New Child
Creates a new node as a child to the currently selected node. The new node is placed below the selected node. If the selected node has content, the content is NOT lost. However, when a Tree node with children is selected, the textbox is filled with a child count of the selected node. The only way to view the content of a parent node is to delete all children of the node.

Sort Tree
Sorts every node in the Tree. The sort is ascending.

Sort Node Children
Sorts the children of the currently selected node. It does not sort sub-nodes. The sort is ascending.

Send To List
Adds a node to the listbox. It's a way of creating a list of snippets on which to take aciton (such as copying to the clipboard).

Tree Information
Displays a popup messagebox that gives a count of the parents children found within the Tree.


ListBox

Search ListBox
The list of matching snippets is particularly useful for browsing all matching snippets of a search. Clicking on a snippet in the list also selects the same snippet in the Tree, causing the entire snippet to be displayed in the textbox.

The list of matching snippets can be printed, or sent to the clipboard. Where snippets are primarily one-line snippets, this is especially useful.

Remove From List
Removes the selected matching snippet from the list. It does NOT remove it from the Tree. This is useful when you're walking through a matching list - removing it to leave behind only those snippets you've not yet seen or are interesting in looking at again.

Clear List
Completely clears the list. Keeping the list empty, when through with it, can be useful to visually indicate when a new list has been generated.

Print List
Prints the list - just the contents of the list (titles only), not the full content of each snippet in the list. This is especially useful for printing one-line snippets. It's also a great reason to place key information in the top line of the snippet, rather than several lines down.

Copy List to Clipboard
Copies the list to the clipboard - just the titles of the snippets in the list, not the full content of each snippet in the list.

Copy Snippets to Clipboard
Copies the content of each snippet listed in the listbox to the clipboard.


TextBox
In general, the textbox context menus options are used to modify the content of the textbox. If a text selection has been made, the menu options work on the selected text or lines containing the selected text, depending on which is appropriate.

Those menu options which work first on selections are marked with an "*". Where the option works on lines, the effect begins with the lines where a selection begins and ends.

Cut
Removes the selected text and places a copy on the clipboard.

Copy
Copies the selected text to the clipboard. The original text is not affected.

Paste
Pastes the current contents of the clipboard into the textbox at the caret. If a selection has been made, pasting replaces the selected text.

Delete
Deletes the selected text. The deleted text is NOT placed on the clipboard.

Select All
Selects all text in the textbox.

Copy All
Copies all text in the textbox. The text is NOT selected. Any selection remains selected.

Copy Current Line
Copies the content of the current line (where the caret is located) to the clipboard. The line is NOT selected. Any selection remains selected.

Left Justify*
Left justifies text (removes all leading spaces).

Trim Trailing Spaces*
Removes all training spaces. This option works on selected text. If no selection, works on entire contents of textbox.

TABs to Spaces*
Converts TABs to spaces. The number of spaces used defaults to 4 spaces. However, the user can change the value using the "Options/Tab-2-Spaces" menu option. The current value is displayed in the menu as "Tab-2-Spaces (4)" - indicating that 4 spaces will be use to replace TABs. This option works on selected text. If no selection, works on entire contents of textbox.

Indent*
Adds a fixed number of spaces to the front of each line. The default number of spaces is 4, but may be changed by using the "Options/Indentation" menu option. The current value is displayed in the menu as "Indentation (4)" - indicating that 4 spaces are used to indent lines. Indent and Outdent options use the same value. This option works on selected text. If no selection, works on entire contents of textbox.

Outdent*
Removes a fixed number of spaces from the front of each line. The default number of spaces is 4, but may be changed by using the "Options/Indentation" menu option. The current value is displayed in the menu as "Indentation (4)" - indicating that 4 spaces are used to indent lines. If the number of spaces at the front of a line is less than the current value, the spaces will be removed. Indent and Outdent options use the same value. This option works on selected text. If no selection, works on entire contents of textbox.

Number Lines*
Add a 5 digit number plus a separating space to each line. The number format is "00001", where zeros are used to fill empty positions. This option works on selected text. If no selection, works on entire contents of textbox.

UnNumber Lines*
Removes a 5 digit number plus a separating space from each line. This option verifies that the first 6 positions match the values entered by the "Number Lines" context menu option. Any line not matching the format will not be affected. This option works on selected text. If no selection, works on entire contents of textbox.

Sort Ascending*
Sorts lines in ascending order. This option works on selected text. If no selection, works on entire contents of textbox.

Sort Descending*
Sorts lines in descending order. This option works on selected text. If no selection, works on entire contents of textbox.

Remove Blank Lines*
Removes blank lines, where a blank line is defined as one containing no characters or all spaces. This option works on selected text. If no selection, works on entire contents of textbox.

Double Space*
Adds an empty line below all lines, even lines which are empty themselves. This option works on selected text. If no selection, works on entire contents of textbox.

Lower Case*
Converts letters to lower case. This option works on selected text. If no selection, works on entire contents of textbox.

Upper Case*
Converts letters to upper case. This option works on selected text. If no selection, works on entire contents of textbox.

Fixed Font
Temporarily sets the font of the textbox to a fixed font. This is useful when the content of a specific snippet is best viewed with columns lined up.

Search Node
Opens the Node Search dialog, allowing a user to Enter a search term and to perform forward/backward searches.

Word List
Creates a sorted list of all the words (including duplicates) found in the node textbox. Use the "Remove Duplicates" menu option to remove duplicate words. Warning: the list replaces the content of the textbox. gbSnippets places the original content of the textbox onto the clipboard. Since Undo operations are not currently supported in gbSnippets you'll have to paste the clipboard contents back into the textbox to undo effects of this command!
Remove Duplicates
Removes duplicate lines. The resulting list of unique lines is sorted.

Export to RTF/HTML
Creates BOTH an RTF and HTML file. The resulting files are placed in a folder (subfolder called "HTML", placed beneath the folder where gbSnippets was installed) with no other files. Any pre-existing files contained in the folder are deleted when an export is done. This simplifies finding the newly created files and makes it easy to select/copy/move files as desired.

Statistics
Pops up a messagebox containing a summary of the information in the textbox. Number of lines, longest/shortest line, average line length, and number of characters (including split between letters, numbers and other characters). It also provides a simple graph showing how many of each letter are found in the textbox.


Searches, Comparison, & Synchronization

Searches


Tree Search
A tree may be searched for snippets which match one or more search terms. To initiate a Tree Search, simply type in the search terms to the combobox located just above the Tree and press Enter. Matching snippets will be displayed in the search results listbox at the bottom of the page. The first matching snippet is selected in the tree.

When multiple matching snippets are found, navigation between the matching snippets can be done in two ways. Next to the combobox, where search terms are entered, are two buttons - hands pointing up and down, corresponding to moving up and down the list of matching snippets.

Alternately, clicking on a snippet in the listbox will jump to that specific snippet - highlighting it in the tree and displaying its content in the textbox.

Tree searches support Boolean (AND, OR) searches as well as exact string searches. Quotes are not used. These are all valid search terms:

· cookies - searches for the string "cookies"
· my cookies - searches for the exact string "my cookies"
· milk and cookies - searches for snippets with both words
· milk or cookies - searches for snippets with either word

There are several tree search options, all available from the "Options" menu. See the earlier discussion on "Option" menu options. These control how a search will be made and how search results will be displayed.

Show Search Results
Toggles display of the Search Results listbox

AutoShow Search Results
Displays the Search Results listbox whenever a Tree search is executed. Applies when Enter is pressed after entering a search term or when the "Tree Search" button is pressed (the one with the binocular icon).

Case Sensitive Search
Toggles case-sensitivity in searches. This does not apply to a TextBox search, where case-sensitivity can be independently set.

Include Parent Title in Search
Includes the title of the selected node in the search. Only the immediate parent title is used (2nd-level or higher parent titles are not included).

Search While Typing
Automatically executes a search whenever a key is entered in the combobox. Focus stays with the combobox. This is especially useful in minimizing the number of keystrokes a user must enter to get the matching snippets.

Finally, the last 10 search terms are placed in the combobox. Simply press the combobox down arrow to display the most recent searches and select an item to repeat the search. Each time a search is made, the search terms are added to the top of the dropdown list. Duplicate entries are removed.


Node (Textbox) Search

Node Search
The content of a selected node can be searched for a specific text string by pressing F3 or by selecting the "Edit/Search Node" menu option to call up a small dialog in which to enter the search term.

Enter or press one of the search buttons to find and highlight matching text. The Enter key can also be repeatedly pressed to search forward through the node content.

A TextBox Search is limited to the content of the currently selected node. When the end of the node content is reached and no further matches are found, pressing the search buttons will result in a beep sound.

If a Tree Search has been previously made, the TextBox Search dialog will open with the first word of the most recent Tree Search.

A TextBox Search does not support Boolean (AND,OR) searches. The search can be made case-sensitive by selecting the checkbox on the TextBox Search dialog.

The TextBox Search dialog also allows replacement of the search term. Once a matching text string is found, and highlighted, pressing "Replace" will replace the search string with the replacement string.

The dialog also allows moving through the snippets found in the search results listbox. The "Next Snippet" and "Previous Snippet" buttons do not move through the entire tree, just the snippets in the listbox.


Search Commands
In addition to the Tree and TextBox Search features, gbSnippets offers several commands which return lists that are opened in NotePad as temporary text files (see the discussion on Commands, further down this page).

..Match
The ..match command is entered as "..match searchterm", and returns a list of all lines which contain "searchterm" (from one, or all snippets). The specific snippets contaning the list is not identified (the Tree search provides the list). The ..match command can conveniently provide just those lines containing the search term without requiring the user to scroll through individual snippets.

..Tally
The ..tally command works on a user-defined list of search terms, and returns a list of the number of times the terms are used in one, or all, snippets. The list is kept in a simple text file, which can be accessed by entering the "..tallylist" command.

..Freq Command
Occasionally I'd like to know how many times a term is found in a list. After using the textbox context menu "WordList" and "Sort" commands, using ..freq will display a list of how many times each term is used. The command works equally well on counting duplicate lines.


Bookmark Search
Any snippet may be bookmarked - tagged with a special flag for later action. Both the Toolbar and Tree context menus provide tools for managing bookmarks.

Toolbar
The toolbar has a button to bookmark the currently selected node. It also have a button to display all bookmarked nodes in the Search Results Listbox.

Tree
When a node has been bookmarked, and when the Display Icon option has been selected, the node will be displayed with a "Checkmark" icon.

The Treee context menu also have options to Set, Clear, Clear All and Search for bookmarked nodes.

Listbox
When a Bookmark Search is made (from the Toolbar or Tree context menu) all bookmarked nodes will appear in the Search Results Listbox. Selecting a node from the listbox will also select it in the Tree and display the content in the Textbox.


Snippet Comparison
Sometimes you need to know if two snippets are the same, or if a potential snippet matches an existing snippet. gbSnippets provides a popup dialog (see the image to the right) which can be used to compare any two texts. The two texts can be pasted into the left/right textboxes.

Or, Action menu items can be used to selecting specific snippets to be entered into the left and right textboxes.

In the adjacent image you can see two snippets, containing lines "one" through "ten", except that two lines have some additional text. When the Compare button is pressed the text on each side is replaced as shown in the image, with "**********" lines indicating where differences have been found.

The window provides a scroll-locking feature to allow both side to be scrolled up and down at the same rate. It has a Tops (display top line of both snippets) and a Restore (replace comparison results with original text) features.


Server Synchronization
gbSnippets can synchronize a local library with the same library found on either the gbSnippets server or a user defined server!

Whenever a gbSnippets library is updated, it is placed on the gbSnippets server. Use the Actions/Synchronize With gbSnippets Server menu option to pull up the following screen, from which the server and local libraries of the same name can be compared for changes, and differences added to the local library.

When the synchronization window is called, it automatically fills the left listbox with the gbs#'s from the current library. Click on a gbs# to see it in the textbox to the right of the list.

The dialog provides the following options.

Load From Server
Press the "Load From Server" to download the server file by the same name. gbSnippets will display a list of the gbs#'s in the downloaded file. Again, click on a gbs# to see the content.

Remove Dupes
This option compare all snippets in both libaries and removes duplicates from the right listbox. The left listbox will, at all times, contain a complete listing of snippets found in the currently opened snippet library.

Compare TextBoxes
Once a snippet has been selected from each listbox, press the "Compare" button to compare content. A popup dialog will show the differences between the two using a strikeout format.

Transfer
You can transfer the currently selected snippet from the rightmost listbox, or you can transfer all snippets from that listbox. The dropdown list beside the "Transfer" button shows these options. You can also decide whether to transfer the snippet(s) are a child or sibling of the snippet currently selected in the gbSnippets tree.

The synchronization dialog is modal, so you must selected the target location in the tree before opening the synchronization dialog.

User Server
If you have selected "Synchronize With User Server", the synchronization dialog will look and operate the same, except that it will display gbu#'s (user numbers) and download the library file from the user's server (the addresso of which is entered using the ..users command).


Introduction
Sometimes I add features to an application, but not really wanting to give the feature prime time space on the menu or toolbar. Also, I like not having to switch between the mouse and the keyboard. So, I sometimes add a "command" feature which allows me to type in a command. With gbSnippets I've added command options to the combobox.

In particular, search terms are examined against a list of potential "commands", all of which start with ".." to avoid conflict with other legitimate search terms. When a "..xxx" search term (command) is found, a corresponding action is taken rather than completing the usual search.

Here are the commands gbSnippets currently recognizes. I may eventually move these to menu/toolbar positions, but for now they must be entered via keyboard in the combobox. Note: commands are recognized only when the Enter key is pressed while the combox has focus.

Most of these commands are discussed in other sections, where their function contributes to the features in that section (such as ..match is discussed in the section on Search). The following list is more of a reference list than a how-to section.

..x
exit from gbSnippets

..user
allows user to input a server URL
..servers
displays both user and gbSnippets servers

..hex
display Textbox content in hex format
..db
convert decimal to binary
..dh
convert decimal to hex
..hd
convert hext to decimal

..match
lines containing search term (this snippet, no line numbers)
..matchall
lines containing search term (all snippets, no line numbers)
..matchl
lines containing search term (this snippet, with line numbers)
..matchalll
lines containing search term (all snippets, with line numbers)
..freq
displays count of duplicate lines in textbox
..tally
# times pre-defined search terms are used (this snippet)
..tallyall
# times pre-defined search terms are used (all snippets)
..tallylist
open tally term list in NotePad

..gbs
displays gbs# summary
..addgbs
adds gbs# to all snippets. Caution: does not replace existing gbs#!
..gbu
displays gbu# summary
..addgbu
adds gbu# to all snippets. Caution: does not replace existing gbu#!

In the list, the commands are grouped by related functions.


Introduction to Amusements

Introduction
While the primary purpose of gbSnippets is to provide an extremely easy-to-use method of storing and searching single and multi-line text data, the need for play time has not been forgotten.

gbSnippets provides several built-in games and graphics programs to provide you with amusements for those moments when you get bored - work a while, play a while!

Included amusements are:

Text Stereograms
Mosaic Stereograms
3D Models/Lathe
Lifetime Financial Planner
Stock Market Simulator

All of the games/graphics share common design features. They all occupy the same space as the Search Results listbox and they all have a custom toolbar located at the bottom of the graphics area.

Enjoy!


Text Stereogram
When folks think of stereograms, most usually they envision the random dot stereograms that were all the rage in the 90's. Few know that you can make a stereogram using simple letters, arranged in the appropriate pattern. Here's a text stereogram created by gbSnippets.

This image of gbSnippets, with the text stereogram displayed, shows how the graphics capability occupies the space of the Search Results listbox and also shows the toolbar located at the bottom of the dialog.

This particuarly image consists of two small, overlapping rectangles. The rectangles can be animated, and their speed controlled, using the toolbar controls.


Mosaic Stereogram
Just as text can be use to create stereograms, so can small images. After all, a text character is just an image itself. gbSnippets uses a built-in library of small images to create what I call a mosaic sterogram. Here's an example.

This example consists of the same two overlapping rectangles and can likewise be animated.


Matrix Screensaver
There's just something about those falling characters in the movie The Matrix. Here's a screenshot of the version included in gbSnippets.

Even knowing how they're made, I can just sit and watch the animated display for minutes.


3D Models

3D Rotating Cube
This app lets you display and rotate 3D point models. It also allows you to enter points via the mouse and apply a lathe action to each point - creating a circle of points. The resulting 3D model can then be rotated.

I'll be especially working to add more 3D graphics displays to gbSnippets. I find the programming issues of interest and the eye-candy plain fun to watch!


LifeTime Financial Planner
This amusement is more "serious" than "amusing". If you want a very top level view of what you must do to retire, with the ability to analyze the impact of various pre- and post-retirement savings, then the Lifetime Financial Planner is for you!

Using the LFP:
The LFP loads with default values and plots the results. The green area represents pre-retirement net worth and the blue represents post-retirement net worth. The parameters used to calculate the values in the chart are shown on the left.

To change a parameter, simply click one of the down arrows in the toolbar and select the value you want. If you want a value not in the list, then press the toolbar button itself to get an inputbox that allows you to put a custom value.

The plot automatically updates itself when you make a paramenter change.

Here's a description of all of the parameters, both pre-retirement and post-retirement.

Pre-Retirement Arguments
Here are the values you can enter to calculate your pre-retirement financial information.

Current Age
Simply your age today, or the age at which you want the net worth/savings to take effect. Allowed range is 20 - 100.

Net Worth
Today's value of all assets. Inflation and interest will be applied to this value. Allow range is 0 - 10,000,000.

Monthly Savings
The amount of money you will deposit monthly into your investment accounts, beginning at the Current Age. Allow range is 0-50,000.

Interest Rate
The pre-retirement interest rate to be applied to your net worth. Allowed range is 0 - 50%.

Inflation Rate
The pre-retirement inflation rate to be applied to your net worth. Allowed range is 0 - 50%.

Post-Retirement Arguments
Once retired, the LFP assumes you may continue to have a (probably) smaller income that eventually goes away. It also assumes that you will be eligible for Social Security and allows you to elect which year you will start receiving benefits. LFP also allows you to input your monthly expenses, which are assumed flat throughout retirement.

Finally, the LFP allows you to identify two lump sum events that take place at any time. For example, you might expect an inheritance to kick in at a certain age, or you might plan a major trip.

Retirement Age
The age at which you plan to retire. Allowed range is 20 - 100.

Interest Rate
The post-retirement interest rate to be applied to your net worth. Allowed range is 0 - 50%.

Inflation
The post-retirement inflation rate to be applied to your net worth. Allowed range is 0 - 50%.

Income Rate
The monthly income that start at the age of retirement, and continue until reaching the Income Stop Age. Allowed range is 0 - 50,000.

Income Stop Age
The age at which the post-retirement income will stop. Allowed range is 20 - 100.

SocSec Start Age
The age at which you will start receiving Social Security benefits. Allowed range is 62-100.

SocSec Amount
The amount of your Social Security benefits. Allowed range is 0 - 10,000.

Expenses
Expenses during retirement (assume flat throughout retirement). Allowed range is 0 - 50,000.

Lump Sum Event #1
First of two lump sum events that happens only once at a specific age. Allowed age is 20 - 100. Allowed range is -10M to +10M.

Lump Sum Event #2
Second of two lump sum events that happens only once at a specific age. Allowed age is 20 - 100. Allowed range is -10M to +10M.

Additional Information
Net worth values are assumed to be end-of-year values. The value entered as pre-retirement monthly savings is used without change (no inflation impact) during the pre-retirement years. Interest/inflation is applied to net worth values.

Post-retirement expenses, income, and social security are entered in today's dollars. Inflation is applied to generate then-year dollars.

Notice of No Guarantee
For the record, I am not a certified accountant nor financial planner. I hold no finance-related degree. This information is provided as-is, with no guarantee of accuracy. Use at your own risk. You should consult your own financial advisor before making any financial decisions.


Stock Market Simulator
Stock Market Simulator - 1000 Days To Riches!
Do you have the skills to get rich in the stock market? This game starts you off with $250K (part cash and part stocks). You then have 1000 days in which to increase your net worth to a cool $1,000,000 !!!!

The stock price is plotted, as is your net worth. Use the lower toolbar buttons to buy and sell stock (you know - buy low, sell high!). Your best score is kept. If you quit the game, all the information is kept until you return to play.

If you can't beat this game, then DO NOT quite your day job to become a day trader!


In Work ...
Applications in Work
There are all kinds of mini-applications I can add to gbSnippets. Here's some of the ones already on my list to add in the near future.

Falling Sand
This very popular online Java applet game is still very popular. I'll be adding my attempt at the code as well.

Mazes
First, I'll want to draw mazes. Then, I'll want to add a rodent that attempts to solve the maze and get a prize of cheese! What can I say, even the simplest of graphics can amuse me!

Equation Plotter
I love math and I love combing math and 3D. I've written a standalone surface plotter (two of them, actually) and will want to incorporate them into gbSnippets as well.

SodaPlay
I've already written a standalone version of the very popular Sodaplay style of creating animated creatures. In addition to graphics I love working on a physics engine to control the motion of characters.

Big Countdown Timer
Just a plain old, big, countdown timer. I really am easily entertained!


Introduction to Programmer Features

Overview
Even without its special programmer features, gbSnippets can serve as a code librarian for source code snippets. However, there are several features provided which further improve its usefulness as a programmers editor and code librarian.

gbSnippet makes no effort to compete with the leading Programmer's Editors. It does, however, try to provide enough editing features that programmers will feel comfortable in editing their source code within gbSnippets, before transferring the snippets to the language IDE.

Programmers Editor
gbSnippets contains a general purpose source code editor which provide syntax highlighting of keywords, comments, and strings. While not intended to be a replacement for the major programmers editors, gbSnippets nonetheless provides reasonable support for editing and displaying source code.

The editor provides other special features for programmers, such as batch indentationn, line commenting, compilable tempate insertions, and optional case display (upper/lower/mixed/as typed).

gbSnippets also offers a dialog for comparing two snippets for differences - a side-by-side comparison of two blocks of text.

Multi-language Support
Each snippet library can be associated with a programming language. That association will determine the syntax highlighting rules used to display the source code.

IDE Insertion
Snippets can be transferred from gbSnippets directly into the language IDE - ready for compilation or execution. An entire snippet, or just a selected part of a snippet, can be transferred.

A special portion of a snippet, called the compilable example can also be extracted from the snippet and placed in the language IDE.

Finally, a snippet (or selection) can be inserted into a user-defined template prior to being placed in the language IDE.

Snippet Libraries
Multiple source code libraries, which include over 1,000 snippets, are provided as part of the gbSnippets distribution.

Snippet libraries include primary code (just the basic code demonstrating a concept) as well as compilable code (the primary code wrapped in enough code to successfully compile in the language IDE and that demonstrates how the code works).

Libraries also include signficant reference materials - command syntax, function descriptions, and generous comments on each snippet.

Library Management
gbSnippet offers several features that help to handle multiple libraries. Library files can be merged (one imported into another) and procedures (Sub/Function) can be imported from the original language source code files.

gbSnippet snippet libraries are stored as text files. This enables the programmers to potentially use other editors to make batch changes - as long as the format integrity of the files are maintained. Libraries may also be exported to HTML files and gbSnippet can automatically generate index files with links to the various snippet files.

gbSnippet also offers simply library encryption to protect files against casual snooping.

OnLine Support
All of the snippets distributed with gbSnippets can be found online at my PowerBASIC code archive.

gbSnippets provides the user with a means of downloading a daily text stream - which will contain either a message form the author or a snippet recently added to the

The gbSnippet distribution libraries may be downloaded from the gbSnippet home page. These will contain the most recent snippets available.


Enabling Programmer Features
By default the programmer's features are not displayed. To enable and display the menu, toolbar, and context menu features you must select the "Options/Programmer Features" menu option.

Here's the new look of the main menu and toolbar, showing the new Programmers menu item and the three new toolbar selections.

Main Menu
Here's a closer view that shows the now-visible "Programmers" menu item.

Toolbar
And here's a closer view of the three new selections on the toolbar.

TextBox Context Menu
The context menu for the node content textbox will now display 6 new entries, found at the bottom of the menu.

Programmers Menu
And finally, the dropdown portion of the main menu "Programmers" item has the following selections.

All of these programmer-specific options are discussed in the following paragraphs.


Programmers Menu
Here's a description of the Programmers menu options.

The Programmers menu only appears when the Programmer Features menu option is selected, and appears next to the Help menu.

Here's the drop down menu selections available from the Programmers menu.

Select Language
Associates a language with the currently opened file. When the file is saved, the language designation is saved with the file. The language designation determines which *.syn keyword file and *.ide IDE template file are used when the file is loaded. The language also determines how syntax highlighting is handlded by gbSnippets.

Select Syntax Colors
The user may select a color for displaying language keywords, strings, or comments. If none are selected the colors blue, red and dark-green are used by default.

To provide a user with additional syntax highlight tailoring, placement of either a ' or + as the first character in a snippet will override the default syntax colors. Using a ' as the first character prevents any syntax highlighting from being applied to the current snippet, whereas using + as the first character allows only comment syntax highlighting to be applied. There are several snippets, particularly reference content, which contain keywords and strings which the user may not want to be colored. These two first-character tweaks provide such capabilities.
Enable Highlighting
Enables coloring the keywords, strings, and comments found within source code snippets. The keyword files are found in the "languages" subfolder and are named as "language.syn" (where "language" is replaced with the appropriate language name). The keyword files are listed one per line, in "mixed case" formatting.
Exclude Title Line
Instructs the syntax highlighting code to ignore the 1st line of the snippet. This is especially useful because the 1st line is also displayed in the Tree and it usually the user does not want the first line keywords highlighted as case-adjusted.
Limited IDE Transfer
Directs the "Open in IDE" menu option to transfer only the portion of the snippet starting with the line which begins with "'Compilable Example:". This allows the snippet to contain miscellaneous information (above the key line) which may not be compatible with the IDE compiler. Most of the snippets distributed with gbSnippets end with this section.
Upper Case
When using syntax highlighting, kewords are in the node content textbox are converted to upper case.
Lower Case
When using syntax highlighting, kewords are in the node content textbox are converted to lower case.
Mixed Case
When using syntax highlighting, kewords are in the node content textbox are converted to mixed case. Mixed case is defined as the case entered in the *.syn file for the languages (i.e., in the *.syn file a keyword would be entered as "Rnd").
As Typed
When using syntax highlighting, keywords are not highligted but their case is not modified.
Display ASCII Table
Opens a messagebox containing a table of ASCII codes and the corresponding characters.
Import Procedures
Opens an "Open File" dialog from which the user can select a gbSnippets data file (*.gbs) to merge with the already opened file.

When importing snippets from another *.gbs file, the nodes under the root of the file to import are placed under the root of the already opened file. The "Options/Import as Single Node" menu option can be used to creates a single node (named for the imported file) and puts all imported snippets under that node.
Open in IDE
Saves the snippet in a text file, using the default extension for the current language, then opens the file in the default client for files with that extension. For example, a PowerBASIC snippet would be saved as a *.bas extension, then the PowerBASIC IDE would be called to open the file.
Open in IDE+
This option is identical to "Open in IDE" except that the snippet is inserted into a template before being saved. The templates use the language name, with a *.ide extension. Templates are found in the folder "languages", which gbSnippets creates beneath the folder where gbSnippets was installed. Templates are simple text files and may be edited by the user to customize the code in which the snippet is placed. The snippet is used to replace the string "" within the template.
Language Information
Displays a messagebox with the current language and its keywords.


Language Support
gbSnippets is designed to support multiple languages, where each library file (*.gbs) contains snippets for a single language. On loading, gbSnippets identifies the language and uses the appropriate syntax highlighting.

The keyword list for each language is kept in the "languages" subfolder, in files named *.syn (powerbasic.syn, qbasic.syn, html.syn, ...). Syn files for c, c++, csharp, dos, html, java, javascript, perl, php, powerbasic, python, qbasic, quickbasic, sql, and visualbasic are included in the installation.

When a snippet library is created, it is assigned the language of the currently opened snippet library. To manually associate any snippet library with a language, simply use the Programmers/Language/Select Language menu option and select the appropriate language. When the file is saved, the language association is saved within the file.

Language selection determines how gbSnippets uses syntax highlighting (keywords, comments, and strings) for that language. Syntax highlighting parameters are built into gbSnippets - they are not defined in the *.syn files.

Keyword files (*.syn) and IDE templates (*.ide) are included in the gbSnippets distribution.

If you'd like gbSnippets to support a new language, let me know and I'll work to accommodate the request.

Current Limitations
The bottom line is that while I've written gbSnippets to handle multiple languages, it currently fully supports only PowerBASIC.

Syn Files - although *.syn files are distributed for all of the supported languages, only the PowerBASIC syn file has been fully verified. Content of the other syn files needs work and I'll be posting updated syn files in the coming weeks.

Comment Highlighting - comment highlighting in gbSnippets is currently available for BASIC derivative languages only. Comment highlighting for non-BASIC languages is in work and should be complete within the next few weeks.

IDE Templates - only the PowerBASIC IDE template file is correct. I've yet to work handling IDE transfer for other languages, but will be working on it over the next few weeks.


Context Menu
Here's a description of the programmer-specific textbox context menu selections (the bottom 6 in the image).

Comment Selection
Comments out the selected lines, using the comment character associated with the language of the loaded snippets file. Lines already commented are not modified.
UnComment Selection
Uncomments out the selected lines, using the comment character associated with the language of the loaded snippets file. Lines which are not commented are not modified.
Source Code Indentation
Indents source code according to match the heirarchy of statements found in the code. The indentation used is the same as that used in the "Indent" context menu option. Recognizes Sub, Function, Do, For, If, Select Case, While, Interface, Method, and Property as heirarchy keywords. Note: does not recognize same-line placement of heirarchy end points. (i.e., If and End If cannot be on the same line).
Open in Default IDE
Saves the snippet in a text file, using the default extension for the current language, then opens the file in the default client for files with that extension. For example, a PowerBASIC snippet would be saved as a *.bas extension, then the PowerBASIC IDE would be called to open the file.
Open in Default IDE+
This option is identical to "Open in Default IDE" except that the snippet is inserted into a template before being saved. The templates use the language name, with a *.ide extension. They are found in the folder "languages", which gbSnippets creates beneath the folder where gbSnippets was installed. These are simple text files and may be edited by the user to customize the code in which the snippet is placed. The snippet is used to replace the string "" within the template.
Insert IDE Template
Read the language *.ide file and pastes the content into the current snippet at the cursor. This makes it easier to create a consistent compilable example in all snippets.


Toolbar
The toolbar provides quick access to some of the more often used features of gbSnippets.
Color Highlighting
Enables coloring of language keywords, comments, and text strings. Keywords are found in the \languages\*.syn keyword files.
Display in IDE
Copies the currently selected snippet text, or entire snippet if no selection is made, or portion of snippet labeled "Compilable Code" is that menu option is chosen to a temporary file, using the default extension for the current language, then opens the file in the default client for files with that extension. For example, a PowerBASIC snippet would be saved as a *.bas extension, then the PowerBASIC IDE would be called to open the file.
Display in IDE+
Copies the currently selected snippet text, or entire snippet if no selection is made, or portion of snippet labeled "Compilable Code" is that menu option is chosen to a temporary file whose extension matches the standard extension for the current language. It wraps the copied text in the contents of the appropriate \languages\*.ide template file. The template files contain the string "<gb_ide>", which is replaced with the copied text. The temporary file is then opened in the default client for files with that extension.


Special Commands
 Previous Top
As noted in the main Help page for gbSnippets, several "hidden" commands are supported which are typed in through the Search combobox. The programmer-specific commands of supported are:

..db decimal to binary conversion
..hd hex to decimal conversion
..dh decimal to hex conversion
..hex hex display of textbox content