Please enable JavaScript to view this site.

A-Shell Development History

946.0.1

(Windows/ATE) Highlighting of the current default button in AUI_EVENTWAIT is now more like "typical" XP themed applications.

946.0.2

DEVICE= path sizes increased from 50 to 80 characters, and some internal compiler allocations for filename paths (such as ++include files) increased to 256 bytes (fixing at least one GPF problem.)

946.0.3

(Windows/ATE) Go back to displaying dates using the Combo box control rather than the date picker, mainly because the date picker makes it difficult to discern where the focus is. (In the case of the Combo box, it is quite obvious, because the field with the focus changes to a date picker while being edited.)

946.0.4

(Windows/ATE) Fix problem with focus and context when the window is minimized and restored while XTREE has the focus.

946.0.5

(Windows/ATE) Various minor adjustments to AUI_EVENTWAIT with EVW_EXCDFOCUS and with clicks being dropped when using a very short TIMER option.

946.0.6

(Windows/ATE) Fix bug relating to MX_WINPTR (wasn't always returning the status or the selected printer name).

945.3.1

(Windows/ATE) Fix bug introduced in 945 causing combo boxes to display as buttons when inactive.

945.3.2

(Windows/ATE) Work around limitation of date and time pickers not offering a blank display option by using a combo box for display of blank dates and times.

945.3.3

When launching a new instance of A-Shell via xcall HOSTEX,"$ASHELL...", put quotes around the miame.ini spec if it contains spaces.

945.3.4

(Windows/ATE) Clean up and improve some aspects of the FONTATTR parameter to the AUI_CONTROL (MIAMEX,119) call. The font weight values were incorrect and also conflicted with some other flags, so they have been adjusted to be 16 times the following:

Symbol

Value

Description

FW_THIN

100

Thin

FW_EXTRALIGHT

200

Extra Light

FW_LIGHT

300

Light

FW_NORMAL

400

Normal

FW_MEDIUM

500

Medium

FW_SEMIBOLD

600

Semibold, demibold

FW_BOLD

700

Bold

FW_EXTRABOLD

800

Extrabold, ultrabold

FW_HEAVY

900

Heavy

 

In addition, a new flag, 32768 may be added to FONTATTR to tell the font matcher to try to match the average character width to the grid cell width. This probably only makes sense when specifying a fixed pitch font, in which case it should make the selected font match pretty closely in width to the standard non-GUI text.

945.0.1

(Windows/ATE) INFLD TYPE ||] (which stifles the automatic widening of small fields to help ensure that proportional characters will fix) now works on output as well as input. But, for fields that are only 1 character wide, the actual display with is more like 1.33 columns, so that most upper case characters will fit.

945.0.2

(Windows/ATE) Date/Time pickers now allow direct keyboarding of times and dates, using the /, -, or: characters to jump from one subfield to the next.

945.0.3

(Windows) The UCS() and LCS() functions, as well as the case folding functions in INFLD, now take into account the locale when folding accented characters.

945.0.4

XCALL MIAMEX,MX_GETTIME (75) now optionally returns microseconds (in addition to seconds) under Windows and Linux. This is probably not useful in itself but could be useful for measuring the amount of time that a very short operation takes (by calling MIAMEX,MX_GETTIME twice, once before and once after). The MIAMEX.BP sample program in [908,30] has been updated to do just that, showing the time to execute a FOR/NEXT loop of 10000 iterations.

The new syntax is:

xcall MIAMEX,MX_GETTIME, secs {,usecs}

As before, SECS will be returned as the number of seconds since the "epoch" 00:00:00 January 1 1970, and thus should be a B,4 or floating point variable.

USECS will be set to -1 if the feature is not supported (e.g. AIX, SCO) or else the number of microseconds to add to SECS.

Note that under Windows, the actual resolution is only milliseconds, so USECS will always be a multiple of 1000.

Also note that if you are using this function to measure an interval, keep in mind the possibility that the system clock might get updated during that interval, rendering your results meaningless.

945.0.5

Fix a compiler bug that failed to report DIMX as a duplicate label if the variable created by the DIMX had previously been seen by the compiler (and was auto-mapped). This could have led to programs that compiled without error, but in which DIMX variables failed to work as intended.

945.0.6

