Commit graph

832 commits

Author SHA1 Message Date
gambas
234c2c690a [GB.DB]
* NEW: Add a driver API that handles debugging messages.
* NEW: Print the current date/time before any debugging message.

[GB.DB.MYSQL]
* NEW: Use the new driver API to print debugging messages.

[GB.DB.ODBC]
* NEW: Use the new driver API to print debugging messages.

[GB.DB.POSTGRESQL]
* NEW: Use the new driver API to print debugging messages.

[GB.DB.SQLITE2]
* NEW: Use the new driver API to print debugging messages.

[GB.DB.SQLITE3]
* NEW: Use the new driver API to print debugging messages.
2019-08-30 09:09:16 +02:00
gambas
4d59c6062d Fix boolean datatype management.
[GB.JIT]
* BUG: Fix boolean datatype management.
2019-08-21 01:23:12 +02:00
gambas
8e487e5b18 Painting on an already painted device now correctly inherits the Paint.FontScale property.
[GB.DRAW]
* BUG: Painting on an already painted device now correctly inherits the Paint.FontScale property.
2019-07-10 04:22:14 +02:00
gambas
798b1d54cc Add Paint.FontScale, and make gb.gtk and gb.gtk3 printer drawing behave the same as QT components.
[GB.DRAW]
* NEW: Paint: FontScale is a new property that defines a scale applied to the size of the fonts assigned to the Paint.Font property.
* NEW: Paint: Scale() second argument is now optional, and takes the same value as the first argument if omitted.

[GB.GTK]
* NEW: Paint: Implementation of Paint.FontScale.
* BUG: Printer: All printer events are raised between a single Paint.Begin() / Paint.End().

[GB.GTK3]
* NEW: Paint: Implementation of Paint.FontScale.
* BUG: Printer: All printer events are raised between a single Paint.Begin() / Paint.End().
* BUG: Printer: Print() does now crash anymore.
* BUG: Printer: Font sizes now are the same as with QT components.

[GB.QT4]
* NEW: Paint: Implementation of Paint.FontScale.

[GB.QT5]
* NEW: Paint: Implementation of Paint.FontScale.
2019-07-09 19:35:01 +02:00
gambas
01a3106d20 New Highlight.Alternate style, and make the matching braces blink with the cursor.
[GB.EVAL]
* NEW: Highlight.Alternate is a new constant that represents the background style used for coloring code embedded into webpages.

[GB.EVAL.HIGHLIGHT]
* NEW: Support for new Highlight.Alternate style.

[GB.FORM.EDITOR]
* NEW: Support for new Highlight.Alternate style.
* NEW: Matching braces now blink with the cursor.
* BUG: When the cursor moves, the blinking timer is reset so that the cursor blinks only when it is not moving.
2019-06-29 16:11:51 +02:00
gambas
4128a33adf Update library to version 6.4.2.
[GB.CLIPPER]
* NEW: Update library to version 6.4.2.
* BUG: Get rid of a gcc warning.
2019-06-29 16:10:21 +02:00
gambas
cfb4a9d2a8 Enumerating an unknown datatype does not raise an error automatically anymore.
[GB.JIT]
* BUG: Enumerating an unknown datatype does not raise an error automatically anymore.
2019-06-18 09:50:56 +02:00
gambas
ce37d6ff67 Ignore errors when loading a class for the JIT compiler.
[INTERPRETER]
* BUG: Ignore errors when loading a class for the JIT compiler.

[GB.JIT]
* BUG: Loading a class during JIT compilation can fail. Take that into account.
2019-06-11 22:32:12 +02:00
gambas
9f2da35cbe Emit column position in almost all error messages.
[COMPILER]
* OPT: Some optimizations in symbol table routines.
* NEW: Emit column position in almost all error messages. It makes the compiler 2.5% slower, even with the optimizations.
2019-05-08 06:20:35 +02:00
gambas
3dd1fd493e Fix the JIT compiler: '_init' method, Lock instruction, Object datatype, and DO / REPEAT loops at the beginning of a function now work correctly.
[INTERPRETER]
* BUG: JIT compiler does not run static initializers anymore when loading a class. Otherwise bytecode can be modified before being compiled, leading to a JIT compiler crash.

[COMPILER]
* BUG: Fix LOCK subroutine meta-information.

[GB.JIT]
* NEW: Don't display abortion debugging message if there is no compilation to abort.
* BUG: Object variables are correctly managed now.
* BUG: DO...LOOP and REPEAT...UNTIL at the beginning of the function now is correctly compiled in all cases.
2019-04-04 22:58:06 +02:00
gambas
6c9df4c423 Cosmetic changes in debugger code.
[INTERPRETER]
* NEW: Cosmetic changes in debugger code.

[GB.DEBUG]
* NEW: Cosmetic changes in debugger code.
2019-03-21 23:14:22 +01:00
gambas
0bbf4761d6 Enhance formatting of unary minus operator.
[GB.EVAL]
* NEW: Enhance formatting of unary minus operator.
2019-03-14 02:47:36 +01:00
gambas
a8bcabb741 Unary minus operator is now sticked to its argument when put between parentheses or brackets.
[GB.EVAL]
* NEW: Unary minus operator is now sticked to its argument when put between parentheses or brackets.
2019-03-14 01:52:37 +01:00
gambas
a0bcf85bd4 Active file descriptor watches and active timers are now automatically transferred to the component declaring a custom event loop.
[INTERPRETER]
* BUG: Active file descriptor watches and active timers are now automatically transferred to the component declaring a custom event loop. Consequently, a process started before the declaration of the event loop will have its termination signal correctly catched.
* NEW: Use waitpid() instead of wait4().

[GB.GTK]
* BUG: Declare the event loop hook last so that active file descriptor watches and active transfer are automatically transferred.

[GB.GTK3]
* BUG: Declare the event loop hook last so that active file descriptor watches and active transfer are automatically transferred.

[GB.QT4]
* BUG: Declare the event loop hook last so that active file descriptor watches and active transfer are automatically transferred.

[GB.QT5]
* BUG: Declare the event loop hook last so that active file descriptor watches and active transfer are automatically transferred.
2019-03-12 03:46:30 +01:00
gambas
3f7095bbd9 Run JIT compilation in the background to make programs start faster.
[INTERPRETER]
* OPT: JIT compilation is run in two steps.

[GB.JIT]
* OPT: Run JIT compilation in the background.
* NEW: JIT.Debug is a new property that allows to enable JIT debugging messages at runtime.
2019-03-11 16:34:50 +01:00
Tobias Boege
76da51ce70 gb.inotify: Fix Watch.Events[] accessor
[GB.INOTIFY]
* BUG: Watch.Events._put incorrectly reset events outside the given event set and ignored the assigned value.
2019-03-07 08:24:08 +01:00
gambas
a0302b7f77 Optimize division, thanks to Cedron Dawg.
[GB.COMPLEX]
* OPT: Optimize division, thanks to Cedron Dawg.
2019-03-02 12:50:33 +01:00
gambas
466a570451 Connection.GetTemplate() and Connection.ApplyTemplate() now take tables without primary key into account correctly.
[GB.DB]
* BUG: Connection.GetTemplate() and Connection.ApplyTemplate() now take tables without primary key into account correctly.
2019-02-06 23:24:08 +01:00
gambas
fe55f495f4 Fix the default value of optional Object function arguments.
[GB.JIT]
* BUG: Fix the default value of optional Object function arguments.
2019-01-20 22:50:35 +01:00
gambas
5c3ce53f61 Fix Debug instruction and support for the new Assert instruction.
[GB.JIT]
* BUG: Fix Debug instruction.
* BUG: Support for the new Assert instruction.
2019-01-11 01:46:13 +01:00
gambas
26448880a1 Support for 'tcc' compiler.
[GB.JIT]
* NEW: Support for 'tcc' compiler.
2019-01-08 01:53:38 +01:00
gambas
628aa30e54 Take the other requested GUI components into account to choose the toolkit.
[INTERPRETER]
* NEW: Add a API to know if a native component exists on the disk.

[GB.GUI]
* BUG: Take the other requested GUI components into account to choose the toolkit.

[GB.GUI.QT]
* BUG: Take the other requested GUI components into account to choose the toolkit.
2019-01-05 03:57:08 +01:00
gambas
17bbc13df6 Do not use loop initial declaration in generated C code for old gcc versions.
[GB.JIT]
* BUG: Do not use loop initial declaration in generated C code for old gcc versions.
2019-01-03 10:29:44 +01:00
gambas
245427b08e * Get rid of many gcc warnings. 2019-01-02 00:48:58 +01:00
gambas
d91451cf1e Assert is an new instruction that raises an error as soon as its boolean argument is FALSE.
[COMPILER]
* NEW: Assert is an new instruction that raises an error as soon as its boolean argument is FALSE. The associated bytecode is not emitted if the '-x' option is specified.

[INTERPRETER]
* NEW: Assert is an new instruction that raises an error as soon as its boolean argument is FALSE.

