README.TXT 13.4 KB
Newer Older
mse1's avatar
mse1 committed
1
MSEide+MSEgui Pascal Cross Platform GUI Development System.
Martin Schreiber's avatar
Martin Schreiber committed
2

Martin Schreiber's avatar
Martin Schreiber committed
3
2016-08-08 Version 4.4
Martin Schreiber's avatar
Martin Schreiber committed
4
Copyright (c) 1999-2015 by Martin Schreiber
5

Martin Schreiber's avatar
Martin Schreiber committed
6
- Compiles with FPC 2.6.4, 3.0.0 or 3.0.2
Martin Schreiber's avatar
Martin Schreiber committed
7 8
- For FreeBSD-x86_64, Linux-i386, Linux-x86_64, Linux-arm(Raspberry Pi),
  Windows-i386, Windows-x86_64.
mse1's avatar
mse1 committed
9
- Links to xlib and gdi32, no external widget library needed.
10
- Internal character encoding is utf-16.
mse1's avatar
mse1 committed
11 12
- Uses anti aliased fonts on Linux (Xft).
- All screen drawing is double buffered.
mse1's avatar
mse1 committed
13
- Has docking forms and MDI.
mse1's avatar
mse1 committed
14
- Has embedded forms (similar to TFrame).
mse1's avatar
mse1 committed
15
- Has database access components and data edit widgets.
mse1's avatar
mse1 committed
16
- Internationalization functionality with resource modules.
mse1's avatar
mse1 committed
17
- Report generator.
mse1's avatar
mse1 committed
18 19 20 21 22 23 24

IDE:
- Integrated debugging.
- Source code highlighting.
- Source code navigation with support for include files.
- Code completion for classes.
- Integrated visual form designer with source code update for components and 
25
  events.
mse1's avatar
mse1 committed
26
- Flexible and handy build system with switchable macros.
mse1's avatar
mse1 committed
27 28
- Visual form inheritance.
- Integrated report designer.
mse1's avatar
mse1 committed
29 30

License:
31
IDE and tools are under GPL, library under modified LGPL like FPC-RTL.
32 33
Package maintainers may delete the files "apps/ide/COPYING.GPL", 
"lib/common/COPYING.LGPL" and "lib/common/COPYING.MSE".
mse1's avatar
mse1 committed
34 35 36

Installation:
*************
Martin Schreiber's avatar
Martin Schreiber committed
37
1. Download and install FPC 3.0.2, you can get it from 
mse1's avatar
mse1 committed
38
   http://www.freepascal.org/download.var
Martin Schreiber's avatar
Martin Schreiber committed
39
2. Download mseide_msegui_src_4_4.zip and the mseide_* archive
Martin Schreiber's avatar
Martin Schreiber committed
40
   for your system.
Martin Schreiber's avatar
Martin Schreiber committed
41
   http://sourceforge.net/projects/mseide-msegui/files/mseide-msegui/4.4/
mse1's avatar
mse1 committed
42
3. Extract them to a directory of your choice ('yourdirectory') .
Martin Schreiber's avatar
Martin Schreiber committed
43
4. Run 'yourdirectory/bin/mseide' on linux and freebsed or 
mse1's avatar
mse1 committed
44
   'yourdirectory\bin\mseide.exe' on windows.
mse1's avatar
mse1 committed
45 46 47 48 49 50 51 52 53
5. In 'Settings'-'Configure MSEide'-'${MSEDIR}' select 'yourdirectory/msegui'.
6. In 'Project'-'Open' select 'yourdirectory/msegui/apps/demo/demo.prj'.
7. 'Target'-'Continue'.

If you wish to to compile the IDE:

1. In 'Project'-'Open' select 'yourdirectory/msegui/apps/ide/mseide.prj'.
2. 'Target'-'Continue'.

