home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Vectronix 2
/
VECTRONIX2.iso
/
FILES_01
/
GENEVA_3.LZH
/
GENEVA_3.MSA
/
GNVA_003.TXT
< prev
next >
Wrap
Text File
|
1994-01-03
|
24KB
|
553 lines
Updating to Geneva release 003 (1.02):
-------------------------------------
To update to the new version, follow these steps:
1. If you intend to keep the old version around for some reason, be sure
to make a backup of all files.
2. Make a backup of your original Geneva disk!
3. Run the enclosed patch program, PATCH003.PRG.
4. After the patch has successfully completed, run the INSTALL.PRG on the
modified disk. It will re-install all of the new files. If you get error
message saying that the file already exists, just let the program
overwrite the old files.
If you have problems with the patch
-----------------------------------
If, for some reason, the patch program does not run properly you can send
your original Geneva disk back to us along with a check for $5 + $2 to
cover return shipping. We will rewrite the disk with the most recent
version for you and return it to you by mail. Send to:
Gribnif Software
P.O. Box 779
Northampton, MA 01061
Files affected
--------------
INSTALL.SCR
INSTALL.PRG
TASKMAN\TASKMAN.ACC
TASKMAN.RSC
GENEVA\GENEVA.PRG
GENEVA.CNF
HELP\GNVAHELP.PRG
GENEVA.HLP
TASKMAN.HLP
PROGRAM\GNVA_DB.PRG
NEW_AES.H
NEW_GEM.LIB
XWIND.H
XWINDGFA.SFX *
TASKMAN\TASKMAN.C
TASKMAN.H
TASKMAN.HRD
* To extract XWINDGFA.LST, copy it to another disk and change its name
to XWINDGFA.TOS. Then, run this program and the file will self-extract.
Geneva Revision Notes 12/31/93
Notes:
If you want to use That's Write's desk accessories with it, you will have
to set That's Write to be single-tasking. This is due to a shortcoming
in the method that desk accessories use to communicate with That's
Write. Newer versions of the That's Write desk accessories will address
this problem.
Page Assistant's Index dialog will show some underlines in places where
they should not be. This can only be avoided by turning the "Auto
keyboard equivs" option off for the program. This is true as of version
2.05.
Changes since 9/29/93:
---------------------
INSTALL:
INSTALL.SCR will now allow you to set the parameters for SETMOUSE.
INSTALL.PRG will no longer have redraw errors when run under Geneva.
TASKMAN:
Added a new Misc. Option to allow the video resolution in GENEVA.CNF to be
ignored, in favor of the one in NEWDESK/DESKTOP.INF. This means that you
can continue to use a boot manager like XBoot to choose video
resolutions using the same method you always used.
The main window can now be "iconized" by clicking on the "delta" gadget.
This shrinks any open windows to a single "icon" window.
Double-clicking on the icon window's contents will reopen the Task
Manager.
The Window Options dialog now accepts any Speedo GDOS font, and any
other monospaced GDOS (bitmaped or scalable) font which has all 255
characters. This font is used when drawing menu bars, windows and
dialogs. There are a few restrictions, though:
o If you use Speedo GDOS, it must be version 4.11 or newer.
o When using a Speedo font, Geneva attempts to remap the characters
used in window gadgets (like the Full box, the Close box, etc.) While
this remapping does work with most Speedo fonts, some fonts (like the
Monospace 821 font) do not have the characters in the right locations
for this translation, and incorrect characters will appear in the
gadgets when they are drawn. This is unavoidable.
o Speedo GDOS does not do a very good job of supporting the italics and
bold special effects which are found in some of Geneva's dialogs.
o Bitmapped fonts can be used, with the same limitations as before.
They can even be used with Speedo GDOS.
The Task Manager now uses a more exact method for drawing the contents of
the Sample Window in the Window Options dialog. The current window
gadget colors are also used.
The objects which make up the Sample dialog in the Dialog Options dialog
can be clicked on in order to switch object types.
The Outer Box in the Dialog Options sample is now always drawn correctly.
GENEVA:
The version number and date are now displayed when Geneva runs from the
AUTO folder.
The icons in alerts will be colored if there are at least 16 colors
available in the current video mode.
Item selector: If the path is very long, only the first 10 characters of
the template will be shown when the path gets updated. This way you can
always see at least the last 16 chars of the full path.
You can now press [Alt][\] to move to the root directory in the item
selector.
Using GDOS fonts within TEDINFO objects is now supported, as in AES 4.1.
Note that if you click on an editable field containing a GDOS font with
the mouse, the edit cursor will always be positioned to the end of the
field. Actually positioning to the character under the mouse would be
too computationally intensive.
Added a new type of wildcard to the item selector. The ! can be used for
inversion ("not") of the next item in a string. If the next item is just
a regular character, then that one letter will be inverted; if the next
item is a {} or [] bracketed expression, then the meaning of that
expression will be inverted. Examples:
*.prg Ending in PRG
*.!abc *.?BC, excluding *.ABC
*.ab!c *.AB?, excluding *.ABC
*.!a!bc *.??C, excluding *.ABC
[a-d]*.* Starting with A, B, C, or D
![a-d]*.* Anything not starting with A, B, C, or D
*.{prg,prx} Ending in PRG or PRX
*.!{prg,prx} Anything not ending in PRG or PRX
Any number of !'s can be used within a wildcard. The effect is that the
expressions are negatively added together. For example:
!{stalker,neodesk?}.!{ac[cx],rsc}
Matches anything but:
stalker.acc stalker.acx stalker.rsc
neodesk?.acc neodesk?.acx neodesk?.rsc
However, NEODESK.ACC will match, since it does not have a character
between the "k" and the period.
The ! can be used in the main item selector path, and also in the Find
dialog.
Added a new flag to allow the video resolution in GENEVA.CNF to be
ignored, in favor of the one in NEWDESK/DESKTOP.INF.
A program flag has been added for GENEVA. This allows you to change the
name of the Geneva Manager in the Desk menu (and also its Activation
key) by using the Task Manager.
Other changes in Geneva:
Fixed a typo that prevented the use of multiple [] or {} bracketed
expressions in a wildcard.
Using function keys to access the paths in item selector works again.
Fixed a problem which caused characters to disappear in editable fields
which were created with the WERCS resource contruction program.
Geneva now works correctly when:
o Run on a Moniterm card while a color monitor or no monitor at all
is plugged into the Atari video port.
o Using Crazy Dots board running NVDI in 2-color mode.
o Using a GENEVA.CNF file which was saved while using a TTM195
monitor with another resolution. (I could not test this one)
Added a check to avoid a bug in TOS 2.01-2.05 which sometimes causes a
monochrome screen to "wrap around" several pixels.
Fixed the GEM.CNF "run" command to correctly pass parameters to the
program to be run.
Fixed a typo that prevented the windows in GNVAHELP and GNVA_TOS from
scrolling quickly when the scroll bar was dragged.
Atari-style 3D buttons are now drawn much more like the way AES 4.0 does.
Furthermore, objc_find() takes an OUTLINED attribute into account for
background objects.
Fixed wind_get( X_WF_xSPLIT.
Setting a new window split location with wind_set( X_WF_xSPLIT now causes
a redraw of the window areas.
A horizontally split window will now always at least have an empty
vertical scroll bar. The same goes for a vertical split/horiz scroll.
Fixed wind_calc() with HSLIDE, LFARROW, RTARROW, VSLIDE and nothing else.
In release 002, Geneva would try to keep track of how many times an
application had turned the mouse on or off, and then take this into
account when making a different application the foreground one. This
cannot always work because of screen acceleration programs, and has
therefore been removed.
Clicking on the small text in the item selector's Find dialog will no
longer cause a crash. Also, the "Find Next" button will not sometimes
remain selected when it should not.
Multi-color icons work again.
appl_read() again works correctly when reading more than 16 bytes. This
used to cause the Miscellaneous Options help to crash.
The name and serial number are centered in About Geneva.
Double-clicking on the move box of an alert or the About Geneva dialog
will now work correctly.
Added a hack to avoid a bug in the Falcon TOS that would cause some
programs to think that the wrong system font was being used.
The Applications list should no longer lockup unexpectedly.
Sub-submenus are now always positioned correctly.
The bottom line of popup menu will always be drawn correctly.
Added a check to avoid an error made by at least one program: passing an
mn_scroll=1 value to menu_popup() when 1 is not a child of the parent
scroll box will no longer cause a crash.
Moving the mouse rapidly from a pulldown menu to a submenu will no longer
result in the submenu disappearing if the mouse happens to pass over
another menu entry. The menu display delay is used for this.
The event_multi() mode X_MU_DIALOG can now be used at the same time as
MU_BUTTON and/or MU_KEYBD.
If another program uses the exec_os variable and obeys the XBRA protocol,
Geneva will not complain that it cannot install itself.
When a program redefines the tree of the desktop and uses G_USERDEF
objects in the tree, strange results will no longer occur if the
program quits without first unsetting the new desktop. (INSHAPE)
When copying in the item selector, using the OK button when a filename
conflict occurs will always result in an overwrite of the old file.
Previously, this would only sometimes happen. Also, the file count is
always displayed, and is updated properly when Skipping a conflict.
Furthermore, you can press the OK button when a folder conflict occurs,
in order to use the existing folder.
Programs which use GEMDOS text output (and other GEMDOS-level standard
file handle operations) will now work on the Falcon with TOS versions
4.00-4.04. (Technically speaking, these versions of TOS do not copy the
standard file handles of the parent process to the child when a Pexec(5)
is performed.)
An incompatibility with TOS 4.00-4.04 which would result in the inability
to run any more programs, after a large number had been run, has been
fixed. This tended to show up mostly when changing resolutions.
If a program requests an event of zero mouse clicks, it no longer gets
a return value of one, it gets zero.
The About Geneva dialog is now more resolution/font size independent.
Now works completely with the Screenblaster. When you tell Geneva to
change resolutions, you also get the Screenblaster video resolution
menu.
Fixed objc_find() and mouse rectangle events so that they no longer
consider a pixel one past the lower right or bottom edge.
A program's message buffer is no longer modified if it does not receive
any message events. (PAGEASIT)
The objc_draw() call will correctly affect clipping if either the width or
the height of the rectangle passed to the function is zero. Previously,
there was a chance this would not happen. (PAGEASIT)
If a program asks for mouse events with 0 clicks, the report it gets from
Geneva when the mouse is clicked will have the number of clicks set to
0.
Popup menus created with menu_popup() can now have submenus. Also, put a
check in to prevent selecting a disabled submenu starter. (STFAX)
Fixed a bug in the assignment of automatic keyboard equivalents. Now, exit
buttons are always scanned first, as they should be.
wind_get( WF_OWNER ) now correctly reports the handles of the next and
previous windows in the stack.
The width of the MOVER bar in a window with a SMALLER gadget is now
correct.
An object with the extended type X_HELP is no longer considered for an
automatic keyboard equivalent.
Programs which incorrectly assume that their own application ID is always
0 will work correctly if using appl_write() to send a message to
themselves, even in multitasking mode (assuming there is no
single-tasking application in memory, since it would have ID 0 and
therefore get the message; the best solution for this problem is simply
to run the offending program in single-tasking mode at all times).
(STDCAT)
appl_getinfo(0) and (1) now return the point size (rather than the pixel
height) of the fonts. Modes (11) through (14) are now also supported.
Also in the item selector: when it is first called, the number of items
and bytes in the current directory are now always displayed.
If a program changes the clipping array of Geneva's VDI handle, this will
no longer cause redraws to fail unexpectedly later on. (some very bad
programming in TWRITE3).
It is now possible to change the size and position of a window which has
been created but not opened, by using wind_set(WF_CURRXYWH). This just
makes it easier to use windowed dialogs.
Having the Limit window handles option on for a program which uses
Geneva's dialogs within windows (like TASKMAN) will work properly.
Made a few changes which allow running a program within another program by
way of Pexec() to work better. (SBPRO,1ST_WORD,QWK)
The version reported in the Gnva cookie really is correct now.
Window colors are now set for a window whose tree is redefined with
x_wind_tree().
If a program (incorrectly) uses evnt_button() with a mask of 1 and a state
of 2, Geneva will no longer lock up. (DATMAN) The state is now always
internally AND'ed with the mask.
Fixed a bug which would sometimes cause a crash when a program tried to
open a new VDI workstation and failed. (WORKS)
Programming additions:
---------------------
wind_get() modes X_WF_HSPLIT (0x1700) & X_WF_VSPLIT (0x1800)
The manual does not document the parameters returned by this call, and
it differs from what is passed in the equivalent wind_set().
wi_gw1: Split bar position
wi_gw2: Size, in pixels, of the upper (or left) window region
wi_gw3: Size of the lower (or right) window region
evnt_mesag() return X_WM_OBJECT (0xE900)
This message type is returned to an application when it uses wind_set()
mode X_WF_OBJHAND to affect the manner in which window gadgets are
handled.
If an application receives this message, it is because the object tree
handler routine instructed Geneva not to process the mouse click on a
window gadget as a normal event. Instead, a special message is returned
to the application:
Word 0: 0xE900
Word 1: Application ID
Word 2: 0
Word 3: Handle of the window containing the object
Word 4: Object tree index of the object which was clicked
Note that in order for Geneva to determine that the mouse has been
clicked on an object in a window's tree structure, it must be of type
EXIT or TOUCHEXIT. Geneva's default window gadgets already have these
attributes set correctly.
See also: wind_set() mode X_WF_OBJHAND.
wind_get()/wind_set() mode X_WF_OBJHAND (0x1F00)
When an application wants to intercept some or all of the button events
that would otherwise be interpreted as Geneva to mean that a window
gadget has been clicked on, this wind_set() mode can be used to provide
Geneva with the address of a routine which instructs Geneva to either
ignore the event, or to process it as normal. This allows the programmer
to redefine the operation of window gadgets, and to define his own
actions for new gadgets which have been added with the x_wind_tree()
function.
The routine is passed the handle of the window containing the object and
the index of the object within the window's object tree. If the user
routine returns a 0, then Geneva will generate an X_WM_OBJECT message
and send it to the application. If the routine returns a 1, then Geneva
will process the action as a normal event and act accordingly.
IMPORTANT: The application's object handler routine must not use any AES
functions.
The following example declares an object handler which allows the action
of the vertical scroll bar to be redefined:
/* change this to "int cdecl objhand..." for Pure C */
int objhand( int handle, int obj )
{ /* handle parameter is not used */
if( obj==WGVSMLSL ) return 0; /* this is the vertical slider */
return 1; /* otherwise, process as normal */
}
main()
{
int handle, message[8];
handle = wind_create( NAME|MOVER|VSLIDE|UPARROW|DNARROW,
50, 50, 150, 150 );
if( handle > 0 )
{
wind_set( handle, X_WF_OBJHAND, &objhand );
wind_open( handle, 50, 50, 150, 150 );
}
...
evnt_mesag( message );
switch( message[0] )
{
case X_WM_OBJECT:
if( message[3]==handle && message[4]==WGVSMLSL )
/* do something new with the slider */
}
}
If wind_set( X_WF_OBJHAND ) is passed a NULL pointer, instead of a
pointer to a function, object handling is discontinued for that window.
Note that in order for Geneva to determine that the mouse has been
clicked on an object in a window's tree structure, it must be of type
EXIT or TOUCHEXIT. Geneva's default window gadgets already have these
attributes set correctly.
wind_get() can also be used to get a pointer to the current object
handler routine. A NULL pointer means that there is no object handler
defined.
wind_get()/wind_set() mode X_WF_DIALEDIT (0x2000)
When a windowed dialog has been defined with wind_set() mode
X_WF_DIALOG, these two options can be used to get or set the index of
the object which currently has the edit cursor. This can be helpful when
an application changes the contents of a text field while the dialog is
still displayed, or when it needs to hide the object that currently has
the edit cursor.
wind_get( X_WF_DIALEDIT ) will return the index of the object which
currently has the edit cursor in the "wi_gw1" parameter, and the
position of the edit cursor within the object's text in the "wi_gw2"
parameter.
wind_set( X_WF_DIALEDIT ) changes the object ("wi_sw1") and the edit
index ("wi_sw2"). If the object is 0, then the edit cursor will simply
be turned off; otherwise it will be moved to the new object. If the
index is 0, the cursor will be positioned before the leftmost character
in the field; if it is a number > 0, it will be further to the right. If
the index is -1, then the cursor will be automatically moved to the
rightmost position.
New extended OBJECT types X_USRDEFPRE (90) and X_USRDEFPOST (91)
It is sometimes desirable to change the appearence of an object
slightly, but using a G_USERDEF object would necessitate putting a lot
of extra code into the user routine, since a G_USERDEF object cannot
have any text, fill, or border. They have to be drawn by the user
routine, or not at all.
Geneva provides two new extended object types which allow an object to
be modified or have its appearence altered, while still having the same
opportunity to be drawn like a normal object.
If bits 12-15 of an object's ob_state are 9
((ob_state&X_MAGMASK)==X_MAGIC) and the high byte of the ob_type is
either 90 (X_USRDEFPRE) or 91 (X_USRDEFPOST), then the ob_spec of the
object is assumed to contain a pointer to a USERBLK structure. This is
much like a normal G_USERDEF object, except that the ub_parm member of
the USERBLK structure must contain the value which would have been in
ob_spec if the object was not a G_USERDEF.
Since this may sound a little confusing, the following example can be
used. It defines a G_BOXCHAR object which has its character increased by
1 every time the object is drawn:
/* contains the code which increments the character and
the old ob_spec value */
USERBLK user;
/* start with a G_BOXCHAR object, with the character '1',
black border of thickness of 2, black text, patterned */
OBJECT ob = { -1, -1, -1, G_BOXCHAR, 0, 0,
((long)'1'<<24)|(2L<<16)|(1<<12)|(1<<8)|(2<<4)|1,
50, 50, 25, 25 };
int cdecl inc_char( PARMBLK *p )
{
char c;
/* extract the character, which is in the MSB of the
ub_parm element of "user" */
c = ((user.ub_parm>>24) & 0xFF) + 1;
/* now put it back */
user.ub_code = (c<<24L) | (user.ub_parm & 0xFFFFFFL);
/* return the current state */
return p->pb_currstate;
}
void draw_it(void)
{
objc_draw( &ob, 0, 0, 50, 50, 25, 25 ); /* draw */
Bconin(2); /* wait for keypress */
}
main()
{
/* start by drawing the object normally */
draw_it();
/* now, set up the USERBLK */
user.ub_code = &inc_char; /* function */
user.ub_parm = ob.ob_spec; /* old ob_spec of object */
ob.ob_type |= X_USRDEFPRE<<8 /* extended ob_type */
ob.ob_state |= X_MAGIC; /* set magic number */
ob.ob_spec.userblk = &user; /* set ob_spec */
/* now, draw it a few times and watch the number go up */
draw_it(); draw_it(); draw_it(); draw_it();
}
An X_USRDEFPRE function is called before the object is drawn. In
contrast, an X_USRDEFPOST function is called after the object's
contents have been drawn, but before any ob_state effects are
processed.