(Windows/ATE) All GDI printing commands (//SETFONT, etc.) now support both the symbolic named parameter values and the hex format values as defined in the A-Shell Development Guide. This doesn't add any new capability but makes it easier to write and understand GDI commands. For example, where previously you had to use numeric integer params such as:

//SETFONT, 120, Arial, 34, 0, 512, 1

now you can use symbolic names and/or hex values, e.g.:

//SETFONT, 120, Arial, &h022, ANSI_CHARSET, FW_EXTRABOLD, FW_ITALIC

You can also drop the prefixes (FW_, FS_, etc.) and suffixes (_CHARSET, _PITCH) which are mainly used to organize the symbols in ashell.def to shorten it to:

//SETFONT, 120, Arial, &h022, ANSI, EXTRABOLD, ITALIC

Furthermore, for parameters that are actually made by combining two or more symbolic values, like the &h022 (Pitch-And-Family) parameter above, you can use the pipe to combine two symbolic values:

//SETFONT, 120, Arial, VARIABLE|SWISS, ANSI, EXTRABOLD, ITALIC

See the A-Shell Development Guide for the definitive list of symbolic parameter values which apply to each GDI command.

945.0.7

(Windows/ATE) The Control+Shift+DoubleRightClick command now brings up a small dialog rather than going direct to the control dump, in order to allow a new option to change the default parameters for subsequent static text output. This is mainly intended as an design tool for experimenting with different colors and font attributes while thinking about converting legacy programs to GUI. Note that unlike changing the default GUI font, making changes here doesn't affect text already displayed. As an example of how you might use this in conjunction with a legacy text file maintenance program, you would start by invoking SET AUTOTPRINT (so that all plain text was turned into static text controls), then just before displaying the main screen, you could set up some text attributes. Then, cause your program to actually output the background labels, which will now be in the color/font/style selected. Now, try changing the attributes again, perhaps using a different color and maybe DPRINT instead of TPRINT, and then cause the program to display data fields. If you end up with something pleasing, you can capture and record all the field data, with the attributes you applied, by generating and saving the control dump.

945.0.8

(Windows/ATE) The "manifest" system has been revived for a second go. This is a scheme by which external files named <prog>.MFT can be used to automatically adjust the display characteristics of the program without making any changes to the program. It isn't known yet if this is a practical technique for GUI-ifying programs for production use, but it can be useful for experimenting.

In this latest reincarnation, you must activate the manifest mode using MFT.LIT (MFT ON or MFT OFF). If not activated, the MFT files are ignored.

To create a MFT file, generate a control dump when you have all the fields that you might want to adjust on the screen. (You'll probably need to use SET AUTOTPRINT so that the program generates controls when it uses PRINT statements.) Delete columns M-Q. Delete any rows that you aren't interested in altering. With the remaining controls, you can change the row, column, type, fgc, text, fontattr, fontscale, fontface, command, and tooltip fields.

Since controls are identified in the manifest by matching the output row/column to the csrow and cscol parameters in the manifest, if you want to adjust the position, change the srow and scol parameters which are at the far right end.

For adjusting the type flags, consult the MBF_ symbols in ashell.def.

To adjust the text, you must also add 16 to the fontattr field. (This is a special flag indicating you want to override the control text. Obviously this would be a bad idea for any data field, but might be useful for certain screen labels.)

Save the file in CSV format, but using the name of the program, and then copy it to a version with an MFT extension, in the same directory where the RUN file is.

For programs that have more than one screen layout, you'll need to insert this command into the program so that the manifest logic can know which "form" to look at it:

PRINT TAB(-10,48);FORM$;chr(177);

You'll also have to manually change the form name in the first column of the manifest spreadsheet accordingly. (The column is initialized to the name of the program when you create the control spreadsheet.)

Note that in the ATE environment, the MFT files are to be placed on the workstation in the %ATECACHE% directory. Thus, any manifest operations are strictly relative to the individual workstation.

(If this all sounds confusing, don't worry, since it only meant to be useful in a narrow set of design circumstances.)

945.0.9

(Windows/ATE) A new XTREE column type code, \ (backslash) may be used to declare that a backslash within the column should be treated as a normal character, rather than as the start of hidden text (as would otherwise be the case when in file mode). Note that using the \ type on any column effectively turns it on for all columns

945.0.10

(Windows/ATE) Date/Time fields now retain their form when becoming inactive (instead of turning in combo box controls). The down side of this is that when you click on the field to activate it, it will still always start with the focus on the first part of the date (or the checkbox) regardless of where you clicked on it. (This was true before but less obvious since the entire control changed from a combo box back to a date when you clicked on it.) Depending on how this is received we might extend it to the UP/DOWN control type, or revert back to the combo box for the DATE/TIME.