Martin Schreiber's avatar
Martin Schreiber committed
54
Compiling MSEide from commandline on Linux and FreeBSD:
55
fpc -Fulib/common/* -Fulib/common/kernel/linux apps/ide/mseide.pas
Martin Schreiber's avatar
Martin Schreiber committed
56
On Windows:
57
ppc386.exe -Fulib\common\* -Fulib\common\kernel\windows apps\ide\mseide.pas
58 59


60 61 62 63 64 65 66 67
Creating a new GUI project
**************************
'Project'-'New'-'From Template', select "default.prj"

Creating a new console project
******************************
'Project'-'New'-'From Template', select "console.prj"

68 69
MSEgui command line parameters
******************************
70 71 72 73 74
--FONTALIAS=<alias>,<fontname>[,<fontheight>[,<fontwidth>[,<options>[,<xscale>]
                              [,<ancestor>]]]]
 Change the used fonts. Example for a 16 pixel height default font:
 --FONTALIAS=stf_default,,16

75 76
--NOZORDERHANDLING
 Do not touch Z-order of the windows.
77

78 79
--NORESTACKWINDOW
 Do not use the NET_RESTACK_WINDOW protocol.
80

81 82
--RESTACKWINDOW
 Use the NET_RESTACK_WINDOW protocol.
83

84
--NORECONFIGUREWMWINDOW
85
 Do not use xreconfigurewmwindow() for window stacking operation.
86

87 88
--RECONFIGUREWMWINDOW
 Use xreconfigurewmwindow() for window stacking operation.
89

90
--STACKMODEBELOWWORKAROUND
91
 Necessary for windowmanagers with buggy xreconfigurewmwindow() handling.
92

93 94
--NOSTACKMODEBELOWWORKAROUND
 No workaround.
95

96
--TOPLEVELRAISE
97
 Use the top level frame window id instead of the application client window id
98
 for window raise operation. Implies --NORESTACKWINDOW and
99
 --NORECONFIGUREWMWINDOW.
100

101 102
--NOSTATICGRAVITY
 Simulates staticgravity for buggy window managers.
103
 
104 105 106 107
MSEide command line parameters
******************************
-np
 Do not load a project.
108

109 110
-ns
 Do not use a skin, no fades.
111

Martin Schreiber's avatar
Martin Schreiber committed
112 113 114
--globstatfile=<filepath> 
 Use <filepath> instead the default global MSEide status file.

115 116
--macrogroup=<n>
 Use 'Project'-'Options'-'Macros'-'Active group' number <n>, <n> = 1..6.
117

118 119 120 121
--macrodef=<name>,<value>{,<name>,<value>}
 Macro definition, will be overridden by 'Project'-'Options'-'Macros'. Example:
 --macrodef=MAC1,abc,MAC2,def
 defines ${MAC1} with value 'abc' and ${MAC2} with value 'def'.
122 123 124 125
--storeglobalmacros
 Store --macrodef defines as global 'Settings'-'Configure MSEide' macros and
 terminate MSEide.
   
126 127 128 129 130 131
MSEide environment variables
****************************
Macros in 'Settings'-'Configure MSEide' can be overridden by environment
variables. They will be overriden by --macrodef and 'Project'-'Options'-'Macros'.
Possible names: 
FPCDIR, FPCLIBDIR, MSEDIR, MSELIBDIR, SYNTAXDEFDIR, TEMPLATEDIR,
Martin Schreiber's avatar
Martin Schreiber committed
132
COMPSTOREDIR, COMPILER, DEBUGGER, EXEEXT, TARGET, TARGETOSDIR.
133

mse1's avatar
mse1 committed
134 135
MSEide project macros
*********************
136
Predefined project macros:
137 138 139
PROJECTNAME, PROJECTDIR, MAINFILE, TARGETFILE,
TARGETENV (in format for "env" unix command), TARGETPARAMS,
they can be overridden by 'Project'-'Options'-'Macros'.
mse1's avatar
mse1 committed
140

Martin Schreiber's avatar
Martin Schreiber committed
141 142 143 144 145 146 147 148
MSEide macro functions
**********************
${MAC_IFDEF(macroname)} returns the macro value if defined.
${MAC_IFDEF(macroname,notdefinedvalue)} returns the macro value if defined,
 notdefinedvalue otherwise.
${MAC_IFDEF(macroname,notdefinedvalue,definedvalue)}
 returns definedvalue if macroname is defined, notdefinedvalue otherwise.

Martin Schreiber's avatar
Martin Schreiber committed
149 150
MSEide environment macros
*************************
Martin Schreiber's avatar
Martin Schreiber committed
151
${ENV_VAR(variablename)} returns the variable value if defined.
Martin Schreiber's avatar
Martin Schreiber committed
152 153 154 155
${ENV_VAR(variablename,notdefinedvalue)} returns the variable value if defined,
 notdefinedvalue otherwise.
${ENV_VAR(variablename,notdefinedvalue,definedvalue)}
 returns definedvalue if variablename is defined, notdefinedvalue otherwise.
Martin Schreiber's avatar
Martin Schreiber committed
156

Martin Schreiber's avatar
Martin Schreiber committed
157 158 159 160 161 162 163 164 165 166
MSEide string macros
********************
Macro format is ${STR_*(text)}.
STR_TRIM
 Trim whitespace from the ends of text.
STR_TRIMLEFT
 Trim whitespace from the beginning of text.
STR_TRIMRIGHT
 Trim whitespace from the end of text.

167 168 169
MSEide file macros
******************
Macro format is ${FILE_*(fileparameter)} or ${FILE_*("fileparameter")}.
170 171 172 173 174 175 176 177 178 179
FILE_MSE       convert to MSE format.
FILE_SYS       convert to sys format.
FILE_PATH      absolute path.
FILE_FILE      no trailing path delimiter.
FILE_DIR       trailing path delimiter.
FILE_NAME      no directory part.
FILE_NAMEBASE  no directory and no name extension part.
FILE_EXT       file name extension.
FILE_NONAME    directory part only.
FILE_NOEXT     no file name extension.
180

Martin Schreiber's avatar
Martin Schreiber committed
181 182
MSEide exec macros
******************
Martin Schreiber's avatar
Martin Schreiber committed
183 184 185
${EXEC_OUT(commandline[,timeoutms])} 
 Executes commandline, returns the process output. Timeout in
 milli seconds, default = 1000, -1 = infinite.
Martin Schreiber's avatar
Martin Schreiber committed
186

187 188
MSEide macros in 'Project'-'Options'-'Debugger'-'xterm Command'
***************************************************************
189 190 191
${PTS} expands to tty pts path.
${PTSN} expands to tty pts number.
${PTSH} expands to tty pts handle.
192 193
Entering an empty string restores the default.

194 195 196 197 198 199 200 201 202 203 204 205 206
MSEide external tools parameters macros
***************************************
Predefined macros in 'Project'-'Options'-'Tools'-'Parameters':
CURSOURCEFILE current source file.
CURMODULEFILE current *.mfm file.
CURSSELECTION selected text in source editor.
CURSWORD word at cursor in source editor
CURSDEFINITION} definition of the current token at cursor 
 (Ctrl+LClick destination), needs activated P-column
 (Parse source before call) to be current.
CURCOMPONENTCLASS current selected component class in form editor.
CURPROPERTY current selected property in object inspector.

207 208 209 210 211
Antialiased text with MSEgui 32 bit on 64 bit Linux
****************************************************
MSEgui uses Xft for antialiased fonts on Linux. Please install lib32-libxft
package if necessary.

mse1's avatar
mse1 committed
212 213
Popup widgets behind the forms
******************************
mse1's avatar
mse1 committed
214
If the popup widgets are showed behind the forms, try to start the 
mse1's avatar
mse1 committed
215
MSEgui program with the option '--TOPLEVELRAISE'. Do *not* use this option
mse1's avatar
mse1 committed
216 217
if is not necessary (KDE, Gnome... work well without).

218 219 220 221 222 223 224
Display problems with Linux radeon driver
*****************************************
If the display is distorted or slow add 
Option "EXAPixmaps" "off"
to 
Section "Device"
of xorg.conf, see
225
https://bugs.freedesktop.org/show_bug.cgi?id=69543
226
https://bugs.freedesktop.org/show_bug.cgi?id=84253
227

mse1's avatar
mse1 committed
228
Flashing taskbar widgets in IceWM
mse1's avatar
mse1 committed
229
*********************************
mse1's avatar
mse1 committed
230
Newer revisions of IceWM let the taskbar icons of MSEgui applications flash.
mse1's avatar
mse1 committed
231
Start the MSEgui application with the option '--TOPLEVELRAISE'.
mse1's avatar
mse1 committed
232 233 234 235 236 237 238 239 240

Invalid inputmanager for Ubuntu
*******************************
The utf-8 setup in Ubuntu seems to be incomplete. If you get the exception
"egui : Invalid inputmanager tinternalapplication ." at program start, try to
replace your language locale in /usr/share/X11/locale/locale.dir
by en_US as a workaround. Example for ru_RU.UTF-8:
replace 
ru_RU.UTF-8/XLC_LOCALE ru_RU.UTF-8
mse1's avatar
mse1 committed
241
by
mse1's avatar
mse1 committed
242
en_US.UTF-8/XLC_LOCALE ru_RU.UTF-8
mse1's avatar
mse1 committed
243

244 245 246 247 248 249
Wrong window positions for Ubuntu 14.04
***************************************
Window positions in Unity are wrong because the Ubuntu windowmanager
does not support static_gravity:
http://askubuntu.com/questions/451903/wingravity-static-gravity-not-suppo
https://bugs.launchpad.net/ubuntu/+bug/1312044
250
http://askubuntu.com/questions/457456/wingravity-static-gravity-not-supported-in-14-04
251

mse1's avatar
mse1 committed
252 253 254
How to add custom components to MSEide
**************************************
There is a project 'apps/myide/mymseide.prj' as a demo.
255 256
Start MSEide, open project 'apps/myide/mymseide.prj', 'Project'-'Build',
'Target'-'Continue',
mse1's avatar
mse1 committed
257 258
the IDE with the new component 'tmybutton' will be compiled and
started in the the debugger.
259
Binary name is 'mymseide' (linux) or 'mymseide.exe' (win32).
mse1's avatar
mse1 committed
260 261 262 263 264 265 266 267

If you wish to do it from scratch:

- Create a register unit for your components 
  (see 'apps/myide/regmycomps.pas' for an example).
- Enter the unitname followed by a comma 
  ('myregunit,' if your regunitfile is 'myregunit.pas') in 
  a file named 'regcomponents.inc'.
mse1's avatar
mse1 committed
268
- Build the IDE with -dmorecomponents as option.
mse1's avatar
mse1 committed
269 270 271

If you want add custom icons to your components:

272
- Convert 24*24 pixel BMP or PNG files with tools/bmp2pas to
mse1's avatar
mse1 committed
273 274
  an icon unit ('*_bmp.pas').
- Add the name of the icon unit to 'uses' in your register unit.
mse1's avatar
mse1 committed
275 276 277
 
How to run i18ndemo
*******************
mse1's avatar
mse1 committed
278
- Start MSEide.
279 280
- 'Project'-'Open'-'yourdirectory/msegui/apps/i18ndemo/i18ndemo.prj'.
- 'Project'-'Make' to create the rst files.
mse1's avatar
mse1 committed
281 282 283 284 285 286 287 288 289 290 291 292 293
- 'Project'-'Open'-'yourdirectory/msegui/tools/i18n/msei18n.prj'.
- 'Target'-'Continue'.
In MSEi18n:
 - Adjust 'Settings'-'Configure MSEi18n'-'${MSEDIR}' and ${COMPILER}.
 - 'Open'-'yourdirectory/msegui/apps/i18ndemo/i18ndemo.trp'
 - 'Make'.
 - Close message window.
 - Close MSEi18n.
- 'Project'-'Open'-'yourdirectory/msegui/apps/i18ndemo/i18ndemo.prj'.
- 'Target'-'Continue'.

SQLite
******
Martin Schreiber's avatar
Martin Schreiber committed
294
tsqlite3connection field type mapping:
mse1's avatar
mse1 committed
295 296 297 298 299

      Type name        SQLite storage class  Field type    Data type
+--------------------+---------------------+-------------+-------------+
| INTEGER or INT     | INTEGER 4           | ftinteger   | integer     |
| LARGEINT           | INTEGER 8           | ftlargeint  | largeint    |
mse1's avatar
mse1 committed
300
| BIGINT             | INTEGER 8           | ftlargeint  | largeint    |
mse1's avatar
mse1 committed
301 302 303 304 305 306
| WORD               | INTEGER 2           | ftword      | word        |
| SMALLINT           | INTEGER 2           | ftsmallint  | smallint    |
| BOOLEAN            | INTEGER 2           | ftboolean   | wordbool    |
| FLOAT[...] or REAL | REAL                | ftfloat     | double      |
| or DOUBLE[...]     |                     |             |             |
| CURRENCY           | REAL                | ftcurrency  | double!     |
307 308
| DATETIME or        | REAL                | ftdatetime  | tdatetime   |
|  TIMESTAMP         |                     |             |             |
309 310
| DATE               | REAL                | ftdate      | tdatetime   |
| TIME               | REAL                | fttime      | tdatetime   |
311
| NUMERIC[...]       | INTEGER 8 (*10'000) | ftbcd       | currency    |
mse1's avatar
mse1 committed
312 313
| VARCHAR[(n)]       | TEXT                | ftstring    | msestring   |
| TEXT               | TEXT                | ftmemo      | utf8 string |
mse1's avatar
mse1 committed
314
| TEXT               | TEXT dso_stringmemo | ftstring    | msestring   |
mse1's avatar
mse1 committed
315 316 317
| BLOB               | BLOB                | ftblob      | string      |
+--------------------+---------------------+-------------+-------------+

318 319
ZeosLib
*******
Martin Schreiber's avatar
Martin Schreiber committed
320 321 322
In order to install the Zeos components add the path to the Zeos source to 
'Project'-'Options'-'Make'-'Directories' and compile the IDE with
-dmse_with_zeoslib -dMSEgui.
323 324 325
There is a predefined IDE project apps/ide/mseide_zeos.prj, update 'Project'-
'Options'-'Macros' according to your installation.

Martin Schreiber's avatar
Martin Schreiber committed
326 327 328
Crosscompiling and remote debugging i386-linux -> arm-linux
***********************************************************
For Raspberry Pi:
329
- Establish a ssh login without password (public key authentication).
Martin Schreiber's avatar
Martin Schreiber committed
330

Martin Schreiber's avatar
Martin Schreiber committed
331 332
- On the i386-linux host install the scp program
- download and extract 
333
  http://sourceforge.net/projects/mseide-msegui/files/fpcrossarm/crossfpc-i386_linux-eabihf_3_0_1a.tar.gz
Martin Schreiber's avatar
Martin Schreiber committed
334
  to <your crossfpc directory>.
Martin Schreiber's avatar
Martin Schreiber committed
335 336

- Start MSEide, in 'Settings'-'Configure MSEide'-'Global Macros' add:
337

338 339 340 341 342 343 344 345 346
Name            Value

CROSSMSEDIR     <MSEide+MSEgui directory>
CROSSFPCDIR     <your crossfpc directory>
CROSSFPCVERSION 3.0.1
HOSTIP          <the IP of the host>
REMOTEIP        <the IP of the remote target>
REMOTEPORT      <the remote port, ex: 2345>
REMOTEUSER      pi
Martin Schreiber's avatar
Martin Schreiber committed
347

348 349
- 'Project'-'New'-'From Template', select "crossarmdefault.prj" or
  "crossarmconsole.prj".
Martin Schreiber's avatar
Martin Schreiber committed
350 351
- Create the new project.
- 'Project'-'Options'-'Macros', set the TARGETPROJECTDIR value to the project
352 353
  path in remote target, ex: "/home/pi/proj/testcase".
- Check the TARGETENV macro.
Martin Schreiber's avatar
Martin Schreiber committed
354
- If your application needs additional libraries copy them from Raspberry Pi
Martin Schreiber's avatar
Martin Schreiber committed
355
  /lib/arm-linux-gnueabihf or /usr/lib/arm-linux-gnueabihf to
356
  <your crossfpc directory>/eabihf/lib
Martin Schreiber's avatar
Martin Schreiber committed
357 358

Press F9 and hope the best. ;-)
359 360
If there is a debugger timout at startup enlarge the 
'Project'-'Options'-'Target'-'Wait before connect' value.
Martin Schreiber's avatar
Martin Schreiber committed
361

mse1's avatar
mse1 committed
362 363 364
Have a lot of fun!

Martin