[GB.DEBUG]
* BUG: Fix a potential array overflow.
2018-12-16 00:35:46 +01:00
gambas
43350ebfbd Connection.LastInsertId now raises an error instead of crashing when the connection is closed.
[GB.DB]
* BUG: Connection.LastInsertId now raises an error instead of crashing when the connection is closed.
2018-12-10 23:35:21 +01:00
gambas
b897cec6cf Remove the include of <stdio.h> from JIT header file.
[GB.JIT]
* BUG: Remove the include of <stdio.h> from JIT header file.
2018-12-09 03:50:14 +01:00
gambas
df275f7c9b Forgot to call JIT function when the call is dynamic, i.e. if the object owning the method has an anonymous datatype (Object or Variant).
[INTERPRETER]
* BUG: Forgot to call JIT function when the call is dynamic, i.e. if the object owning the method has an anonymous datatype (Object or Variant).

[GB.JIT]
* BUG: Save the initial stack pointer of a function in the function stack instead of using the interpreter stack.
2018-12-07 01:03:47 +01:00
gambas
52c1243c35 Correctly set the stack pointer before raising an exception in JIT code.
[GB.JIT]
* BUG: Correctly set the stack pointer before raising an exception in JIT code.
2018-12-04 00:48:02 +01:00
gambas
3652b82b3e Let the caller always release the function arguments.
[GB.JIT]
* BUG: Let the caller always release the function arguments.
2018-11-27 02:59:21 +01:00
gambas
62d9bf8676 Void optional arguments are compiled correctly again.
[GB.JIT]
* BUG: Void optional arguments are compiled correctly again.
2018-11-26 11:54:39 +01:00
gambas
7fa5bd5220 Set the SP stack pointer before calling the conversion function to workaround the compiler optimizations and prevent a memory leak at function end if the conversion fails and an exception is raised.
[GB.JIT]
* BUG: Set the SP stack pointer before calling the conversion function to workaround the compiler optimizations and prevent a memory leak at function end if the conversion fails and an exception is raised.
2018-11-26 01:20:09 +01:00
gambas
c0c1adaabc Correctly compile variable argument methods.
[GB.JIT]
* BUG: Correctly compile variable argument methods.
2018-11-24 21:33:18 +01:00
gambas
baaf962ab0 JIT now handles "no return value" errors correctly.
[INTERPRETER]
* BUG: Process.Wait() now handles error output correctly.

[GB.JIT]
* BUG: Display compiler error correctly.
* BUG: Handle "no return value" errors correctly.
2018-11-24 20:00:45 +01:00
gambas
7cd9c0b7ad Use 'volatile' to prevent the compiler from optimizing access to stack pointer in exception handling.
[GB.JIT]
* BUG: Use 'volatile' to prevent the compiler from optimizing access to stack pointer in exception handling.
2018-11-23 06:29:50 +01:00
gambas
f0f113da2b Correctly restore EP after it has been used by the translation of the TRY instruction.
[GB.JIT]
* BUG: Correctly restore EP after it has been used by the translation of the TRY instruction.
2018-11-16 01:33:51 +01:00
gambas
dcac5c2a26 Handle TRY inside JIT functions correctly.
[INTERPRETER]
* BUG: Handle TRY inside JIT functions correctly.

[GB.DEBUG]
* NEW: Add explicit messages when something fails during initialization.

[GB.JIT]
* BUG: Handle TRY correctly.
2018-11-02 21:44:40 +01:00
bgermann
730bd63a34 Make main compile on Hurd
Replace some BSD-exclusive with Linux-only ifdefs to not pollute term
with Hurd ifdefs
2018-10-17 22:08:50 +02:00
gambas
1c6a9c1b52 Define the TRUE/FALSE constant in the generated code again.
[GB.JIT]
* NEW: Define the TRUE/FALSE constant in the generated code again.
2018-10-16 19:30:28 +02:00
Benoît Minisini
aab5aecd72 Merge branch 'mipsterm' into 'master'
Fix missing define on MIPS

See merge request gambas/gambas!47
2018-10-16 17:29:38 +00:00
bgermann
1d93023181 Fix missing define on MIPS
More information: http://lists.busybox.net/pipermail/buildroot/2015-October/140931.html
2018-10-15 21:54:31 +02:00
bgermann
dace3b09ac Remove boolean definitions except in gb_common.h 2018-10-15 18:48:01 +02:00
bgermann
a0e95cc0b8 Spelling: catched -> caught 2018-10-14 21:52:07 +02:00
gambas
31929e1e44 Overriding public variables is forbidden, and JIT compiler correctly handles public constants.
[INTERPRETER]
* NEW: Overriding public variables was useless, and is now forbidden to help JIT compiler optimizations.

[GB.JIT]
* BUG: Correctly compile dynamic accesses to public constants.
2018-10-08 16:36:38 +02:00
gambas
a2d936dedb Fix highlighting of strings including '\xXX' escape sequences.
[GB.EVAL]
* BUG: Fix highlighting of strings including '\xXX' escape sequences.
2018-10-01 10:48:24 +02:00
gambas
029f3d35c2 Remove the Connection.TimeZone property, it is not used yet.
[GB.DB]
* NEW: Remove the Connection.TimeZone property, it is not used yet.
2018-09-23 09:12:37 +02:00
Benoît Minisini
a79edf23ed Merge branch 'bsd' into 'master'
More BSD changes

See merge request gambas/gambas!38
2018-09-21 22:55:31 +00:00
gambas
46f21a7f7b Strip png files with ImageMagick convert command. 2018-09-19 20:53:00 +02:00
bgermann
0aaee954d6 [GB.TERM] Compatibility with OpenBSD
[GB.TERM]
* NEW: Compatibility with OpenBSD
2018-09-10 22:04:50 +02:00
gambas
88220d483b Let the interpreter correctly manage exceptions when calling non-JIT code from JIT code.
[INTERPRETER]
* BUG: JIT: Let the interpreter correctly manage exceptions when calling non-JIT code from JIT code.

[GB.JIT]
* BUG: Correctly initialize CP during exception handler.
2018-09-10 20:11:59 +02:00
gambas
f00acc7104 Default value of optional arguments are correctly referenced now.
[GB.JIT]
* BUG: Default value of optional arguments are correctly referenced now.
2018-09-06 07:41:29 +02:00
Benoît Minisini
ce37927180 Merge branch 'netbsd' into 'master'
Improve NetBSD support

See merge request gambas/gambas!37
2018-09-01 10:28:18 +00:00
gambas
847dcd8ebf Remove other files that should not be tracked by git. 2018-09-01 12:23:05 +02:00
gambas
9ffe91c294 Remove files that should not be tracked by git. 2018-09-01 12:21:57 +02:00
gambas
3cb8b1afc6 Highlight.Analyze works correctly again.
[GB.EVAL]
* BUG: Highlight.Analyze works correctly again.
2018-09-01 12:16:24 +02:00
gambas
2374407b4d [DEVELOPMENT ENVIRONMENT]
* NEW: Update highlighting themes by defining the new color constants.
* NEW: Update French translation.
* BUG: Option dialog: The highlighting color panel now takes the editor font size into account.

[GB.EVAL]
* BUG: Fix string highlighting.
2018-09-01 00:46:48 +02:00
gambas
a73c2ed412 Add three new color constants for syntax highlighting: Escape, Label and Constant.
[COMPILER]
* NEW: Rename a macro constant to avoid a symbol clash when compiling the interpreter.

[INTERPRETER]
* NEW: Get rid of a macro trick in 'gbx_eval.h' header.

[GB.EVAL]
* NEW: Highlight: Add three new color constants for syntax highlighting: Escape, Label and Constant.
* NEW: Rename some source files.
* NEW: Rename some constants.
* NEW: Gambas syntax highlighter now use the three new contants for escape characters in strings, for labels, and for language contants (True, False, Null, +Inf and -Inf).

[GB.EVAL.HIGHLIGHT]
* NEW: Support for the new syntax highlighting color constants.

[GB.FORM.EDITOR]
* NEW: Support for the new syntax highlighting color constants.
2018-08-31 15:58:53 +02:00
bgermann
3685f21cbf [GB.TERM] Compatiblitity with NetBSD
[GB.TERM]
* NEW: Compatiblitity with NetBSD
2018-08-30 09:35:44 +02:00
gambas
7a680d738b Correctly compile void function arguments.
[GB.JIT]
* BUG: Correctly compile void function arguments.
2018-08-29 11:22:56 +02:00
gambas
fc2cbe819a Rename 'ClassStat' class as '_ClassStat' to avoid a possible name collision.
[GB.JIT]
* NEW: Rename 'ClassStat' class as '_ClassStat' to avoid a possible name collision.
2018-08-28 17:05:11 +02:00
gambas
706a605cc3 Correctly restore the stack after calling a method through the interpreter, and handle null values as object values having a null address automatically.
[INTERPRETER]
* NEW: Creating a NULL value now clears the object address field so that it can be freely interpreted as a Object value with a null address by the JIT compiled code.

