README.TXT 13.7 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
2017-02-13 Version 4.4
4
Copyright (c) 1999-2017 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).
15
- Has sophisticated 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
fpc -Fulib\common\* -Fulib\common\kernel\windows apps\ide\mseide.pas
58

59 60 61 62
If FPC crashes while compiling try on Linux and FreeBSD:
fpc -B -Fulib/common/* -Fulib/common/kernel/linux apps/ide/mseide.pas
On Windows:
fpc -B -Fulib\common\* -Fulib\common\kernel\windows apps\ide\mseide.pas
63

64 65 66 67 68 69 70 71
Creating a new GUI project
**************************
'Project'-'New'-'From Template', select "default.prj"

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

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

79 80
--NOZORDERHANDLING
 Do not touch Z-order of the windows.
81

82 83
--NORESTACKWINDOW
 Do not use the NET_RESTACK_WINDOW protocol.
84

85 86
--RESTACKWINDOW
 Use the NET_RESTACK_WINDOW protocol.
87

88
--NORECONFIGUREWMWINDOW
89
 Do not use xreconfigurewmwindow() for window stacking operation.
90

91 92
--RECONFIGUREWMWINDOW
 Use xreconfigurewmwindow() for window stacking operation.
93

94
--STACKMODEBELOWWORKAROUND
95
 Necessary for windowmanagers with buggy xreconfigurewmwindow() handling.
96

97 98
--NOSTACKMODEBELOWWORKAROUND
 No workaround.
99

100
--TOPLEVELRAISE
101
 Use the top level frame window id instead of the application client window id
102
 for window raise operation. Implies --NORESTACKWINDOW and
103
 --NORECONFIGUREWMWINDOW.
104

105 106
--NOSTATICGRAVITY
 Simulates staticgravity for buggy window managers.
107
 
108 109 110 111
MSEide command line parameters
******************************
-np
 Do not load a project.
112

113 114
-ns
 Do not use a skin, no fades.
115

Martin Schreiber's avatar
Martin Schreiber committed
116 117 118
--globstatfile=<filepath> 
 Use <filepath> instead the default global MSEide status file.

119 120
--macrogroup=<n>
 Use 'Project'-'Options'-'Macros'-'Active group' number <n>, <n> = 1..6.
121

122 123 124 125
--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'.
126 127 128 129
--storeglobalmacros
 Store --macrodef defines as global 'Settings'-'Configure MSEide' macros and
 terminate MSEide.
   
130 131 132 133 134 135
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
136
COMPSTOREDIR, COMPILER, DEBUGGER, EXEEXT, TARGET, TARGETOSDIR.
137

mse1's avatar
mse1 committed
138 139
MSEide project macros
*********************
140
Predefined project macros:
141 142 143
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
144

Martin Schreiber's avatar
Martin Schreiber committed
145 146 147 148 149 150 151 152
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
153 154
MSEide environment macros
*************************
Martin Schreiber's avatar
Martin Schreiber committed
155
${ENV_VAR(variablename)} returns the variable value if defined.
Martin Schreiber's avatar
Martin Schreiber committed
156 157 158 159
${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
160

Martin Schreiber's avatar
Martin Schreiber committed
161 162 163 164 165 166 167 168 169 170
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.

171 172 173 174 175
STR_COALESCE
 Return first not empty value. Format is
 ${STR_COALESCE(text[,text...])} or
 ${STR_COALESCE("text"[,"text"...])}

176 177 178
MSEide file macros
******************
Macro format is ${FILE_*(fileparameter)} or ${FILE_*("fileparameter")}.
179 180 181 182 183 184 185 186 187 188
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.
189

Martin Schreiber's avatar
Martin Schreiber committed
190 191
MSEide exec macros
******************
Martin Schreiber's avatar
Martin Schreiber committed
192 193 194
${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
195

196 197
MSEide macros in 'Project'-'Options'-'Debugger'-'xterm Command'
***************************************************************
198 199 200
${PTS} expands to tty pts path.
${PTSN} expands to tty pts number.
${PTSH} expands to tty pts handle.
201 202
Entering an empty string restores the default.

203 204 205 206 207 208 209 210 211 212 213 214 215
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.

216 217 218 219 220
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
221 222
Popup widgets behind the forms
******************************
mse1's avatar
mse1 committed
223
If the popup widgets are showed behind the forms, try to start the 
mse1's avatar
mse1 committed
224
MSEgui program with the option '--TOPLEVELRAISE'. Do *not* use this option
mse1's avatar
mse1 committed
225 226
if is not necessary (KDE, Gnome... work well without).

227 228 229 230 231 232 233
Display problems with Linux radeon driver
*****************************************
If the display is distorted or slow add 
Option "EXAPixmaps" "off"
to 
Section "Device"
of xorg.conf, see
234
https://bugs.freedesktop.org/show_bug.cgi?id=69543
235
https://bugs.freedesktop.org/show_bug.cgi?id=84253
236

mse1's avatar
mse1 committed
237
Flashing taskbar widgets in IceWM
mse1's avatar
mse1 committed
238
*********************************
mse1's avatar
mse1 committed
239
Newer revisions of IceWM let the taskbar icons of MSEgui applications flash.
mse1's avatar
mse1 committed
240
Start the MSEgui application with the option '--TOPLEVELRAISE'.
mse1's avatar
mse1 committed
241 242 243 244 245 246 247 248 249

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
250
by
mse1's avatar
mse1 committed
251
en_US.UTF-8/XLC_LOCALE ru_RU.UTF-8
mse1's avatar
mse1 committed
252

253 254 255 256 257 258
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
259
http://askubuntu.com/questions/457456/wingravity-static-gravity-not-supported-in-14-04
260

mse1's avatar
mse1 committed
261 262 263
How to add custom components to MSEide
**************************************
There is a project 'apps/myide/mymseide.prj' as a demo.
264 265
Start MSEide, open project 'apps/myide/mymseide.prj', 'Project'-'Build',
'Target'-'Continue',
mse1's avatar
mse1 committed
266 267
the IDE with the new component 'tmybutton' will be compiled and
started in the the debugger.
268
Binary name is 'mymseide' (linux) or 'mymseide.exe' (win32).
mse1's avatar
mse1 committed
269 270 271 272 273 274 275 276

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
277
- Build the IDE with -dmorecomponents as option.
mse1's avatar
mse1 committed
278 279 280

If you want add custom icons to your components:

281
- Convert 24*24 pixel BMP or PNG files with tools/bmp2pas to
mse1's avatar
mse1 committed
282 283
  an icon unit ('*_bmp.pas').
- Add the name of the icon unit to 'uses' in your register unit.
mse1's avatar
mse1 committed
284 285 286
 
How to run i18ndemo
*******************
mse1's avatar
mse1 committed
287
- Start MSEide.
288 289
- 'Project'-'Open'-'yourdirectory/msegui/apps/i18ndemo/i18ndemo.prj'.
- 'Project'-'Make' to create the rst files.
mse1's avatar
mse1 committed
290 291 292 293 294 295 296 297 298 299 300 301 302
- '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
303
tsqlite3connection field type mapping:
mse1's avatar
mse1 committed
304 305 306 307 308

      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
309
| BIGINT             | INTEGER 8           | ftlargeint  | largeint    |
mse1's avatar
mse1 committed
310 311 312 313 314 315
| 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!     |
316 317
| DATETIME or        | REAL                | ftdatetime  | tdatetime   |
|  TIMESTAMP         |                     |             |             |
318 319
| DATE               | REAL                | ftdate      | tdatetime   |
| TIME               | REAL                | fttime      | tdatetime   |
320
| NUMERIC[...]       | INTEGER 8 (*10'000) | ftbcd       | currency    |
mse1's avatar
mse1 committed
321 322
| VARCHAR[(n)]       | TEXT                | ftstring    | msestring   |
| TEXT               | TEXT                | ftmemo      | utf8 string |
mse1's avatar
mse1 committed
323
| TEXT               | TEXT dso_stringmemo | ftstring    | msestring   |
mse1's avatar
mse1 committed
324 325 326
| BLOB               | BLOB                | ftblob      | string      |
+--------------------+---------------------+-------------+-------------+

327 328
ZeosLib
*******
Martin Schreiber's avatar
Martin Schreiber committed
329 330 331
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.
332 333 334
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
335 336 337
Crosscompiling and remote debugging i386-linux -> arm-linux
***********************************************************
For Raspberry Pi:
338
- Establish a ssh login without password (public key authentication).
Martin Schreiber's avatar
Martin Schreiber committed
339

Martin Schreiber's avatar
Martin Schreiber committed
340 341
- On the i386-linux host install the scp program
- download and extract 
342
  http://sourceforge.net/projects/mseide-msegui/files/fpcrossarm/crossfpc-i386_linux-eabihf_3_0_1a.tar.gz
Martin Schreiber's avatar
Martin Schreiber committed
343
  to <your crossfpc directory>.
Martin Schreiber's avatar
Martin Schreiber committed
344 345

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

347 348 349 350 351 352 353 354 355
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
356

357 358
- 'Project'-'New'-'From Template', select "crossarmdefault.prj" or
  "crossarmconsole.prj".
Martin Schreiber's avatar
Martin Schreiber committed
359 360
- Create the new project.
- 'Project'-'Options'-'Macros', set the TARGETPROJECTDIR value to the project
361 362
  path in remote target, ex: "/home/pi/proj/testcase".
- Check the TARGETENV macro.
Martin Schreiber's avatar
Martin Schreiber committed
363
- If your application needs additional libraries copy them from Raspberry Pi
Martin Schreiber's avatar
Martin Schreiber committed
364
  /lib/arm-linux-gnueabihf or /usr/lib/arm-linux-gnueabihf to
365
  <your crossfpc directory>/eabihf/lib
Martin Schreiber's avatar
Martin Schreiber committed
366 367

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

mse1's avatar
mse1 committed
371 372 373
Have a lot of fun!

Martin