|
OPL developers packages
If you want to write OPL programs, you will need the OPL developers pack (as well
as an OPL user package) for your Symbian OS phone. Generally, you can develop on
the phone itself, as well as on the Windows emulator supplied as part of a C++ SDK.
The OPL developers package available from this page will allow you to write OPL
programs for the following types of device:
- Nokia 92xx/9300/9500 Communicator series
- UIQ
- Series 60
How to use a developer pack
To use a developer pack, install the relevant C++ SDK as detailed below,
then unzip the developer pack on top.
Finally, it is possible to install more than one developer pack. (Just ensure you
unzip the correct one onto the appropriate SDK!)
Here are the OPL developer packs, with the most complete at the top:
Full release
|
The version for the 92xx is v1.56 and functionally complete.
It supplies the Texted OPL editor application, all OPXs, and the DemoOPL example app.
|
Full release
|
The version for the 9300/9500 is v1.56 and functionally complete.
It supplies the Texted OPL editor application, all OPXs, and the DemoOPL example app.
|
Beta
|
Ported from the Symbian OS 6.0 version, this is for UIQ phones based
on Symbian OS 7.0. While it is a beta release, as it has some open issues that need to
be resolved before the full release, it delivers the OPL editor app, most OPXs and the DemoOPL app.
|
Alpha
|
This version for Symbian OS 6.1 is still alpha. The OPL editor app requires more development,
but several OPXs are supplied.
|
OPL for the Nokia 92xx Communicator Series is a long established, mature,
full release.
C++ SDK required (only for full developers package): Nokia 9200 Communicator SDK (available from
www.forum.nokia.com)
Full developers pack (for development on PC and on the device):
9200-OPL-DevPack-2006-06-17.zip file (1437 Kb)
Mini developers pack (for development on the device itself only):
9200-OPL-DevMini-2006-06-17.zip file (413 Kb)
OPL for the Nokia 9300/9500 Communicator Series is a mature,
full release.
C++ SDK required (only for full developers package): Nokia S80 DP2.0 SDK (available from
www.forum.nokia.com)
Full developers pack (for development on PC and on the device):
9500-OPL-DevPack-2006-06-17.zip file (1040 Kb)
Mini developers pack (for development on the device itself only):
9500-OPL-DevMini-2006-06-17.zip file (413 Kb)
The port of OPL for UIQ is available as a beta release, as most
items of functionality are available. The translator and runtime work as expected, the Texted
OPL editor is able to translate programs and OPL applications, and most OPXs are available.
In this regard, the UIQ version is much closer to the Communicator version than the Series 60 port.
The known limitations are:
- OPL event loop handling
- OPL font constants
- Texted file handling, ini file
- Texted fonts
More information on this is available in the UIQ developer pack zip file.
C++ SDK required: Symbian OS v7.0 UIQ 2.1 SDK (available from Sony Ericsson Developer World Home page.)
Developers pack:
UIQ-OPL-DevPack-2005-01-10.zip file
The OPL for Series 60 user package is currently at alpha status,
v0.50. In particular, there's no support for string DIALOGs, nor sound. Most OPXs have
not been tested.
Also, a C++ wrapper application is required to launch .OPO files from the
Series 60 Menu application. This will be the standard way of supporting OPL
applications on Series 60. For more details on rolling your own wrapper, take
a look at the \opl\oplr\oplwrapper0 source code. A readme.txt file explains
how to customize the oplwrapper0 code for your own application. (Or you might be
lucky if you ask a friendly Series 60 programmer very nicely.)
The editor application (texted.app) for Series 60 phones is also yet to be
released. If you wish to write OPL programs for Series 60 phones, there are
two main options:
- Use the PC-based OPLTRAN tool with a Series 60 SDK to produce your .OPO
files. Or
- Develop your .OPO files on a Nokia Communicator (or emulator) and
transfer to the Series 60 phone.
Similarly for Series 60, if you have a Series 60 SDK, you'll be able to develop
OPX extensions. (Though we've not tested this yet.) You'll also be able to
develop using the PC-based OPLTRAN tool and test using the Series 60 emulator.
C++ SDK required: Series 60 SDK (available from www.forum.nokia.com)
Developers pack:
OPL-OS61-WINS-030.zip file
OPL for the Nokia 7700 phone using Series 90 is at a pre-release
stage. It's not yet available, we're waiting for the release of a more complete version of the Series 90 SDK.
C++ SDK required: Series 90 SDK (available from www.forum.nokia.com)
Developers pack: Not yet available.
The latest release notes for developers are:v1.56 17 June 06 ricka@users.sourceforge.net and arjenb@users.sourceforge.net
Legend: C92 = for Nokia 92xx Communicator
C95 = for Nokia 9300/9500 Communicator
C9X = for all Nokia Communicators
ALL = for all devices (Communicator, UIQ, S60)
OPLT:
* (ALL) arjenb: Added new graphics command gXBORDER32 - see OPLR
OPLR:
* (C9X) arjenb: Fixed bug [1507068] Runtime with active menu freezes when focus switches
* (ALL) arjenb: New functionality to fix bug [1172574] gXBORDER only draws one border type
gXBORDER32 command was added that draws the new Symbian ER6 style borders,
addding OpCode::gXBorder32() and modifying CONST.TPH. See Developer note #1 below
for details.
NOTE FOR DEVELOPERS:
1. New graphics command: gXBORDER32
gXBORDER32 draws the new Symbian ER6 style borders. Since the new flag constants for these type
of borders exceed the size of an integer and the old gXBORDER command only accepts a integer flag,
the new command was introduced. The syntax of gXBORDER32 is almost identical to the old gXBORDER
command, but the first parameter is no longer present and the second parameter has been changed to
a longint.
Usage: gXBORDER32 flags&[,w%,h%]
Constants for the different border types are included in CONST.OPH.
The following example draws a Window-type border around the current drawable:
gXBORDER32 KgXBorder32Window&
---
v1.55 10 June 06 ricka at users dot sourceforge dot net and arjenb at users dot sourceforge dot net
GENERAL:
* (C9X) arjenb: Added self signed certificate to all 92xx/9300/9500 .pkg files
* (C95) arjenb: Fixed bug [1160930] SIS files are missing Series80ProductID
* (C9X) arjenb: AppFrame.opx, SendAs.opx and System.opx are now included as files in the OPL runtime
installation and are no longer available as separate sis-files. This to prevent the user from
seeing 4 installation warnings when installing the runtime and to prevent reinstallation
problems on Nokia 9300/9500 Communicators.
* (ALL) ricka: Fixed bug [1101203] HRH2OPH missing from Dev Pack
OPLT:
* (ALL) arjenb: Fixed bug [911620] Stale .AIF files left in \System\Temp
* (ALL) arjenb: Added new graphics command gPIXEL - see OPLR
* (ALL) arjenb: Added optional third argument for LOC - see OPLR
OPLR:
* (ALL) arjenb: New functionality for feature [734702] Graphics commands
gPIXEL command was added which returns the RGB color value of the specified pixel,
addding FuncOpCode::gPixel(). See Developer note #1 below for details.
* (ALL) arjenb: Fixed bug and new functionality for feature [1499213] LOC partially broken
The LOC function was changed to use language independent case insensitive searching.
Additionally, an optional 3rd argument for LOC was added, to allow specification of the
search mode (normal, folded and collapsed), adding FuncOpCode::LocWithCase() and modifying
const.tph. See Developer note #2 below for details.
* (C95) arjenb: Fixed bug [0934352] MPOPUP crashes.
* (C9X) arjenb: Fixed bug [1493931] Runtime crashes.
* (C95) arjenb: Fixed bug [1404558] CBA update problems in OPL dialogs
* (C95) arjenb: Fixed bug [1245819] No scrollbar in OPL dialogs
* (ALL) arjenb: Fixed bug [1500819] PEEK$ sometimes doesn't work
* (C95) arjenb: Fixed bug [1299716] Status field not updated correctly
OPX:
* (ALL) arjenb: Added Array.OPX for handling C++ style dynamic length arrays in OPL.
See \opl\opx\array\ArrayOPX.rtf for more info.
* (C9X) arjenb: Fixed bug [0897032] Agenda.opx problem on 9200
* (C95) arjenb: Fixed bug [1086304] SyGetPhoneInfo$: panics in System.OPX.
* (ALL) arjenb: Fixed bug [1404558] Declaration errors in System.oxh
* (C9X) arjenb: Fixed bug [1158074] Application title bar casts shadow in AppFrame.OPX
* (C95) ricka: Fixed bug [1167022] AppFrame OPX doesn't support AddToDesk on 9500
* (C95) arjenb: Restored irListen functionality in Appframe.opx (AFToggleIrDA function)
TEXTED:
* (C9X) arjenb: Fixed bug [1103100] Find/Replace skips first find
* (C95) arjenb: Fixed bug [1103109] Replace missing from Texted editor
* (C95) ricka: Fixed bug [1103547] Texted doesn't use AddToDesk on 9500
* (C95) arjenb: Find/replace now also always starts at the current cursor position on a 9300/9500
* (C9X) arjenb: Goto dialog CBA-buttons restructured (instead a single "Close" button, the dialog
now has a "Go to" and "Cancel" button)
OPLTOOLS:
* (C95) ricka: Fixed bug [1043920] OPLTRAN.EXE panics on 9500 SDK
DEMOOPL:
* (ALL) ricka: Fixed bug [1079304] Further changes to demoopl.mk makefile to cleanly build demoopl.app
NOTES FOR DEVELOPERS:
1. New graphics command: gPIXEL
gPIXEL returns the RGB color value of a pixel in the current drawable.
Usage: rgb&=gPIXEL(xpos%,ypos%)
RGB values are returned as longints and can be converted to red, green and blue values using the KRgbRedPosition&,
KRgbGreenPosition&, KRgbBluePosition& and KRgbColorMask& constants (specified in CONST.OPH).
The following example retrieves the RGB values of a horizontal line of 15 pixels starting at position 4,6
in the specified window and prints the retrieved RGB values in the default window:
PROC GetPixelDemo:(DrawableID%)
LOCAL I%,P&,R&,G&,B&
I% = 0
WHILE I% < 15
gUSE DrawableID%
P& = gPIXEL(4+I%,6)
R& = P& / KRgbRedPosition& AND KRgbColorMask&
G& = P& / KRgbGreenPosition& AND KRgbColorMask&
B& = P& / KRgbBluePosition& AND KRgbColorMask&
gUSE 1
PRINT "Pixel at (" + NUM$(4+I%,2) + ",6)= R:" + NUM$(R&,3) + ",G:" + NUM$(G&,3) + ",B:" + NUM$(B&,3)
I%=I%+1
ENDWH
ENDP
2. Changes to the LOC function
LOC is now implemented using a locale *independent* case insensitive search. The previous version of LOC
used a locale *dependent* case insensitive search. The problem with the locale dependent version was that
it did not find non-printable characters (like CHR$(0)), and incorrectly reported them as found at the first
position of the string. It also mapped most extended characters to their collated counterparts before starting
the search (e.g. ß becomes S), which could lead to incorrect results.
The LOC function has also been extended with an optional third argument, allowing you to specify the search mode.
LOC is now able to do a case sensitive search, a language dependent case insensitive search and a language
independent case insensitive search. For this purpose three new constants have been added to CONST.OPH:
KLocFindExact% does a case sensitive search
KLocFindCollated% does a case insensitive search (locale dependent)
KLocFindFolded% does a case insensitive search (locale independent), same effect as LOC with two arguments
In the event that your application relies on the fact that LOC uses the language dependent search (for example
if your code expects that a ß-character is considered equal to an S or the degree symbol (°) is equal to
the O-character), you need to use LOC's new optional third argument with the value KLocFindCollated%.
---
v1.54 11 January 05 ricka at users dot sourceforge dot net and phil.spencer at symbian dot com
TEXTED:
* Minor corrections to libraries included in the mmp file.
* Corrected the HorizontalScrollBar state test for the Program menu.
* Minor change to UIQ Program menu separator bar for Edit pane.
* Removed Find from UIQ menu - bug [910920] Find doesn't work on UIQ editor.
* Started a solution for bug [1095527] Search and Replace doesn't work in TextEd
on 92xx and 9300/9500 phones.
---
v1.53 24 December 04 ricka at users dot sourceforge dot net and phil.spencer at symbian dot com
GENERAL:
* Added an extra build flag __UIQ_MMP_WINS_TOO__ in opl-target.mmpi include file
to re-instate some WINS support under UIQ.
* Fixed bug [91100] Files missing from UIQ dev pack.
Const.oph and various .oxh files now present in the UIQ developer pack.
* Added new makeopl.bat file to rebuild all opl components from a single script.
OPLR:
* Fixed bug [922555] UIQ: dINIT Problems with Buttons
Changed UIQ dialog RSS file to just contain an OK button by default, no need for
full ALERT dialog keys on dialogs where no dBUTTONS is used.
* Fixed bug [908415] dButton Command - Four buttons as default on UIQ (p800)
Changed dBUTTONS construction so that on UIQ (like on ER5) only used buttons are
added, removing the problem of unsightly blank buttons which was a hangover from
the Crystal CBA way of doing things.
* Fixed bug [851520] Unguarded RDebug::Print
All calls to RDebug::Print() are now guarded for _DEBUG builds only.
Note: this required changes to OPX mediaserveropx too.
* Added some S80_DP2_0 (Nokia 9300/9500)-specific changes for dDate's AddDateEditorL().
OPLTOOLS:
* Added HRH2OPH to help convert UIQ help compiler files to OPL include files.
OPX:
* Removed some of the unsupported configurable features of Appframe.OPX from the
S80_SP2_0 (Nokia 9300/9500) version. e.g. Add To Desk, IR Listen.
Ditto for System.OPX's access to system timers, ETEL and PLP remote link.
TEXTED:
* Changed some UIQ menus and dialogs to make it look and behave more like a UIQ
application.
* Fixed bug [910311] No horizontal scrollbar in TextEd
While the scroll bar should appear automatically, like the vertical scroll bar,
there seems to be some underlying problem which stops this happening. So the Editor
menu now allows the choice of whether you want the horizontal scroll bar visible or
not. It's off by default.
Also, there's a (related?) problem with the width of the document - the scroll bar
action gives the impression that the document is approx. 2000 chars wide! This is
most obvious when dragging the scroll bar thumb, which means this action isn't very
useful. However, tapping on the scroll bar arrow heads (or the bar between the
thumb and the arrow head) works quite well.
(Incidently, this is not a UIQ problem, a test version of the Editor app built for
the 9210 exhibits the same weird horizontal scroll bar too.)
See the sourceforge bug report for more details.
* Fixed bug [980744] Missing print setup on phone stops editor
Cleaned up the print setup problem first seen in the v0.50 release.
The fix is to trap a leaving function (iEikonEnv->NewDefaultPrintSetupL()) and use
null, as the editor is designed to handle this optional feature.
DEMOOPL:
* Partial fix for bug [1079304] "DemoOPL.mk modifies src folder" where the custom
makefile was building the DemoIcon.mbm file incorrectly.
---
v1.52 19 June 04 ricka at users dot sourceforge dot net
OPLR:
* Partial solution for bug [910981] gFONT doesn't work on UIQ, picking up the
SwissA font in graphics windows for the beta release of OPL for UIQ.
Added CONST KFontUiqSwissABeta&=&017B4B0D
* Corrected a build problem from the v1.51 for Series 60 OPL.APP, regarding
included .mmpi files.
* Added details to the oplwrapper0 readme.txt file.
* Corrected some problems with opltest, the OPL test harness.
* Added tOpxVersionNumber.tpl which shows how to confirm your OPL app is using the
right OPX version.
General
* Changed the baseline of the source code to the CVS version - some minor differences
in the cases of filenames - to improve CVS submissions.
---
If you're new to CVS and just want to take a look at the OPL translator, runtime
and OPX source code in C++, a zip file containing all the
OPL source code for v1.55 is available.
The readme.txt file in the root of the zip explains how to build the binaries.
Here are some screenshots of OPL development. Click on the thumbnail to see a larger image.
On a Nokia 92xx Communicator:
Texted running on the P800:
More screenshots here.
Back to top
Back to opl-dev project homepage
|