Collected from : http://sheikyerbouti.developpez.com/forms-pjc-bean/LAF/doc/Oracle_Forms_Look_and_Feel_project_Old_Versions.htm
Version
1.3.7 comes with the following changes:
·
New documentation in PDF format.
All
documents have been re-written in PDF files.
·
New methods added to the DrawLAF Java Bean.
When
you resize the canvas that includes the Bean Area, you can inform the Java Bean
so that, the gradients can be re-painted with the new dimensions.
SET_CANVAS_RESIZED
e.g.
Set_Canvas_Property('CV1', WIDTH, 600);
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',
1, 'SET_CANVAS_RESIZED', '');
The
SHOW_MENU_BAR method has been added
to allow the developer to show or hide the entire menu bar.
Allowed values are true or false.
e.g.
-- Hide the entire menu bar --
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',
1, 'SHOW_MENU_BAR', 'false');
See the online documentation
·
New methods added to the XP_LAF_Button PJC
SET_IMAGE_PRESSED,
permits to indicate the image painted on the button when it is pressed.
SET_IMAGE_DISABLED,
permits to indicate the image painted on the button when it is disabled.
So
the Button can, now, have four images associated:
o
when the mouse enters
o
when the mouse exits
o
when the button is pressed
o
when the button is
disable
SET_ROLLOVER_MARK,
show/hide the orange border when the mouse cross over the button.
See
the online documentation.
·
Bug correction
o
Nice enhancement from Albert Ellen.
You can,
now, have a block split on two canvas - in the case of spread table - correctly
painted.
All you have
to do is to call two times the Paint_Block() method on the block, once with the bean located on the first
canvas,
and
once for the bean located on the stacked canvas that displays the spread table
items.
Before…
After.
!!! Think to
recompile your modules !!!
o
Tab canvases have, now, a
transparent background.
o
The PopList
list item recognize, now the (SHITF+)TAB keys to
continue the navigation between items.
Version
1.3.6 comes with the following changes:
·
A Scrolling Image viewer
It
is the perfect tool to show images collections like photo albums or commercial catalogs.
You
can attach it to four different locations from the bean area:
·
NORTH (current
screenshot)
·
SOUTH
·
EST
·
WEST
It
offers more than 20 methods to setup and display your images in a scrolling
bar. Each small icon can display an HTML tooltip, and
the main image will send a message back to Forms when you click it, allowing
the developer to attach any functions of his own to the image.
This
feature needs its own screen area to display the image viewer, so that you have
to add another Bean Area to your canvas with the following Implementation
Class:
oracle.forms.fd.ImageViewer
To
test it immediately, a new sample dialog - test_laf_image_viewer.fmb - has
been added to the /fmb folder of the zip file.
In
that folder, you would also find a /icons
sub-foldder that contain s the images. In order to
have the sample dialog working, you have to copy this folder to your c:/ disk.
If
you want to move it to another location, adapt the global variable created in
the When-New-Form-Instance trigger:
:GLOBAL.IMAGE_DIR := 'c:/icons/moto-guzzi/' ;
Images
can also be read from the database, via a small database package
: PKG_LAF
The
SQL script to create it is located in the /scripts
folder in the zip file.
The
procedure to load images from the database is implemented in the sample dialog
program unit : LOAD_BLOB_IMAGE, so you will need to
create the package in the database in order to compile the sample dialog.
Get
the Image
Viewer documentation here.
·
Support of MP3 sounds
By
just adding a JAR file – from the JLayer 1.0
open source project - to your /forms/java folder (and of course to the archive
tag of the formsweb.cfg file), you can, now, play MP3
files through the PLAY_SOUND method.
The
JAR file (jl1.0.jar) can be loaded from the following site:
Additionally,
the sounds can also be read from the database, via the SET_SOUND_BASE new
method.
·
Support of the SET_TEXT_POSITION
method in the LAF Fun Button feature while using textual buttons.
Version
1.3.5.1 comes with the following changes:
·
A new method to have multi-stops linear gradients on the canvas
This method allows the developer to draw
complex gradients with more than two colours.
Set_Custom_Property('CTRL.BEAN',1,'ADD_LINEAR_GRADIENT','PosX,PosY,Width,Height,orientation,coefficients,colors,transparency_factor');
PosX and PosY are the upper left corner, and
must contain an integer positive value. It also can be the following keywords:
o
WITH
o
WITH/2
Width
and Height are the dimensions of the
gradient to be drawn.
orientation can be UpToDown or LeftToRight
coefficient should be width1[%][-width2[%][-widthx[%]]]
If you specify a percentage [%] the
gradient will use this percentage to draw each pair of corresponding gradient
colours.
If not specified, the gradient is painted
using the real pixel dimension given.
colors shoulf be RGB pairs : RxGxBx-RxGxBx[-RxGxBx-RxGxBx[...]]
For
each coefficient given you should give a pair of colours.
e.g.:
Set_Custom_Property('CTRL.BEAN',1,'ADD_LINEAR_GRADIENT',
'0,0,WIDTH/2,HEIGHT,UpToDown,20%-60%-20%,r50g50b50-r255g255b255-r255g255b255-r50g50b50-r50g50b50-r255g255b255,.6');
The
first gradient with the first 2 colours is painted on the first 20% of the
total size given
The
second gradient with the succeeding 2 colours is painted on the next 60% of the
total size given
The
last gradient with the last 2 colours is painted on the last 20% of the total
size given
The CSS corresponding tag is the
following:
gradient-linear:0,0,WIDTH/2,HEIGHT,UpToDown,20%-60%-20%,r50g50b50-r255g255b255-r255g255b255-r50g50b50-r50g50b50-r255g255b255,.6
You
can have as many as you want in the CSS file.
The
TEST_LAF_LINEAR_GRADIENTS.FMB sample
dialog shipped with the zip file use .cvLinearGradients
canvas tag of the new forms.css file:
.cvLinearGradients {
type:canvas
gradient-linear:0,0,WIDTH/2,HEIGHT,UpToDown,20%-60%-20%,r50g50b50-r255g255b255-r255g255b255-r50g50b50-r50g50b50-r255g255b255,.6
gradient-linear:WIDTH/2,0,WIDTH/2,100,UpToDown,25%-25%-25%-25%,r99g165b247-r55g153b244-r45g126b235-r48g165b249-r48g165b249-r127g127b255-r127g127b255-r170g127b255,.6
gradient-linear:WIDTH/2,100,WIDTH/2,100,UpToDown,20%-20%-20%-20%-20%,r255g68b54-r255g172b54-r255g172b54-r255g220b54-r255g220b54-r235g255b54-r235g255b54-r178g255b54-r178g255b54-r93g255b54,.6
}
·
A last argument has been added to the ADD_IMAGE method
It allows the developer to add a mirrored
image to the given image
This
parameter, given after the sensitive image name could be true or false
Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1, 'ADD_IMAGE',
'1,http://sheikyerbouti.developpez.com/forms-pjc-bean/LAF/doc/LAF_logo2.jpg,CENTER-IMAGEWIDTH/2,10,.9,-,-,-,true');
See the TEST_LAF_MIRROR_IMAGE.FMB sample dialog
shipped with the zip file.
Version
1.3.5 comes with the following changes:
·
Two methods added to the dynamic frame feature
Draw frame border with gradient
Set_Custom_Property('CTRL.BEAN',1,' SET_FRAME_BORDER_GRADIENT','start_RGB_color, end_RGB_color[,gradient_direction]’);
Set_Custom_Property('CTRL.BEAN',1,' SET_FRAME_BORDER_GRADIENT','r250g250b250,r20g20b20');
Draw frame shadow with gradient
Set_Custom_Property('CTRL.BEAN',1,' SET_FRAME_SHADOW_GRADIENT',
'start_RGB_color, end_RGB_color[,gradient_direction]’);
Set_Custom_Property('CTRL.BEAN',1,' SET_FRAME_SHADOW_GRADIENT',' r250g250b250,r20g20b20,LeftToRight');
In
both methods gradient_direction can be:
o
LeftToRight
o
UpToDown
o
LeftUpToRightDown
o
LeftDownToRightUp
·
Integration of the non rectangular buttons feature
It allows the developer to draw non
rectangular buttons corresponding to the following shapes:
. circle
. square
. polygones
. outlined text
The button Implementation Class must be: oracle.forms.fd.FunButton
See
every method in the documentation and run the laf_fun_button.fmb sample dialog
shipped with the zip file.
•
Bug correction --
SET_MAX_ROWS
method corrected in the Poplist PJC
Version
1.3.4.4 comes with the following changes:
•
PLAY_SOUND_LOOP method added
You can play a pre-loaded sound in an
infinite loop
-- load a sound
file --
Set_Custom_Property('CTRL.BEAN',1,'SET_SOUND_FILE','C:/,spacemusic.au');
-- play the
sound --
Set_Custom_Property('CTRL.BEAN',1,'PLAY_SOUND_LOOP','spacemusic.au');
•
STOP_SOUND method added
To
stop a sound played in an infinite loop
Set_Custom_Property('CTRL.BEAN',1,'STOP_SOUND','spacemusic.au');
if this method
is used just before exiting the form,
follow it by a
SYNCHRONIZE instruction.
•
ADD_TEXT modified to accept an item
unique name
The
second parameter (prompt text) can be preceded by a unique name like the
following:
Set_Custom_Property( 'CTRL.BEAN',
'ADD_TEXT', '1,EMP.ENAME^Label,10,10,Arial,plain,12,r100g25b255,.5'
);
The
separator must be a ^
This
unique name could be, thus, used in a SET_TEXT_LABEL()
method to modify the label at runtime:
Set_Custom_Property('CTRL.BEAN',
1, 'SET_TEXT_LABEL', 'EMP.JOB,New label);
•
new SET_TEXT_LABEL
method to modify, at runtime, a prompt label defined by the ADD_TEXT method.
The
property is a combination of the unique item prompt name given in the ADD_TEXT
method (first half)
and the new label following the coma
(second half).
•
Bug correction --
add feature that allows having item
prompt split on 2 lines with table-block HTML decoration, the item prompts
split on 2 lines are, now, well displayed. (but no
more than 2 lines)
Version
1.3.4.3 comes with the following changes:
•
The ADD_IMAGE method supports some
special keywords for the X_Pos and Y_Pos parameters, allowing locating the image depending on
the borders of the canvas.
X_Pos can contain:
. LEFT
. CENTER
. RIGHT
. IMAGEWIDTH
. IMAGEWIDTH/2
Y_Pos can contain:
. TOP
. CENTER
. BOTTOM
. IMAGEHEIGHT
. IMAGEHEIGHT/2
so you can have
locations anchored to a border, independently to the size of the canvas
e.g.:
RIGHT-IMAGEWIDTH,BOTTOM-IMAGEHEIGHT/2
or
CENTER-10,TOP-IMAGEHEIGHT/2+10
•
The DISPLAY_MESSAGE method has been
added to the DrawLAF bean. It sounds close to the Show_Alert() built-in, with no size limitation.
Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1,
'DISPLAY_MESSAGE','0,0,400,110,/target-32.gif,Title,Message');
•
The GET_SCHEME_COLOR and GET_SCHEME_COLOR_LIGHT methods have
been added to return the current scheme color and
light color in rXgXbX
format.
•
The SET_FLASH_TEXT method can take
both text and text shadow colors, separated by a
comma.
Set_Custom_Property('LAF_BLOCK.LAF_BEAN', 1, 'SET_FLASH_TEXT', '30|280|'
|| 'the text to print'
||'|500|true|r250g10g10,r125g125b125|SOUND8.WAV');
•
The SET_SOUND_FILE method accepts,
now, multiple sound files in a single call:
Set_Custom_Property('LAF_BLOCK.LAF_BEAN',1,'SET_SOUND_FILE','/,SOUND5.WAV,SOUND6.WAV,SOUND8.WAV');
The
only restriction is that all sounds have to be located into the same given
root.
Version
1.3.4.2 corrects a few bugs on the TextField and TextArea beans, and offers a few new methods.
The
ADD_IMAGE method has been modified
to accept a last argument that can turn the image in a sensitive area.
When
the user clicks this image, a message is sent to the Bean Area through its When-Custom-Item-Event trigger, allowing
the developer to start an action..
This
method has also been modified to accept the special -1 value in place of the
width or height argument in the purpose ok keeping the aspect ratio of the
scaled image.
See
the new ADD_IMAGE syntax in the DrawLAF bean
documentation:
A
new SET_ALL_HYPER_LINK_COLORS has
been added to the DrawLAF bean to set the colors of every hyper link item in a single shot.
Version
1.3.4.1 introduces the Socket Server feature, allowing the Forms module to
receive messages from the outside.
On
the screenshot, you can see coming asynchronous messages sent by a database
trigger.
All
you have to do is to open a socket on a given port, and then the Forms module
is ready to listen to this port. It is, then, easy to send asynchronous
messages from any place.
See
the following example that sends a message from the database:
1.
Open the port 4450 from the Forms module:
Set_Custom_Property( 'BL.BEAN', 1, 'INIT_SERVER', '4450' ) ;
2.
Send a message from the database through this port:
CREATE OR REPLACE TRIGGER TRG_BI_TRACE
BEFORE INSERT
ON TRACE
REFERENCING NEW AS NEW OLD
AS OLD
FOR EACH ROW
DECLARE
c utl_tcp.connection;
-- TCP/IP connection to the Socket server
ret_val
PLS_INTEGER;
BEGIN
c
:= utl_tcp.open_connection(remote_host
=> '10.75.19.44',
remote_port => 4450);
ret_val := utl_tcp.write_line(c,
'Inserted line in table TRACE: ' || :NEW.LIGNE);
utl_tcp.close_connection(c);
EXCEPTION
WHEN
OTHERS THEN
-- Consider logging the error and then
re-raise
RAISE;
END TRG_BI_TRACE;
/
In
this sample code, a database trigger is used to send a message each time a row is
inserted in the TRACE table (LIGNE is a Varchar2 column of this table).
This
way, you do not need any more Forms timer to query the database in an active
way, but you can simply be in a passive way, receiving messages from the
database (or any external source able to send a message through a socket).
Test
it with the laf_socketserver.fmb
provided in the /fmb
directory of the LAF_1341.zip archive.
Version
1.3.4 does not revolutionize the project, but add a few enhancements.
- The dynamic menu can, now, support multiple sub-levels.
You
can, at runtime add, enable, disable, show, hide and remove menus and menu
options of any depth.
The
corresponding ADD_MENU and ADD_MENU_OPTION methods have been modified to accept
the pointed notation.
Set_Custom_Property('BL.BEAN', 1,
'ADD_MENU', 'Menu1.SubMenu1,SubMenu1'
) ;
Set_Custom_Property('BL.BEAN', 1,
'ADD_MENU_OPTION', 'Menu1.SubMenu1.SubSubMenu1.Exit,Exit,Exit-Form'
) ;
The
ADD_MENU method needs, now, two arguments:
- The first one is the menu/menu option internal name
- The second is the displayed label
·
Dynamic Frames have also
been enhanced to display a better frame-title result.
·
Two methods have been
added to get a color from a Java JColorChooser:
o
GET_COLORCHOOSER_COLOR to get the color from a JColorChooser
The
value is returned as a RxGxBx
string.
o
SET_COLORCHOOSER_VALUES to set the JColorChooser initial color
(required) and title (optional).
Color must be in RxGxB
string format.
Declare
LC$Color Varchar2(12);
Begin
-- set color
and title to initialize the JColorChooser with --
Set_Custom_Property('CTRL.LAF', 1, ' SET_COLORCHOOSER_VALUES',
'r200g100b0,Choose a color');
-- get a color
chosen from a JColorChooser --
LC$Color :=
Get_Custom_Property('CTRL.LAF', 1, 'GET_COLORCHOOSER_COLOR');
End;
·
A third argument has
been added to the SET_GRADIENT_COLORS
method.
It
allows playing with the transparency level of the gradient painted on the
canvas background.
The
value must be between 0 and 1.
0 corresponds to a full
transparent factor (invisible).
1 corresponds to a full
opaque gradient.
If
this factor, not required, is not provided, the default value is : .2
-- intensive gradient --
Set_Custom_Property( 'CTRL.LAF' 'SET_GRADIENT_COLORS', 'r0g0b0,r255g255b255,.8' );
The
corresponding tag in the .CSS file is: gradient-colors of any section of canvas type:
.maincanvasOracle {
type:canvas
gradient-colors:r51g102b153,r210g216b176,.1
...
}
·
Some people don’t
like to see the tiny lines drawn around an item when it has the focus.
A
DRAW_FOCUS_LINES method has been
added to the DrawLAF.java bean to decide if you want
or not draw the item focus lines.
-- do not draw the focus lines on items --
Set_Custom_Property( 'CTRL.LAF' ' DRAW_FOCUS_LINES ', 'false' );
Version
1.3.3.1 adds the StatusBar features, and also
corrects a bug with the laf.pll library for
table-blocks where all items are not located on the same canvas
(Correction
provided by John Vander Heyden).
As you can see on the figure below, the
Status bar is divided in 2 lines.
The first line has 2 zones call 1,1 and 1,2
The second lines has 6 zones called 2,1 to 2,6
You can get and set the text of one of these
zones with the new:
Set_Custom_Property('bl.bean', 1, 'SET_STATUSBAR_VALUE', 'status_line,status_index,the value' ) ;
For instance, to set the value of the
first line, first zone (which is typically the message zone) use the method as
follows:
Set_Custom_Property('bl.bean',
1, 'SET_STATUSBAR_VALUE', '1,1,Hello' ) ;
You can get the content of any zone with:
Set_Custom_Property('bl.bean',
1, 'SET_STATUSBAR_INDEX', '1,1' ) ;
V_value := Get_Custom_Property('bl.bean', 1, 'GET_STATUSBAR_VALUE') ;
A REFRESH()
method has also been added to the DrawLAF.java bean
to allows re-painting the windows after the use of the ADD_IMAGE() method.
When this method is used in a
When-New-Firm-Instance trigger, the screen does not have to be refreshed to see
the images.
When you use this method in a
When-Button-Pressed trigger, the images are not immediately shown. So provide
this method just after the ADD_IMAGE() call:
Set_Custom_Property('bl.bean',
1, 'REFRESH', '' ) ;
Version
1.3.3 adds the dynamic menu feature.
You can add menu options to an existing
popup menu, add a new popup with its menu options.
The entire current menu is scanned so this
is the reason why you can handle
existing popup/options, even those provided in the Forms internal standard menu
(DEFAULT,DEFAULT&SMARTBAR).
With the current toolbar, you can add,
remove, show, hide, enable, disabled any popup or menu option
See the DrawLAF bean properties documentation
to get detail of the new methods.
Notice that the naming convention uses the
displayed name of popup menus and menu options, so it can change according to
your own language setting.
A sample dialog (test_dynamic_menus.fmb) is
provided for you to test. You can find it in the /fmb
subdirectory of the zip file.
Version
1.3.2 introduces the
forgotten Text Item.
Single and multi-line Text Items are, now,
taken into account and support the following:
- Regular Expression validation
- Cursor and selection handling
- Hyperlink (single-line Text Item only)
- Blinking(single-line Text Item only)
In addition, some events can be sent back
to Forms through the Tom
Cleymans DispatchingBean
solution.
You can, now set any Regular Expression
pattern to perform complex item validation.
You can get and set the current cursor
location and the character selection.
You can blink single-lineText
Items.
You can manage Hyperlinks by launching
URLs by clicking on them.
The text_items.fmb sample module
is part of the zip file (/fmb)
for you to test.
For a complete documentation on methods
you can set/get, see the LAF_XP_TextField documentation and LAF_XP_TextArea documentation.
Version
1.3.1 is a consolidation of the 1.3 new features.
a. The properties set to menus, window
caption bars, status bar, input dialog boxes, dynamic frames and tabs can be
initialized, now, from the CSS file.
In one hand, they can inherit some of
their properties directly from the current selected color
scheme.
In the other hand you can set the global
properties for those elements. Global properties are those that are not
specifically set at run time.
New tags have been added to the GUI
section of the CSS file to store this information:
.GUIPropertiesOracle {
type:gui
scheme:silver
enhanced-lists:true
tlist-multi-selection:true
tlist-sorted:false
tlist-orientation:vertical
poplist-settimekeyselect:8000
/*
/* menu, window
caption and status bar */
/*
light-color-scheme:true
menu-use-scheme:true
window-use-scheme:true
status-use-scheme:true
/*
/* tab properties */
/*
tab-use-scheme:false
tab-selected-colors:r255g255b255,r51g102b153
tab-colors:r0g0b204,r255g255b120
/*
/* dialog properties */
/*
dialog-use-scheme:true
dialog-font:Verdana,14
/*
/* frames properties
*/
/*
frame-use-scheme:true
frame-font:Verdana,B,12
frame-title-position:top,left
frame-opaque:false
frame-background-colors:r0g0b255
frame-colors:r255g255b0
frame-gradient-orientation:
frame-round-border:true
frame-title-colors:r0g0b255
/*
/* other GUI element
properties */
/*
}
b. It comes with another new feature that
allows handling tab canvas properties at runtime.
You can set the selected, non selected tab
colors and font and also put an image.
c. Finally, four methods have been
added to the DrawLAF.java bean to put images
on application and MDI window caption bars:
- SET_CURRENT_WINDOW_ICON()
- SET_WINDOW_ICON()
- SET_WIN_MDI_ICON()
- SET_ALL_WINDOWS_ICON()
Version
1.3 provides two new features:
- Dynamic frames
You
can create and handle titled frames at runtime:
·
Creation
·
Set graphical properties
·
Resize/move
·
Show
·
Hide
·
Remove
The
frame title can be located on the 4 sides of the frame box with left, center, and right alignment.
See
the DrawLAF Bean properties documentation to get all
the property settings.
Try
it right now with the test_laf_frames_9i.fmb
provided in the /fmb
directory of the LAF-13.zip file.
- Input dialog box
Something
missing in the standard Forms built-ins set is a very easy way to let the
end-user enter a text.
That
is what the Input dialog box has been introduced in this version.
It
allows displaying a coloured single or multi-line dialog box.
You
can set color, position, size and even your own icon.
In addition, a common About
box has also been added to show the current LAF Bean version and also the
current running JRE version
Version
1.2.1 does not provide any new feature. It only corrects a bug, discovered by Frans Hovenkamp
on the Push Buttons.
As you can see on the screenshot, buttons overlap the
second window opened by the Open_Form() or Call_Form( ..., NO_HIDE) built-ins (Red frame).
This is corrected in this current version (1.2.1), so
Push Buttons do not overlap anything now.
However, the caveat still remains on enhanced lists
(yellow frames) that are also Swing components.
So and at this very moment, do not use enhanced list if they are supposed to be used in a multi-window application.
So and at this very moment, do not use enhanced list if they are supposed to be used in a multi-window application.
For
information, enhanced lists are standard Forms list that are enhanced with the Set_Custom_Property( ENHANCED_POPLIST )
method.
Version
1.2 allows modifying some particular element, like menu bar, menu option or
status bar.
You can modify Font, foreground color and background color settings
for the following element:
- Single line Text Item
- Multi-line Text Item
- Button
- CheckBox
- Radio button
- Tree
- ComboBox
- PopList
- TList
- Tree
- Menu Bar
- Menu Option
- Status Bar
- Window title
Corresponding properties can be read from the
CSS file, under the gui
specific type of tag section:
.GUIProperties1 {
type:gui
scheme:purple
enhanced-lists:true
tlist-multi-selection:true
tlist-sorted:false
tlist-orientation:vertical
poplist-settimekeyselect:8000
element1:TextField,Tahoma,B,12,r0g128b255
element2:Button,Tahoma,B,12,r0g128b255
element3:CheckBox,Tahoma,B,12,r0g128b255
element4:RadioB,Tahoma,B,12,r0g128b255
element5:Tree,Tahoma,B,12,r0g128b255
element6:ComboBox,Tahoma,B,12,r0g128b255
element7:Tree,Tahoma,B,12,r0g128b255
element8:MenuBar,Tahoma,B,12,r255g128b0,r200g255b150
element9:MenuOption,Tahoma,B,14,r0g185b90,r255g255b150
element10:Status,Tahoma,B,12,r255g255b255,r0g185b90
element11:Window,Verdana,BI,16,r255g255b128
}
These new tags are read from the PKG_Look_And_Feel. Set_GUI_Properties() laf.pll
procedure.
It is, so, easy to change the setting of
all items of the current module.
Version
1.1 allows playing sounds and displaying any single or multi-line messages
anywhere on the screen, during the number of milliseconds given.
When this time is elapsed, the message is erased from the screen.
When this time is elapsed, the message is erased from the screen.
A pre-loaded sound can be played as soon
as the message is displayed.
For further information, read the version.txt in the zip file.
0 comments:
Post a Comment