[GB.JIT]
* BUG: Correctly restore stack after calling a method through the interpreter.
2018-08-22 09:30:27 +02:00
gambas
7ab07bd95f Correctly handle optional object arguments.
[GB.JIT]
* BUG: Correctly handle optional object arguments.
2018-08-20 19:57:47 +02:00
gambas
7492efcc0e Always load the class before accessing a static variable, as it may not be ready.
[INTERPRETER]
* BUG: FIx JIT class loading API.

[GB.JIT]
* BUG: Always load the class before accessing a static variable, as it may not be ready.
2018-08-18 15:28:19 +02:00
gambas
07ccec7358 Compile correctly optional arguments initialization.
[GB.JIT]
* BUG: Compile correctly optional arguments initialization.
2018-08-18 12:03:44 +02:00
gambas
d371614662 Correctly compile conversion from object to boolean.
[GB.JIT]
* BUG: Correctly compile conversion from object to boolean.
2018-08-17 01:04:53 +02:00
gambas
979e22f6e9 Correctly load classes from archives other than the main project one during JIT compilation.
[INTERPRETER]
* NEW: When creating a new class, set its component immediately if we know the archive it comes from.

[GB.JIT]
* BUG: Correctly load classes from archives other than the main project one.
2018-08-16 01:50:45 +02:00
gambas
6d35875a56 Correctly raise exceptions on the number of arguments of function calls.
[GB.JIT]
* BUG: Correctly raise exceptions on the number of arguments of function calls.
2018-08-15 08:37:25 +02:00
gambas
0b341e7c91 Compile optional arguments correctly.
[GB.JIT]
* BUG: Compile optional arguments correctly.
2018-08-15 00:01:51 +02:00
gambas
0297c1bafa Load classes without running the _init method, so that the JIT behaviour is closer to the interpreter behaviour.
[INTERPRETER]
* NEW: Add a JIT API for loading classes without running the _init method.

[GB.JIT]
* BUG: Load classes without running the _init method, so that the JIT behaviour is closer to the interpreter behaviour.
2018-08-14 16:46:55 +02:00
gambas
c569a234be Don't leak memory when converting an object to a boolean and correctly pop the arguments from the stack when propagating an exception.
[GB.JIT]
* BUG: Don't leak memory when converting an object to a boolean.
* BUG: Correctly pop the arguments from the stack when propagating an exception.
2018-08-14 12:15:04 +02:00
gambas
ad16238574 Correctly compile subroutines that return an unknown datatype.
[GB.JIT]
* BUG: Correctly compile subroutines that return an unknown datatype.
2018-08-14 10:57:49 +02:00
gambas
698e5dd948 Fix access to objects that can be invalid.
[GB.JIT]
* BUG: Fix access to objects that can be invalid.
2018-08-13 23:01:27 +02:00
gambas
7a129a8d83 Add support fot date variables.
[GB.JIT]
* NEW: Add support fot date variables.
2018-08-13 22:55:01 +02:00
gambas
ffa3cd0875 Correctly read pointer variables.
[GB.JIT]
* BUG: Correctly read pointer variables.
2018-08-13 00:36:33 +02:00
gambas
bdb60ecef7 Correctly compile long public constants.
[GB.JIT]
* BUG: Correctly compile long public constants.
2018-08-13 00:24:38 +02:00
gambas
9c1fa46558 Reading variants from memory is done correctly now.
[GB.JIT]
* BUG: Reading variants from memory is done correctly now.
2018-08-12 09:43:15 +02:00
gambas
a2123c7f27 Accesses to byte global variables are compiled correctly now.
[GB.JIT]
* BUG: Accesses to byte global variables are compiled correctly now.
2018-08-12 00:22:44 +02:00
gambas
0975e520db JIT: Handle function datatype by raising a type mismatch error.
[INTERPRETER]
* NEW: JIT: Add an API for throwing type mismatch errors.
* BUG: Raise a type mismatch error when converting a function to a variant. Don't panic anymore.

[GB.JIT]
* BUG: Handle function datatype by raising a type mismatch error.
2018-08-11 14:06:46 +02:00
gambas
f882946561 Fix conversions of NULL.
[GB.JIT]
* BUG: Fix conversions of NULL.
2018-08-11 07:55:08 +02:00
gambas
4e83422f20 Fix optional arguments management.
[INTERPRETER]
* NEW: Fix panic error message again.

[GB.JIT]
* BUG: Fix optional arguments management.
2018-08-10 14:22:49 +02:00
gambas
3966bfbca7 Fix compilation of variant values borrowings and NULL values conversions.
[GB.JIT]
* BUG: Fix compilation of variant values borrowings.
* BUG: Fix NULL values conversions.
2018-08-10 13:53:20 +02:00
gambas
5df6553247 Fix compilation of variant values releases.
[GB.JIT]
* BUG: Fix compilation of variant values releases.
2018-08-10 13:35:20 +02:00
gambas
4209cffa11 [INTERPRETER]
* NEW: Fix panic error message.

[GB.JIT]
* BUG: Load project classes before try to resolve a unknown symbol.
* BUG: Correctly restore the stack pointer in all cases at function exit.
2018-08-10 13:26:54 +02:00
gambas
acf401ba2d Correctly reset the stack pointer when releasing the stack in error handlers.
[INTERPRETER]
* BUG: Do not clear the 'super' field of the object value returned by NEW, as it does not fix actually anything.

[GB.JIT]
* BUG: Correctly reset the stack pointer when releasing the stack in error handlers.
2018-08-09 11:05:51 +02:00
gambas
bb34431646 Fix a crash in JIT relative to SUPER management.
[INTERPRETER]
* BUG: Clear the 'super' field of the object value returned by NEW.

[GB.JIT]
* BUG: Correctly reset EXEC_super in error catching.
2018-08-06 13:26:49 +02:00
gambas
bba1946700 The datatype of object symbols was incorrectly computed.
[GB.JIT]
* BUG: The datatype of object symbols was incorrectly computed.
2018-07-08 08:24:31 +02:00
gambas
e04ec717c7 JIT: Structures and static arrays have been implemented.
[INTERPRETER]
* NEW: JIT: Support for structures and static arrays.

[GB.JIT]
* NEW: Structures and static arrays have been implemented.
2018-07-07 14:54:23 +02:00
gambas
ed775d62d4 Correctly handle function values used as arguments.
[GB.JIT]
* BUG: Correctly handle function values used as arguments.
2018-07-07 00:58:55 +02:00
gambas
50dedeb8cb Don't use __attribute__((noreturn)), it makes gcc dizzy and slow as hell.
[GB.JIT]
* BUG: Don't use __attribute__((noreturn)), it makes gcc dizzy and slow as hell.
2018-07-05 07:15:23 +02:00
gambas
d3c93a05e4 Work on new JIT system continues.
[INTERPRETER]
* NEW: Abort if a stack mismatch is detected after a JIT function has been called.

[GB.JIT]
* NEW: The GB_JIT_CC environment variable allows to define the C compiler that will generate the code.
* OPT: Don't call the compiler through a shell anymore.
* NEW: Support for clang.
* BUG: Don't use the "," operator anymore to write JIT code.
* BUG: Correctly free stack when leaving a function whereas we are still inside a GOSUB.
* BUG: Declare all local variables and arguments as volatile as soon the function uses CATCH or FINALLY.
2018-07-05 07:10:31 +02:00
gambas
4a1c81d0aa Jit.Time is a new property that returns the time spent in JIT compilation, in seconds.
[INTERPRETER]
* NEW: Jit is a new static class that allows to deal with the JIT compiler.
* NEW: Jit.Time is a new property that returns the time spent in JIT compilation, in seconds.

[GB.JIT]
* NEW: Support for the Jit.Time property.
2018-07-03 00:52:19 +02:00
gambas
527702ea59 Subroutines returning something that are used as instructions correctly drop their return value now.
[GB.JIT]
* BUG: Subroutines returning something that are used as instructions correctly drop their return value now.
2018-07-02 22:37:33 +02:00
gambas
9cf443a04f [INTERPRETER]
* BUG: Take JIT code into account when displaying current position in DEBUG instruction.

[COMPILER]
* BUG: Fix subroutine metadata.
* BUG: Fix subroutine search function.

[GB.JIT]
* BUG: Fix string referencing.
* NEW: Implement date arrays accessors.
* BUG: Fix error management.
* BUG: Fix mathematic functions implementation.
* NEW: Support of functions with a variable number of arguments.
* BUG: Fix support of Long constants.
* BUG: Fix implementation of Collection array operator.
* BUG: Fix READ, EXEC, SHELL and DEBUG instructions.
* BUG: Fix VarPtr().
* BUG: Fix TRUE constant implementation.
2018-07-02 19:37:37 +02:00
gambas
5f4f12acf3 [COMPILER]
* NEW: UNSAFE is a new keyword used in conjunction with FAST. It tells the JIT compiler not to do any safety check (null objects, division by zero, out of array bounds...). It makes the code a bit faster, but prone to segmentation fault.

