What's New in COGENT Version 2.3 #8
(Thu Apr 13 13:26:52 2006)
- Fixed platform-dependent bug in
executing models containing sockets. Thanks to Daniel Thibault for his
patience in working through this problem.
Version 2.3 #7 (Fri Mar 24 13:55:25 2006)
- Fixed bug in
renaming a downloaded archive that would otherwise over-write
an existing research programme.
- Fixed bug in use of non-English
number representation conventions. Previously output of (e.g.) property values
adhered to local conventions (e.g., using "," as a decimal separator) but
input did not. The meant that in non-English locales COGENT could not read its
own output. COGENT now insists on representing numerical values using a
period. This choice is driven by the internal use of Prolog. Thanks to
Christian Hinrichs, Cristiano Crescentini and Daniel Thibault for reporting
- If, during property
editing, COGENT fails to record an edit, the user is now advised of this
failure. Previously COGENT failed quietly. Thanks to Daniel Thibault for
suggesting this change.
Version 2.3 #6 (Tue Sep 6 12:55:32 2005)
- The installation
procedure for has been tuned further to cope with reinstalling over an
- Fixed minor but critical bug in
execution of models with limited capacity buffers. The bug was introduced in
2.3 #5 when a couple of critical characters went missing from the end of a
line of OOS source code. Thanks to Mel Mock for reporting the problem.
- Fixed problem with printing in
HTML format. The bug caused COGENT to crash when a model was printed in that
format, leaving a half-hearted stab at the printout in an oddly named file.
(Note that HTML format output does not currently support bitmaps, so when
printing in HTML box/arrow diagrams will be omitted.) Thanks to Frank Baughman
for reporting the problem.
Version 2.3 #5 (Mon Aug 1 11:59:44 2005)
- It is now possible for rules and
user-defined conditions to query the value of an ancestor box's properties (or
the properties of any box that the originating box can read from). This means
that a property may be defined and set once in a top-level box and then
queried by other boxes in a model.
- The installation
sequence has been slightly modified: On detecting an upgrade, COGENT now
automatically provides the user with the preference setting prompt. This is
because, on windows at least, preferences will probably have to be updated to
point to the new version of the various libraries and binaries.
- The "Cannot read current state"
file read warning has been suppressed. This warning used to show when, during
execution of a model, COGENT was unable to locate the file with a box's
current contents. On Windows this was common with boxes whose contents changed
quickly. A better long term solution would be nice.
- The "model compare" function
has been adjusted so that it correctly compares user-defined properties.
- Previously attempting to drag a
box from one diagram onto another would crash COGENT. This operation is not
supported, but at least now COGENT does not crash.
- A bug occuring when multiple
interactive activation networks were used within a single model has been
fixed. Previously nodes in interactive activation networks could be confused
if different networks had nodes with the same name. This is no longer the
Version 2.3 #4 (Fri Jun 3 12:58:22 2005)
- The main research programme window
now remembers which tab was last viewed for each research programme, and
automatically switched to this when a research programme is opened.
- Nodes within interactive activation
networks can now be sent inhibit as well as excite messages.
See the interactive activation network help
file for more details.
- The display of very
long file names (in things like the archive browser) has been improved so that
windows containing those file names don't automatically grow to more than the
width of the screen.
- The handling of
"grounded buffer" errors has been improved. Specifically, the warning message
caused by attempts to add unground terms to grounded buffers now makes more
- The connectivity check
procedure (which checks that a diagram contains all and only the necessary
arrows) was failing to correctly account for globally accessible boxes (e.g.,
knowledge bases). Such boxes are now dealt with correctly.
- The activations of nodes within
interactive activation networks are now clipped to the network's range, so
nodes cannot be excited above the maximum value or inhibited below the minimum
- Arrow drawing is slightly
improved for boxes that are very close together.
- Numerous minor errors and
inconsistencies in print output have been rectified.
- Windows 98 users may have
noticed that in earlier releases of version 2.3 a window with warning messages
would generally appear when COGENT was started. These warnings did not cause
any real problems, but the window should no longer appear.
Version 2.3 #3 (Mon Dec 20 08:03:56 2004)
- Prolog files can now be imported
into COGENT boxes. Note that at present the import routine only handles
a fragment of Prolog.
- Fixed bug in the research
programme manager's use of icons (introduced in version 2.3 # 2), which caused
COGENT to crash when run on some platforms (notably Fedora Core 2), but
not others (Mac OS X, Windows, Redhat 9.0).
- Fixed bug in undo/redo of
the change class command.
- Fixed bug in determining
possible targets for conditions and messages. Legitimate targets that were
nested inside compounds were being left off the menus on the condition
definition, rule, and data editors.
Version 2.3 #2 (Tue Aug 24 12:08:59 2004)
- Since the main COGENT research
programme list can now contain research programmes and folders, icons have
been added beside the names to differentiate between the two. A COGENT brain
icon indicates a COGENT research programme, while a standard "open folder"
icon indicates a folder. A third icon, an upward arrow, indicates the parent
folder. Clicking a folder name will move the COGENT research programme browser
to that folder. Clicking on the upward arrow will move the browser up one
level in the folder hierarchy. Clicking on a research programme name will, as
always, open that research programme.
- A serious bug in printing
processes that contain user defined conditions on Windows has been fixed. We
are grateful to Yi Zhang for reporting the problem.
Version 2.3 #1 (Sat Mar 13 10:05:32 2004)
- When registered, the COGENT
Research Programme manager now allows browsing of the user's complete
filespace. Thus, research programmes can be created in any folder. The
research programme list actually includes all folders within the current
folder. If the special folder ".." is selected, COGENT will ascend one level
in the user's filespace. If a folder that does not correspond to a COGENT
research programme is selected, then COGENT will descend into that folder. New
research programmes are always created in the current folder, wherever that
- The Socket
class, instances of which could previously function in either server mode or
client mode, has been broken into two separate subclasses,
Socket/Server and Socket/Client. COGENT will automatically
update models that contain socket boxes to reflect this change. At the same
time some clear bugs in the socket interface have been corrected.
- The location of the
"tool-tip" window giving model details that pops up when the mouse hovers over
a model's icon on the Diagrammatic History canvas has been altered to prevent
the window from obscuring the model icon.
- A few typos in this file have
Version 2.3 #0 (Thu Mar 4 20:08:58 2004)
- COGENT is now distributed under the
GNU General Public License (version 2). This means that the source code is now
in the public domain (subject to the terms and conditions of the GNU GPL license).
- COGENT now includes a facility to
download models directly from the archive at the COGENT website into COGENT.
To open a window to browse the COGENT model archive, select View ->
CogWeb. See the manual
page for more information.
- Animations! Box and arrow diagrams
now show messages passing between boxes when a model is running (provided the
appropriate option is set). This feature is only available in the registered
version, and can be switched on/off via the OOS Preferences panel. (The
feature was first suggested by JF way back in November 1996.)
- The Diagrammatic History panel now
knows when the cursor is positioned over a model's node, and responds by
displaying useful facts about the model (name, creation date, last edit date,
last run date).
- Knowledge bases now come in two
forms: the old unstructured form and a
new hierarchical form,
in which knowledge may be hierarchically structured via a class hierarchy with
inheritance operating over the hierarchy. There's also a class editor for
specifying the initial contents of a hierarchical knowledge base and a viewer
for examining the contents while a model is running.
- The capabilities of socket boxes
have been extended. Identifiers for open connections are now accessible in the
box's state (and may be matched), and messages can now be tagged with the
identifier of the connection to which they relate. For more details see the revised documentation.
- Axis autoscaling for all graph
types is now supported. Graphical buffers and data sinks have two additional
Boolean properties: "Autoscale X" and "Autoscale Y". When "Autoscale X" is
set, the values of "X Min"/"X Max" properties are ignored and the graph's Max
and Min are calculated from the data on the graph. Similar comments apply
for "Autoscale Y".
- All functions related to the
Diagrammatic History panel are now accessible by selecting a node and then
selecting the relevant function from a set of fixed menus at the top of the
panel. This should make things easier for uses without 2 button mouses. The
functions can also be applied to multiple models by using the shift or ctrl
keys to select multiple models. At the same time, the buttons that control the
functions have been re-organised so they are consistent with the popup-menu
that appears when the user right-clicks on a node.
- The Model List panel has been
augmented with features similar to those of the Diagrammatic History
panel -- one or more models may be selected and operated on via menus
available on a menu bar at the top of the panel and via right-clicking.
It is also possible to hide/show columns within the Model List view.
- A "compare models" function has
been added to both the Diagrammatic History panel and the Model List panel.
This function, which is accessed from teh File menu, allows the user to
compare two models within the same research programme and get a report on any
differences between the models.
- The contents of description
windows can now be printed, independently of other aspects of a project or
model. The controls for description windows have also been placed under a
single "File" menu parallelling the controls for the Diagrammatic History
- Added "Archive" option to the
Research Programme Manager's File menus, providing an alternative method of
accessing the archive browser.
- Added a further built-in condition
to generate numbers according to a Poisson distribution.
- The preferences X drift
and Y drift, which specified the number of pixels added to windows by the
window manager (and hence the amount of correction needed to prevent windows
from drifting when a model was saved) have been removed. Better coding means
that the information can be determined directly without consulting the user.
The two preferences were originally added in COGENT version 1.10.01 around
- Minor changes have been
made to the Preferences window to clarify the scope of the save and reload
functions. There are now separate "Save" and "Reload" buttons on each page of
the window, and "Save All" and "Reload All" buttons at the top of the
window. At the same time, "Save" and "Reload" buttons have been added to
the print dialogue popup that appears whenever the user opts to print
- The limit on the length
of box and model names (which was 35 characters) has been removed.
- The term "directory"
has been systematically replaced with "folder", given the dominance of
"folder" in the Windows community and its increasing use within the Mac and
windows are now the left-most tab on all notebooks. This means that by
default notebooks open at the description window, effectively giving
descriptions a higher priority. Some users will find this annoying. The
intention is to make it harder to "forget" to document things.
- The prompt that appears
for saving when COGENT auto-detects that a model should be updated for the
current version now mentions the model by name, rather than just referring to
it as "the model".
- Recovery following
detection of a syntax error in a rule/condition/data element etc. has
- The file saving
mechanism has been improved so that it should behave sanely if a disk error
(e.g., quota exceeded) occurs when attempting to save a file. Basically the
mechanism now writes to a temporary file. If that succeeds, the original file
is deleted and the temporary file moved to replace it. If an error occurs in
writing the temporary file, the previous file is not deleted or over-written.
(Previously it would he over-written.)
- The Clipboard
can now be accessed from a menu on box windows (an item under the
View menu), as well as from the View menu of the main window.
- A trivial minor bug in printing
message matrices in LaTeX format - one border line of the table not being
printed - has been fixed.
- An inconsistency in printing
x-marks on analogue buffer canvases has been removed. Previously such marks
were scaled by the analogue buffer scaling parameters when printed from
windows but not when viewed on screen or printed in other formats. Now they
are scaled at all times.
- The handling of popup transient
windows (e.g., confirmation windows) has been improved. Previously these
windows could be hidden by dragging other COGENT windows over them, even when
the transient window had focus. This is now no longer possible: popup
transients know their parent window and cannot be obscured by their
Version 2.2 #7 (Mon Mar 31 15:54:41 2003)
- Fixed potentially fatal bug in
research programme diagram editing. Previously, setting the parent of a model
to "None" would typically crash COGENT.
- Fixed bug in redrawing
of the OOS script window following deletion of a script command.
Previously when a script command was deleted its widgets were erased, but
widgets for other script command were not repositioned.
Version 2.2 #6 (Thu Feb 27 16:07:18 2003)
- Fixed bug in box promotion
function affecting boxes with no arrows. Promoting such boxes was causing a
- Fixed minor over-sight that
prevented selection of the top-level node (either the root folder or the
top folder on a drive) in the folder chooser widget.
- Fixed Windows-specific bug in
setting window labels. On UNIX and Mac OS X, window labels have always shown
modification dates and an asterix if the contents have been edited. This was
not shown on Windows, due apparently to a difference in the way one GTK
- Fixed Windows-specific bug
that was occasionally causing OOS to crash with an "Exit code 1" error.
Version 2.2 #5 (Thu Feb 20 17:52:51 2003)
- Fixed Windows-specific cursor
problem when drawing on box and arrow diagrams. Any attempt to draw on a box
and arrow diagram was causing a text window to appear with error messages
relating to the cursor size. This has now been fixed (by using a small cursor
on Windows than on UNIX-based platforms). This bug only affected COGENT on
Windows platforms. (Thanks to Bilge Say for reporting the bug.)
- Fixed Windows-specific problem
in which the contents of some tabbed windows were not being drawn when
the window was opened.
Version 2.2 #4 (Fri Jan 17 17:28:20 2003)
- Fixed crash when creating a
model using the unregistered version. This bug was introduced in Version 2.2
#3, and can be avoided by entering registration details. (Thanks to Chris
Myers for reporting the bug.)
Version 2.2 #3 (Mon Dec 9 15:33:51 2002)
- Added an option to allow showing/hiding of
the (previously invisible) grid used to position boxes on box and arrow
diagrams. At the same time, a button has been added to each box's View
menu to allow toggling of view of the grid.
- A grid is now also used for placement of
models on the Diagrammatic History view, and this can be shown/hidden via a
button on the (new) View menu on COGENT's main Research Programme
- Dependencies between properties are now
reflected on properties panels. For example, if a buffer's "Limited Capacity"
property is set to false, then the capacity related properties "Capacity" and
"On Excess" will be greyed out, indicating that they are irrelevant.
- The contents of the three "view" windows
(the connectivity check, the term list, and the singleton variable list) can
now be sorted by clicking on the column labels within any view.
- Altered box and arrow diagram cursor so
that when a class is selected from the palette the cursor reflects the
- Added "Move to Top" and "Move to Bottom"
options to the data canvas edit menu.
- The popup window used for initialising a
model's name and brief description now also includes (in the registered
version only) facilities to specify the model's location on the Diagrammatic
- Altered cursor functions so a proper
"wait" cursor appears when a window is busy.
- The opening splash screen has been
revised. It can now cope with being resized.
- A couple of further fonts are now
configurable. See the "Fonts" tab of the "Preferences" panel.
- Improved reporting of runtime errors
from Prolog. Where possible, the error report now includes the name of
the box in which the error occurred.
- Added a further print preference to
allow printing with a fixed width font. This is most useful when printing
text files with columns that should line up.
- Several of the buttons on the main Research Programme
Manager window have been collapsed to menu items. See the View and
- Greatly improved
handling of redrawing graphs, analogue buffer contents and other current state
views. All are now at least twice as fast. Drawing large graphs was
particularly inefficient. It is now more than 100 times faster!
- The "Demote" menu (available on
the box and arrow canvas when a box is clicked on) now excludes the name of
the box being demoted (so you can't even try to demote a box into itself).
- Slightly better placement of the
vertical axis label on graphs.
- Previously the replace function
was not replacing items within ignored rules, condition definitions, etc. This
has now been fixed.
- It is no longer possible to set
a font size of zero, or a grid size of zero. (Both are silly things to do, but
previously setting the grid size to zero would cause COGENT to crash.)
- Fixed potentially fatal error
relating to undo/redo of editing commands involving arrows to/from boxes that
are "external" to a box and arrow diagram. At best, undo of such a command
simply failed. At worst it caused COGENT to crash. Also, if undo/redo fails
for some reason, the offending command is removed from the undo/redo list,
allow earlier commands on the undo/redo list to be accessed.
- Arrow bookkeeping when pasting
boxes back onto a canvas has been greatly improved. Previously malformed
arrows were generated in certain circumstances. This should be fixed (but the
code is pretty complex, and bugs could still be lurking).
- Connectivity checking has been
revised further to correctly handle arrows between boxes that are embedded in
chains of compound boxes. At the same time, the information presented in
connectivity view has been extended to include the diagram or canvas on which
any missing arrows should be drawn.
- The Diagrammatic History canvas
allows registered users to alter the history diagram by changing the "parent"
of a model. Setting a model's parent to "None" was causing a crash. This has
now been fixed.
- The confirmation option for
model deletion was being ignored, so even if confirmation was set COGENT would
still delete without seeking confirmation.
- A couple of editing functions
(find term and locate singleton variables) provide a list of box elements and
allow the user to click on one to open the relevant window at the selected
element. Previously, scrolling to the selected element only worked if the
window was already open. If it was closed, selecting an element just opened
the window containing the element. This is now fixed: selecting an element now
pops up the right window at the right place.
- Several oversights in the code
for displaying the properties of a box on its parent's properties panel have
been discovered and fixed. Now, when a box is cut, pasted or its class is
changed, or when it is edited and then reloaded, the properties panel of the
box's parent (and its parent's parents, etc.) is reset, to ensure that it
remains in sync with the properties of the box.
- A minor printing bug was
introduced in Version 2.2 #2. If the LaTeX output format was chosen, the LaTeX
generated for formatting properties was incorrect. This has been fixed.
- The printing option Print
new box on new page was being ignored by all printing formats except
PostScript. This wasn't sensible. It is now checked by all printing formats
except HTML (which doesn't allow page feeds).
Version 2.2 #2 (Fri Oct 25 08:59:51 2002)
- Improved the replace function to allow selective
replace (i.e., find next/replace it, and so on), as well as the original
"replace all" function.
- Replaced property promotion/demotion with a less clumsy
mechanism of property freezing/thawing. See the documentation.
- A new box type, associative network, has been added. See the documentation.
- Merged find and replace functions onto a
single window with a notebook which allows switching between the two.
- Tidied and fixed the function for locating singleton
variables introduced in version 2.2 #1 and the function for checking
connectivity of arrows that was disabled in version 2.2 #1. The results of the
functions are displayed on a page of the same window/notebook used for the
find/replace function. Rudimentary
documentation is provided. An additional page on this notebook also gives
a list of terms used within a box. All of these pages may be accessed from the
View menu of each box's window. This menu, which is new to this
version, also gives access to the OOS run window.
- Huge speed-ups in running models under Unix (and Mac OS X)
have been achieved by avoiding unnecessary communication between COGENT and
OOS. Basically OOS now only dumps the state of boxes whose windows are
currently displaying the state. Closed boxes and boxes open at other views
(e.g., properties) now run much more efficiently. Run times can be reduced to
less than half with this enhancement.
- The set of built-in conditions has been increased to include
a few conditions for vector arithmetic. These include vector addition,
subtraction, scaling and length. These functions are available under the
vector arithmetic submenu on the rule and condition definition editor. In
addition, the dot product function has been moved from the list arithmetic
menu to the vector arithmetic menu.
- If a font loading error occurs (due to a user trying to use
a font that isn't available), it is now only reported once. Further reports
are suppressed because they are annoying.
- The Summarise button on the right of rule, element
and data windows has been moved to a sub-item of the Canvas item on the
canvas' menu (i.e., the one that pops up on right-clicking). This is a more
consistent place for the button, and improves the layout when palette's are
- Some types of button used in the data, rule, condition and
script editors have been modified to better reflect their function.
Specifically, "option menus" are used where the user is required to set a
value from a list of options, and "abbreviated menu buttons" (shown as a
little downward pointing triangle) are now only used for menus relating to
operations on elements in the editor. Previously abbreviated menu buttons were
used for both. At the some time, some script elements have had clarifying name
- Improved updating of dynamic canvases following
(re)initialisation. Previously reinitialisation didn't always force redrawing
of dynamic canvases, as it clearly should have!
- Fixed a minor bug in undo/redo which meant that, while edits to
enumerated properties could be undone/redone, the results of such edits were
not properly displayed on the Properties page.
- OOS preferences are available both on page of the OOS window and
a page of the Preferences window. Setting them on either page did set the
preference but did not alter the value shown on the other window. So the pages
could become inconsistent with the actual values of the preferences. This
minor bug has now been fixed.
- Previously, the folder chooser (used for setting preferences)
did not always open with the currently selected folder visible in the
scrolled window (as reported by RC on Jun 1, 2001). This has now been fixed.
Version 2.2 #1 (Thu Sep 26 12:58:48 2002)
- Added a facility to search elements, rules, condition
definitions etc. for "singleton variables". These are variables that occur
just once in each term (and whose name doesn't begin with the under-score
character). Such variables may cause bugs (but they may also be harmless,
depending on the user's intentions). This facility is available under the
Check -> Box Contents... option of each box's Edit menu.
It is only available in the registered version.
- Reorganised the "Find" window. This still needs to be
integrated with the replace window ... hopefully in the next version.
- Generalised palette placement on diagram and data windows
to allow left/right as well as top/bottom placement. The palette is arranged
as a vertical stack of buttons when it appears on the left or right,
meaning that more buttons are generally visible.
See miscellaneous preferences.
- Modified file writing by OOS to avoid screen flicker in
dynamic views during model execution. This should also eliminate the
possibility of syntax errors occurring while updating a dynamic window.
- The Check Consistency option under each box's
Edit menu has been temporarily removed. The functionality is currently
under revision and we expect to provide an improved version in the next
- Fixed a serious bug which was preventing save of buffer contents
and mapping rules. It is unclear when this bug entered the code.
Version 2.2 #0 (Fri Sep 20 19:25:00 2002)
- Changed default windows installation folder (from
C:\COGENT to C:\Program Files\COGENT).
- COGENT on Mac OS X is now supported.
- Halved screen flicker/redraw time when selecting and
deselecting boxes. (Unfortunately significant flicker remains.)
- Altered the registration hash function so that it is
independent of beta release and patch level. It is no longer necessary to get
a new registration number for every minor release.
- Added "Grounded" property to buffers: a Boolean property
that, if set, prohibits ungrounded elements in buffers.
- Added a new "Socket" box. Socket boxes allow interfacing of
COGENT with other systems through TCP/IP. See the
documentation on socket boxes.
- Added "Print" buttons to current contents, message log, and
all graphical box views (stacks, graphs, analogue buffers, etc.). This button
allows printing of just the particular view.
- Altered display of "Variables" panel in the OOS script
window to give notification when no variables have been set.
- Message matrix canvases are now sensitive to mouse clicks.
Double-clicking on a row/column label will open the corresponding box.
- Added a "Model List" view to the research programme manager.
This displays similar information to the diagrammatic history view, but shows
it in text form. It also explicitly shows the creation dates of each model in
a research programme. Models in the list can be opened by double-clicking on
- Altered the creation mechanism for
new models within a research programme. The "New Model" button now pops up a
dialogue prompting for model name/description, and values entered by the user
are used to initialise the corresponding fields in the new model.
- Add documentation for user-defined
properties and property promotion/demotion.
- Improved display of weight matrix
information for feed-forward network boxes and activation information in
interactive activation network boxes.
- Added viewing/editing facilities
for the clipboard. It is now possible to examine COGENT's clipboard and
manipulate its contents.
- Fix NULL font bug -- COGENT was
crashing when a chosen X font was not available.
- Fix scaling of printed project
history window output.
- Fix numerous small formatting
bugs in various print routines (mostly relating to printing under Windows).
- Fix problem in printing a box
by right-clicking on the box and selecting the "Print" option.
- Fix problem in responding to
double clicks on some regions of diagram canvases (specifically on some
external objects within compound boxes).
- Fix archive browser interaction
between setting of project folder and archive extraction -- COGENT was
failing to set the project folder at the right time.
- Scrolling of the OOS output
window is now possible (as was always intended).
- Copying a box was not copying
the box's display rules. This oversight has now been fixed.
- Correct error in re-instating
arrows to/from boxes following cutting to and pasting from the clipboard.
- Suppress irrelevant GTK+
warnings when recovering edits of object names.
- Correct documentation error in
help files for making graphs with filled bars/markers.
- Update all help files for the
current version. Many help files distributed with version 2.1 dated back to
Version 2.1 (Fri Oct 26 14:53:52 2001)
- Double clicking on an external box will now open that box.
- Dialogue boxes for copying/renaming research programmes,
scripts, etc. are now initialised with the current name of the research
programme, script, etc.
- Various major changes to the experiment scripting interface,
including allowing the import of text scripts (assuming they are valid
scripts), allowing embedded commands within scripts (e.g., while
condition do list of commands), replacement of explicit calls to
subscripts in commands such as "repeat", "while/do", "if/then" with the "call"
command, and automatic conversion of calls to subscripts to appropriate
- All properties that could previously have values Yes/No
selected from a menu have been converted to use check-boxes.
- Added cut/paste facility in the research programme manager.
It is now possible to cut a complete model from one research programme and
paste it into another. This feature is currently only available to registered
- The default for archive/extract is now to retain the
project/archive being archived/extracted, rather than to delete it. If this
option is already set to a specific value in your saved preferences then this
change will have no effect.
- More left and right brackets are now used in mathematical
expressions, to ensure that users aren't caught out by occasional oddities
with mathematical operator priorities.
- Fix to display of floating point numbers in current state windows:
Internal float_ext/3 constructions are now converted to a standard floating
point representation for output.
- Fix to research programme renaming: The ":" character is now prohibited
from appearing in research programme names. UNIX doesn't mind the ":", but
Windows does. For compatibility it is now banned in both! (Existing research
programme names will not be affected.)
- Fix to research programme renaming from the archive browser: Previously
COGENT could crash if the archive browser was used to rename a research
programme when no research programme was open in the main COGENT window.
Version 2.1 b4 (Tue Jul 12 21:40:42 2001)
- The student/professional edition has been abolished and
replaced with a single edition functioning in unregistered/registered modes.
This means that the professional edition is no longer a separate package.
Upgrading to what was the professional edition is now a matter of registering
and entering an appropriate user id and key in the registration box.
- Creation of a new research programme will now cause the
scrolling widget of research programme names to scroll to the new name.
- Accelerator keys added for research programme management
functions and for some element editing functions (Apply = CTRL-A and Done =
- Fix to bug in project renaming/copying, whereby the contents of the
history window could be corrupted.
- Fix to location reported by syntax error routines used when importing
rules etc. to a canvas. (Reported by RC on Jan 24, 1999.) Previously the
location reported (line count and character count) were incorrect. (The import
function is only available to registered users.)
- Fix to bug in setting the position of the first node in a research
programme (in the professional edition only), whereby such nodes could be
drawn on the history canvas but not accessed by mouse clicks.
- Fix to bug with very old-style data sinks: the auto-update code has been
fixed to ensure that data sinks created with version 1 function sensibly.
Version 2.1 b3 (Tue Jun 12 21:40:42 2001)
- Enhancement to import function: Imported items can now be prepended or
appended to existing items. (The import and export functions are only
available in the professional edition.)
- Fix to two potentially serious
bugs (introduced in V2.1 b0) in the function for
setting the project folder. Most seriously, setting the project folder would
correctly display the research programmes in the selected folder, but those
research programmes could not be opened. Furthermore, if a research programme
was open when the folder was set, COGENT would crash.
Version 2.1 b2 (Wed Jun 6 16:47:17 2001)
- Enhanced OOS error reporting: multi-line errors are now reported with
multiple warning messages (and the end-of-line character is correctly handled
- Fix to minor bug in font selection. Previously, if the user began to
select a font, then pressed the "Set" button on the font selector without
actually selecting a font, COGENT would issue a GTK warning. This no longer
happens. Instead COGENT reverts to the previous font.
- Fix to potentially serious bug in arithmetic "power" function (in which
arguments were incorrectly ordered).
- Fix to bug in use of display rules (attached to buffer). Rules were being
created as normal process rules (instead of display rules).
Version 2.1 b1 (Fri Jun 1 11:43:19 2001)
This release features dozens of enhancements, reorganisation of several
components, and a few significant bug fixes.
- All new smart installation procedure, designed to make installation and
setting of essential preference much easier
- Addition of mechanism to define new conditions directly from the
- Addition of improved display facilities for propositional buffers: rule
sets may now be associated with a propositional buffer to provide an alternate
graphical representation of the propositional contents. Find and replace work
on these so-called mapping rules.
- Added "Set Parent" menu item to allow re parenting of nodes on the
project history window. This may not always be a good thing: it allows
rewriting of history! Hence, it is currently only available in the
- A pop-up window now appears when an OOS error occurs.
- A page has been added to the run window's notebook allowing OOS
preferences to be set directly from there.
- Minor modifications to the Prolog parser to improve handling of negation,
and especially distinguishing between the unary "-" and the binary "-".
- Added new enumerated property to table buffers and sinks: Sort. This
controls the ordering of rows and columns in the table display. Possible
values are: Alpha (i.e., alphanumeric); Reverse Alpha (i.e., reverse
alphanumeric); Primacy (i.e., in order of entry to the table, with the first
elements to the top/left); Recency (i.e., in order of entry to the table, with
the last elements to the top/left). The value does not affect model execution.
- Modified rule editor to allow independent re sizing of condition panel
and action panel.
- Added pull-down menu of system triggers that sits beside the trigger text
entry field, allowing rapid selection of system triggers when required.
- Addition of new conditions to menus: select/3, cartesian_polar/3,
- Added various glosses for term comparison operations on the
rule/condition definition canvas and on printouts etc. (e.g., "\==" now
appears as "is distinct from", and "=" now appears as "unifies with").
- Addition of "Copy Condition" item to condition edit menus
- Addition of "Copy Action" in item on action edit menus
- The archiving facilities have been completely over-hauled with the
addition of an all-new archive/extraction interface. The interface shows two
scrolling lists (research programmes and archives), and has buttons for
transferring items from one list to the other. Relevant preferences may also
be set directly from the panel, allowing, for example, navigation around
multiple archive or project folders. In addition, multiple archive
formats are now supported, and several new preferences have been added.
Supported formats include: TGZ (the old faithful); TAR (uncompressed UNIX tar
files); and CAR (COGENT's native archive format). CAR format archives will
transfer between UNIX and windows, and will not require any special UNIX tools
(making the preferable to TGZ and TAR formats). They tend to be slightly
smaller than equivalent TAR archives. CAR archives are normally much larger
than TGZ archives, however. A compressed CAR format (CAZ) may be developed at
some later stage to reduce archive size. New preferences include archive
format and extract format (both being CAR by default) and retain
on extract and retain on archive (both being false by default).
- The archive browser also allows extraction of COG files (as generated by
WinCOGENT). Extraction of a COG archive will generate a research programme by
the same name and containing a single model.
- Added documentation on the archive browser.
- A folder browser widget has been added for setting options relating to
- Re-positioning of objects in the research programme history window (as
suggested by JF on 03/04/96) is now possible. This feature is currently only
enabled in the Professional Edition.
- The Windows version now uses the Windows Registry for storing
- Message log windows are now "greyed out" when message logging is switched
- Updating of some documentation, specifically bitmaps and documentation on
Reorganisation of functionality includes:
- Various menu items (Import/Export/Clear/Reopen) moved from the main
COGENT window tool-bar to a "Canvas" submenu available from each canvas. This
is motivated by the fact that these items refer to the current canvas view,
and not to the whole box. The functions now also all work on mapping rules (as
above) as well as normal box contents.
- Change to all quotes in output (from ``...'' to "..."), since the later
is more likely to look sensible.
- Recurrent property of processes converted from an enumerated list with
default No to a Boolean with default TRUE. Old models will automatically be
- Modified feedback dialogue boxes so the user isn't given the option of
quitting. The user now just gets to say "OK".
- Tidying up of help preferences to simplify configuration for a variety of
- The preference for specifying the location of utility programmes has been
removed. This was originally intended to fix a problem with archiving on
Windows, but it didn't.
- Altered OOS start-up: OOS now reads oos_init.pl from the model's root
folder before starting. This file specifies search paths for libraries,
- Memory allocation checked with zmalloc (thanks to Eric Murray).
Several minor memory leaks were fixed.
Bug fixes include:
- Fixed bug in Win32 version whereby help facilities were inaccessible
whenever a model was open. This bug would often leave Windows frozen and
require a system reboot. It was thus pretty severe.
- Fixed problem with highlight following use of find: any click on a
contents panel now unhighlights all elements before doing anything else.
- Fixed printing of quoted atoms in LaTeX format, which were appearing
without their quotes!
- Fixed bug in preference code that was preventing recall of "Print in
LaTeX format" (and defaulting to "Print in PostScript format"). This also
affected "Print in Win32 format".
- Fixed bug in preference code that was saving the print folder when the
file locations were displayed, instead of when the print preferences were
- Fixed bug in handling the "Exit Program" option on error dialogues. (It
wasn't always exiting immediately.)
- Fixed bug in cut/paste of boxes between models. It should now be possible
to cut a box from one model and paste it into another. Note though that,
unlike in the case of cutting and pasting of boxes within a model, arrows will
not normally be preserved. (Reported by RC on Jan 24, 1999.)
Version 2 b2 (Tue Feb 19 17:16:54 2001)
- Improved paging/redrawing of pagable canvases
- If a condition in a rule/defined condition is changed (via the Change
Condition menu) to a condition with the same functor, the arguments will now
be preserved were possible.
- Fixed description windows for models: previously they weren't being
loaded, and they weren't being saved! Who knows how/when this crept in!
- Improved consistency of menu items in the scripting system
- Improved file selection widgets for import/export
- Increased string space allocation in analogue buffer images
- Reorganised some condition menu items: User defined conditions are now
listed as such on the add/edit condition menus, and "call Prolog" has been
moved to the "miscellaneous" submenu.
- Improved handling of script saving: Initialising the execution model now
forces script saving (provided the save on run option is set).
- Fixed bug in script saving/discarding such that discarding script edits
really does discard script edits.
- Fixed bug arising when the "Continue editing" option was chosen after
attempting to close a window.
- Added option to commit window to abort and continue editing a
- Replaced "done" menu on all object windows with a done button, plus
pop-up that appears if anything needs saving.
- Added a "Variables" view on the OOS Script window (in the Professional
- Rationalised user preferences. One or two redundant warning/confirmation
preferences have been deleted.
- Fixed default Help URL for Windows.
- Added a few new display formats for statistics and term comparison
- Added step operator: op(675, xfy, step) for use by the
- Added randomise, while/do, if/then/else and
for/do constructs for script (Professional Edition only).
- Operators are now read by COGENT and OOS from the file operators.pl in
the OOS library folder. Unscrupulous users may take advantage of this to
define their own operators.
- Fixed typos in some user messages ("Coninue" -> "Continue").
- Added a preference for the location of utility programmes for Windows ...
doesn't seem to fix archive/extract as hoped.
Version 2 b1 (Thu Oct 5 16:00:00 2000)
This version is pretty much entirely new. It uses a new look and feel that
unifies the previous Windows and UNIX versions of COGENT.
Version 1.11.00 (Thu Nov 16 19:04:24 1999)
- Modified OOS interface: The OOS trial and block windows have been removed. There is now a single OOS script window that gives access to virtually all of the functions previously available under trial and block mode, and that, in addition, allows the specification of complex scripts to reflect a range of experimental designs. When the OOS script window is opened, the most recently used script is automatically loaded, and execution of a script can be paused and restarted at any point. (COGENT can even be closed completely without upsetting a paused script state.) See the Run window documentation for more details.
- As a consequence of the reorganisation of the execution interface, end-of-block and end-of-trial detection methods have been overhauled, with the addition of the system_end(Level) set of triggers, which replace system_quiescent. Also, the built-in condition trial/2 (the current trial is N of T) can no longer return the number of trials in the current block as its second argument, so if you use this method to determine the end of a block, you will need to rewrite your code to use the system_end(block) trigger instead.
- OOS is no longer distributed in source form; this means the user no longer needs to have SWI Prolog installed separately, and COGENT will not use it anyway. This should simplify the installation process and improve system reliability.
- Added new options: An OOS options panel has been added to allow the specification of the location of the OOS executable and COGENT class hierarchy, as well as some run-time options.
- Modified class hierarchy: The various types of network box are now all placed under a single node in the class hierarchy.
- Modified treatment of colour and scaling on analogue buffers: Three new analogue buffer properties have been added (Colour, X Scale, Y Scale). These replace the the functionality previously available on analogue buffer windows' tool-bars. The advantage of the new scheme is that the values of these new properties can be stored, and are not reset every time the user opens an analogue buffer's window.
- Improved PostScript output for analogue buffers: Scaling factors, colour, line style and line weight (as specified in buffer's properties or the buffer elements' secondary properties) are now taken into account in producing PostScript output.
- Found and fixed minor bug in script command generation (apparent only under LINUX as far as I know).
- Found and fixed potentially fatal bug in the "Add before command" option of the script editor.
- Found and fixed potentially fatal bug in the spin button associated with the "repeat" command on the script editor.
- Modified functionality of the "Delete" option on the script editor's file menu: Previously this deleted the current script. Now it pops up a file chooser to allow the user to select a script for deletion.
- Rather a lot of code reorganisation (that could have introduced new bugs).
- Added support for "experiment" as another level of processing (in addition to trial, block, subject, and session).
- Added LaTeX format option to print dialogue (allowing output to be saved as a LaTeX document).
- Slightly improved reporting of syntax errors. The syntax error dialogue now gives an option to turn further reporting of syntax errors off.
- Extended built-in conditions with a few statistical functions: probability/3, rank_list/2, correlation/3, related_t/2 and unrelated_t/3. See the documentation on built-in conditions for more details.
- Implemented find and replace options from all object windows. See the documentation for details.
- Implemented undo and redo options from all object windows. See the documentation for details.
- Various efficiency improvements to OOS.
- Fixed long-standing difficulty with defining recursive conditions. Previously when editing a user-defined condition, the only conditions available under the Prolog submenu were those that had already been committed. This meant the current condition was not listed. Now, the list of available conditions includes the current functor/arity combinations of all conditions, even if they are being edited.
- The "Canvas Font" option has been renamed "Diagram Font".
- Option handling (in GTK COGENT only) has been completely revised. Options are no longer stored in the Xdefaults database. Instead, they are loaded from (and stored in) the users .cogentrc file.
- The project manager window has been merged with the history window.
- Changed semantics of additions to table buffers: Adding an element to a cell of such a buffer now automatically deletes any previous element in that cell.
- Fixed sublist/2 so that it really does re-satisfy to find all sublist of a given list.
Version 1.10.04 (Thu Jan 21 19:04:24 1999)
- Found and fixed serious bug in table redrawing (that was causing infinite looping when redrawing tables containing non-table elements).
- Found and fixed minor bug introduced in correction to canvas re sizing code (in version 1.10.02). Previous code was causing harmless warnings when switching between property and description views of compound sub-object canvases. These warnings are no longer produced.
- Fixed potentially fatal bug in generation of HTML for rules with no actions. (Such rules are pointless are should not be present.)
- Fixed vertical alignment in HTML output of rules.
- Improved portability of OOS between Unix and Windows.
- Fixed portability of OOS to SWI Prolog version 3.1.
- Found and fixed minor bug in paste (incorrectly fixed in version 1.10.03).
- Added further options in the initial state/rule definition windows, allowing an element to be moved up or down (equivalent to cutting and then pasting, but with one mouse click).
- Added new box type: interactive activation network.
- Added new option for specifying the position of the box/arrow edit buttons. They may now appear either above or below the main canvas.
- Compound objects now make their external objects snap to the same grid as their internal objects. (This means that it is now possible to get perfectly straight lines between internal and external objects on a compound.)
- Modified OOS treatment of floating point numbers to improve efficiency.
- Modified redrawing of COGENT canvases during execution of OOS so that redrawing is only attempted when the file changes (hopefully). Canvases corresponding to files that don't change on successive cycles will not be redrawn on each cycle.
- Found and fixed over-sight in script execution. Running a script was not first ensuring the model was saved. (This behaviour was at variance with other interaction with OOS.) Models are now automatically saved on execution of a script.
Version 1.10.03 (Mon Nov 16 08:48:09 1998)
- Fixed bug in model copying (reported by MR on 11/11/98).
- Found and fixed bug in replace callback.
- Found and fixed bug in paste introduced in version 1.10.02.
- Disabled replace callback (because it is undocumented, incomplete, and has irreversible consequences).
Version 1.10.02 (Wed Nov 11 22:58:13 1998)
- Found and fixed potentially fatal bug (introduced in version 1.10.01) in generating the rule action editor menu for rules within recurrent processes.
- Found and fixed potentially fatal bug in delete box. (The code was buggy for some time, but the bug was never reported!)
- Found and fixed potentially fatal bug in the rule editor. If a process was writing to a box of unknown class, editing the actions of rules in that process would result in a crash.
- Found and fixed minor bug in syntax checking (resulting in the temporary addition of unnecessary recurrent arrows to buffers containing condition definitions).
- Found and fixed minor bug in PostScript printing of certain properties (specifically properties with bounded real values).
- Fixed minor bug in re-sizing sub-object canvases. Often re-sizing didn't cause redrawing but redrawing is necessary for those canvases with arrows to external objects.
- Altered default value of analogue buffer Dimensionality. Previously the default was one, but the vast majority of applications use the value two, so the default has been switched.
- Altered default value of network Weight Parameter A from 0 to -1. This ensures that weights in the default network configuration are symmetrically distributed about 0, which is consistent with the default activation function.
- Altered positioning of pop-up sub-element editors. These are now centred on the screen, rather than offset from their parent window (because once popped-up they should be filled in and closed).
- Altered PostScript printing of boxes of unknown class. The class field of such boxes is now printed, with a value of UNKNOWN.
- Altered PostScript printing of boxes of unknown name. The name field of such boxes is now printed, with a value of UNNAMED.
- Replaced delete functionality with a global clipboard. Previously, each class had its own clipboard. This was fine when the types of elements within boxes of each class were disjoint. The proliferation of classes and the inclusion of elements of the same type in different class definitions has made this less useful, however. With the global clipboard, any items (including complete boxes) that are deleted from a model are placed in a central store. They can then be pasted back from this store into any box provided they are of the correct type for that box. (So it is now possible to delete conditions from processes and paste them into buffers.)
- Improved documentation for the script editor.
Version 1.10.01 (Mon Nov 9 13:15:45 1998)
- Added user definable properties. It is now possible for the user to define
his/her own properties, and use these properties to control the behaviour of
process and buffer boxes. When a box is displayed in property mode you will
notice three new buttons above the properties: add property, edit property,
and delete property. These buttons allow the user to extend the basic property
set associated with an object. Behaviour can be keyed to property values by
the condition "get value of property".
- Added new colours for use within analogue buffers: brown, violet, grey,
orange, and yellow.
- Modified drawing of the contents of analogue buffers. These are now drawn
(when the buffer is in Current Image mode) in the order in which they
were added to the buffer. This means that in 2-d buffers newer objects are
drawn on top of older objects.
- Fixed potentially fatal bug in use of the increment/decrement buttons on
the numeric text widgets within the OOS run windows (which was causing crashes
under some versions of XView). This was initially thought to be an XView
problem, but it wasn't, it was a programmer error, and has now been
- Found and fixed several potentially fatal bugs in the handling of boxes of
unknown class. Specifically, syntax checking and opening of such boxes no
longer cause COGENT to crash. Of course, boxes of unknown class should not
occur with normal function, but they may arise if the user fiddles about with
COGENT's model files and directories.
- Removed the property view of compounds. This did show the properties and
their values of boxes within a compound, but the code is dodgy and so the
feature has been temporarily removed.
- Added new properties: X Drift and Y drift. These properties allow the user
to correct window placement when the window manager puts borders around the
window. Basically XView cannot reliably determine the width of such borders,
and so windows can drift. The problem is most noticeable with the window
managers distributed with Redhat LINUX (e.g., fvwm2). These new properties
allow the user to correct the problem by specifying the natural drift of
windows (which COGENT can then use to prevent such drift). A good value
(XDrift, YDrift) for olvwm is (0,1). For fvwm2, try (5,23).
Version 1.10.00 (Mon Sep 14 14:04:32 1998)
- Improved Prolog code, using SWI modules. This ensures that conditions which are defined within a process are encapsulated within that process (as they should be), and prevents the user from accidentally redefining system predicates.
- SICStus Prolog is no longer supported.
- Conditions may now be defined within buffers. This gives buffers some inferencing power. See the customisation help file for more details.
- OOS has been separated into two main components: the execution engine, and a set of files which define the behaviour of each box (sub)class. This is in preparation for allowing user-defined sub-classes, and for supporting alternative class hierarchies (such as BioCOGENT). See the customisation help file for more details.
- It is now possible to over-ride the default behaviour of buffers by specifying replacement procedures for buffer element addition, matching, and decay. See the customisation help file for more details.
- Facilities to allow objects to have Boolean properties (i.e., properties with true/false values indicated by a check box) have been added. There are currently no objects which use these kind of properties, but they have been added in preparation for the impending addition of user-defined properties.
- The buggy behaviour of uninstantiated variables in buffers has been fixed.
- It is now possible to send a process a stop trigger. Receipt of such a trigger will cause the process to stop attempting to fire autonomous rules, and to ignore any other triggers on the same or subsequent cycles. The process will remain in this stopped state until the end of the trial. (As requested by ME on 30/09/96)
- When the system reaches quiescence ("All data processed"), a special trigger consisting of the string 'system_quiescent', is now sent to each process box. If any rules are capable of responding to that trigger, they will then fire. Such rules should generally be refracted, to permit eventual true termination. (As requested by ME on 30/09/96.)
- Detection of the end of processing should now work properly even for rules that involve arbitrary randomness...
- ...but the cost is that the cycle has been reorganised. Now buffer state is updated after rules etc fire, so an element added to a buffer will enter it on the same cycle as it is sent.
- This help system now includes a bug report mechanism (as requested by JF).
- The sigmoid and tanh network activation functions have been replaced by a single sigmoidal activation function. This is because the other network parameters which allow scaling of the activation space render the sigmoid and tanh functions identical. At the same time bugs in the calculation of these functions (which were failing to correctly use maximum and minimum activation scaling) have been corrected.
- The problem of learning in NULL network connections (whereby unconnected nodes within a network with less than complete connectivity could obtain a non-zero weight, and hence a connection, through learning) has been resolved. NULL network connections are now shown in the output as '---'.
- The buttons on the top of OOS windows (for trial/block/script) have been reordered, and an Initialise menu has been added for scripts.
- The Stop function did not work when an embedded script was running. That is, Stop would stop the embedded script, but not the external script, so OOS would in fact continue running. This has been fixed.
- When you select File|Open... in the scripting interface, but then cancel the selection dialog, incorrect behaviour was occurring: the default or user-selected script file was not being loaded into the editor (which was correct), but the Execute button action was being changed to execute the cancelled script. Similarly, the Execute button would retain the script name across script execution sessions (within one COGENT session), so that Execute could invoke a script when no script had been loaded. This has now all been fixed to behave sensibly: the currently displayed script is always the one to which Execute applies, and Execute only works when a script is loaded.
- It is no longer possible to use the condition editor to construct conditions with names which violate Prolog syntax. The editor now ignores illegal characters (such as brackets and Prolog punctuation characters) typed in the field specifying the condition's functor.
- It is now possibly to query the value of a box's properties by conditions declared within that box. Thus, a process can query its firing rate, and use that information to affect the rules. More usefully, a condition defined within a buffer can query the buffer's properties. This condition can then be called by the "call in module" primitive. Both of these functions are available from the standard condition menu.
- A new, optional third argument of graphical objects in analogue buffers
can now be used to specify secondary (i.e., non-geometrical) properties for
these objects. Currently supported secondary properties
include colour, line weight and style, and filled/outlined 2-d objects.
- Window positions and sizes, and any user defined script files, are now preserved when a new version of a model is created from the project manager.
- Fixed problem with archive extraction: redundant tar files are now correctly removed after archive extraction.
Version 1.09.00 (Mon Jun 1 09:16:28 1998)
- "Directories" on the options panel has been renamed "File Locations".
- Added explicit setting of history window width so that the window will always initialise to 640 pixels wide, regardless of font.
- Added a guard in project create and rename functions to ensure that all putative project names are valid (i.e., don't contain "/" characters).
- New boxes now snap to the grid as soon as they are drawn. Previously if a box was drawn and not re-positioned it would not be forced to the underlying grid.
- Fixed minor bug in PostScript printing of Research Programme history diagrams. Previously, special PostScript characters (such as "(") which occurred in a model name were not being printed correctly.
- Archive creation now checks that an archive doesn't already exist before attempting to create the archive, and gives the user the chance to abort if one does exist.
- Added new property to allow setting of the colour used to highlight selected boxes.
- Added code to remember window sizes (as well as window positions) as requested by DG.
- Rules are now numbered in the current contents view. These numbers are also used in the message log view of processes to simplify tracing of rule firings (as requested some time ago by ME & PB).
- Several new conditions have been added, including: dot product (for calculating the dot product of two vectors, and accessed under the list processing/arithmetic menu); random/integer (for generating a random integer within a specified range, and accessed under the arithmetic menu); others added by Pete?
- The Message Matrix view of compounds now appears in all printouts (and in all formats) when "Show current contents?" is checked.
- Scrollbars on the Message Matrix and Table views are now automatically attached to the canvas if and only if the message matrix/table is bigger than the canvas. The buttons to allow switching on and off of scrollbars have been removed.
- Removed bounding rectangle from compound sub-boxes and altered drawing of external objects to include a hatched outline of their box icon (based strongly on WinCOGENT).
- Altered drawing of boxes of unknown class. They are now drawn as a big question mark.
- Altered the default line break behaviour of description sub-windows, so that long lines are now clipped (i.e., not shown). The user now must insert explicit line breaks when they are required. This ensures that the PostScript generated when printing a box's description matches the screen display.
- Replaced black disks on the programme manager with little black COGENT "brain" icons, as used by WinCOGENT. Printing out a project now also uses these icons instead of the disks to represent COGENT models.
- The Create Model function (which is called from the history canvas and simply creates a copy of the selected model) now only works when the selected model is closed (so there is no question of copying unsaved edits of the selected model) and automatically renames the copied model as "Copy of ..." (as suggested by RMY). In addition, it only copies files which are strictly part of the model, thus removing the proliferation of miscellaneous files and directories that used to occur.
- Modified behaviour of the delete arrow function accessed from a compound's canvas' arrow menu. If there are arrows of multiple types connecting two boxes, delete arrow will now only delete arrows of one type (not all arrows between the boxes). This behaviour is analogous to the other arrow manipulation functions available from that menu.
- Facilities to convert COGENT models to the files necessary for WebCOGENT have been added. On the project manager, select webify from the menu that appears when you right-click on a model to create all the necessary files.
- Added HTML as another printer output format. In doing this, many of the internal printing functions were reorganised in order to simplify the addition of further printing formats in the future. Note that HTML output may contain references to image files (all currently in xbm format). These files are placed in the output directory and have names of the form img_*.xbm, and must be stored in the same directory as the HTML root file if they are to be found by most browsers.
- Printing in all formats (ASCII, HTML and PostScript) of alternate views of the current contents of all box classes (including table sinks and analogue buffers, as well as two new objects described below: stack buffers and table buffers) is now supported.
- The print file's extension now changes automatically depending on the output format (".txt" for ASCII, ".ps" for PostScript, ".html" for HTML).
- Extensive modifications have been made to many of the internal functions, aimed at simplifying the process of extending/modifying the class hierarchy. The user should not notice much, but 1) the items beneath the Add Action menu have changed; and 2) the various network message types have been removed. Network messages should now take the form of simple send messages, whose content may be a vector or a vector pair for training of the form "train(Input, Output)". This approach to special messages is the same as that used for analogue buffers and stacks.
- Altered the palette so that all icons are shown half-size and without class labels. Footer messages which appear when the cursor moves over the icons now describe the various classes. Arrow buttons also appear on the palette (and work). Arrows can now be drawn either by selecting the appropriate arrow class (from the palette), left clicking on the source and dragging to the target, or by middle clicking on the source and dragging to the target (as before). In the latter case, if an arrow class on the palette is selected, then that class will be picked up by the arrow. Otherwise the arrow will default to a write/send arrow (as before). All this has involved yet another reworking of the way mouse events on the main canvas are handled (and has hopefully not introduced any bugs).
- Added new object class: Stack. Stacks are buffers whose top-most element can be matched and which can only be sent messages of the form "push(X)" or "pop".
- Added new object class: Table buffer. This uses the same syntax as Table Sink, with Analogue Buffer style directional access.
- A new property (similar to the refract property) has been added to rules which allows rules to be marked as firing just once per cycle. When set, the first appropriate instantiation of a rule will be found and fired on each cycle. If a rule is also refracted, this mechanism can be used to fire successive instantiations of the rule on successive cycles.
- All help files have been converted to HTML, standardised, updated to version 1.09.00, and, where necessary, rewritten. Some features (and bugs) still remain undocumented. Notable examples include the replace function and the property view of compounds.
- Added a "property" view of compounds, which shows the properties of all the children of a compound. At present this is read only (i.e., you can't set properties from here).
- The button layout on the Run windows has been altered so that initialisation and randomisation functions are hidden under a single menu button, with initialise or run block being the default options. At the same time, a minor bug in the randomisation function which prevented the random seed from being displayed if OOS was randomised before being initialised has been fixed.
- Numerous modifications to the execution model have been made in order to provide support for levels beyond trial and block. The execution model now incorporates notions of subject and experiment, and most box types can be set to initialise at any level (i.e., each trial, block, subject, or experiment). This has necessitated a change to the numbering scheme which is used to label the current state of boxes (to accommodate experiment/subject/block and trial numbers). These features may need further refinement as we experiment with further examples.
- Other important changes to the execution side of things include the storage and retrieval of current contents of boxes, which now persist between invocations of COGENT. It is thus possible to run several blocks (or several subjects), terminate COGENT, and come back another time to finish the computational experiment. Accompanying this change is the addition of a Stop button which allows OOS to be safely stopped at any stage in its processing. OOS can then be restarted (even if COGENT is stopped and restarted) without having to reinitialise the model and run from scratch.
Version 1.08.02 (Mon Mar 30 17:26:58 1998)
- Fixed bug in archive extraction which stopped re-compression of archives which were extracted but not deleted.
- Fixed minor bug in help/what's new functions: if help was open on the top-most frame when What's new was selected (and the help screen was the top-most window in the stacking order), then the What's new file wasn't displayed until the help window was refreshed.
- Changed legend display of analogue buffers so that non-image elements in such buffers are no longer listed.
- Changed analogue buffer drawing to give a slight (perhaps unnoticeable) efficiency improvement when displaying buffer contents.
- Changed the location of Check Syntax from beneath the File menu to a new Edit menu.
- Changed the code for dumping output of the various boxes during execution to improve efficiency. The improvement is dramatic: there now appears to be little if any performance decrement over multiple blocks.
- Added new display option for analogue buffers: colour (yes/no), which determines if the image is drawn in colour (with a legend) or in black and white (without a legend).
- Added a partial implementation of Edit/Replace facility to allow global replacement of terms. Currently, this facility will allow replacement of atoms and numbers, but not compound terms, and it doesn't check the syntax of find/replace terms. It should be used with extreme caution!
- Updated description of printing properties in the print help file.
Version 1.08.01 (Mon Feb 23 11:11:07 1998)
- Fixed minor bug in printing ASCII output which caused some residual PostScript to occasionally get mixed up in the text.
- Fixed bug in Prolog printing routines that caused a crash when terms that were defined as operators were (legitimately) used as functors. A typical manifestation of the bug would be a crash occurring when a box whose elements were terms containing operator-like functors was opened.
- Fixed potentially potentially fatal bug in duplicate testing within buffers.
- Fixed bug in change_class function which prevented the function from working when it was called from the menu button beside a box's class specification.
- Changed display and printing of tables so that rows/columns are sorted alphabetically. That is, a row labelled "A" will now always appear above one labelled "B". Previously, rows and columns would automatically reorder themselves whenever a new element was added to the table.
- Changed the default behaviour for Print Confirmation option. By default, confirmation is now required before the print file will be sent to the printer. This is safer for users with print quotas.
- Changed reading of .Xdefaults so that (hopefully) COGENT won't get confused by default entries containing wild cards.
- Added code for memory deallocation for table labels which were not being deallocated when the table was destroyed. (Thanks to DS for pointing this out.)
- Added configuration parameter for scrolling of rule/element windows so that scrolling is now switchable between smooth scroll and jump scroll. With jump scroll, each scroll moves one line (instead of one pixel). On servers that call the canvas repaint proc on each redraw (as in SGI, but not as in LINUX and Solaris) this helps prevent lots of screen flicker when scrolling reasonable distances. It also seems reasonable to scroll line by line (rather than pixel by pixel) on these windows.
Version 1.08.00 (Mon Nov 3 19:45:38 1997)
- Added message matrix view for compounds. This view shows messages passing to/from sub-boxes within a compound.
Version 1.07.03 (Fri Oct 31 14:53:18 1997)
- Redirected output from the trace qualifier to the message log of the box containing the condition being traced.
- Changed Xdefault PopupCopy to PopupCreate.
- Added description of archive directory to new-user welcome screen.
- The line spacing in the options screens has been increased by a couple of pixels.
- Selecting a box now highlights it in red, instead of inverting it.
- The "Edit" and "View" options on the history window canvas have been merged into a separate submenu of "Open". This emphasises the commonalities between their functions.
- Altered duplicate checking in OOS buffer loading, so that elements which are clearly not duplicates (i.e., which don't unify) are compared (as they previously were).
- Replaced ln/2 with log/2 in the maths menu within the condition editor. This now matches OOS which always seemed to know the function by the name log/2 (and not ln/2).
- Improved output of the trace qualifier, so that failed calls are also printed.
- Added two new built-in arithmetic functions: maximum value and minimum value, which work with lists of values.
- Re-arranged list-based arithmetic into a separate sub-menu, now accessible both from the list processing functions and the arithmetic functions. The arithmetic term comparison functions are now also accessible via two routes through the submenu network (term comparison/arithmetic and arithmetic/term comparison).
- Fixed minor formatting bug in tables/graphs/etc which prevented embedded canvases from being re-sized when their containing window was re-sized.
- Added optional scrollbars to tables.
Version 1.07.02 (Mon Oct 6 11:13:50 1997)
- In previous versions, the default behaviour when a rule/buffer element was copied was to open the appropriate editor on that object. This could be turned off by setting the appropriate option. This has now been reversed. The default is simple to copy the object, and the user must open the editor as a separate operation. The logic is that new users don't want windows popping up when they copy something. They want to see the copy appear beside the original. They can then open the editor manually. More experienced users can get the same behaviour by just setting the option.
- The popup-on-copy option (referenced in 1) has been extended to include copying of complete models when a new version of a model is created. By default, the copy will be created but the model won't open, but this can be changed by setting the popup-on-copy option.
- Improved the output format used by the export function, and extended the import side of things so that it is now possible to export from any box type and import to any box type except compounds. All box sub-items (including comments and ignored sub-items) are correctly handled on the import and export. Note that it is possible to put elements of the wrong type in a box (e.g., rules into buffers) by importing the elements of one box into a second box of a different class. I see this as a feature, not a bug, although it does not appear to be a useful feature. Perhaps import should do some checking of the imported elements.
- Fixed bug in rule/condition editor whereby Change Condition failed to produce a correct condition when the intended target was findall/3. Also fixed a related bug in the code for deleting rule editor widgets which failed to calculate the correct height for findall/3 clauses when the second argument wasn't a list (as it should be). (Bug reported by CPB on 02/10/97.)
- Fixed long-standing bug in rule edit widget redraw that meant lines got out of sync when the "Insert Condition After" option was used within an embedded (i.e., qualified or findall) condition. (Reported by PGY sometime in August 1996!)
- Fixed redraw of palette buttons so if a button is selected it will be highlighted. Selected buttons were not previously being highlight, and this could cause problems if you selected a box and then did something else (that might cause a screen refresh) before drawing the object. (Reported by CPB on 02.10.97.)
- Found and fixed unreported bug in the interaction between messages and comments within data sources that resulted in the cycle number of source elements being indicated incorrectly on the source's data panel.
- Altered sink output format so it is pretty to read. The output is still valid Prolog (using ':' as an operator), so can still be fed into some kind of Prolog post processor if required. This change actually reverses a change made in May 1996.
- Boxes are now highlighted (drawn in inverse video) during drag operations and when they are selected by right-clicking on them.
- The separate paste menu which used to appear after right clicking in the background of a box/arrow diagram has now been merged with the menu that appears when the user right-clicks on a box. Inappropriate buttons are greyed out in each case.
- Arrow drawing has been improved so that when multiple arrows (of different types) connect the same two boxes, only one arrow stem is drawn. This means that all arrows to/from a box now stay visible when dragging the box. Such arrows are drawn by inverting the intermediate pixels, and this led to the arrows disappearing when an even number of arrows were present between two boxes (because the stems would be inverted an even number of times, with no net result).
- Added "Scaling:" check-box to the history diagram window to allow easy switching on/off of history scaling (as suggested by PGY during September 1997).
- Fixed drawing of arrows from external objects of compound objects, which got well messed up at some stage.
- Added confirmation of model deletion from the project window. (Wasn't this there before? If so, what happened to it?)
Version 1.07.01 (Mon Sep 29 10:52:03 1997)
- Improved terminology by un-overloading the use of "condition". "Condition" is retained to describe the elements which must be satisfied for a rule to fire, but the other elements of rule-based processes (previously also termed conditions) are now termed "Condition Definitions". (Thanks to DS for realising the potential confusion and suggesting a sensible remedy.)
- "sort(X, Y)" now appears on the rule editor as "Y results from sorting X" (after prompting from CPB).
- Big changes to what happens when a research programme is created. Now, the history window is displayed, but it remains blank. There is a new button on the history window for creation of root nodes. Creating the first model in a research programme is done by clicking on this button. New models are then opened in the standard way. This button means that we can create multi-rooted projects. A further change, that shouldn't be noticed by the user, is that project history information is now stored in a slightly different way, so that it is possible to have an empty research programme (i.e., no models) but still have a comment/description for that research programme.
- Found and fixed an unreported bug in research programme creation that could cause crashes if a new research programme was created when an existing programme was open.
- Fixed checking of new research programme name in project creation (which was being correctly checked in project renaming and deletion, but not creation) so that if the user fails to type a name the system doesn't try to create a project with an empty name.
- The "randomise" condition has been removed from the condition menus as it isn't really a condition -- it is semantically an action. However, we don't want to make it an action because then 1) we wouldn't be able to randomise at the beginning of the first cycle; 2) there is no point resetting the random number generator part way through a trial. In order to retain the functionality that randomise was intended to capture, a "Randomise" button has been added to the run window, so it is now possible to randomise independently of the model (as should be the case). Note that there is still no point in randomising twice in a run. Also note that randomise remains available as an action callable from the scripting language. Randomise now also prints the value of the random seed to the output trace.
- The "Once" value of the "Initialise:" property (in buffers, networks, and tables) has been renamed "Each Session". COGENT should automatically convert old instances of the property, so the user should notice very little.
- Added an "Ignore Edits" option to the Done button on box windows, so it is now possible to close without saving or confirming save of edits. Confirm Save is only available as an active menu option when the box being closed is a compound, when (conceivably) one might want to save edits to some subset of sub-boxes of the compound.
Version 1.07.00 (Fri Sep 5 10:28:05 1997)
- Added new project management functions: archive and extract. These are intended to work in conjunction with the web-based COGENT resources. Basically the functions just automate the processes of putting a project into a single file (archiving: tar cf followed gzip) and extracting a project from a single file (extracting: gunzip followed by tar xf).
- Added server grabs/releases around the project management function callbacks, so now when you, for example, select "Rename" you have to respond to the rename pop-up before you can continue.
- Added similar server grabs/releases around the import/export functions.
- Modified mechanism for setting the filename associated with pagable canvas files to prevent COGENT from crashing when the filename associated with a pagable canvas is modified (as happens when "Help" is pressed when the help window is already open).
- Fixed a bug in script file scanning which caused a crash when "Open" was attempted on an empty script directory.
Version 1.06.01 (Fri Jul 18 15:19:39 1997)
- Modified mechanisms for copying deleted files to/from the waste directory. This should fix problem with cutting and pasting boxes.
- The option "Warn on system commands" has been removed as it was redundant.
- Modified change_class command so it again allows the class of unopened boxes to be changed from the boxes' parent canvas.
- Fixed bug in table drawing that causes problems when multiple tables were present simultaneously.
- Improved OOS efficiency by adding a flag that means buffer contents etc. are only dumped to their corresponding output files (and hence output is only updated) when the contents change (instead of on every cycle).
Version 1.06.00 (Sat Jul 12 11:11:28 1997)
- Raw comment sub-objects are now allowed within buffers/processes/etc (as suggested by PGY on 30/06/97).
- Bitmaps are now used for icons. This ensures that PostScript output matches the screen output and should make extending the class hierarchy simpler.
- New subtype of sink: table. Messages of the form data(R, C, V) sent to such objects are presented as values within a 2-dimensional table. This is still very experimental. Any suggested modifications will be seriously considered. (Note: PostScript output of tables is also available.)
- PostScript output from analogue buffers is now available: printing current contents will now print both textual and graphical representations where appropriate. The graphical output doesn't attempt to capture colour (by, for example, using shading) and doesn't include the legend. It also doesn't scale.
- Fixed spacing bug in TwoUp PostScript output.
- Fixed insignificant bug in recalling TwoUp page style from Xdefaults.
- The recursive print option has been moved to a check-box on the print options interface. A further Boolean Xdefault which governs recursive printing has also been created, to parallel other print options which are stored as Xdefaults.
Version 1.05.09 (Tue May 20 13:10:54 1997)
- Extended the default size of the argument field for "call" conditions to 50 characters. (Suggested by PGY on 12/05/97.)
- Fixed allocation errors in the parser that were creating 2 byte memory leaks every time a comma was parsed. (Spotted by DS on 12/05/97.)
- Fixed parser failures when operators are used as stand-alone arguments (e.g., "term(+, -, >)." didn't parse properly).
- Fixed parser failures when infix operators are followed immediately by a bracketed argument. (Reported by PGY on 13/05/97.)
- Altered legend drawing for analogue buffer output. Only items actually on the canvas are now listed in the legend (as argued for by PGY for several weeks).
- Fixed minor bug in destroying the paste menu after pasting into a compound box.
- Improved memory deallocation when freeing boxes (as spotted by DS on 12/05/97) and when reading files of Prolog (as spotted by DS on 13/05/97).
- Further improvements in memory management, including correct deallocation of object properties, correct deallocation of the Prolog operator table, correct allocation of space when loading box files; correct deallocation of the colour table associated with analogue buffer graphical output.
Version 1.05.08 (Mon May 12 11:11:11 1997)
- Switched FIFO/LIFO access procedures, which somewhere in the mists of time got reversed. (Spotted by PGY on 29/04/97.)
- Fixed bad memory deallocation on exit. (Spotted by DS on 09/05/97.)
- Removed unnecessary memory allocation in Prolog scanning routines. (Spotted by DS on 09/05/97.)
- Added new property to data sinks to specify whether output should be stored locally (and hence inaccessible to all but the most persistent of hackers) or in the standard I/O directory. The default is local storage. Note that if this is changed to I/O directory, the user may need to check that if he/she has multiple data sinks they aren't all connected to the same file. A future option may allow a third possible location: global to the research programme (but inaccessible from other research programmes).
Version 1.05.07 (Tue May 6 10:06:31 1997)
- Project selection routines have been substantially rewritten to make various bits of code more maintainable.
- Included PGY's new syntax for lines in analogue buffers: line and interval now have new alternative syntaces line(Name, Point1 to Point2) and interval(Name, Start to Finish). The old versions still work too. This brings all object types into line with the overall syntax object_type(Name,Geometry).
- Include select/3 in sicstus/oos.pl, corresponding to the built-in select/3 in SWI Prolog.
- The code for handling mouse double clicks has been revised (on both programme history canvases and compound box canvases), so that a double click now corresponds to the default menu action. The default behaviour is as before, but it is now possible for the user to configure double clicking to correspond to any menu action (by setting that menu action to be the default in the normal XView way -- holding the required menu button down and pressing ).
- It is now possible to open any box in edit or view mode, independently of the mode of its parent. Previously, if you opened a model in view mode, all boxes and sub-boxes would necessarily be opened in view mode (and similarly for edit mode). The default is now to maintain the parent object's mode, but a submenu item allows this to be overridden.
- The mechanisms for preventing modification of data displayed in widgets in view mode has been improved. Previously, it was possible to make changes which were then ignored. Now it is no longer possible to modify the widgets' data.
Version 1.05.06 (Sun Apr 27 19:55:41 1997)
- Routines for maintaining a research programme's history have been rewritten. It is now possible to have multi-routed RPs, to delete the root node of an RP, and to drag models around the RP history canvas (though positions of models are not remembered between invocations).
- Changed all abort() calls to exit(-1) so that when users exit after a bug the doesn't crash (though forced crashing is useful for locating bugs).
- Fixed bug in getting buffer dimensionality which would crash if the relevant box wasn't a buffer.
- The version is now recorded in the init file so COGENT knows when you are using a new version and can advise of any changes. (Suggested by RC 24/04/97.)
- COGENT now creates an init file if one does not exist. (Suggested by RC 11/96.)
- COGENT now also creates project and io directories if they do not exist. (Suggested by RC 11/96.)
- The arguments of conditions/actions are retained (if possible) when the functor of the condition/action is changed. (Suggested by JF on 10/04/96.)
- If the current version isn't the one with which configuration information (i.e., which boxes were open, where the boxes were positioned, and what info they were showing) was created, then be careful about using that information. In particular, don't use any information whose representation may have changed. (Suggested by RC 24/04/97.)
- Added primitive facility for tracing conditions. The facility works via a new "qualifier", that can be put in front of any condition. trace(X) succeeds just in case X succeeds, but has the additional side-effect of printing any successful instantiations of X on the output log. (Suggested by RC 27/04/97 in response to query from JF.)
Version 1.05.05 (Tue Apr 22 12:47:25 1997)
- Incorporated more functions from PGY for analogue buffers (2D scanning; the x_mark object)
- Incorporated Pete's release notes as a help file for analogue buffers.
- Added better colour support for analogue buffers, such that objects retain their colours. A legend is also drawn in the top right of the graphical display window.
- Fixed bug reported by MR which caused occasional crashing when closing rule editors.
- Fixed bug in creation of sibling models from the project manager window.
- Fixed printing of ';' operator so that quotes are no longer included.
- Added new list processing conditions: replace and replace_all.
- Fixed bug in recurrent processing checking that caused a crash when rules were edited after changing the containing processes recurrent status.
- Altered routines for drawing/scaling the history window. When scaling is on, time intervals between are represented by a constant y displacement.
- Changed name of "Project Manager" to "Research Programme Manager".
- Changed name of "History" to "Family Tree". I'm not sure if this is good.
- When printing an entire research programme, individual modes are now printed in a sensible order.
Version 1.05.04 (Wed Apr 16 12:35:03 1997)
- Fixed bug in warning of syntax errors in the rule/condition editors. (Reported by MR's student)
- Generalised mechanism for setting defaults on menus with inactive items.
- Added X/Y scale locking to scalable canvases. (Suggested by PGY on 14/04/97)
- Fixed bug in handling boxes with NULL classes introduced in version 1.05.00.
- Fixed silly bug in reading empty Prolog files that crashed on Sun 4s.
Version 1.05.03 (Sun Apr 13 23:23:38 1997)
- Revised code for pagable canvases, improving the modularisation and putting it in xv_extensions.c.
- Added new extended widget: scalable canvas, especially for analogue buffer output. The widget consists of a canvas with sliders for X and Y scale. Will probably need to clean up the code a lot if this is to be a reusable widget.
Version 1.05.02 (Fri Apr 11 16:49:54 1997)
- Added Pete's code for circles in 2D analogue buffers
- Added initial version of colour code to give colourful output of analogue buffers.
Version 1.05.01 (Wed Apr 9 11:28:59 1997)
- Added further print option to suppress printing of initial contents.
- Included PGY's code for displaying polygons within analogue buffers.
Version 1.05.00 (Mon Apr 7 13:16:34 1997)
- Added primitive script editor/running facilities.
- Added print confirmation window showing all print options before printing is effected.
- Made print options inactive when they are not relevant (both in print confirmation and in the Options panel).
- Added options for print formats: PostScript or Plain Text (i.e., ASCII).
- Added landscape mode for PostScript printing (and revised interface for setting "Two pages per sheet" (i.e., two-up) mode).
- Fixed bug in font size when printing PostScript in two-up mode.
- Buffers can now contain Prolog conditions (but don't use them!).
- Added graphical output for one-dimensional objects in analogue buffers.
- New (more efficient and more portable) method of generating random seeds in SWI version of OOS. (Fix due to PGY.)
Version 1.04.04 (Fri Feb 28 17:37:38 1997)
- Added a new condition "trial X of Y" so the user can determine which trial is currently being run, and how many trials there are in the current block.
- Fixed one (of many) memory leak, in which space used by X font information wasn't being freed when it should have been, resulting in potential linear growth in RAM requirements if displaying contents whilst the model was running. Further memory leaks remain (e.g., when closing boxes) and should be fixed.
Version 1.04.03 (Tue Feb 18 12:19:43 1997)
- Subtle change in the menu generated under Add Condition/Prolog. The first (and default) entry is now call/1. Other user-defined conditions are listed below this.
- Added new list-processing condition: sort/2 which is just an interface to the standard Prolog list sorting routine.
- Added new condition: randomise/0, which uses the current date and time to reset the random number generator.
- Grouped miscellaneous conditions (current cycle, randomise, cut) under a single menu in the Add/Modify Conditions functions.
- Fixed a couple of printing problems: when printing compounds, COGENT would occasionally incorrectly calculate the height of those boxes and hence over-write some bits of the page; when printing bits of Prolog containing special characters (like backslash), COGENT wasn't marking those characters as special so PostScript was ignoring them (or trying to interpret them incorrectly).
- Added new property to control the number of lines displayed in the Prolog half of the OOS window.
- Fixed bugs in rule commitment which caused crashes when a rule was edited and the rule's box was set to show the box's properties before the rule's editor was closed.
- Fixed parallel bug in box reloading that caused crashes when a box was reloaded when it was set to show its properties.
Version 1.04.02 (Wed Jan 8 22:06:16 1997)
- Fixed bug in project disposal which was causing a crash whenever you deleted an entire project.
- Made modes box-specific, so, for examples, processes can be viewed in rule, description, message log, or property mode, and compounds can be viewed in diagram mode (instead of using generic mode names like "initial state").
Version 1.04.01 (Mon Jan 6 10:46:15 1997)
- Altered presentation of property information so that it too is shown on a separate subwindow of a box (i.e., there is now a "property" mode as well as modes for "description", "initial contents", etc.). This is in preparation for allowing the addition of instance specific properties.
- Moved all the syntax checking etc to a callback under the File menu. This speeds up model loading and makes puts syntax checking under the user's control.
- Added a further phase to syntax checking which removes any outdated files. This includes old backup files (which were never much use) and any directories for boxes which are no longer part of the model.
- Added a project clean up phase on project loading which removes any models that are no longer part of a project. I'm not sure how such files might get left around, but I found a few in the JDM project, so it seemed useful, but this might get removed if it isn't actually used again.
Version 1.04.00 (Mon Dec 30 19:32:37 1996)
- Removed use of single quotes around special punctuation characters (; and ,) when used as principal functors in a clause
- Add arrow checking when loading a model. If, on loading, COGENT discovers an arrow of the wrong type leading from a box, or an arrow of the right type without a corresponding return arrow, the arrows will be automatically adjusted to ensure that the complete model is consistent and complete.
- Add checking of rules etc. to ensure that all messages and matches have corresponding arrows.
- Fixed bug preventing double click in view mode from opening a box. This now works. Also prevented edited box elements from being committed to an uneditable box.
- Typing an integer into the cycles/step or trials/block fields now sets those fields immediately. Previously they were not set until or was pressed.
- On the Mode menu of the Run window, the current mode is now inactive (because it doesn't make sense to switch to the current mode), and the other mode is the default. Thus, clicking on the menu button is now enough to switch modes.
- Fixed printing of (spatially) large models such that they are scaled to fit onto the page, regardless of their size (as requested by ME).
- Added printing of project history/description/models.
- Fixed bug in printing: was occasionally crashing when printing empty descriptions due to bad code for calculating the length of a null string.
Version 1.03.05 (Fri Dec 20 13:24:15 1996)
- Fixed bug in sub-object editor which was causing user-entered terms to occasionally be misread and overwrite existing data, usually leading to a crash.
- Fixed typos in some parser warning messages.
Version 1.03.04 (Thu Dec 19 18:05:34 1996)
- Fixed long-standing undesirable behaviour in change_class, such that now changing a box's class only deletes the contents of that box if the old and new classes are incompatible (e.g., buffer and process). JF first complained about this on 10/04/96.
- Removed warning message from configuration read process, so missing boxes (which might arise legitimately when a new model is created) no longer result in puzzling warnings.
- Fixed bug in rule editor which was making all ports into output ports, and possibly causing crashes due to incoherent arrow information.
Version 1.03.03 (Wed Dec 18 17:35:59 1996)
- Recursive copy box fully implemented (finally!)
- Added code to update old-style internal box references. Previously messages were addressed to boxes by name. This meant than changing a box's name would mess up any messages targeted at that box. Some time ago this was changed so that all new messages would be addressed using an internal reference which was independent of the box name. Old-style references were inherited from previous models, and COGENT/OOS didn't mind mixing them. This fix will update all references when you load a model, ensuring that only internal references are used. Once the fix has propagated to all models, it will be removed and OOS will be updated so as not to understand the old-style references.
NOTE 1: Internal errors will arise if a reference cannot be updated. This will only occur if COGENT cannot translate from a stored old-style box name to the box's internal reference. This in turn should only happen if you have messages which reference boxes that either no longer exist or that have their names spelt incorrectly within the message.
NOTE 2: While updating the references, COGENT also takes the opportunity to get rid of any excess uses of "call" wrapped around rules' conditions.
NOTE 3: Given the above, it is highly recommended to open and recursively save each and every model in your project directory. If I had time I'd write a little routine to automagically do this.
Version 1.03.02 (Mon Dec 16 11:14:18 1996)
- Fixed bug in locating external objects of compounds when presenting the options within a rule's menus (reported by ME, 10/12/96).
- Improved reporting of syntax errors in user-entered Prolog terms: report now shows string being parsed.
- Partially implemented copy of compounds (but I wouldn't use it yet!)
Version 1.03.01 (Wed Dec 11 22:30:09 1996)
- Slight alterations to project history diagram (discs instead of squares, plus black GC instead of inverse GC, plus slight increase in sensitive area around individual models).
- Slight modification to some error/warning messages.
- Reverse the specific properties of analogue buffers to make the order more sensible.
- Fix insidious bug in OOS concerning addition of variables to buffers.
Version 1.03.00 (Wed Nov 27 00:22:47 1996)
- Box state (open/closed) are now remembered with position information. This information is not currently used on start-up.
- Altered condition menus to include any user defined conditions (as suggested by PGY).
- Sink output now goes to the io directory if a file is nominated. If no file is specified (under the sink's properties) output is sent to "data.current" in the sink's directory (as before).
Version 1.02.00 (Sun Nov 24 10:56:51 1996)
- Fix bug in parsing terms containing multiple unbracketed operators.
- Fix OOS so that variables in sink output are translated into more sensible upper-case-initial identifies (e.g., _193032 will appears as something like A).
- Added code to remember window positions and modes across sessions.
- Added Boolean option to control whether window positions/modes are remembered across sessions.
- Added "is" to list of mathematical conditions in rules.
Version 1.01.01 (Wed Nov 20 15:43:39 1996)
- Fixed LINUX bug in directory creation (was preventing creation of top-level boxes on some machines).
Version 1.01.00 (Mon Nov 18 19:15:18 1996)
- Start version numbers with clear criteria for incrementing such numbers.
- Added "What's New" subwindow.
- Merged Limited & Unlimited Buffer subclasses.
- Added code to automatically update outdated file formats.
- Updated OOS to handle the modified class hierarchy.
- Fixed bug in OOS causing duplicate printing of trace initialisation information.
Version 1.0 (Mon Nov 11 15:37:24 1996)
- Fix "stop" action which broke when message logging was added.
- Allow view of message log for compounds.
Version 1.0 (Sat Nov 9 17:33:05 1996)
- Make the import/export dialogue box remember the last import/export file and directory
- Replace "Recursive" by "Recurrent" in processes
Version 1.0 (Mon Nov 4 15:21:42 1996)
- Fixed two non-NULL-terminated xv_set commands, correcting the bug (reported by Mike Ramscar) which sometimes caused crashes when opening boxes.
Version 1.0 (Sun Nov 3 16:54:00 1996)
- Added help button/frame on run window.
- Fixed bug in use of help frames: previously frame accounting failed when the parent was destroyed. Now frame handles are attached to parents and hence destroyed with parents.
- Fixed bug in setting frame labels: long names where causing crashes when string space ran out.
- Added new Boolean option to control scrollbars on diagrams: "Scrollable canvases?"
- Removed redundant option: "Create tracefile?"