Building upon the work done in Select 1 and 2, Select 3 improves upon both the significant changes made to both the graphics and networking components as well as adding many new features. The focus on Select 3 has been mostly based around stablising features from Select 2 and improving the desktop usability of the Operating system.
- Cut and paste
Text in writeable icons provided by the Window Manager is now able to be selected by keyboard and mouse. Such icons can be used with the standard clipboard operations
The filer can now display images as thumbnails, allowing photo albums and other image collections to be browsed more easily.
- Improved 'buttons'
Action buttons, as well as groups and other 3D-style icons have been improved and may be made round or given colours. Support for button styles is a 'plugin' interface and other clients may provide different button renderings.
- Alpha-channel sprites
A new class of sprites has been created for alpha-channel sprites. These sprites can be used whereever the standard sprite operations would be used through system sprite rendering calls. Alpha-channel sprites allow each pixel to have variable translucency, which means that sprites can blend better to their backgrounds.
- Recycle bin
Files deleted by the user can, optionally, be sent to a recycling bin from which they can be retrieved if necessary.
- Improved Paint application
!Paint's internal and external operation has had a major overhaul to cater for some of the new features of Select 3, including alpha-channel sprites.
In the following breakdown, not all changes have been listed. In particular, fixes to components are not listed unless their effect is significant. Select is supplied with a more complete breakdown of the changes on a per-component basis.
- New !Recyclone application provides a rubbish bin into which files deleted by the user will be placed. A configuration tool is provided to allow the bin to be expired and its location changed.
- New !NetLights application displays network activity on the iconbar.
- !Draw can now import any type handled by ImageFileConvert where the type can be converted to a type which is handled natively by Draw. This means that PNG files, Artworks, BMP and other images types can now be imported.
- !Paint has been given a major overhaul. See the separate section for more details.
- DragASprite no longer uses a 'drop' shadow when translucency is active.
- DragAnObject's sprite creation code has been optimised slightly.
- Wimp now supports a 'priority' sprite pool which is able to forcibly override anything in the other sprite pools.
- 'IconBorder' plugin system allows the default slabbed borders to be rendered in a customisable manner. FilterManager has been updated to support multiple icon border filter clients. Example bordering source code will be supplied.
- 'Auto-open submenus' option now opens submenus and windows in the correct position regardless of where the mouse is placed.
- Selection of text within writeable icons and its use with cut and paste operations is now supported by the Window Manager. This furthers the work started in Select 1 to make the entire OS capable of using the cut and paste system.
- Tinting of icons is now more reliable and can use any tint type provided by the ColourMap module.
- Command windows generated by single tasking applications when run from the desktop are now centred on the screen.
- FilerAction proxying is now an option which may be disabled under the clients control. This might be used by rubbish bin applications to invoke 'delete' operations on items already in the bin.
- When in EY0 modes, Pinboard now correctly sizes its background window on a mode change.
- Pinboard configuration application can now be accessed by its main menu. Optimisation for redraw speed of tiled ImageFileRender images.
- Pinboard and Filer have both been updated to provide StyleGuide compliant save dialogue boxes.
- Attempting to delete !Boot will now raise a warning.
- Attempting to copy a directory called !Boot over your !Boot directory will now invoke the boot merge tool.
- Should Filer fail to launch the filer action window for a delete operation, the confirm deletes option is now honoured.
- In Filer, the Help option is now greyed if a directory and application combination are selected.
- Filer windows have been updated to be more style-guide compliant and to address issues raised by the use of icon bordering.
- Filer now offers to share directories as read only by default, rather than read-write. It makes sense not to share folders as public read/write by default.
- Filer now provides a fourth display option beside those for Large, Small and information icons. The 'Thumbnails' display renders images using the ImageFileRender components, allowing any known image format to be displayed within the Filer.
- Directories starting with a ! but without a !Run file are no longer treated as an application, allowing such names to be used safely if necessary.
- RAMFSFiler will share the disc as read only by default.
- The Sprite Pool has been updated with a number of slight modifications:
- RAMFS icon now fits in with the new style of icons
- JPEG icon now follows the bitmap style
- Shared CD discs now look more like the CDROM icon
- Addition of Zip, GIF, PNM, XBM, Sun raster, PCX, ICO, Clear, and BMP sprite icons.
- LanManFS icon updated to fit better with correct style.
- RAMFS icon now fits in with the new style of icons
- TaskManager can now launch Configure from the menu. The info box now describes the OS as RISC OS Select, and has been improved to address some issues with Icon Bordering.
- Toolbox "Discard, Cancel, Save" icons have been resized to be 'standard' size.
- TextGadget scrolling list boxes now display associated sprites more sensibly when selected; previously these would be displayed lighter than the rest of the line. The text is now positioned a little further across the window, away from the sprite in order to reduce the tight look that had been created.
- ImageFileGadget correctly positions its window now; previously it would inset the window by a pixel. When resizing the gadget, the entire window is redrawn to ensure that it
remains up to date. The facilities provided to developers for using ImageFileGadget have been greatly improved.
- ImageFileGadget is now able to report mouse click events and has a much greater array of image manipulation options.
- TextArea gadget now supports standard clipboard operations properly, allows for 'key notifications', and renders much more quickly in most cases.
- Toolbox slider gadgets would respond to clicks and scrolls over the wells of the gadget even when the slider was set to be display only. They no longer react to such events.
- Free space client templates tweaked to address issues relating to Icon Bordering.
- The sprite file DesktopBanner$File is now loaded by the Desktop module, if it is present, and used as the welcome banner on entry to the desktop.
- ShareFS 'Share directory' window is now updated to represent the current settings of the share if one is present, including the name of the Share.
- TaskWindow now includes a fix for 'The MessageTrans Bug'.
- Rendering of sprites with 1bpp masks, using no scaling or colour translation, where the sprite data ends on a word boundary, but the mask data does not end on a word boundary, and the output alignment is not a word boundary due to a graphics window being present... now works properly.
- SpriteExtend would fail to generate code when translucent sprites were rendered in paletted screen modes where the eigen factor was EX0 or EY0. This allows sprites to be visibly dragged in such modes.
- FontManager can now safely resize its dynamic area. The version supplied in Select 2 had problems on certain systems which has now been addressed.
- ImageFileRender now provides *ImageFileRenderers command for listing the supported renderers. This is mirrored in a new SWI to enumerate the renderers.
- A default viewer application can now be specified through ImageFileRender and will be set up as system variables for all renderable types.
- ImageFileRender's sprite renderer now supports information requests previous versions were would return the colour type incorrectly for certain sprite types. Sprite rendering will now render sprites of 8bpp or less through a wide translation table which improves their appearance when colourmapping is used in 16bbp or higher.
- New ImageFileConvert module is used with the Convert* modules to provide a generic conversion method, allowing conversion between different file formats through a number of SWI calls. *ImageFileConverters will list the supported converters.
- DrawFile will now render sprites in 8bpp or less through a wide translation table which improves their appearance when colourmapping is used in 16bbp or higher.
- JPEG rendering where DPI based JPEGs are given as ratios are now taken into account in a similar manner to that used by !Draw. JPEGs which supply a ratio, DPI or DPC (dots per centimetre) of 0 will now be treated as 90 DPI. JPEGs with low values for DPI or DPC will now be treated as is this was a ratio.
- CompressJPEG module now registers as a sprite to JPEG converter with ImageFileConvert.
- JPEG handling is much more robust now, and should never generate aborts for either valid or corrupt compressed data.
- ImageFileRender_Artworks module added to render Artworks documents.
- New ConvertGIF added to ROM to generate a 'dummy' image. This is a placeholder module which avoids the requirement for a Unisys patent for the use of the LZW algorithm.
- New ConvertXBM added to ROM to convert XBM image files to sprites.
- New ConvertSun added to ROM to convert Sun raster image files to sprites.
- New ConvertBMP added to ROM to convert Windows BMP image files to sprites.
- New ConvertPNM added to ROM, supporting type 1-6 PNM files.
- New ConvertICO added to ROM to convert Windows .ico files to sprites.
- New ConvertPCX added to ROM to convert PCX files to sprites.
- New ConvertClear added to ROM to convert Translator 'Clear' files to sprites.
- New ConvertSprite module added , which supports creation of sprites through ImageFileConvert from any format which ImageFileRender can handle. ConvertSprite provides a proxy ImageFileConvert handler for ImageFileRender in much the same way that ImageFileRender automatically provides a proxy ImageFileRender handler for ImageFileConvert. ConvertSprite can also provide callback and SWI functions to render images to a sprite.
- ConvertPNG has almost full support for creating PNGs from sprites (including alpha-channel sprites), with only CMYK sprites presently unsupported. Sprites can be created from any form of PNG, generating alpha-channel sprites where necessary.
- DrawFile module now supports creation of SVG files from DrawFiles using the ImageFileConvert interface.
- New ColourMap module allows generation of colourmapping descriptors without recourse to assembler. Currently supported mappings are : Blend, Brighten, Contrast, Gamma, Identity, Invert, Monochrome, Monochrome and scale and User. Colour map descriptors can be chained together to create more complex effects.
- SpriteExtend, Kernel and ColourTrans have been updated to provide a new sprite type for alpha-channel sprites. Alpha-channel sprites allow the images to be rendered with varying levels of translucency per pixel. Previously, sprites could only provide binary (pixel on or off) masks.
- SpriteUtil (System sprite area provider) has had a number of commands fixed to remove errors when no system sprite area is present.
- InverseTable 'destination tracking' is now improved and should no longer result in corrupt font colours or alpha channel rendering.
- Internet, ShareFS and Freeway have had issues relating to large file transfers addressed.
- InetConfigure can now configure static IP addresses properly. Previous versions would retain the addresses stored in CMOS rather than using the new addresses supplied by the user.
- Internet module has had a fix for interfaces with no addresses never issuing service calls.
- Aliased interfaces are no longer dynamically named; the names used on their creation are now retained, allowing deterministic operation.
- Internet can now handle changes in interface addresses more reliably. Previous versions had issues relating to multiple aliased interfaces and ARP requests which could cause machines to seemingly 'vanish'.
- Added support for ZeroConf IP configuration. ZeroConf is a means by which an address can be obtained for a machine on a network without any configuration process. This is similar to the configuration used by the Access, but standardised across multiple platforms by a global group.
- DHCPClient and ZeroConf client both respond to *ShowStat to provided their statistics.
- DHCP client now supports address changed due to its deletion of the interface address. Previously this was not an issue, because Internet never issued service for address deletion, but now that this has been done it is now aware of this case.
- The AppleTalk client is now supplied in ROM. This allows RISC OS systems to contact AppleTalk file and print servers.
- LanManFS has been improved, resulting in faster resolution of names on local networks. The 'Transact' SWI call has been updated to allow a larger number of Transact communications to be made, including old WinPopup messaging.
- OS_CLI is handled by an external module, CLIV.
- Some calls have been moved from the kernel to a new module called LegacyBBC.
- BEL (VDU 7) no longer uses OS_Word 7, but is passed to Sound calls directly.
- FileTypes now declares PCX, PNG, SunRaster, BMP, Clear, ICO and XBM file type names.
- FileSwitch is now able to reference path variables (pseudo-filing systems) through $, eg Music:$ for <Music$Path>. Writing to a path variable with multiple entries where a
$Write variable exists will now use the <path>$Write directory for the operation.
- FileSwitch no longer leaves streams open if a 'close' fails.
- ResourceFS will now only issue 'changed' messages where the files changed are opened by it, thus reducing the impact on menus opened by the user when ShareFS discs become available over the network.
- ParallelDeviceDriver is now capable of reading Device IDs. This allows the auto-detection of the make and model of Printer connected.
- PCI memory reservation has been removed from the kernel, freeing 256M of logical address space for use by dynamic areas.
- Conversions module has a minor for for ReadUnsigned returning an invalid V flag on some conversions.
- ScreenBlanker now supports a second-level blanking using DPMS. ScreenBlanker no longer uses CMOS to get its initial settings and defaults to 'off'.
- CDFS legacy support for built in conversions removed.
- EvaluateExpression module takes over from the Kernel's OS_EvaluateExpression. Additionally, expressions can now extract directory or leaf names from a string, canonicalise a filename and generate a string from the current time.
- Softload ROM images are now sorted into date order, making selection of ROMs much simpler. ROM images are now supplied in archives together with their change lists; these lists are recorded with the ROM when installed to allow them to be viewed at a later date.
- Resolver configuration is now able to locate DNS servers on the local network, even with bind variants.
- Interface configuration can now take effect immediately, rather than requiring a reboot.
- Re-written Filer configuration tool includes the new thumbnail configuration options.
- All tools now warn if the configuration application is closed when changes have been made. Tools where changes have been made are indicated by a '*' in the title of the window, in line with standard RISC OS practice.
- CPIShell is now able to be passed command line arguments to pass to the launched plugin. This is used to allow installation of components through Filer_Action (dragging over !Boot).
- TimeSetup is now capable of setting the timezone.
Previously, when a network interface is active on a machine the ScrapDirectory is set to a Directory named after the MAC Address of the first installed Network card. If NetFS was active, this would be replaced by the station ID.
With Select 3, the scrap directory naming is now based solely on the hardware configuration, as detected by HWScan. For most users this willbe disabled and so the scrap directory will be named 'Disabled'.
New IconSetUp Configuration Tool
The new IconSetup configuration tool allows the setting of options for the standard IconBorderRound module. The following options are supported for buttons and borders :
- Rounded edges
with Small, Medium, Normal or Large curves
- Apply to (sunken) writeable fields
- Enable 'special' colour schemes
with choice of Foreground and Background colour for Action buttons, Default buttons, and Groups
Furthermore button icons and information fields may have the colour applied as a Blend (top to bottom blend of the border colours, applying the button colour as a strong tint).
Button icons may have a rim highlight and may have either thick or thin borders.
The Paint application has been updated to support the new alpha-channel sprite format provided by Select 3. Paint can create sprites with alpha-channels, add an alpha-channel to an existing sprite, and allow editing of the alpha-channel.
Paint's user interface has also been brought up to date, with a separate attached toolbox for each sprite (similar to !Draw) so each sprite has it's own "working set" of toolbox settings. Shortcuts for zoom and select colour have been added along with a new colour display area. The menu tree has been revised to be more logical and Styleguide compliant.
Paint makes better use of the ImageFileConvert system in Select 3 and can directly load any filetypes supported by ImageFileConvert (PNG, JPEG, Clear, ICO, BMP etc). Paint allows saving of an image in JPEG and PNG format as well as sprite.
A good number of bug fixes and performance improvements have also been added along with usability features such as a true graphic brush display and better clipboard support.