[INTERPRETER]
* NEW: Support for the UNSAFE keyword.

[GB.JIT]
* NEW: Support for the UNSAFE keyword.
* NEW: Check validity of objects that can be invalid.
2018-06-29 00:10:31 +02:00
gambas
fe08dfa333 Work continues on new JIT system.
[INTERPRETER]
* NEW: JIT: Support for SUPER.
* NEW: JIT: Support for extern functions.
* NEW: Add a flag in Gambas functions to know if they are static or not.

[GB.JIT]
* NEW: Support for SUPER.
* NEW: Support for extern functions.
* BUG: Fix object arrays access.
* OPT: Optimization of Abs, Sgn, Int, Fix, and Pi subroutines.
2018-06-27 19:35:23 +02:00
gambas
ab3963c99c Fix some bugs detected by clang, and JIT code can now raise events.
[INTERPRETER]
* NEW: JIT: Support for event raising.
* BUG: Fix some bugs detected by clang.

[GB.JIT]
* NEW: Support for event raising.
* OPT: Some optimizations in jit code generation and compilation.
2018-06-25 19:17:44 +02:00
gambas
06d139920d Work continues on new JIT system.
[INTERPRETER]
* BUG: JIT: No need to support breakpoints.

[GB.JIT]
* BUG: No need to support breakpoints.
2018-06-23 01:37:06 +02:00
gambas
128b5de2f2 [INTERPRETER]
* NEW: JIT: Support for QUIT and STOP EVENT instructions.

[GB.JIT]
* NEW: Implement QUIT and STOP EVENT instructions.
2018-06-23 01:31:39 +02:00
gambas
6502645560 Work continues on new JIT system.
[INTERPRETER]
* BUG: JIT: Fix error handling when calling methods from JIT code.

[GB.JIT]
* NEW: Fix support of CATCH and FINALLY.
* NEW: Support for ON GOTO and ON GOSUB.
2018-06-22 04:49:05 +02:00
gambas
3bd9dca142 Work on new JIT system continues.
[INTERPRETER]
* NEW: JIT: Complex number support.
* NEW: JIT: LAST support.

[GB.JIT]
* BUG: Fix management of local variable declaration of translated functions.
* NEW: Support for WITH ... END WITH.
* NEW: JIT: Complex number support.
* NEW: JIT: LAST support.
2018-06-19 00:30:12 +02:00
gambas
4ef9c15a1b Support for CATCH and FINALLY.
[INTERPRETER]
* NEW: The NEW implementation routine takes its opcode as argument now, like other subroutines with a variable number of arguments.

[GB.JIT]
* OPT: Call subroutines using their static address. No significative performance gain was detected.
* NEW: Support for CATCH and FINALLY.
2018-06-16 01:12:13 +02:00
gambas
b9a83c8a10 Work continues on new JIT system.
[INTERPRETER]
* NEW: Support for error management in JIT methods.

[COMPILER]
* BUG: Fix Error() function metadata.

[GB.JIT]
* NEW: Support for error management.
* NEW: TRY instruction.
* BUG: Correct support of NULL.
2018-06-14 16:45:05 +02:00
gambas
5a1e3b48e9 Fix label generation again.
[GB.JIT]
* BUG: Fix label generation again.
2018-06-13 18:19:32 +02:00
gambas
08c772a290 Fix FOR EACH loops translation.
[GB.JIT]
* BUG: Panic if the stack is not void once a function has been translated.
* BUG: Fix FOR EACH loops translation.
2018-06-13 16:59:56 +02:00
gambas
b8198005db [BENCHMARKS]
* OPT: Little optimization in nbody benchmark.

[GB.JIT]
* BUG: Fix translation of loops.
* BUG: Fix label generation.
2018-06-13 16:55:25 +02:00
gambas
6b8afd0617 [COMPILER]
* BUG: Fix Left, Mid and Right subroutines metadata.

[GB.JIT]
* BUG: Fix function arguments management.
* BUG: Functions returning objects work correctly now.
* BUG: Fix internal control variables management.
2018-06-13 00:38:18 +02:00
gambas
c671adfd6b Work continues on new JIT system.
[INTERPRETER]
* OPT: String searching (Instr, RInstr and Replace) has been made about 4x faster by searching the first occurence with memchr() and memrchr().

[GB.FORM.TERMINAL]
* BUG: Fix warning messages.

[GB.JIT]
* BUG: Fix byte, short and boolean pushing and popping routines.
* BUG: Fix string values referencing.
* BUG: Fix optional argument management.
* NEW: Optimization of bits management subroutines.

[GB.QT4]
* BUG: Delay hooks initialization, because now socket notifiers must not be used before creating the event loop.

[GB.QT5]
* BUG: Delay hooks initialization, because now socket notifiers must not be used before creating the event loop.
2018-06-11 18:56:39 +02:00
gambas
4e50dec11d Work continues on new JIT system. Translation is now done at runtime.
[INTERPRETER]
* OPT: String routines are now compiled with -O3.
* NEW: Don't display JIT debugging message unless GB_JIT_DEBUG is set to something different from zero.
* NEW: String whose length is greater than 256 now have a growth step of 256 bytes instead of 16.

[GB.JIT]
* NEW: Do many global optimizations as now the class metadata is fully available.
* NEW: Support for optional argument. Still buggy at the moment.
2018-06-09 22:42:35 +02:00
gambas
6712de717c Support for case sensitive schema names.
[GB.DB]
* BUG: Support for case sensitive schema names.

[GB.DB.POSTGRESQL]
* BUG: Support for case sensitive schema names.
2018-04-18 03:17:30 +02:00
gambas
87f546bb81 Correctly quote table names when using schemas.
[GB.DB]
* BUG: Correctly quote table names when using schemas.
2018-04-16 20:57:56 +02:00
gambas
4fdd272253 Correctly quote index fields when generating an UPDATE or DELETE request in Result.Save() and Result.Delete() methods.
[GB.DB]
* BUG: Correctly quote index fields when generating an UPDATE or DELETE request in Result.Save() and Result.Delete() methods.
2018-04-16 16:28:44 +02:00
gambas
e07ac2e4f2 Connection.LastInsertId is a new property that returns the value of the serial field used in the last inserted row.
[GB.DB]
* NEW: Connection.LastInsertId is a new property that returns the value of the serial field used in the last inserted row. It is supported on MySQL, PostgreSQL and SQLite3 only.
* BUG: Connection.Handle is correctly declared now.

[GB.DB.MYSQL]
* NEW: Support for Connection.LastInsertId.

[GB.DB.ODBC]
* NEW: Raise an error if Connection.LastInsertId is used.

[GB.DB.POSTGRESQL]
* NEW: Support for Connection.LastInsertId.

[GB.DB.SQLITE2]
* NEW: Raise an error if Connection.LastInsertId is used.

[GB.DB.SQLITE3]
* NEW: Support for Connection.LastInsertId.
2018-03-20 16:05:33 +01:00
gambas
900fee66d5 Update many project configuration files. 2018-03-16 14:13:21 +01:00
gambas
043229a013 Result.GetAll() is a new method that returns an array of the values of a specific field from each record.
[INTERPRETER]
* NEW: New API for reference a Gambas string.

[GB.DB]
* NEW: Result.GetAll() is a new method that returns an array of the values of a specific field from each record. It is about twice faster than the equivalent code written in Gambas.
2018-03-07 22:06:02 +01:00
gambas
d009f251ce Image.Invert() is a new method that inverts an image. It takes an optional boolean argument that indicates if the color hue must be kept.
[GB.IMAGE]
* NEW: Image.Invert() is a new method that inverts an image. It takes an optional boolean argument that indicates if the color hue must be kept.
2018-02-28 14:55:48 +01:00
gambas
6e06250946 Use a power of two as internal coordinate scale.
[GB.CLIPPER]
* NEW: Use a power of two as internal coordinate scale.
2018-02-22 04:30:25 +01:00
gambas
d5c096f71e Fix parsing of quoted identifiers.
[COMPILER]
* BUG: Fix parsing of quoted identifiers.

[GB.EVAL]
* BUG: Fix parsing of quoted identifiers.
2018-02-17 20:41:39 +01:00
gambas
e39cfbf9da Fix Min() and Max() arguments datatype static checks, and some little differences with compiler sources.
[COMPILER]
* BUG: Fix Min() and Max() arguments datatype static checks.

