Specifications

SERIES 3/3A PROGRAMMING GUIDE
2-8
Additionally, files with the "hidden" attribute set are never displayed in a file list in the System Screen -
unless the file is open within an application (in which case it will be displayed in bold).
In order to check for the existence of hidden files or file starting with
Sys$
in a directory, the user should
press
TAB
to enter "directory" mode of the System Screen.
It is also possible to task to an application whose open file starts with
Sys$
by repeatedly pressing the
SHIFT
+
SYSTEM
key combination, which tasks round
all
running applications (that are clients of the
Window Server).
Assigning application buttons
Suppose that the user has installed the application
Tele
, and has assigned the application button
CONTROL
+
WORD
to it. The following is what happens when the user presses
CONTROL
+
WORD
:
at all times, the System Screen maintains a data structure associating each of the 14 possible
application buttons to public names of applications
the address of this data structure, within the System Screen dataspace, is known to the Window
Server (in fact it is kept at
DatApp1
)
when
CONTROL
+
WORD
is pressed, the Window Server consults this data to determine the public
name that is currently associated with this application button (ie
Tele
in this example)
the Window Server next checks whether the public name of the current foreground application
matches
Tele
, reading the public name from
DatProcessNamePtr
if so, this application is sent a special key-press event, with keycode value equal to
W_KEY_MODE
(as defined in
wskeys.h
) - unless the
SHIFT
modifier is also held down, in which case the
algorithm continues as below
otherwise, the clients of the Window Server are scanned in current task order, to see whether any
can be found with the required public name
if any can be found, this is made foreground
failing this, a message is sent to the System Screen to position, if possible, to the file list
associated with the given public name
if no such file list exists, the System Screen beeps and gives a suitable error message.
The crucial point in this is that, once again, the public name of the application has to be written to
DatProcessNamePtr
.
Incidentally, it is now clear why pressing the
CONTROL
+
SYSTEM
key (assigned to
RunImg
), or any other
application button assigned to a pure file list application, often fails to have the desired effect (of bringing
to foreground a running application listed in the relevant file list). The point is that these applications are
generally run without any command line being passed to them, and so they cannot set up a suitable value
at
DatProcessNamePtr
merely by analysing their command lines.
Also note that the assigned buttons differ in one aspect of their behaviour depending on the machine used.
Consider an application, the built-in database say, that is currently running in the foreground. On the
Series 3 pressing the Data button would change the application from search mode into change mode, and,
on a second press, back into search mode. On the Series 3a pressing the Data button has no effect when
there is currently only one copy of the application running. However when multiple copies are running,
then pressing the Data button has the effect of sequentially bringing each copy into foreground -
simultaneously holding down the shift key reverses the order of bringing into foreground. Try out the Data
button while running multiple copies of the database ...
DatUsedPathNamePtr (0x3e)
The Epoc reserved static
DatUsedPathNamePtr
is read solely by the System Screen, which assumes that if
it is non-null for an application,
DatUsedPathNamePtr
points to a full path specification of the file
currently open in the application. As described above in the section on
DatProcessNamePtr
, these
filenames are used when generating the file lists in the System Screen:
any open file matching an entry in the non-bold section of the file list
replaces
that entry
the filename is parsed and rearranged, eg from the form
LOC::A:\WRD\SHOPPING.WRD
into
Shopping[A]
.