GOOSEE versions

Version 0.9

First version available for download over Internet, Feb.2, 2000.

Version 0.91

Uploaded Feb. 10, 2000

DONE:

Highest priority right now is arrays. GOOSEE currently only generates code for arrays of primitive data types (i.e., int, char, etc.). There is a note in the dialog box about this. Soon you will be able to attach any kind of data-elements, so you could have an array of pointers to functions, for example.

This was on the "to do" list of v0.9. Now should be able to handle any kind of array, including multidimensional.

DONE:

Drawing wires within a node. If an execution-flow wire is to be drawn between two rings of the same node, GOOSEE automatically places the mid-point of the wire outside of the node -- well, it's supposed to, but it doesn't work quite right. The mid-point sometimes is placed inside the node boundary, which makes the wire awkward to select. That's second-highest priority.

Fixed. Also, when placing new child data or node elements, can simply left-button-click inside the parent element and the child will automatically be placed just outside the parent. This is an alternative to press-drag-release for placing a child.

DONE:

If a sub-diagram (A diagram can consist of sub-diagrams, each to be composed to a separate C file) accesses a shareable data element that is owned by another sub-diagram, GOOSEE currently doesn't detect it. It should be defined in the C file, and marked "extern".

A shareable data element is owned by one node, but dataflow wires may be drawn from it to any node in the diagram, thus sharing it. It is passed by reference into any node that is to access it. The problem fixed here is that if the data is owned by a node outside the current sub-diagram (part of the diagram for which C code is being generated), GOOSEE failed to compose a data definition for it. Now, GOOSEE correctly identifies it and composes it as an external data definition.

DONE:

Ditto, a call is made to a clone-function, whose master (root) node is in another subdiagram. GOOSEE needs to generate a prototype for the master, for inclusion in current C file.

Version 0.92

I would like to thank Trefor Edwards for very thorough testing and identification of bugs and features required for practical usage.

Uploaded Feb. 24, 2000.

Fixed a problem with existing elements not redrawing when another element is dragged over them. It was "sort of" working before. It is still possible to drag an element through a wire and leave a hole in it, or over text and wipe out the text, but this is less likely to happen and only a slight and temporary cosmetic inconvenience -- as soon as the object is stopped being dragged (or a new object is placed), everything will redraw.

Fixed various code generation problems.