[GB.EVAL]
* BUG: Fix some little differences with compiler sources.
2018-02-17 16:44:38 +01:00
gambas
09a0573e61 Replace my old sourceforge mail address by the new one.
[CONFIGURATION]
Replace my old sourceforge mail address by the new one.
2018-02-12 02:53:46 +01:00
gambas
319fb7175d Correctly initialize Connection object from Connections collection when that connection has been switched between sqlite and non-sqlite type from the IDE.
[GB.DB]
* BUG: Correctly initialize Connection object from Connections collection when that connection has been switched between sqlite and non-sqlite type from the IDE.
2018-01-14 23:16:03 +01:00
gambas
ce6d6e7e96 A table cannot have two fields whose names only differ by case anymore.
[GB.DB]
* NEW: Remove the 'no_case' database driver flag.
* NEW: A table cannot have two fields whose names only differ by case anymore.
2018-01-08 13:12:15 +01:00
gambas
48b9e8ddad Highlight.Custom is a new constant that is the first integer constant that can be used for custom highlighting state.
[GB.EVAL]
* NEW: Highlight.Custom is a new constant that is the first integer constant that can be used for custom highlighting state.
2017-11-01 08:42:35 +01:00
gambas
12d51ca863 New syntax for octal numbers: "&Oxxx".
[COMPILER]
* NEW: New syntax for octal numbers: "&Oxxx".

[INTERPRETER]
* NEW: New syntax for octal numbers: "&Oxxx".

[GB.EVAL]
* NEW: New syntax for octal numbers: "&Oxxx".
2017-10-05 03:17:13 +02:00
gambas
a489f435e7 gb.notify: don't crash anymore when releasing watches.
[INTERPRETER]
* NEW: Add an API that returns the first element of a hash table.

[GB.NOTIFY]
* BUG: Don't crash anymore when releasing watches.
2017-09-21 18:15:37 +02:00
gambas
9f6ec453fa TextEditor: If the cusor is at the end of the line, keep it there when the line is rewritten by the syntax highlighter.
[GB.FORM.EDITOR]
* BUG: TextEditor: If the cusor is at the end of the line, keep it there when the line is rewritten by the syntax highlighter.
2017-09-15 00:28:24 +02:00
gambas
98259f1d71 SqlRequest.Where() method now implicitely uses the AND operator.
[GB.DB]
* NEW: SqlRequest.Where() method now implicitely uses the AND operator.
2017-09-15 00:27:32 +02:00
gambas
ce5780c916 Define an explicit accurate QImage constructor so that effect methods do not crash anymore.
[GB.IMAGE.EFFECT]
* BUG: Define an explicit accurate QImage constructor so that effect methods do not crash anymore.
2017-09-08 02:11:09 +02:00
gambas
bf48f40f5c [DEVELOPMENT ENVIRONMENT]
* NEW: Add support for gb.gui.qt.opengl.
* NEW: Update french translation.

[GB.GUI.QT.OPENGL]
* NEW: New Qt OpenGL switcher component.
2017-08-29 00:42:58 +02:00
gambas
0abba10995 Switcher component are now more clever, and support the lack of gb.qt4.
[INFORMER]
* NEW: Components now can include information for a list of alternatives component. The first one available will be included.

[GB.GUI]
* NEW: Includes information of the first available gui component.

[GB.GUI.OPENGL]
* NEW: Includes information of the first available gui OpenGL component.

[GB.GUI.QT]
* NEW: Includes information of the first available Qt component.

[GB.GUI.QT.WEBKIT]
* NEW: Includes information of the first available Qt webkit component.
2017-08-29 00:38:43 +02:00
gambix
fca930e139 [GB.TERM.FORM]
* OPT: Make the object placement more logical. the 0,0 pos now
       is the left corner after the border.
* NEW: Add the showmodal function
2017-08-26 20:25:52 +02:00
gambas
f45192abb2 Fix pseudo-terminal management again. Now processes run through a terminal set the ECHO flag, and do not clear the OCRNL flag.
[INTERPRETER]
* NEW: Initialize pseudo-terminals with ECHO and don't clear OCRNL flag. This is not compatible with previous versions, as now, by default, printing a NL will become CR+NL through the pseudo-terminal.
  But I didn't succeed in modifying the pseudo-terminal reliably once the child has started. It sometimes fails silently.
* NEW: Check the result of tcsetattr() carefully, as it returns an error only if none of the flags has been set, not just one.

[GB.TERM]
* NEW: Check the result of tcsetattr() carefully, as it returns an error only if none of the flags has been set, not just one.

[GB.FORM.TERMINAL]
* OPT: TerminalView: Reorder some tests in escape codes analyze.
* NEW: TerminalView: The mouse wheel now sends up and down keys when we are not in mouse mode, and if there is nothing to scroll.
2017-08-23 18:10:58 +02:00
gambas
69b4eb60c7 Remove a debugging message.
[GB.TERM]
* BUG: Remove a debugging message.
2017-08-22 01:15:11 +02:00
Benoît Minisini
04175a1ca6 Merge branch 'cygwin' into 'master'
Cygwin changes for 3.10.0

See merge request !3
2017-08-17 10:46:13 +00:00
Laurent Carlier
e78a7fae66 Add more generated files to .gitignore, remove them from the repository 2017-08-15 08:03:17 +02:00
bgermann
4331a20835 leave out features not available in Cygwin
[GB.TERM]
* NEW: use preprocessor to leave out features not available in Cygwin
2017-08-14 23:19:01 +02:00
Benoît Minisini
d42a49b57d [CONFIGURATION]
* NEW: Switch version to 3.10.90.

[GB.DB]
* NEW: Connection.TimeZone is new property that will allow to define the default timezone of dates stored in the database we are connected to. Not implemented yet.


git-svn-id: svn://localhost/gambas/trunk@8168 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2017-07-24 18:53:33 +00:00
Benoît Minisini
82eddfd5c9 [CONFIGURATION]
* NEW: Remove all 'depcomp' files. Apparently they are not used anymore by autoconf.

[INTERPRETER]
* BUG: Fix some gcc 6 warnings.

[GB.DEBUG]
* BUG: Fix some gcc 6 warnings.

[GB.GTK]
* BUG: Fix some gcc 6 warnings.
* BUG: Fix a ';' mistake in a focus management test.

[GB.GTK3]
* BUG: Fix some gcc 6 warnings.
* BUG: Fix a ';' mistake in a focus management test.

[GB.IMAGE]
* BUG: Fix some gcc 6 warnings.


git-svn-id: svn://localhost/gambas/trunk@8101 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2017-02-18 17:24:01 +00:00
Benoît Minisini
b225eba20f [CONFIGURATION]
* NEW: Update copyright year in all source files.


git-svn-id: svn://localhost/gambas/trunk@8056 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2017-01-13 03:29:42 +00:00
Benoît Minisini
61b5676b6a [GB.TERM]
* BUG: Fix local and control flags of terminal settings.


git-svn-id: svn://localhost/gambas/trunk@8048 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2017-01-07 22:35:34 +00:00
Benoît Minisini
d5f1ac948c [DEVELOPMENT ENVIRONMENT]
* NEW: Update french translation.
* NEW: Support for the new gb.term component.

[INTERPRETER]
* NEW: Add an API that returns the file descriptor associated with a specific stream.

[GB.TERM]
* NEW: New component for terminal management with an API very close to the one provided by the operating system.


git-svn-id: svn://localhost/gambas/trunk@8043 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2017-01-07 00:58:20 +00:00
Benoît Minisini
3a954eec2c [CONFIGURATION]
* BUG: Correctly detect update of svn database for generating trunk version file.


git-svn-id: svn://localhost/gambas/trunk@8005 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2016-11-30 11:16:28 +00:00
Benoît Minisini
b2b31e7fd0 [GB.INOTIFY]
* BUG: Don't assume inotify_add_watch() succeeds in all cases. The watched path may have been deleted after the watch has been created.


git-svn-id: svn://localhost/gambas/trunk@7996 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2016-11-26 22:55:53 +00:00
Benoît Minisini
043ee62a7c [DEVELOPMENT ENVIRONMENT]
* NEW: Debugger: Use the 'gb.signal' component to send signals to debugged processes.
* BUG: Debugger: Correctly pause projects using an external terminal.

[GB.SIGNAL]
* NEW: Signal.Send() is a new method to send signals to processes. It is just a direct interface to the kill() system call.


git-svn-id: svn://localhost/gambas/trunk@7982 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2016-11-17 16:12:28 +00:00
Benoît Minisini
f79951fe9f [GB.DB]
* BUG: Connection.ApplyTemplate() now correctly handles a collation whose name is "default" in the template file.


git-svn-id: svn://localhost/gambas/trunk@7941 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2016-10-29 01:38:56 +00:00
Benoît Minisini
cf467669a0 [GB.INOTIFY]
* BUG: Creating a watch with a null path now raises an error instead of crashing.


git-svn-id: svn://localhost/gambas/trunk@7940 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2016-10-29 01:35:40 +00:00
Benoît Minisini
60dff96936 [DEVELOPMENT ENVIRONMENT]
* NEW: Database connection: Now you can initialize a new database from the template of another connection of the project.


git-svn-id: svn://localhost/gambas/trunk@7850 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2016-08-19 19:43:56 +00:00
Benoît Minisini
c019b07f40 [CONFIGURATION]
* NEW: Force symbolic link creation.

[GB.WEB]
* BUG: Fix Session.Keys for SQLite sessions.

[GB.IMAGE]
* BUG: Image.Desaturate() now works correctly on image alpha channel.


git-svn-id: svn://localhost/gambas/trunk@7847 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2016-08-18 18:59:19 +00:00
Benoît Minisini
86fe572568 [GB.DB]
* BUG: Fix a memory leak in blob handling when using a PostgreSQL database.


git-svn-id: svn://localhost/gambas/trunk@7841 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2016-08-16 17:25:46 +00:00
Benoît Minisini
5355d8b955 [DEVELOPMENT ENVIRONMENT]
* NEW: The run button has a pop-up menu button only if at least one argument list has been defined in the project properties.
* NEW: Project property dialog: if the argument lists order changes, the current argument list index follows.

[GB.FORM]
* NEW: MenuButton: If no arrow is visible, and if no menu is defined, then the MenuButton raises the Click event.

[GB.WEB]
* NEW: Session.Type defines which kind of session store to use. At the moment, two are implemented. Session.File (the old one), and Session.Sqlite (based on a sqlite database).

[GB.WEB.FORM]
* BUG: Remove some debugging messages.


git-svn-id: svn://localhost/gambas/trunk@7829 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2016-07-22 22:12:35 +00:00
Benoît Minisini
62863d13f4 [GB.IMAGE]
* BUG: ImageStat() now return the correct dimenstions of JPEG images.


git-svn-id: svn://localhost/gambas/trunk@7813 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2016-07-10 02:09:55 +00:00
Benoît Minisini
7c4220f210 [GB.FORM]
* BUG: FileView: Enable/disable file watches on Show/Hide events.
* BUG: DirView: Enable/disable file watches on Show/Hide events.


git-svn-id: svn://localhost/gambas/trunk@7771 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2016-05-07 14:28:09 +00:00
Benoît Minisini
535fa6bea3 [GB.INOTIFY]
* BUG: Forgot to commit a source file.


git-svn-id: svn://localhost/gambas/trunk@7768 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2016-05-07 00:55:08 +00:00
Benoît Minisini
7fc3acc849 [GB.INOTIFY]
* BUG: Now you can create as many watches on the same path as you want.
* NEW: Consequently, the Watch[] static array accessor, that returned the watch associated with a path, had to be removed.
* NEW: The flags constants and the Watch.Events property are now associated with the Gambas events, not the internal inotify events.


git-svn-id: svn://localhost/gambas/trunk@7766 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2016-05-06 23:03:28 +00:00
Benoît Minisini
f34f52b928 [INTERPRETER]
* NEW: New library management.

[COMPILER]
* NEW: New library management.


git-svn-id: svn://localhost/gambas/trunk@7592 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2016-02-01 02:18:49 +00:00
Benoît Minisini
cf2abcd76a [GB.DB]
* BUG: Take case-sensitive databases like postgresql into account in index fields.


git-svn-id: svn://localhost/gambas/trunk@7564 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2016-01-08 14:41:23 +00:00
Benoît Minisini
39ed4dd89e [INTERPRETER]
* NEW: Support for custom expression evaluators.

[GB.EVAL]
* NEW: You can now inheriting the Expression class to create a custom expression evaluator. You have to reimplement three methods: IsSubr(), that returns if a Gambas subroutine is allowed;
  IsIdentifier() that returns if a specific identifier is known; GetValue() that returns the value of an identifier. All other methods you add to the class become your specific subroutine,
  provided that you allow it in the IsIdentifier() method.


git-svn-id: svn://localhost/gambas/trunk@7545 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2016-01-03 16:44:24 +00:00
Benoît Minisini
b9b46f3873 [CONFIGURATION]
* NEW: Add "-march=native" to the compilation flags. Maybe it could speed up then interpretrer a bit?

[DEVELOPMENT ENVIRONMENT]
* NEW: Connection editor: Update layout.
* NEW: Form editor: Clicking on the master selection selects the parent control.

[WEB SITE MAKER]
* NEW: Update for 3.8.4 version.

[GB.DB]
* BUG: Default values are now correctly taken into account by database templates.

[GB.DB.SQLITE3]
* BUG: Fix a possible uninitialized allocation of columns names.

[GB.UTIL]
* NEW: Class.Stat() class name argument now allows "../" in the name to search for classes in parent components.

[GB.WEB]
* NEW: Request.Language returns the main language requested by the HTTP client. This value can be directly assigned to System.Language.
* NEW: Session.Size returns the size of the session file in bytes.

[GB.WEB.FORM]
* NEW: Automatic management of favicon. The application favicon must be a file named "favicon.png" in the ".public" directory.
* NEW: The Align class for alignment constants.
* NEW: WebControl: Any control can raise a Message event now.
* NEW: The Message boxes now raise the "Message" event of the WebControl that opened the message box. If the event is not handled, then the event is raised by the WebForm of the control.
* NEW: The Select class for selection mode constants.
* BUG: WebComboBox: Define the default event.
* NEW: WebContainer: Indent is a new property that allows to add a left padding to the container.
* NEW: WebContainer: Extra children (those created after initialization) are now recreated with their event observer and event name, provided that the event observer is another WebControl.
* NEW: WebContainer: DeleteChildren() is a new method that deletes all container children.
* NEW: WebExpander: New container that implements an expander.
* NEW: WebForm: Teh application language now automatically switches to the language requested by the HTTP client.
* BUG: WebForm: Show() and ShowModal() method now raise the Open event.
* NEW: WebLabel: Add the Border property to the property list.
* NEW: WebLabel: Newlines in label text are automatically replaced by "<br>".
* NEW: WebTable: New control that implements an HTML table with automatic scrollbars. It gets its data through a Data event, and only displays the first hundred elements by default. A button allows to increase the number of displayed elements.
  The 'Mode' property allows to define the selection mode. When rows are selectable, an extra columns is added, with radion buttons on single selection mode, and checkboxes on multiple selection mode. The indexes of selected rows is returned by
  the 'Selection' property.
* BUG: Many fixes in the default stylesheet.


git-svn-id: svn://localhost/gambas/trunk@7536 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-12-27 18:16:32 +00:00
Benoît Minisini
fca1fb8e0e [DEVELOPMENT ENVIRONMENT]
* BUG: Fix image selection when the allowed image root directory is the
  '.public' special directory.
* NEW: Replace 'WebformImage' property kind by 'WebImage'.
* BUG: Form editor: Fix automatic arrangement.
* NEW: Form editor: Allow background and foreground toolbar buttons for
  WebForms.
* BUG: WebImage can display SVG files too.

[GB.WEB.FORM]
* NEW: Add some new color constants to the Color class.

[GB.GEOM]
* NEW: Move the declaration of alignment constants there.
* NEW: Rect.Stretch() is a new method that stretches a rectangle so that it
  fits inside another rectangle frame while keeping its proportions.
* NEW: RectF.Stretch() is a new method that stretches a rectangle so that
  it fits inside another rectangle frame while keeping its proportions.


git-svn-id: svn://localhost/gambas/trunk@7505 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-12-05 18:44:58 +00:00
Benoît Minisini
beeabd049f [DEVELOPMENT ENVIRONMENT]
* NEW: Put the WebView icon in the IDE.

[GB.FORM.EDITOR]
* OPT: Don't raise Cursor event if we are between calls to Begin / End or 
  during an undo or redo process.

[GB.GUI.QT.WEBKIT]
* NEW: No need to put the WebView icon there.


git-svn-id: svn://localhost/gambas/trunk@7367 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-09-29 15:03:16 +00:00
Benoît Minisini
afd98e3f55 [CONFIGURATION]
* NEW: Redraw many control icons.


git-svn-id: svn://localhost/gambas/trunk@7366 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-09-29 12:53:38 +00:00
Benoît Minisini
ade4524d67 [DEVELOPMENT ENVIRONMENT]
* BUG: Property sheet: Fix text property edit dialog.
* BUG: Property sheet: Double-clicking on read-only properties does not 
  open the text property edit dialog anymore.
  
[GB.DEBUG]
* BUG: Fix profiler error messages.
  
[GB.QT4]
* BUG: Startup forms with Visible property set to FALSE are not shown at
  startup anymore.
  
[GB.QT5]
* BUG: Startup forms with Visible property set to FALSE are not shown at
  startup anymore.


git-svn-id: svn://localhost/gambas/trunk@7355 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-09-27 15:11:50 +00:00
Benoît Minisini
0feacc4358 [GB.DBUS]
* BUG: Fix some memory leaks when using DBusObject and DBusVariant in a 
  method call or a reply.
* BUG: The message observer of a DBusObject may disappear while processing
  a message. Take that into account.


git-svn-id: svn://localhost/gambas/trunk@7352 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-09-27 02:39:16 +00:00
Benoît Minisini
966385aaa5 [GB.DB]
* BUG: Connections are now always searched in the main project archive.


git-svn-id: svn://localhost/gambas/trunk@7347 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-09-26 08:45:31 +00:00
Benoît Minisini
efeed5e7a8 [GB.DB]
* BUG: Result in creation mode works again.