Previously, the generated file was according to the automatic filename generation rule only, of "s1e2.c" where s1 is the sub-project number and e2 is the file-number (actually it's the element number of the top-level node in the sub-diagram).
Now can select "custom filename" in the double-click-action section of the top-level node's dialog box, and enter a filename in the "Filespec" edit box -- the generated C file will have this name.

Version 0.93

Uploaded March 2, 2000.

DONE:

Multiple top-level nodes in same C file. Currently you highlight just one node and then generate a C code file for it. I plan that you can highlight more than one and have them all composed into the same C file.

Currently this has to be done manually. You hold down the <shift> key, then left-click on each top-level node that is to be composed into the same C file. Then release the <shift> key, then select "File/Generate 1-thread code" from the menu. The files will be composed in the order selected, and the first one selected determines the filename and element #.

I would like to thank Dan Negrescue & John Grant for help with printer scaling.

DONE:

Printing is not working properly. It prints, but doesn't scale right. Strange, I used the same code as per GOOFEE Diagrammer, which only required simple changes for 32-bit Win95/98. The textbooks I've got say the code is right, but the code scales right before, not now (&*%$#).

Printing scaling tests ok on a Win98 system, to HP LaserJet 6P.

Version 0.94

Uploaded March 6, 2000.

Tidied up printing. Got fonts to print like they look on screen, also colors/shading.

DONE:

Auto-indentation of C code. Currently it's all lined up on column 1.

In dialog box "Control/Configuration/Generated source file...", can choose tab character or spaces for indentation.

DONE:

Crashes on Windows NT. So far, three people have reported that GOOSEE crashes when they try to bring up some of the dialog boxes via a right-button click on an element. I've tried GOOSEE on several Win95/98 systems and it's rock-solid, but NT objects to something -- anyone out there got it running successfully on NT?

I've got a problem with testing it on NT. I was an MSDN (MS Developer Network) member for a few years, and I've got NT versions 3.5, 4.0 and 5beta-1. I tried to install the latter on one of my PCs but it hangs during install. Will have to try another PC.

Well, I think I deduced why it crashes on NT, but don't have access to an NT machine, so awaiting feedback. Update: feedback reports from several people that now runs fine on NT.

Version 0.95

Improved scrolling. Previously, arrow keys caused diagram to jump a window at a time. Added a selection to "Control/Configuration.../GOOSEE preferences..." so can still jump as before but default is now incremental scrolling. This default is same as moving mouse to boundary with left button held down.
As arrow key held down, or mouse on boundary of window (with left button held down), incremental scrolling accelerates, but has limiting.

DONE:

Double-click on a node to open a child-diagram. This is important for people appalled at the thought of constructing a complex project in one big diagram, and also suits projects with many programmers.

This is currently somewhat dumb. Node must be library-function.

Version 0.96

"File/Erase entire diagram" was crashing. Fixed it.

Fixed a couple of code generation bugs.

Trefor Edwards reported a problem. He attached condition and action to a ring of a node, then added more rings. Without realising it, the rings went on top of the condition and action elements and he could no longer select them. Dragging the node also drags all child elements, so that didn't help. I have fixed this -- hold down the <control> key before drag an element, and any attached child non-wire elements won't move.

Version 0.97

Uploaded March 20, 2000

Have made a start with a comprehensive database intregrity checker. "Control/Database integrity check" runs it. Currently it only checks a couple of things, but the idea is to perform a thorough workout of everything, for maximum confidence that everything in the diagram is ok. For example, make sure all pointers actually point to something valid. This is a totally separate issue from the signature-check performed with saving and opening of data files. It is an extra confidence layer on top of this and also on top of the syntax and structure checking done during diagram construction and during C code generation.

Version 0.98

Uploaded March 22, 2000

DONE:

Duplicate parts of a diagram.

Have implemented duplication. Previously "File/Duplicate" was greyed-out. Now, hold <shift> key down and left-button click on multiple elements. Select "File/Duplicate" then duplicate elements will track mouse. Left-click to place them. This is for duplicating within the same diagram -- there is no cut/paste across .GOO files ("File/Copy to clipboard" only copies a bitmap of client window. "File/Import diagram" is for importing another diagram into current one).

Version 0.99

Fixed various user interface annoyances. There are more, but they have a low priority right now.

Version 1.0

Uploaded March 29, 2000

Version 1.01

Uploaded September 27, 2000

GOOSEE.EXE doesn't work properly on a small percentage of PCs. One person reported that the diagram scrolls even when the mouse pointer is off the window. A couple of other people have reported that a diagram does not display properly in the window -- one person reported that when he opens a .GOO file, nothing displays unless he presses the right-mouse-button.

I have not yet traced the causes of these problems, because GOOSEE.EXE works fine on all the PCs I have access to (about seven, all running Win95 or Win98, various CPUs from 486 to Pentium). However, I have added a feature to the "Control/Configuration/GOOSEE preferences..." dialog box. This dialog box now has a section "GOOSEE emergency fix" with checkboxes for disabling various features of GOOSEE.EXE that may be causing the problems.

Currently there are two checkboxes, one for disabling diagram scrolling by the mouse (the arrow keys will still scroll the diagram) and the other for disabling some intelligence in the diagram paint/redraw code. This "dumbing down" may fix your problem -- let me know.

DONE:

Element# find.

This is another way of scrolling the diagram to a particular place.  That is, the desired element is located to the centre of the window. The element-number of the element must be known, and this is shown in element dialog boxes (right-mouse-click on an element to bring up its dialog box).
The menu "Control/Element# find..." invokes this feature.

DONE:

Text find.

Invoked from the menu "Control/Text find...". Finds the elements that contain the specified string. I haven't yet implemented a "replace" feature, but this is a start.

The text find dialog box is modeless, meaning that the diagram can be worked on as each instance of the string is found (while the text-find dialog box is still there).

Version 1.02

Uploaded October 1, 2000

Thanks to Lee Ellis for some help in tracking down a problem with some elements not drawing sometimes. That is, they become invisible. Some other people have experienced trouble with the .GOO diagram not displaying properly also.

Lee found that the "Emergency fix" disabling of intelligent window painting fixed his problem, which gave me the clue. I found a fault in the code that chooses whether an element is within the visible window area or not. This problem arises if the window is resized from its original size. Yippee.

Trefor Edwards particularly wanted the function prototypes to be generated into a separate header file. That is now done, and is fully described in the User Manual. The menu "Control/Configuration.../Generated source file..." dialog box now has buttons for optionally composing the preliminary text and/or the prototypes of public functions to a separate header file.

I have also tidied-up the node dialog box. The function-visibility section previously showed "file", "public" and "external" options, however there was a logical inconsistency in this, as is explained in the User Manual. Now, only "file" and "public" visibility options appear in the dialog box. "File" means that the function is only visible within the C file, whereas "public" means the function is visible across files.

Version 1.03

PARTLY DONE:

I have an idea for integrating/streamlining node/ring/condition/action visual representation to improve readability (keeping backward compatibility).

A problem with nodes is that as the number of rings increases, all the condition, action, execution-flow-wire and signal-wire elements crossing over the rings causes some visual clutter or distraction. This impedes readability.

The first solution is to place white space either side of condition, action and wire elements, so it is very clear what rings they pass over and don't attach to.

The second solution is color-coding of rings, which should be out in the next version.

Version 1.04

Uploaded Oct. 2, 2000

Mostly finished off color-coding of rings. "Control/Configuration.../GOOSEE preferences..." dialog box has a checkbox labeled "Display color coded rings" to turn this feature on or off. The setting is saved with the .GOO datafile and for pre-existing data files it will be off. New diagrams will have the color coding on by default.

If you open a pre-existing .GOO data file (created prior to version 1.04), the diagram may display white streaks across it -- this is fixed by the following steps:

  1. With offending diagram open, go to "Control/Configuration.../GOOSEE preferences..." dialog box.
  2. Tick the "Disable intelligent paint/redraw" checkbox. Click "OK" button.
  3. back in the diagram, click the right-mouse-button anywhere in a blank area, to cause a diagram repaint.
  4. Select "File/Save" to save the file. The problem is now fixed.
  5. Go back to the dialog box and un-tick the "Disable intelligent paint/redraw" checkbox. Click "OK" button.

Step-2 causes GOOSEE to repaint all elements in the database, even if not in the visible window, and the right-mouse-click at Step-3 will cause the repaint. When GOOSEE repaints all the elements, certain coordinates in execution-flow wires are recalculated and stored in the database. These coordinates are used for painting of the white border along all execution-flow wires, and in previous versions of GOOSEE the database did not use these coordinates and they were all zero (which is why you will see the white streak seeming to original from 0,0 diagram coordinates).

More visual enhancements planned.

Version 1.05

Uploaded October 5, 2000

GOOSEE now has a separate element called the "execution icon" for double-click action to execute a MSWindows application. It was inappropriate to have this double-click option in a node.

Nodes now have three double-click options: open a text file with automatically-generated filename, with custom filename, and open a child .GOO diagram. The settings of these radio-buttons is now linked to the type of function selected. For example, if "Library function node" is selected in the node dialog box, the double-click action automatically selects "Open a child .GOO diagram", and as this is the only valid selection it can't be changed.

Visual enhancement: "Control/Configuration.../GOOSEE preferences..." allows both color-coding of rings and display of white space either side of action, condition and wire elements. I personally find that one of them turned on is a visual enhancement, but not both. I have set the default for a new data file to color-coding on, white-space off. 

BUG: well its not really, just a visual annoyance with diagrams created prior to v1.04. It is possible for a wire to be created that is drawn underneath a node that it connects to. That is, the wire goes to a particular ring of the node, but it disappears at the outer ring, 'cos the node got painted after the wire. I could build a fix into this in the "Control/Database integrity check" if there is demand, otherwise you can fix such a wayward wire yourself by deleting it and then recreating it.

Version 1.06

Uploaded October 11, 2000

The handling of wired-OR has been improved. When an execution-flow wire goes out of a ring (# >1) of a node, execution will come back to the node, but not necessarily to the same ring. The current version of GOOSEE allows a return to ring-1, and in previous versions that return-wire had to physically overlap the main execution-flow i/p wire, as per "wired-OR" syntax requirement. This overlap is no longer required, and the point is fully explained in the User Manual.

The handling of double-action "!!" elements has been refined. They now allow branching and "case" decision-constructs to be open-ended. This allows clear visual representation of enormous "case" (if ... elseif ... elseif ... elseif ... ... else) constructs. See the User Manual.

I've tidied up the "double-click action", especially with how they are selected in the node dialog box. I also tidied up the custom/automatic function-name generation.

Version 1.07

Uploaded October 16, 2000

I created a new element, the "text-file icon", via "Elements/[#include] text-file icon". This icon streamlines the opening of any text-files.

Place it freeestanding anywhere on the diagram for quick viewing of header (.h) files, documentation files, and code files.

Create the text-file icon as a child, attached to any inline-code, isr-function, or normal-function node, and the text-file will automatically be "#include" inserted into the generated code .C file. When attached to the top-level node, insertion is immediately before the composition of the top-level function.

Version 1.08

Uploaded Oct. 23, 2000

GOOSEE currently does not generate code for the "for" loop. Equivalent functionality is achieved by "if" and "while". However, it is now possible to code it in yourself -- in fact it is easier now to insert your own C code into any ring of a node. Only a minor enhancement to the action-element has allowed this, and it is documented in the section "For-loop decision construct" in the User Manual.

DONE:

I'm planning a kind of simple Make feature, for automated code generation.

 Now, for one or more top-level nodes in a diagram, just double-click on a make-icon to generate C code. See User Manual. Future nice enhancements planned.

I've implemented something that needed doing. Prior to v1.08, GOOSEE composed functions into a C file in order of ascending element#, not in accordance with any hierarchy in the diagram. This sometimes caused problems with data and header visibility/scope. Now with v1.08, GOOSEE sorts the functions in order of depth into the function-call hierarchy below the top-level node, and composes them to the C file in that order, with the top-level function first. The User Manual clarifies this, and discusses some issues.

Version 1.09a

Uploaded Oct. 25, 2000

Just tidied up a few things here and there. A couple of small bugs.

Tidied up screem51.goo and associated text files.

The countdown to v1.1 ... waiting on any bug reports...

Version 1.09b

More minor fixes. Introduced a loudspeaker beep when code-gen completed.

Version 1.09c

Uploaded Nov. 23, 2000

Thanks to Michael Ambrus for feedback on some problems with using GOOSEE on his Swedish version of Windows NT. Michael has also made many suggestions to enhance GOOSEE.

 

I have addressed this problem. The condition element dialog box has been tidied-up, in particular to clarify the special case of ring-1.

 Fixed.

DONE:

I know I'm counting down to releasing version 1.1, and didn't plan on any major new features, but I couldn't resist doing this one.
Instead of a lassoo, I've taken the easy option of a rectangle. From the menu, select "Control/Selection rectangle" and move to somewhere on the diagram. Press left button and drag then release left button -- all elements inside the rectangle will be highlighted.

From the menu you can then select "Control/Duplicate selected" or "Control/Move selected". Both work real nice. You can scroll the screen with arrow keys or zoom in or out while moving, so you can move the elements anywhere. It's actually the left-button-up that deposits them.

Now get this, it's extra nice. Because a rectangle doesn't always select exactly what you want, you can draw more than one rectangle, to select any elements that you want -- just keep going up to "Control/Selection rectangle". Then you can move or duplicate them.

Version 1.09d 

FIXED BUG:
Ok, this had to happen. I rushed out this exiting new feature, moving blocks of diagram, but it has a bug. When finished, the selected group of elements don't deselect properly. I've now fixed this, so a left-button-up will cleanly deselect them (remove highlighting).

FIXED BUG:
The cursor is supposed to move to the group of selected elements when "Control/Duplicate selected elements" or "Control/Move selected elements" is chosen. Sometimes the cursor went off elsewhere. Fixed.

Version 1.09e

Uploaded Nov. 25, 2000

FIXED BUG:
Fixed an insidious little bug. Occasionally a wire jumped a ring when a user added or deleted rings on a node. It was infrequent, and I knew that the code that handled the relocation of wire-ends was a bit crude. It came to my attention again today, and I decided that it must be fixed -- we don't want wires to EVER jump rings unbeknown to us.

When you insert a ring, GOOSEE looks to see if there are any wires attached to outer rings, and adjusts their end-coords to the next-outer ring#. previously the code for this was not precise, and the new coords were not exactly on the next-outer ring. The opposite occurs when rings are deleted. Now it is spot-on.

Let me know if there are any serious bugs --- I plan to release version 1.1 next. Other user-interface issues can get postponed until later.

The only major bug that I know of at the moment concerns fonts not displayed correctly. This is reported by two people, running NT4, one of them a Swedish version. We are in the process of investigating this, but it appears that when GOOSEE asks for "Courier New" and "Times New Roman", something else is being given. These are standard MSWin fonts, supplied with all Win OS's, so this seems to be a problem with the configuration of the PC rather than GOOSEE's fault.
Note that GOOSEE does not know anything about Unicode, only 8-bit ASCII. 

Version 1.1

Uploaded Nov. 29, 2000

Some minor bug fixes. One was, if you attach a text-file icon, execution icon, or make icon to a node, and the node is set as a function, if you then delete the icon, the node can't be changed to inline-code-node. A funny little bug, but anyway it's fixed.

Version 1.11

DONE:

Now you can attach a text-file icon to a node, and select a text-file to be #include'd, or the contents of the text-file to be copied entirely into the generated file, or the contents of an edit-box inside the text-file icon's dialog box is copied into the generated file.

Version 1.12

Uploaded Dec. 5, 2000

DONE:

This merges a diagram with the current one, leaving the imported diagram's .GOO file alone. The incoming elements are now displayed as highlighted, giving the user the option of choosing to move/duplicate/delete them via the "Control" menu.

Version 1.13

DONE:

Version 1.18

WOW! Radical new features.

I've streamlined the insertion and deletion of rings. Now, you right-button-click on a particular ring, then inside the dialog box you just tick "Insert a ring" or "Delete ring" checkboxes -- no need to specify ring-numbers.

I've added automatic left or right justification to condition and action elements. That is, the text for these elements will display to the left or the right of the element depending on whether it is left or right of the node to which it is attached. A small thing, but very helpful.

Now for the really big one. For some time I have been thinking about the visual clutter of a multi-ring node when it has many rings and lots of condition, action, comment, data, icons, attached. I introduced color-coding in an earlier version, but that only partially improves readability.
I did know a technique that would completely open up the visual representation of a node, so that it can have any number of rings and be completely uncluttered visually, but it would require considerable coding to implement. Well, I've done it, and nodes can now display in the conventional concentric-rings form, or in a totem-pole form. Totem-poles are easy to read without color coding of rings. Totem-poles are documented in the User Manual.
There is full compatibility with earlier diagrams, and concentric and totem-pole nodes can be mixed in the same diagram. The default for new nodes is totem-pole format. 

Version 1.2

Uploaded December 21, 2000

I have slightly changed the visual representation of nodes. Previously, if ring-1 is a thick boundary, the node is a function. Now, all nodes have a thick boundary for ring-1, and a node is a function if it has color-fill. Any node without color-fill is in-line code.

I've added features to the node dialog box. Now, a node can be modified to be concentric, totem-pole grow-up, or totem-pole grow-down.

Version 1.21

Uploaded December 24, 2000

Fixed a minor bug with function visibility.

red2_b2.gif REGISTERED VERSION red2_b2.gif

Version 1.3

Uploaded 1 April, 2001

The "integrity check", previously performed manually only, via "Control/database integrity check", is now done every time a file is saved.

DONE:

It is now possible to save only those elements that have been selected, via "File/Selected elements save as...". Selected elements are saved to a new file, and the old file is left unchanged and closed.

Something I've wanted to be able to do for a long time ... save GOO diagrams as Windows metafiles. Or rather, Enhanced metafiles, with extension of .EMF (the older standard is .WMF). This is the standard graphics format used by Windows for vector graphics, and is understood by just about all Win apps. This is vastly superior to "Copy to clipboard as bitmap" that I had on previous versions (it's still there).
Select some elements, say by "Control/Selection rectangle", then go to "File/Selected elements save as EMF...". You will choose a filename and it will then save. The .EMF graphic can be imported/inserted into almost any Windows app, plus there are many tools to convert to other vector formats.