git-svn-id: svn://localhost/gambas/trunk@7335 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-09-24 15:03:09 +00:00
Benoît Minisini
85a0b1f02b [GB.DB]
* NEW: Finish support of "forward-only" Result objects.

[GB.DB.ODBC]
* NEW: Clean-up a bit the query_fill() function.


git-svn-id: svn://localhost/gambas/trunk@7334 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-09-24 00:22:57 +00:00
Benoît Minisini
abf1ba8cbf [DEVELOPMENT ENVIRONMENT]
* NEW: New project creation dialog based on template projects located in
  '/usr/share/gambas3/template' and in '~/.local/share/gambas3/template'.
  These are default directories, they may change according to your gambas
  installation prefix and home directory configuration.

[TEMPLATES]
* NEW: Project templates. There are only two at the moment, others will
  come.

git-svn-id: svn://localhost/gambas/trunk@7321 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-09-18 00:41:43 +00:00
Benoît Minisini
fe4f8c5e7a [GB.DB]
* NEW: Support for "forward only" Result.


git-svn-id: svn://localhost/gambas/trunk@7315 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-09-16 19:49:34 +00:00
Benoît Minisini
464f88e1fd [INTERPRETER]
* BUG: Debugger: Breakpoints now work correctly when some global variables 
  are declared after a function.


git-svn-id: svn://localhost/gambas/trunk@7314 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-09-16 00:10:14 +00:00
Benoît Minisini
991f685a3c [INTERPRETER]
* NEW: Component.FindFromPath() is a new method that returns the name of 
  the component a relative path belongs to.
* BUG: Fix the internal method that returns the component a relative path 
  belongs to.

[ARCHIVER]
* NEW: Better verbose mode.

[GB.GUI.BASE]
* NEW: Use the new Component.FindFromPath() method.

[GB.IMAGE]
* NEW: Color[].Luminance returns the luminance information of a color.


git-svn-id: svn://localhost/gambas/trunk@7309 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-09-14 10:53:02 +00:00
Tobias Boege
24e542b4c5 [GB.INOTIFY]
* BUG: (Bug 730) Don't pass NULL key and zero length to GB.HashTable.Remove()
* OPT: Use GB.StringLength() where possible



git-svn-id: svn://localhost/gambas/trunk@7303 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-09-12 19:52:38 +00:00
Tobias Boege
360a13ddc9 [GB.INOTIFY]
* BUG: (Bug 730) Don't rely on GB.NewString() to NUL-terminate the string



git-svn-id: svn://localhost/gambas/trunk@7300 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-09-12 17:09:08 +00:00
Benoît Minisini
c284885cb9 [GB.EVAL]
* BUG: Now lines of any length can be highlighted.


git-svn-id: svn://localhost/gambas/trunk@7278 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-09-06 12:36:33 +00:00
Benoît Minisini
dfcb60106e [DEVELOPMENT ENVIRONMENT]
* BUG: Some HiDPI fixes.

[GB.FORM]
* NEW: Stock icon default sizes ("small", "medium"...) are now proportional
  to Desktop.Scale by steps of 8 pixels. This is for HiDPI support.
* NEW: Wizard BeforeChange event can be cancelled now.

[GB.FORM.MDI]
* NEW: Toolbar tries to update the size of its icons when the font changes.

[GB.GTK]
* NEW: Window now raises a Font event when its font changes.

[GB.GTK3]
* NEW: Window now raises a Font event when its font changes.

[GB.GUI.BASE]
* NEW: TreeView items height padding is now proportional to Desktop.Scale.

[GB.QT4]
* NEW: Window now raises a Font event when its font changes.

[GB.QT5]
* NEW: Window now raises a Font event when its font changes.


git-svn-id: svn://localhost/gambas/trunk@7228 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-08-18 15:19:22 +00:00
Benoît Minisini
6b5790f7f9 [DEVELOPMENT ENVIRONMENT]
* BUG: Packager wizard: When creating a package from a component project,
  warn the user if the project name is not prefixed by a vendor name and
  a dot, and stop the process.

[GB.GUI.BASE]
* NEW: IconView: Draw is a new event that is raised when just after a 
  specific IconView item has been drawn.
* NEW: IconView: Draw the hovered item differently.
* BUG: IconView: Fix bad detection of hovered item.
* NEW: IconView: Take the icon shape into account when doing a rectangle
  selection.

[GB.DRAW]
* NEW: Paint.Zoom now draws its grid with a dashed line using the specified 
  grid color and its inverse.


git-svn-id: svn://localhost/gambas/trunk@7186 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-07-15 02:09:42 +00:00
Benoît Minisini
1a804d1e45 [DEVELOPMENT ENVIRONMENT]
* NEW: The "Show search window" button in the search list does not reset
  the searching context to the current procedure anymore. It keeps the
  current context unchanged instead.

[GB.DRAW]
* NEW: Paint.ZoomImage used dash pattern to draw the zoom grid.

[GB.FORM]
* NEW: ImageView uses #808080 as grid color.

[GB.FORM.EDITOR]
* BUG: TextEditor: Don't reset an editor getting the focus. Do it only if 
  needed.


git-svn-id: svn://localhost/gambas/trunk@7175 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-07-07 20:51:57 +00:00
Benoît Minisini
417bfb8685 [INTERPRETER]
* NEW: GB.GetReturnValue() is a new interpreter API that returns a pointer
  to the internal GB_VALUE slot where GB.ReturnXXX() functions store the
  return value.
* NEW: Allow a component to declare a GB_AFTER_INIT() exported method that
  is called just after all the components declared in the project are 
  completely loaded.
  
[GB.DBUS]
* NEW: DBus._HasSystemTray() is a new method that returns if the DBus 
  system tray is present. That method is used by the 'gb.gui.trayicon'
  component to know if 'gb.dbus.trayicon' must be loaded.
* BUG: Fix xml introspection analysis.

[GB.DBUS.TRAYICON]
* BUG: Remove debugging messages.
* BUG: TrayIcon icon data is sent correctly now.

[GB.GUI.TRAYICON]
* NEW: New component that you must check if you want to have system tray
  icons. It loads 'gb.dbus', use DBus._HasSystemTray() to know if it can
  load 'gb.dbus.trayicon'. Otherwise it tells the current GUI component to
  declare the old system tray implementation classes.

[GB.GTK]
* NEW: Let the new 'gb.gui.trayicon' deals with the dbus stuff, but keep
  the old system tray icon and use them on demand.

[GB.GTK3]
* NEW: Let the new 'gb.gui.trayicon' deals with the dbus stuff, but keep
  the old system tray icon and use them on demand.

[GB.QT4]
* NEW: Let the new 'gb.gui.trayicon' deals with the dbus stuff, but keep
  the old system tray icon and use them on demand.

[GB.QT5]
* NEW: Let the new 'gb.gui.trayicon' deals with the dbus stuff, but keep
  the old system tray icon and use them on demand.


git-svn-id: svn://localhost/gambas/trunk@7170 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-07-03 22:18:58 +00:00
Benoît Minisini
29fe0bc6a6 [INTERPRETER]
* NEW: GB.GetProperty() API now returns the property value as a GB_VALUE 
  pointer, or NULL if the property could not be read.

[GB.DB.POSTGRESQL]
* BUG: Fix a compilation warning.

[GB.DBUS]
* NEW: DBusVariant.Signature is now a constant, not a property anymore.
* NEW: DBusVariant() static method has been removed.
* NEW: DBusVariant.Value is now writable.
* NEW: DBusVariant now can be inherited. Use the value of the Signature 
  constant for introspection of methods and properties using a child class
  of DBusVariant.
* BUG: Show the org.freedesktop.DBus.Peer interface in introspection.
* BUG: The org.freedesktop.DBus.Properties.GetAll method now works 
  correctly.
* BUG: Correctly handle array datatypes.
* BUG: Correctly marshall DBus structures and arrays.
* BUG: Correctly handle NULL values.

[GB.FORM.EDITOR]
* BUG: TextEditor: Better detect cursor position when clicking in the 
  editor with the mouse.

[GB.FORM.STATUSICON]
* NEW: New component that provides a StatusIcon that is a TrayIcon using 
  the Status Notifier DBus specification (i.e. the new protocol). It should
  only works with KDE at the moment.

[GB.IMAGE]
* NEW: Implement all possible image format conversions.


git-svn-id: svn://localhost/gambas/trunk@7150 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-06-27 21:26:32 +00:00
Benoît Minisini
044be25e9e [GB.CLIPPER]
* BUG: Polygon.AddPoint() now works correctly.


git-svn-id: svn://localhost/gambas/trunk@7140 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-06-18 23:53:23 +00:00
Tobias Boege
ba3251c890 [GB.CLIPPER]
* BUG: Put arguments to Polygon._put() in the correct order.



git-svn-id: svn://localhost/gambas/trunk@7139 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-06-18 09:59:26 +00:00
Benoît Minisini
fd60cd1bec [DEVELOPMENT ENVIRONMENT]
* NEW: Database editor: The import CSV dialog is now a wizard.

[GB.DB]
* BUG: Fix a crash when creating twice the same table with the same
  connection.

[GB.FORM]
* NEW: Spinner: Display the label below the rotating spinner.
* NEW: Spinner.Wait() is a new method that calls the event loop, and 
  ensures that it is not called more than every 200 milliseconds.
* BUG: Wizard: Animation is correct now when the Border property is set.

[GB.QT4]
* BUG: Showing a window now automatically raises it.

[GB.QT5]
* BUG: Showing a window now automatically raises it.


git-svn-id: svn://localhost/gambas/trunk@7138 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-06-17 21:25:02 +00:00
Benoît Minisini
ed2a0c978a [WIKI CGI SCRIPT]
* NEW: Command for generating the package dependencies table.

[GB.COMPRESS.BZLIB2]
* NEW: Make that compress driver an explicit component.

[GB.COMPRESS.ZLIB]
* NEW: Make that compress driver an explicit component.

[GB.FORM.EDITOR]
* BUG: TextEditor: The right mouse button now has no effect to allow the
  popup menu to act on the current selection or cursor position.


git-svn-id: svn://localhost/gambas/trunk@7134 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-06-14 22:10:16 +00:00
Benoît Minisini
fb824c9261 [GB.FORM]
* NEW: SliderBox: The slider has always a space for the possible minus sign.

[GB.GUI.QT]
* NEW: Print a warning message if GB_GUI contains an unsupported component.

[GB.QT5]
* NEW: Desktop.Screenshot does not use the deprecated API anymore.


git-svn-id: svn://localhost/gambas/trunk@7107 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-05-30 18:03:29 +00:00
Benoît Minisini
c31ba82e67 [GB.GUI.QT.WEBKIT]
* BUG: Forgot to add the source files!


git-svn-id: svn://localhost/gambas/trunk@7102 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-05-28 10:09:28 +00:00
Benoît Minisini
b688648728 [DEVELOPMENT ENVIRONMENT]
* NEW: Use the new QT4/QT5 switcher components.
* NEW: Support for QT5 component.

[GB.FORM]
* NEW: New syntaxes in 'icon.map' file that allows to specify different 
  icons for small or big sizes.
* NEW: New 'user' and 'group' icons.

[GB.FORM.STOCK]
* NEW: New 'user' and 'group' icons.

[GB.GUI.QT]
* NEW: New QT4/QT5 switcher component.

[GB.GUI.QT.WEBKIT]
* NEW: New QT4/QT5 WebKit switcher component.

[GB.QT4]
* BUG: Remove a debugging message in Style.Name property.
* BUG: Trigger pending focus and activate events before showing a modal 
  dialog.

[GB.QT5]
* BUG: Remove a debugging message in Style.Name property.
* BUG: Trigger pending focus and activate events before showing a modal 
  dialog.



git-svn-id: svn://localhost/gambas/trunk@7101 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-05-28 10:08:13 +00:00
Benoît Minisini
245ab1870d [DEVELOPMENT ENVIRONMENT]
* NEW: System information: Search for QT5 core library.

[EXAMPLES]
* BUG: Fix Browser example.

[GB.FORM]
* BUG: Fix stock icon map for breeze icon theme.

[GB.GUI]
* NEW: Use gb.qt5 if the current desktop is KDE5.

[GB.GUI.OPENGL]
* NEW: Support for gb.qt5.opengl.

[GB.QT4]
* BUG: Fix component name in warning messages.

[GB.QT5]
* NEW: Qt 5.4 is now required, because of gb.qt5.opengl.
* BUG: Fix component name in warning messages.

[GB.QT5.OPENGL]
* NEW: QT5 OpenGL support component.


git-svn-id: svn://localhost/gambas/trunk@7076 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-05-11 01:46:36 +00:00
Benoît Minisini
9180e0b643 [GB.SIGNAL]
* BUG: Raise an error instead of panicking when trying to catch the SIGKILL 
  or SIGSTOP signal.


git-svn-id: svn://localhost/gambas/trunk@7039 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-04-15 17:17:50 +00:00
Benoît Minisini
38c2a48fc7 [GB.DB]
* BUG: Fix a memory leak in the Connection.Delete() method.


git-svn-id: svn://localhost/gambas/trunk@7027 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-04-11 08:37:24 +00:00
Benoît Minisini
706648c7c8 [WEBSITE MAKER]
* NEW: Upgrade to 3.7.1 version.

[GB.DB]
* NEW: Connection.SQL is a new property that returns a new SQLRequest 
  object that can be used for forging a SQL request whose syntax is adapted
  to the target connection.
* NEW: SQLRequest is a new class that helps to build a SQL request whose 
  syntax is adapted to a specific connection. The name of table fields are 
  always quoted so that they can include reserved characters.

[GB.DB.FORM]
* NEW: Use the new SQL property of the Connection object to build request.
* BUG: Fields with special characters in their name are now correctly
  quoted, thanks to the new SQL forgin mechanism.

[GB.DB]
* BUG: Don't crash when a SQLite database is not found and if the hostname 
  is null.
* NEW: GB_DB_DEBUG is a new environmental variable that allows to 
  externally set the DB.Debug property.
  
[GB.EVAL.HIGHLIGHT]
* NEW: SQL higlighting: the '`' quote character is taken into account now.


git-svn-id: svn://localhost/gambas/trunk@7020 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-04-03 21:11:18 +00:00
Benoît Minisini
855cd1218c [GB.DRAW]
* BUG: Fix Paint text method signatures.


git-svn-id: svn://localhost/gambas/trunk@6990 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-03-15 15:17:31 +00:00
Benoît Minisini
789deb8b65 [CONFIGURATION]
* BUG: Forgot to package 'main/lib/gb.component' file.


git-svn-id: svn://localhost/gambas/trunk@6968 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-03-10 12:27:08 +00:00
Benoît Minisini
298d0f54a0 [GB.DB]
* NEW: Add a Connections.Count property that returns the number of 
  connections defined in the current project / executable.


git-svn-id: svn://localhost/gambas/trunk@6954 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-03-07 10:26:01 +00:00
Benoît Minisini
c97a5b6349 [GB.DRAW]
* NEW: Don't clip the area argument of Paint.Begin().


git-svn-id: svn://localhost/gambas/trunk@6951 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-03-06 12:54:47 +00:00
Benoît Minisini
25a01ce68a [GB.DRAW]
* BUG: Fix Paint.Begin() signature.


git-svn-id: svn://localhost/gambas/trunk@6940 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-03-02 21:33:29 +00:00
Benoît Minisini
e55a104121 [GB.DRAW]
* BUG: Using Paint.Begin() on an already painted device automatically calls
  Paint.Save(), and Paint.Restore() will be called with Paint.End().


git-svn-id: svn://localhost/gambas/trunk@6939 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-03-02 21:14:20 +00:00
Benoît Minisini
cadfc8ba99 [GB.DRAW]
* BUG: Allow Paint.Begin() drawing areas to be imbricated.


git-svn-id: svn://localhost/gambas/trunk@6938 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-03-02 21:08:09 +00:00
Benoît Minisini
a07a02c086 [GB.DRAW]
* BUG: The optional painting area is correclty reset after a call to 
  Paint.Reset().
 

git-svn-id: svn://localhost/gambas/trunk@6936 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-03-02 18:20:56 +00:00
Benoît Minisini
7d72df028f [GB.DRAW]
* NEW: Paint.Begin() now takes a new optional argument that allows to 
  define the painting area as a sub-rectangle of the painting device.


git-svn-id: svn://localhost/gambas/trunk@6935 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-03-02 18:03:31 +00:00
Benoît Minisini
be3411f211 [GB.PAINT]
* BUG: The PathExtents.Merge() method does not crash anymore.

[GB.V4L]
* BUG: Fix type in error messages.


git-svn-id: svn://localhost/gambas/trunk@6903 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-02-20 19:59:09 +00:00
Benoît Minisini
50fba09151 [CONFIGURATION]
* NEW: Compile and install gb.report2 component.

[DEVELOPMENT ENVIRONMENT]
* NEW: Add support for gb.report2 and gb.scanner.
* BUG: Correctly reset Application.Busy when opening a connection fails.
* BUG: Project property dialog: Fix management of required components.
* NEW: Project property dialog: Add management of excluded components.

[GB.DB]
* NEW: More detailed error message for SQLite connections.

[GB.DB.SQLITE3]
* NEW: More detailed error message for SQLite connections.


git-svn-id: svn://localhost/gambas/trunk@6892 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-02-05 20:34:44 +00:00
Benoît Minisini
f6106901a8 [GB.DB]
* BUG: Don't crash when opening a connection if the database driver is 
  unknown or not specified.


git-svn-id: svn://localhost/gambas/trunk@6870 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2015-01-25 22:49:31 +00:00