From 93137105d3d6943a97b4b19c2ef378f4b6c4d487 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Minisini?= Date: Sat, 20 Aug 2011 00:33:36 +0000 Subject: [PATCH] [DEVELOPMENT ENVIRONMENT] * NEW: The startup class icon is now just drawn with a dark outline. * NEW: Error messages updated. * NEW: French translation updated. [INTERPRETER] * NEW: Inheritance is stricter now: the child symbol must have exactly the same kind than the parent symbol. * BUG: A child method must return the same datatype as its parent method now. * NEW: Gambas 3 executable mime description file and icon have been renamed so that they do not conflict with Gambas 2 files. [GB.FORM] * BUG: IconView.Find() has been renamed as IconView.FindAt(), to avoid the conflict with the inherited UserControl.Find() method. [GB.FORM.MDI] * BUG: Workspace.Children has been renamed as Workspace.Windows, because the Workspace.Children property was in conflict with the inherited Container.Children property. [GB.GTK] * NEW: ListView, TreeView and ColumnView Find() method has been renamed as 'FindAt' to match the IconView class. [GB.IMAGE] * NEW: Color.SetRGB() and Color.SetHSV() are two new methods that takes a color as an integer, modifies one of its component, and returns it. They are faster than using the ColorInfo class. * NEW: Color.GetAlpha() returns the alpha component of a color from its integer value. [GB.QT4] * NEW: ListView, TreeView and ColumnView Find() method has been renamed as 'FindAt' to match the IconView class. git-svn-id: svn://localhost/gambas/trunk@4015 867c0c6c-44f3-4631-809d-bfa615b0a4ec --- app/src/gambas3/.lang/.pot | 428 ++++++++--------- app/src/gambas3/.lang/fr.mo | Bin 98212 -> 98396 bytes app/src/gambas3/.lang/fr.po | 434 +++++++++--------- app/src/gambas3/.project | 2 +- app/src/gambas3/.src/FMain.class | 4 +- app/src/gambas3/.src/MErrorMessage.module | 310 ++++++------- app/src/gambas3/.src/Project.module | 40 +- comp/src/gb.form.mdi/.info | 2 +- comp/src/gb.form.mdi/.project | 4 +- .../.src/Workspace/Workspace.class | 4 +- comp/src/gb.form/.info | 2 +- comp/src/gb.form/.src/IconView/IconView.class | 2 +- gb.gtk/src/CTreeView.cpp | 6 +- gb.qt4/src/CTreeView.cpp | 6 +- main/Makefile.am | 6 +- main/gbx/gb_error.c | 2 +- main/gbx/gbx_class.c | 139 ++++-- main/gbx/gbx_class.h | 2 +- main/gbx/gbx_class_desc.h | 2 +- main/gbx/gbx_class_load.c | 41 +- main/gbx/gbx_class_native.c | 27 +- main/gbx/gbx_debug.c | 33 +- main/lib/image/c_color.c | 78 +++- ...x-gambas.png => application-x-gambas3.png} | Bin ...x-gambas.xml => application-x-gambas3.xml} | 6 +- 25 files changed, 872 insertions(+), 708 deletions(-) rename main/mime/{application-x-gambas.png => application-x-gambas3.png} (100%) rename main/mime/{application-x-gambas.xml => application-x-gambas3.xml} (69%) diff --git a/app/src/gambas3/.lang/.pot b/app/src/gambas3/.lang/.pot index 97b9a3e7b..e2320f3ce 100644 --- a/app/src/gambas3/.lang/.pot +++ b/app/src/gambas3/.lang/.pot @@ -328,19 +328,19 @@ msgid "Gambas reports" msgstr "" #: CProjectTree.class:290 FMain.form:937 FSearch.class:96 FSelectIcon.form:31 -#: Project.module:1511 +#: Project.module:1541 msgid "Project" msgstr "" -#: CProjectTree.class:293 Project.module:1514 +#: CProjectTree.class:293 Project.module:1544 msgid "Sources" msgstr "" -#: CProjectTree.class:296 Project.module:1517 +#: CProjectTree.class:296 Project.module:1547 msgid "Connections" msgstr "" -#: CProjectTree.class:305 Project.module:1526 +#: CProjectTree.class:305 Project.module:1556 msgid "Data" msgstr "" @@ -387,7 +387,7 @@ msgid "" "the GNU General Public License." msgstr "" -#: Design.module:219 Project.module:1977 +#: Design.module:219 Project.module:2007 msgid "in &1:&2." msgstr "" @@ -2821,7 +2821,7 @@ msgid "There is no CHANGELOG entry for this release." msgstr "" #: FMakeInstall.class:327 FPropertyProject.class:801 FSave.form:21 -#: Project.module:2981 +#: Project.module:3011 msgid "Continue" msgstr "" @@ -2949,7 +2949,7 @@ msgstr "" msgid "This menu is too deep !" msgstr "" -#: FMenu.class:928 Project.module:4954 +#: FMenu.class:928 Project.module:4984 msgid "modified" msgstr "" @@ -4429,7 +4429,7 @@ msgid "'&1' already declared" msgstr "" #: MErrorMessage.module:16 -msgid "'&1.&2' is badly overridden in class '&3'" +msgid "'&1.&2' is incorrectly overridden in class '&3'" msgstr "" #: MErrorMessage.module:17 @@ -4601,614 +4601,622 @@ msgid "Cannot load component '&1': &2" msgstr "" #: MErrorMessage.module:59 -msgid "Cannot make executable: &1: &2" +msgid "Cannot load source file: &1" msgstr "" #: MErrorMessage.module:60 -msgid "Cannot mix NEW and embedded array" +msgid "Cannot make executable: &1: &2" msgstr "" #: MErrorMessage.module:61 -msgid "Cannot mix NEW and embedded structure" +msgid "Cannot mix NEW and embedded array" msgstr "" #: MErrorMessage.module:62 -msgid "Cannot open file '&1': &2" +msgid "Cannot mix NEW and embedded structure" msgstr "" #: MErrorMessage.module:63 -msgid "Cannot open file: &1" +msgid "Cannot open file '&1': &2" msgstr "" #: MErrorMessage.module:64 -msgid "Cannot raise events in static function" +msgid "Cannot open file: &1" msgstr "" #: MErrorMessage.module:65 -msgid "Cannot read file: &1" +msgid "Cannot raise events in static function" msgstr "" #: MErrorMessage.module:66 -msgid "Cannot read file: &1: &2" +msgid "Cannot read file: &1" msgstr "" #: MErrorMessage.module:67 -msgid "Cannot register class '&1'" +msgid "Cannot read file: &1: &2" msgstr "" #: MErrorMessage.module:68 -msgid "Cannot remove file '&1': &2" +msgid "Cannot register class '&1'" msgstr "" #: MErrorMessage.module:69 -msgid "Cannot rename file '&1' to '&2': &3" +msgid "Cannot remove file '&1': &2" msgstr "" #: MErrorMessage.module:70 -msgid "Cannot set file owner: &1: &2" +msgid "Cannot rename file '&1' to '&2': &3" msgstr "" #: MErrorMessage.module:71 -msgid "Cannot use NEW operator there" +msgid "Cannot set file owner: &1: &2" msgstr "" #: MErrorMessage.module:72 -msgid "Cannot use TRY twice" +msgid "Cannot use NEW operator there" msgstr "" #: MErrorMessage.module:73 -msgid "Class '&1' is not creatable" +msgid "Cannot use TRY twice" msgstr "" #: MErrorMessage.module:74 -msgid "Comparison operator expected" +msgid "Class '&1' is not creatable" msgstr "" #: MErrorMessage.module:75 -msgid "Component not found: &1" +msgid "Comparison operator expected" msgstr "" #: MErrorMessage.module:76 -msgid "Device is full" +msgid "Component not found: &1" msgstr "" #: MErrorMessage.module:77 -msgid "Division by zero" +msgid "Device is full" msgstr "" #: MErrorMessage.module:78 -msgid "Dynamic symbols cannot be used in static function" +msgid "Division by zero" msgstr "" #: MErrorMessage.module:79 -msgid "Embedded array" +msgid "Dynamic symbols cannot be used in static function" msgstr "" #: MErrorMessage.module:80 -msgid "Embedded arrays are forbidden here" +msgid "Embedded array" msgstr "" #: MErrorMessage.module:81 -msgid "End of file" +msgid "Embedded arrays are forbidden here" msgstr "" #: MErrorMessage.module:82 -msgid "Equality or inequality operator expected" +msgid "End of file" msgstr "" #: MErrorMessage.module:83 -msgid "Expression too complex" +msgid "Equality or inequality operator expected" msgstr "" #: MErrorMessage.module:84 -msgid "Expression too complex. Too many operands" +msgid "Expression too complex" msgstr "" #: MErrorMessage.module:85 -msgid "File already exists" +msgid "Expression too complex. Too many operands" msgstr "" #: MErrorMessage.module:86 -msgid "File is a directory" +msgid "File already exists" msgstr "" #: MErrorMessage.module:87 -msgid "File is locked" +msgid "File is a directory" msgstr "" #: MErrorMessage.module:88 -msgid "File name is too long" +msgid "File is locked" msgstr "" #: MErrorMessage.module:89 -msgid "File or directory does not exist" +msgid "File name is too long" msgstr "" #: MErrorMessage.module:90 -msgid "Forbidden GOTO" +msgid "File or directory does not exist" msgstr "" #: MErrorMessage.module:91 -msgid "Illegal instruction" +msgid "Forbidden GOTO" msgstr "" #: MErrorMessage.module:92 -msgid "Internal compiler error: Bad stack usage computed!" +msgid "Illegal instruction" msgstr "" #: MErrorMessage.module:93 -msgid "Invalid assignment" +msgid "Internal compiler error: Bad stack usage computed!" msgstr "" #: MErrorMessage.module:94 -msgid "Invalid date" +msgid "Invalid assignment" msgstr "" #: MErrorMessage.module:95 -msgid "Invalid object" +msgid "Invalid date" msgstr "" #: MErrorMessage.module:96 -msgid "Invalid path" +msgid "Invalid object" msgstr "" #: MErrorMessage.module:97 -msgid "Label '&1' not declared" +msgid "Invalid path" msgstr "" #: MErrorMessage.module:98 -msgid "Library name must be a string" +msgid "Label '&1' not declared" msgstr "" #: MErrorMessage.module:99 -msgid "Loop variable already in use" +msgid "Library name must be a string" msgstr "" #: MErrorMessage.module:100 -msgid "Loop variable must be local" +msgid "Loop variable already in use" msgstr "" #: MErrorMessage.module:101 -msgid "ME cannot be used in a static function" +msgid "Loop variable must be local" msgstr "" #: MErrorMessage.module:102 -msgid "Mathematic error" +msgid "ME cannot be used in a static function" msgstr "" #: MErrorMessage.module:103 -msgid "Missing #Endif" +msgid "Mathematic error" msgstr "" #: MErrorMessage.module:104 -msgid "Missing &1" +msgid "Missing #Endif" msgstr "" #: MErrorMessage.module:105 -msgid "Missing operator" +msgid "Missing &1" msgstr "" #: MErrorMessage.module:106 -msgid "Missing right brace" +msgid "Missing operator" msgstr "" #: MErrorMessage.module:107 -msgid "NEW cannot have arguments passed by reference" +msgid "Missing right brace" msgstr "" #: MErrorMessage.module:108 -msgid "No instantiation method" +msgid "NEW cannot have arguments passed by reference" msgstr "" #: MErrorMessage.module:109 -msgid "No parent class" +msgid "No instantiation method" msgstr "" #: MErrorMessage.module:110 -msgid "No return value" +msgid "No parent class" msgstr "" #: MErrorMessage.module:111 -msgid "No startup method" +msgid "No return value" msgstr "" #: MErrorMessage.module:112 -msgid "Non terminated string" +msgid "No startup method" msgstr "" #: MErrorMessage.module:113 -msgid "Not a directory: &1" +msgid "Non terminated string" msgstr "" #: MErrorMessage.module:114 -msgid "Not a function" +msgid "Not a directory: &1" msgstr "" #: MErrorMessage.module:115 -msgid "Not an array" +msgid "Not a function" msgstr "" #: MErrorMessage.module:116 -msgid "Not an enumeration" +msgid "Not an array" msgstr "" #: MErrorMessage.module:117 -msgid "Not an object" +msgid "Not an enumeration" msgstr "" #: MErrorMessage.module:118 -msgid "Not enough argument to New()" +msgid "Not an object" msgstr "" #: MErrorMessage.module:119 -msgid "Not enough arguments" +msgid "Not enough argument to New()" msgstr "" #: MErrorMessage.module:120 -msgid "Not enough arguments to &1()" +msgid "Not enough arguments" msgstr "" #: MErrorMessage.module:121 -msgid "Null object" +msgid "Not enough arguments to &1()" msgstr "" #: MErrorMessage.module:122 -msgid "Out of bounds" +msgid "Null object" msgstr "" #: MErrorMessage.module:123 -msgid "Out of memory" +msgid "Out of bounds" msgstr "" #: MErrorMessage.module:124 -msgid "Out of range" +msgid "Out of memory" msgstr "" #: MErrorMessage.module:125 -msgid "Overflow" +msgid "Out of range" msgstr "" #: MErrorMessage.module:126 -msgid "Read error" +msgid "Overflow" msgstr "" #: MErrorMessage.module:127 -msgid "Return value datatype not specified in function declaration" +msgid "Read error" msgstr "" #: MErrorMessage.module:128 -msgid "STOP instruction encountered" +msgid "Return value datatype not specified in function declaration" msgstr "" #: MErrorMessage.module:129 -msgid "SUPER cannot be used alone" +msgid "STOP instruction encountered" msgstr "" #: MErrorMessage.module:130 -msgid "Serialization error" +msgid "SUPER cannot be used alone" msgstr "" #: MErrorMessage.module:131 -msgid "Stack overflow" +msgid "Serialization error" msgstr "" #: MErrorMessage.module:132 -msgid "Stream is closed" +msgid "Stack overflow" msgstr "" #: MErrorMessage.module:133 -msgid "String expected" +msgid "Stream is closed" msgstr "" #: MErrorMessage.module:134 -msgid "Structures must be public" +msgid "String expected" msgstr "" #: MErrorMessage.module:135 -msgid "Subroutine arguments cannot be passed by reference" +msgid "Structures must be public" msgstr "" #: MErrorMessage.module:136 -msgid "Syntax error" +msgid "Subroutine arguments cannot be passed by reference" msgstr "" #: MErrorMessage.module:137 -msgid "Syntax error at function declaration" +msgid "Syntax error" msgstr "" #: MErrorMessage.module:138 -msgid "Syntax error in event name" +msgid "Syntax error at function declaration" msgstr "" #: MErrorMessage.module:139 -msgid "Syntax error in file open mode" +msgid "Syntax error in event name" msgstr "" #: MErrorMessage.module:140 -msgid "Syntax error in return type" +msgid "Syntax error in file open mode" msgstr "" #: MErrorMessage.module:141 -msgid "Syntax error. &1 expected" +msgid "Syntax error in return type" msgstr "" #: MErrorMessage.module:142 -msgid "Syntax error. '...' must be the last argument" +msgid "Syntax error. &1 expected" msgstr "" #: MErrorMessage.module:143 -msgid "Syntax error. Bad property type" +msgid "Syntax error. '...' must be the last argument" msgstr "" #: MErrorMessage.module:144 -msgid "Syntax error. CASE or DEFAULT expected after SELECT" +msgid "Syntax error. Bad property type" msgstr "" #: MErrorMessage.module:145 -msgid "Syntax error. CLASS needs an identifier" +msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "" #: MErrorMessage.module:146 -msgid "Syntax error. Cannot use this syntax in assignment" +msgid "Syntax error. CLASS needs an identifier" msgstr "" #: MErrorMessage.module:147 -msgid "Syntax error. INHERITS needs a class name" +msgid "Syntax error. Cannot use this syntax in assignment" msgstr "" #: MErrorMessage.module:148 -msgid "Syntax error. Identifier expected." +msgid "Syntax error. INHERITS needs a class name" msgstr "" #: MErrorMessage.module:149 -msgid "Syntax error. Invalid identifier in function name" +msgid "Syntax error. Identifier expected." msgstr "" #: MErrorMessage.module:150 -msgid "Syntax error. Invalid identifier in property name" +msgid "Syntax error. Invalid identifier in function name" msgstr "" #: MErrorMessage.module:151 -msgid "Syntax error. Invalid optional parameter" +msgid "Syntax error. Invalid identifier in property name" msgstr "" #: MErrorMessage.module:152 -msgid "Syntax error. Invalid return type" +msgid "Syntax error. Invalid optional parameter" msgstr "" #: MErrorMessage.module:153 -msgid "Syntax error. Invalid type description of &1 argument" +msgid "Syntax error. Invalid return type" msgstr "" #: MErrorMessage.module:154 -msgid "Syntax error. Invalid type description of &1 field" +msgid "Syntax error. Invalid type description of &1 argument" msgstr "" #: MErrorMessage.module:155 -msgid "Syntax error. Missing &1" +msgid "Syntax error. Invalid type description of &1 field" msgstr "" #: MErrorMessage.module:156 -msgid "Syntax error. Needless arguments" +msgid "Syntax error. Missing &1" msgstr "" #: MErrorMessage.module:157 -msgid "Syntax error. Point syntax used outside of WITH / END WITH" +msgid "Syntax error. Needless arguments" msgstr "" #: MErrorMessage.module:158 -msgid "Syntax error. STRUCT needs an identifier" +msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "" #: MErrorMessage.module:159 -msgid "Syntax error. The &1 argument is not a valid identifier" +msgid "Syntax error. STRUCT needs an identifier" msgstr "" #: MErrorMessage.module:160 -msgid "Syntax error. The &1 field is not a valid identifier" +msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "" #: MErrorMessage.module:161 -msgid "Syntax error. VarPtr() takes only one identifier" +msgid "Syntax error. The &1 field is not a valid identifier" msgstr "" #: MErrorMessage.module:162 -msgid "System error #&1: &2" +msgid "Syntax error. VarPtr() takes only one identifier" msgstr "" #: MErrorMessage.module:163 -msgid "The '!' operator must be followed by an identifier" +msgid "System error #&1: &2" msgstr "" #: MErrorMessage.module:164 -msgid "The '.' operator must be followed by an identifier" +msgid "The '!' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:165 -msgid "The special method &1 cannot be a function" +msgid "The '.' operator must be followed by an identifier" msgstr "" #: MErrorMessage.module:166 -msgid "The special method &1 cannot be implemented" +msgid "The special method &1 cannot be a function" msgstr "" #: MErrorMessage.module:167 -msgid "The special method &1 cannot be static" +msgid "The special method &1 cannot be implemented" msgstr "" #: MErrorMessage.module:168 -msgid "The special method &1 must be a function" +msgid "The special method &1 cannot be static" msgstr "" #: MErrorMessage.module:169 -msgid "The special method &1 must be public" +msgid "The special method &1 must be a function" msgstr "" #: MErrorMessage.module:170 -msgid "The special method &1 must be static" +msgid "The special method &1 must be public" msgstr "" #: MErrorMessage.module:171 -msgid "The special method &1 must take a variable number of arguments only" +msgid "The special method &1 must be static" msgstr "" #: MErrorMessage.module:172 -msgid "The special method &1 must take at least one argument" +msgid "The special method &1 must return a boolean" msgstr "" #: MErrorMessage.module:173 -msgid "The special method &1 takes no arguments" +msgid "The special method &1 must take a variable number of arguments only" msgstr "" #: MErrorMessage.module:174 -msgid "The special method must return an integer" +msgid "The special method &1 must take at least one argument" msgstr "" #: MErrorMessage.module:175 -msgid "The special method must take exactly one argument" +msgid "The special method &1 takes no arguments" msgstr "" #: MErrorMessage.module:176 -msgid "The special method must take exactly two arguments" +msgid "The special method must return an integer" msgstr "" #: MErrorMessage.module:177 -msgid "The special method signature is incorrect" +msgid "The special method must take exactly one argument" msgstr "" #: MErrorMessage.module:178 -msgid "This expression cannot be a statement" +msgid "The special method must take exactly two arguments" msgstr "" #: MErrorMessage.module:179 -msgid "This expression cannot be passed by reference" +msgid "The special method signature is incorrect" msgstr "" #: MErrorMessage.module:180 -msgid "Too many arguments" +msgid "This expression cannot be a statement" msgstr "" #: MErrorMessage.module:181 -msgid "Too many arguments to &1()" +msgid "This expression cannot be passed by reference" msgstr "" #: MErrorMessage.module:182 -msgid "Too many array declarations" +msgid "Too many arguments" msgstr "" #: MErrorMessage.module:183 -msgid "Too many constants" +msgid "Too many arguments to &1()" msgstr "" #: MErrorMessage.module:184 -msgid "Too many different classes used" +msgid "Too many array declarations" msgstr "" #: MErrorMessage.module:185 -msgid "Too many dimensions" +msgid "Too many constants" msgstr "" #: MErrorMessage.module:186 -msgid "Too many dynamic variables" +msgid "Too many different classes used" msgstr "" #: MErrorMessage.module:187 -msgid "Too many events" +msgid "Too many dimensions" msgstr "" #: MErrorMessage.module:188 -msgid "Too many expressions in CASE" +msgid "Too many dynamic variables" msgstr "" #: MErrorMessage.module:189 -msgid "Too many external functions" +msgid "Too many events" msgstr "" #: MErrorMessage.module:190 -msgid "Too many functions" +msgid "Too many expressions in CASE" msgstr "" #: MErrorMessage.module:191 -msgid "Too many imbricated #If...#Endif" +msgid "Too many external functions" msgstr "" #: MErrorMessage.module:192 -msgid "Too many nested control structures." +msgid "Too many functions" msgstr "" #: MErrorMessage.module:193 -msgid "Too many simultaneous new strings" +msgid "Too many imbricated #If...#Endif" msgstr "" #: MErrorMessage.module:194 -msgid "Too many static variables" +msgid "Too many nested control structures." msgstr "" #: MErrorMessage.module:195 -msgid "Too many unknown symbols" +msgid "Too many simultaneous new strings" msgstr "" #: MErrorMessage.module:196 -msgid "Type mismatch" +msgid "Too many static variables" msgstr "" #: MErrorMessage.module:197 -msgid "Type mismatch: wanted &1, got &2 instead" +msgid "Too many unknown symbols" msgstr "" #: MErrorMessage.module:198 -msgid "Unexpected &1" +msgid "Type mismatch" msgstr "" #: MErrorMessage.module:199 -msgid "Unexpected end of line" +msgid "Type mismatch: wanted &1, got &2 instead" msgstr "" #: MErrorMessage.module:200 -msgid "Unexpected string" +msgid "Unexpected &1" msgstr "" #: MErrorMessage.module:201 -msgid "Unknown error" +msgid "Unexpected end of line" msgstr "" #: MErrorMessage.module:202 -msgid "Unknown event" +msgid "Unexpected string" msgstr "" #: MErrorMessage.module:203 -msgid "Unknown file extension" +msgid "Unknown error" msgstr "" #: MErrorMessage.module:204 -msgid "Unknown identifier: &1" +msgid "Unknown event" msgstr "" #: MErrorMessage.module:205 -msgid "Unknown operator" +msgid "Unknown file extension" msgstr "" #: MErrorMessage.module:206 -msgid "Unknown symbol '&1' in class '&2'" +msgid "Unknown identifier: &1" msgstr "" #: MErrorMessage.module:207 -msgid "Unsupported string conversion" +msgid "Unknown operator" msgstr "" #: MErrorMessage.module:208 -msgid "Useless LOCK" +msgid "Unknown symbol '&1' in class '&2'" msgstr "" #: MErrorMessage.module:209 -msgid "VarPtr() argument must be a dynamic, a static or a local variable" +msgid "Unsupported string conversion" msgstr "" #: MErrorMessage.module:210 -msgid "Void key" +msgid "Useless LOCK" msgstr "" #: MErrorMessage.module:211 +msgid "VarPtr() argument must be a dynamic, a static or a local variable" +msgstr "" + +#: MErrorMessage.module:212 +msgid "Void key" +msgstr "" + +#: MErrorMessage.module:213 msgid "Write error" msgstr "" @@ -5512,210 +5520,210 @@ msgstr "" msgid "Cannot open project file :\n" msgstr "" -#: Project.module:1257 +#: Project.module:1287 msgid "The following classes have circular inheritance:" msgstr "" -#: Project.module:1418 +#: Project.module:1448 msgid "read-only" msgstr "" -#: Project.module:1420 +#: Project.module:1450 msgid "ALPHA VERSION, USE AT YOUR OWN RISK! :-)" msgstr "" -#: Project.module:1675 +#: Project.module:1705 msgid "Loading &1..." msgstr "" -#: Project.module:1724 +#: Project.module:1754 msgid "Cannot open a binary file." msgstr "" -#: Project.module:1757 +#: Project.module:1787 msgid "Cannot open file." msgstr "" -#: Project.module:1815 +#: Project.module:1845 msgid "File not found!" msgstr "" -#: Project.module:1917 +#: Project.module:1947 msgid "first" msgstr "" -#: Project.module:1919 +#: Project.module:1949 msgid "second" msgstr "" -#: Project.module:1921 +#: Project.module:1951 msgid "third" msgstr "" -#: Project.module:1923 +#: Project.module:1953 msgid "&1th" msgstr "" -#: Project.module:1973 +#: Project.module:2003 msgid "in form definition" msgstr "" -#: Project.module:1980 +#: Project.module:2010 msgid "in &1." msgstr "" -#: Project.module:2134 +#: Project.module:2164 msgid "" "Some project source files are in conflict.\n" "Please solve them if you want to compile the project." msgstr "" -#: Project.module:2138 +#: Project.module:2168 msgid "Compiling project" msgstr "" -#: Project.module:2152 +#: Project.module:2182 msgid "Nothing to do." msgstr "" -#: Project.module:2351 +#: Project.module:2381 msgid "File already exists." msgstr "" -#: Project.module:2384 +#: Project.module:2414 msgid "Directory already exists." msgstr "" -#: Project.module:2396 +#: Project.module:2426 msgid "Cannot link template file." msgstr "" -#: Project.module:2402 +#: Project.module:2432 msgid "Cannot copy template file." msgstr "" -#: Project.module:2600 +#: Project.module:2630 msgid "Making executable..." msgstr "" -#: Project.module:2644 +#: Project.module:2674 msgid "Cannot make executable." msgstr "" -#: Project.module:2980 +#: Project.module:3010 msgid "Some components are missing: &1" msgstr "" -#: Project.module:3198 +#: Project.module:3228 msgid "Cannot write project file." msgstr "" -#: Project.module:3230 +#: Project.module:3260 msgid "Unable to create desktop shortcut." msgstr "" -#: Project.module:3476 +#: Project.module:3506 msgid "The directory will be removed at the next commit." msgstr "" -#: Project.module:3493 +#: Project.module:3523 msgid "You must define a startup class or form!" msgstr "" -#: Project.module:3524 +#: Project.module:3554 msgid "Please type a name." msgstr "" -#: Project.module:3528 +#: Project.module:3558 msgid "This name contains a forbidden character:" msgstr "" -#: Project.module:3532 +#: Project.module:3562 msgid "The name cannot begins with a dot." msgstr "" -#: Project.module:3536 +#: Project.module:3566 msgid "This name is already used. Choose another one." msgstr "" -#: Project.module:3566 +#: Project.module:3596 msgid "" "A class name must begin with a letter or an underscore, followed by any " "letter or digit." msgstr "" -#: Project.module:3614 +#: Project.module:3644 msgid "Destination already exists" msgstr "" -#: Project.module:3818 +#: Project.module:3848 msgid "Unable to rename '&1'" msgstr "" -#: Project.module:3934 +#: Project.module:3964 msgid "Please type a project name." msgstr "" -#: Project.module:3942 +#: Project.module:3972 msgid "The project name cannot begin with a dot." msgstr "" -#: Project.module:3945 +#: Project.module:3975 msgid "Non-ASCII characters are forbidden in a project name." msgstr "" -#: Project.module:3946 +#: Project.module:3976 msgid "" "The following characters are forbidden in a project name: ? * / \\ SPACE" msgstr "" -#: Project.module:3953 +#: Project.module:3983 msgid "This project already exists." msgstr "" -#: Project.module:3956 +#: Project.module:3986 msgid "The project directory already exists." msgstr "" -#: Project.module:3958 +#: Project.module:3988 msgid "" "The project directory cannot be created because a file with the same name " "already exists." msgstr "" -#: Project.module:4003 +#: Project.module:4033 msgid "Create source package" msgstr "" -#: Project.module:4004 +#: Project.module:4034 msgid "Source packages" msgstr "" -#: Project.module:4282 +#: Project.module:4312 msgid "Cannot copy file &1." msgstr "" -#: Project.module:4331 +#: Project.module:4361 msgid "Cannot create link &1." msgstr "" -#: Project.module:4348 +#: Project.module:4378 msgid "Cannot move a directory inside itself." msgstr "" -#: Project.module:4416 +#: Project.module:4446 msgid "Cannot move file &1." msgstr "" -#: Project.module:5102 +#: Project.module:5132 msgid "Project cleanup..." msgstr "" -#: Project.module:5108 +#: Project.module:5138 msgid "Project files conversion..." msgstr "" -#: Project.module:5136 +#: Project.module:5166 msgid "Unable to convert &1" msgstr "" diff --git a/app/src/gambas3/.lang/fr.mo b/app/src/gambas3/.lang/fr.mo index b2780cb1ce87d2adc715cfbf9780acc133fa7709..e02a626fd49573c398cfb9b7976233736aefdab0 100644 GIT binary patch delta 30165 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 on the OK button to create the packages.\n

Click on the Previous button if you had made a mistake.\n

Click on the Cancel button to cancel the operation.\n\n" msgstr "Toutes les informations nécessaires ont été collectées. Vous pouvez maintenant créer les paquetages d'installations de votre application...\n

Cliquez sur le bouton OK pour créer les paquetages.\n

Cliquez sur le bouton Précédent pour corriger une erreur.\n

Cliquez sur le bouton Annuler pour abandonner l'opération.\n\n" -#: Project.module:1420 +#: Project.module:1450 msgid "ALPHA VERSION, USE AT YOUR OWN RISK! :-)" msgstr "VERSION EN COURS DE DÉVELOPPEMENT, UTILISEZ-LA À VOS RISQUES ET PÉRILS ! :-)" @@ -807,11 +807,11 @@ msgstr "Impossible d'ajouter le fichier." msgid "Cannot change current directory to '&1': &2" msgstr "Impossible de changer le répertoire courant vers '&1': &2" -#: Project.module:4282 +#: Project.module:4312 msgid "Cannot copy file &1." msgstr "Impossible de copier le fichier &1." -#: Project.module:2402 +#: Project.module:2432 msgid "Cannot copy template file." msgstr "Impossible de copier le fichier modèle." @@ -831,7 +831,7 @@ msgstr "Impossible de créer le fichier des informations sur la classe: &1: &2" msgid "Cannot create file: &1" msgstr "Impossible de créer le fichier: &1" -#: Project.module:4331 +#: Project.module:4361 msgid "Cannot create link &1." msgstr "Impossible de créer le lien &1." @@ -879,7 +879,7 @@ msgstr "Impossible d'hériter deux fois" msgid "Cannot instantiate native types" msgstr "Impossible d'instancier les types natifs" -#: Project.module:2396 +#: Project.module:2426 msgid "Cannot link template file." msgstr "Impossible de créer le lien vers le fichier modèle." @@ -891,43 +891,47 @@ msgstr "Impossible de charger la classe '&1': &2&3" msgid "Cannot load component '&1': &2" msgstr "Impossible de charger le composant '&1': &2" -#: Project.module:2644 +#: MErrorMessage.module:59 +msgid "Cannot load source file: &1" +msgstr "Impossible de charger le fichier source: &1" + +#: Project.module:2674 msgid "Cannot make executable." msgstr "Impossible de créer l'exécutable." -#: MErrorMessage.module:59 +#: MErrorMessage.module:60 msgid "Cannot make executable: &1: &2" msgstr "Impossible de créer l'exécutable: &1: &2" -#: MErrorMessage.module:60 +#: MErrorMessage.module:61 msgid "Cannot mix NEW and embedded array" msgstr "Impossible de mélanger NEW et les tableaux incorporés" -#: MErrorMessage.module:61 +#: MErrorMessage.module:62 msgid "Cannot mix NEW and embedded structure" msgstr "Impossible de mélanger NEW et les structures incorporées" -#: Project.module:4348 +#: Project.module:4378 msgid "Cannot move a directory inside itself." msgstr "Impossible de déplacer un répertoire à l'intérieur de lui-même." -#: Project.module:4416 +#: Project.module:4446 msgid "Cannot move file &1." msgstr "Impossible de déplacer le fichier &1." -#: Project.module:1724 +#: Project.module:1754 msgid "Cannot open a binary file." msgstr "Impossible d'ouvrir un fichier binaire." -#: Project.module:1757 +#: Project.module:1787 msgid "Cannot open file." msgstr "Impossible d'ouvrir le fichier." -#: MErrorMessage.module:63 +#: MErrorMessage.module:64 msgid "Cannot open file: &1" msgstr "Imposible d'ouvrir le fichier: &1" -#: MErrorMessage.module:62 +#: MErrorMessage.module:63 msgid "Cannot open file '&1': &2" msgstr "Impossible d'ouvrir le fichier '&1': &2" @@ -935,15 +939,15 @@ msgstr "Impossible d'ouvrir le fichier '&1': &2" msgid "Cannot open project file :\n" msgstr "Impossible d'ouvrir le projet :\n" -#: MErrorMessage.module:64 +#: MErrorMessage.module:65 msgid "Cannot raise events in static function" msgstr "Impossible d'émettre des évènements depuis une fonction statique" -#: MErrorMessage.module:65 +#: MErrorMessage.module:66 msgid "Cannot read file: &1" msgstr "Impossible de lire le fichier: &1" -#: MErrorMessage.module:66 +#: MErrorMessage.module:67 msgid "Cannot read file: &1: &2" msgstr "Impossible de lire le fichier: &1: &2" @@ -951,15 +955,15 @@ msgstr "Impossible de lire le fichier: &1: &2" msgid "Cannot read translation file for language '&1'" msgstr "Impossible de lire le fichier de traduction pour la langue « &1 »" -#: MErrorMessage.module:67 +#: MErrorMessage.module:68 msgid "Cannot register class '&1'" msgstr "Impossible d'enregistrer la classe '&1'" -#: MErrorMessage.module:68 +#: MErrorMessage.module:69 msgid "Cannot remove file '&1': &2" msgstr "Impossible de supprimer le fichier '&1': &2" -#: MErrorMessage.module:69 +#: MErrorMessage.module:70 msgid "Cannot rename file '&1' to '&2': &3" msgstr "Impossible de renommer le fichier '&1' en '&2': &3" @@ -971,15 +975,15 @@ msgstr "Impossible d'enregistrer le fichier !" msgid "Cannot save translation." msgstr "Impossible de sauvegarder la traduction." -#: MErrorMessage.module:70 +#: MErrorMessage.module:71 msgid "Cannot set file owner: &1: &2" msgstr "Impossible de changer le propriétaire du fichier: &1: &2" -#: MErrorMessage.module:71 +#: MErrorMessage.module:72 msgid "Cannot use NEW operator there" msgstr "Impossible d'utiliser l'opérateur NEW ici" -#: MErrorMessage.module:72 +#: MErrorMessage.module:73 msgid "Cannot use TRY twice" msgstr "Impossible d'utiliser TRY deux fois" @@ -987,7 +991,7 @@ msgstr "Impossible d'utiliser TRY deux fois" msgid "Cannot write component description file." msgstr "Impossible d'écrire le fichier de description du composant." -#: Project.module:3198 +#: Project.module:3228 msgid "Cannot write project file." msgstr "Impossible d'écrire le fichier projet." @@ -1067,7 +1071,7 @@ msgstr "Classe" msgid "&Class..." msgstr "&Classe..." -#: MErrorMessage.module:73 +#: MErrorMessage.module:74 msgid "Class '&1' is not creatable" msgstr "La classe '&1' n'est pas instanciable" @@ -1203,7 +1207,7 @@ msgstr "&Envoyer..." msgid "Commit description" msgstr "Description de l'envoi" -#: MErrorMessage.module:74 +#: MErrorMessage.module:75 msgid "Comparison operator expected" msgstr "Opérateur de comparaison attendu" @@ -1227,7 +1231,7 @@ msgstr "Tout compiler" msgid "Compile &All" msgstr "&Tout Compiler" -#: Project.module:2138 +#: Project.module:2168 msgid "Compiling project" msgstr "Compilation du projet" @@ -1243,7 +1247,7 @@ msgstr "Avancement du composant" msgid "Component missing for control &1" msgstr "Composant introuvable pour le contrôle &1" -#: MErrorMessage.module:75 +#: MErrorMessage.module:76 msgid "Component not found: &1" msgstr "Composant introuvable: &1" @@ -1299,7 +1303,7 @@ msgstr "Editeur de connexion" msgid "Connection properties" msgstr "Propriétés de la connexion" -#: CProjectTree.class:296 Project.module:1517 +#: CProjectTree.class:296 Project.module:1547 msgid "Connections" msgstr "Connexions" @@ -1319,7 +1323,7 @@ msgstr "-" msgid "Constants" msgstr "Constantes" -#: Project.module:2981 +#: Project.module:3011 msgid "Continue" msgstr "Continuer" @@ -1391,7 +1395,7 @@ msgstr "Créer des répertoires pour chaque distribution" msgid "Create package" msgstr "Création du paquetage" -#: Project.module:4003 +#: Project.module:4033 msgid "Create source package" msgstr "Générer un package des sources du projet" @@ -1467,7 +1471,7 @@ msgstr "Tchèque (République Tchèque)" msgid "Danish (Denmark)" msgstr "Danois (Danemark)" -#: CProjectTree.class:305 Project.module:1526 +#: CProjectTree.class:305 Project.module:1556 msgid "Data" msgstr "Données" @@ -1511,7 +1515,7 @@ msgstr "&Débogage" msgid "Debugging" msgstr "Débogage" -#: FEditor.class:2795 +#: FEditor.class:2800 msgid "(Declarations)" msgstr "(Déclarations)" @@ -1587,7 +1591,7 @@ msgstr "Routines indépendantes du bureau du projet Portland" msgid "Destination" msgstr "Destination" -#: Project.module:3614 +#: Project.module:3644 msgid "Destination already exists" msgstr "La destination existe déjà." @@ -1599,7 +1603,7 @@ msgstr "Répertoire de destination" msgid "Details" msgstr "Détails" -#: MErrorMessage.module:76 +#: MErrorMessage.module:77 msgid "Device is full" msgstr "Périphérique plein" @@ -1615,7 +1619,7 @@ msgstr "Répertoire" msgid "&Directory" msgstr "&Répertoire" -#: Project.module:2384 +#: Project.module:2414 msgid "Directory already exists." msgstr "Le répertoire existe déja." @@ -1631,7 +1635,7 @@ msgstr "Afficher ME" msgid "Display property help" msgstr "Afficher l'aide des propriétés" -#: MErrorMessage.module:77 +#: MErrorMessage.module:78 msgid "Division by zero" msgstr "Division par zéro" @@ -1743,7 +1747,7 @@ msgstr "Hollandais (Belgique)" msgid "Dutch (Netherlands)" msgstr "Hollandais (Pays-bas)" -#: MErrorMessage.module:78 +#: MErrorMessage.module:79 msgid "Dynamic symbols cannot be used in static function" msgstr "Les symboles dynamiques ne peuvent être utilisées au sein d'une fonction statique" @@ -1799,11 +1803,11 @@ msgstr "Éditer avec" msgid "Ellipse" msgstr "Ellipse" -#: MErrorMessage.module:79 +#: MErrorMessage.module:80 msgid "Embedded array" msgstr "Tableau incorporé" -#: MErrorMessage.module:80 +#: MErrorMessage.module:81 msgid "Embedded arrays are forbidden here" msgstr "Les tableaux incorporés sont interdits ici" @@ -1819,7 +1823,7 @@ msgstr "-" msgid "Enclose character" msgstr "Caractère d'échappement" -#: MErrorMessage.module:81 +#: MErrorMessage.module:82 msgid "End of file" msgstr "Fin de fichier atteinte" @@ -1863,7 +1867,7 @@ msgstr "Environnement" msgid "Environment variables" msgstr "Variables d'environnement" -#: MErrorMessage.module:82 +#: MErrorMessage.module:83 msgid "Equality or inequality operator expected" msgstr "Opérateur d'égalité ou d'inégalité attendu" @@ -1971,11 +1975,11 @@ msgstr "Expression" msgid "Expression evaluator" msgstr "Evaluateur d'expressions" -#: MErrorMessage.module:83 +#: MErrorMessage.module:84 msgid "Expression too complex" msgstr "Expression trop complexe" -#: MErrorMessage.module:84 +#: MErrorMessage.module:85 msgid "Expression too complex. Too many operands" msgstr "Expression trop complexe. Trop d'opérandes" @@ -2023,19 +2027,19 @@ msgstr "Fichier" msgid "&File" msgstr "&Fichier" -#: MErrorMessage.module:85 +#: MErrorMessage.module:86 msgid "File already exists" msgstr "Le fichier existe déjà" -#: Project.module:2351 +#: Project.module:2381 msgid "File already exists." msgstr "Ce fichier existe déja." -#: MErrorMessage.module:86 +#: MErrorMessage.module:87 msgid "File is a directory" msgstr "Le fichier est un répertoire" -#: MErrorMessage.module:87 +#: MErrorMessage.module:88 msgid "File is locked" msgstr "Le fichier est verrouillé" @@ -2043,15 +2047,15 @@ msgstr "Le fichier est verrouillé" msgid "File name" msgstr "Nom de fichier" -#: MErrorMessage.module:88 +#: MErrorMessage.module:89 msgid "File name is too long" msgstr "Le nom de fichier est trop long" -#: Project.module:1815 +#: Project.module:1845 msgid "File not found!" msgstr "Fichier introuvable !" -#: MErrorMessage.module:89 +#: MErrorMessage.module:90 msgid "File or directory does not exist" msgstr "Le fichier ou le répertoire n'existe pas" @@ -2115,7 +2119,7 @@ msgstr "-" msgid "Firebird database driver" msgstr "Pilote de base de données Firebird" -#: Project.module:1917 +#: Project.module:1947 msgid "first" msgstr "premier" @@ -2151,7 +2155,7 @@ msgstr "Le nom du groupe contient des caractères interdits." msgid "Forbidden characters in control name." msgstr "Le nom du contrôle contient des caractères interdits." -#: MErrorMessage.module:90 +#: MErrorMessage.module:91 msgid "Forbidden GOTO" msgstr "GOTO interdit" @@ -2511,7 +2515,7 @@ msgstr "Ignorer les premières lignes" msgid "&Ignore strings" msgstr "&Ignorer les chaînes" -#: MErrorMessage.module:91 +#: MErrorMessage.module:92 msgid "Illegal instruction" msgstr "Instruction illégale" @@ -2595,11 +2599,11 @@ msgstr "Importer un thème" msgid "in" msgstr "-" -#: Project.module:1980 +#: Project.module:2010 msgid "in &1." msgstr "dans &1." -#: Design.module:219 Project.module:1977 +#: Design.module:219 Project.module:2007 msgid "in &1:&2." msgstr "dans &1:&2." @@ -2639,7 +2643,7 @@ msgstr "Indonésien (Indonésie)" msgid "Information" msgstr "Information" -#: Project.module:1973 +#: Project.module:2003 msgid "in form definition" msgstr "dans la définition du formulaire" @@ -2687,7 +2691,7 @@ msgstr "Environnement de développement intégré pour Gambas" msgid "Interface" msgstr "Interface" -#: MErrorMessage.module:92 +#: MErrorMessage.module:93 msgid "Internal compiler error: Bad stack usage computed!" msgstr "Erreur interne du compilateur : calcul incorrect de la quantité de pile utilisée !" @@ -2699,19 +2703,19 @@ msgstr "Classes natives internes" msgid "Internationalization" msgstr "Internationalisation" -#: MErrorMessage.module:93 +#: MErrorMessage.module:94 msgid "Invalid assignment" msgstr "Affectation invalide" -#: MErrorMessage.module:94 +#: MErrorMessage.module:95 msgid "Invalid date" msgstr "Date invalide" -#: MErrorMessage.module:95 +#: MErrorMessage.module:96 msgid "Invalid object" msgstr "Object invalide" -#: MErrorMessage.module:96 +#: MErrorMessage.module:97 msgid "Invalid path" msgstr "Chemin invalide" @@ -2783,7 +2787,7 @@ msgstr "Khmer (Cambodge)" msgid "Korean (Korea)" msgstr "Coréen (Corée)" -#: MErrorMessage.module:97 +#: MErrorMessage.module:98 msgid "Label '&1' not declared" msgstr "L'étiquette '&1' n'est pas déclarée" @@ -2819,7 +2823,7 @@ msgstr "-" msgid "Libraries" msgstr "Bibliothèques" -#: MErrorMessage.module:98 +#: MErrorMessage.module:99 msgid "Library name must be a string" msgstr "Le nom de la bibliothèque doit être une chaîne de caractères" @@ -2851,7 +2855,7 @@ msgstr "Lien vers" msgid "Lithuanian (Lithuania)" msgstr "Lithuanien (Lithuanie)" -#: Project.module:1675 +#: Project.module:1705 msgid "Loading &1..." msgstr "Chargement de &1..." @@ -2879,11 +2883,11 @@ msgstr "Verrouiller la propriété" msgid "Long" msgstr "Entier long" -#: MErrorMessage.module:99 +#: MErrorMessage.module:100 msgid "Loop variable already in use" msgstr "Variable de boucle déjà utilisée" -#: MErrorMessage.module:100 +#: MErrorMessage.module:101 msgid "Loop variable must be local" msgstr "La variable de boucle doit être une variable locale" @@ -2931,7 +2935,7 @@ msgstr "Générer une archive des sources" msgid "Making build directory." msgstr "Fabrication du répertoire de construction." -#: Project.module:2600 +#: Project.module:2630 msgid "Making executable..." msgstr "Génération de l'exécutable..." @@ -2943,7 +2947,7 @@ msgstr "Malayalam (Inde)" msgid "Mandriva Linux" msgstr "-" -#: MErrorMessage.module:102 +#: MErrorMessage.module:103 msgid "Mathematic error" msgstr "Erreur mathématique" @@ -2955,7 +2959,7 @@ msgstr "Version max." msgid "MD5/DES crypting" msgstr "Chiffrement MD5/DES" -#: MErrorMessage.module:101 +#: MErrorMessage.module:102 msgid "ME cannot be used in a static function" msgstr "ME ne peut être utilisé au sein d'une fonction statique" @@ -3007,19 +3011,19 @@ msgstr "Version min." msgid "Miscellaneous" msgstr "Divers" -#: MErrorMessage.module:104 +#: MErrorMessage.module:105 msgid "Missing &1" msgstr "&1 manquant" -#: MErrorMessage.module:103 +#: MErrorMessage.module:104 msgid "Missing #Endif" msgstr "#Endif manquant" -#: MErrorMessage.module:105 +#: MErrorMessage.module:106 msgid "Missing operator" msgstr "Opérateur manquant" -#: MErrorMessage.module:106 +#: MErrorMessage.module:107 msgid "Missing right brace" msgstr "Parenthèse fermante manquante" @@ -3027,7 +3031,7 @@ msgstr "Parenthèse fermante manquante" msgid "mm" msgstr "-" -#: FMenu.class:928 Project.module:4954 +#: FMenu.class:928 Project.module:4984 msgid "modified" msgstr "modifié" @@ -3135,7 +3139,7 @@ msgstr "Nouveau" msgid "&New..." msgstr "&Nouveau..." -#: MErrorMessage.module:107 +#: MErrorMessage.module:108 msgid "NEW cannot have arguments passed by reference" msgstr "Les arguments de NEW ne peuvent être passés par référence" @@ -3203,11 +3207,11 @@ msgstr "Aucun élément" msgid "No help found." msgstr "Aide introuvable." -#: MErrorMessage.module:108 +#: MErrorMessage.module:109 msgid "No instantiation method" msgstr "Aucune méthode d'instanciation" -#: Project.module:3945 +#: Project.module:3975 msgid "Non-ASCII characters are forbidden in a project name." msgstr "Un nom de projet ne peut contenir que des caractères ASCII." @@ -3219,7 +3223,7 @@ msgstr "Aucun" msgid "Non-free License" msgstr "-" -#: MErrorMessage.module:112 +#: MErrorMessage.module:113 msgid "Non terminated string" msgstr "Chaîne de caractères non terminée" @@ -3227,7 +3231,7 @@ msgstr "Chaîne de caractères non terminée" msgid "(No parent)" msgstr "(Aucune)" -#: MErrorMessage.module:109 +#: MErrorMessage.module:110 msgid "No parent class" msgstr "Classe parente introuvable" @@ -3235,7 +3239,7 @@ msgstr "Classe parente introuvable" msgid "No record imported." msgstr "Aucun enregistrement importé." -#: MErrorMessage.module:110 +#: MErrorMessage.module:111 msgid "No return value" msgstr "Aucune valeur de retour" @@ -3255,27 +3259,27 @@ msgstr "Norvégien (Norvège)" msgid "No split" msgstr "Affichage complet" -#: MErrorMessage.module:111 +#: MErrorMessage.module:112 msgid "No startup method" msgstr "Méthode de démarrage introuvable" -#: MErrorMessage.module:113 +#: MErrorMessage.module:114 msgid "Not a directory: &1" msgstr "'&1' n'est pas un répertoire" -#: MErrorMessage.module:114 +#: MErrorMessage.module:115 msgid "Not a function" msgstr "Fonction attendue" -#: MErrorMessage.module:115 +#: MErrorMessage.module:116 msgid "Not an array" msgstr "Tableau attendu" -#: MErrorMessage.module:116 +#: MErrorMessage.module:117 msgid "Not an enumeration" msgstr "Enumération attendue" -#: MErrorMessage.module:117 +#: MErrorMessage.module:118 msgid "Not an object" msgstr "Objet attendu" @@ -3283,15 +3287,15 @@ msgstr "Objet attendu" msgid "not available" msgstr "non disponible" -#: MErrorMessage.module:119 +#: MErrorMessage.module:120 msgid "Not enough arguments" msgstr "Pas assez d'arguments" -#: MErrorMessage.module:120 +#: MErrorMessage.module:121 msgid "Not enough arguments to &1()" msgstr "Pas assez d'arguments à &1()" -#: MErrorMessage.module:118 +#: MErrorMessage.module:119 msgid "Not enough argument to New()" msgstr "Pas assez d'arguments à New()" @@ -3307,7 +3311,7 @@ msgstr "Aucun émulateur de terminal n'a été trouvé." msgid "Not finished but stable" msgstr "Non terminé mais stable" -#: Project.module:2152 +#: Project.module:2182 msgid "Nothing to do." msgstr "Rien à faire." @@ -3323,7 +3327,7 @@ msgstr "Non traduisible" msgid "No zoom" msgstr "Taille normale" -#: MErrorMessage.module:121 +#: MErrorMessage.module:122 msgid "Null object" msgstr "Référence d'objet NULL" @@ -3467,15 +3471,15 @@ msgstr "&Autre..." msgid "Other License(s)" msgstr "-" -#: MErrorMessage.module:122 +#: MErrorMessage.module:123 msgid "Out of bounds" msgstr "Dépassement de tableau" -#: MErrorMessage.module:123 +#: MErrorMessage.module:124 msgid "Out of memory" msgstr "Mémoire pleine" -#: MErrorMessage.module:124 +#: MErrorMessage.module:125 msgid "Out of range" msgstr "Dépassement de capacité" @@ -3483,7 +3487,7 @@ msgstr "Dépassement de capacité" msgid "Output terminal" msgstr "Terminal de sortie" -#: MErrorMessage.module:125 +#: MErrorMessage.module:126 msgid "Overflow" msgstr "Dépassement de capacité" @@ -3671,11 +3675,11 @@ msgstr "Veuillez saisir votre nom." msgid "Please select the translation file to import." msgstr "Veuillez sélectionner le fichier de traduction à importer." -#: Project.module:3524 +#: Project.module:3554 msgid "Please type a name." msgstr "Veuillez saisir un nom." -#: Project.module:3934 +#: Project.module:3964 msgid "Please type a project name." msgstr "Veuillez saisir un nom de projet." @@ -3747,7 +3751,7 @@ msgstr "Liste des procédures" msgid "Procedure separation" msgstr "Séparation des procédures" -#: Project.module:1511 +#: Project.module:1541 msgid "Project" msgstr "Projet" @@ -3763,7 +3767,7 @@ msgstr "Pro&jet" msgid "Project checkout has failed." msgstr "La récupération du projet a échoué." -#: Project.module:5102 +#: Project.module:5132 msgid "Project cleanup..." msgstr "Nettoyage du projet..." @@ -3775,7 +3779,7 @@ msgstr "Envoi du projet" msgid "Project directory" msgstr "Répertoire du projet" -#: Project.module:5108 +#: Project.module:5138 msgid "Project files conversion..." msgstr "Conversion des fichiers du projet..." @@ -3895,11 +3899,11 @@ msgstr "Dégradé circulaire" msgid "Radius" msgstr "Rayon" -#: MErrorMessage.module:126 +#: MErrorMessage.module:127 msgid "Read error" msgstr "Erreur de lecture" -#: Project.module:1418 +#: Project.module:1448 msgid "read-only" msgstr "lecture seule" @@ -4067,7 +4071,7 @@ msgstr "Résoudre le conflit avec" msgid "Retry" msgstr "Recommencer" -#: MErrorMessage.module:127 +#: MErrorMessage.module:128 msgid "Return value datatype not specified in function declaration" msgstr "Le type de la valeur de retour n'a pas été spécifié dans la déclaration de la fonction" @@ -4251,7 +4255,7 @@ msgstr "La chaîne de caractères a été remplacée &1 fois." msgid "Search string replaced once." msgstr "La chaîne de caractères recherchée à été remplacée une fois." -#: Project.module:1919 +#: Project.module:1949 msgid "second" msgstr "deuxième" @@ -4339,7 +4343,7 @@ msgstr "Serbe (Serbie & Montenegro)" msgid "Serial" msgstr "Série" -#: MErrorMessage.module:130 +#: MErrorMessage.module:131 msgid "Serialization error" msgstr "Erreur de sérialisation" @@ -4443,7 +4447,7 @@ msgstr "Le pas de la grille est incorrecte." msgid "Sol&ve" msgstr "&Résoudre" -#: Project.module:2980 +#: Project.module:3010 msgid "Some components are missing: &1" msgstr "Certains composants ne sont pas installés: &1" @@ -4455,7 +4459,7 @@ msgstr "Tous les conflits ne sont pas résolus." msgid "Some files are not versioned and should be added manually to the repository." msgstr "Certains fichiers ne sont pas versionnés et doivent être ajoutés manuellement au référentiel." -#: Project.module:2134 +#: Project.module:2164 msgid "Some project source files are in conflict.\nPlease solve them if you want to compile the project." msgstr "Certains fichiers sources du projet sont en conflit.\nVeuillez résoudre ces conflits pour pouvoir compiler le projet." @@ -4499,11 +4503,11 @@ msgstr "Archive des fichiers &source..." msgid "&Source files" msgstr "Fichiers &sources" -#: Project.module:4004 +#: Project.module:4034 msgid "Source packages" msgstr "Paquetages sources" -#: CProjectTree.class:293 Project.module:1514 +#: CProjectTree.class:293 Project.module:1544 msgid "Sources" msgstr "Sources" @@ -4547,7 +4551,7 @@ msgstr "Requête SQL" msgid "Stack backtrace" msgstr "État de la pile" -#: MErrorMessage.module:131 +#: MErrorMessage.module:132 msgid "Stack overflow" msgstr "Débordement de pile" @@ -4587,11 +4591,11 @@ msgstr "Arrêter" msgid "&Stop" msgstr "&Stop" -#: MErrorMessage.module:128 +#: MErrorMessage.module:129 msgid "STOP instruction encountered" msgstr "Instruction STOP rencontrée" -#: MErrorMessage.module:132 +#: MErrorMessage.module:133 msgid "Stream is closed" msgstr "Flux déjà fermé" @@ -4599,7 +4603,7 @@ msgstr "Flux déjà fermé" msgid "String" msgstr "Chaîne" -#: MErrorMessage.module:133 +#: MErrorMessage.module:134 msgid "String expected" msgstr "Chaîne de caractères attendue" @@ -4611,7 +4615,7 @@ msgstr "Chaînes" msgid "Strip useless white spaces" msgstr "Supprimer les espaces inutiles" -#: MErrorMessage.module:134 +#: MErrorMessage.module:135 msgid "Structures must be public" msgstr "Les structures doivent être publiques" @@ -4627,7 +4631,7 @@ msgstr "&Feuille de style..." msgid "Style sheet" msgstr "Feuille de style" -#: MErrorMessage.module:135 +#: MErrorMessage.module:136 msgid "Subroutine arguments cannot be passed by reference" msgstr "Les arguments des routines prédéfinies ne peuvent être passées par référence" @@ -4635,7 +4639,7 @@ msgstr "Les arguments des routines prédéfinies ne peuvent être passées par r msgid "Subroutines" msgstr "Routines" -#: MErrorMessage.module:129 +#: MErrorMessage.module:130 msgid "SUPER cannot be used alone" msgstr "SUPER ne peut être utilisé seul" @@ -4663,107 +4667,107 @@ msgstr "Symboles" msgid "Synchronize" msgstr "Synchroniser" -#: MErrorMessage.module:136 +#: MErrorMessage.module:137 msgid "Syntax error" msgstr "Erreur de syntaxe" -#: MErrorMessage.module:141 +#: MErrorMessage.module:142 msgid "Syntax error. &1 expected" msgstr "Erreur de syntaxe. &1 attendu" -#: MErrorMessage.module:137 +#: MErrorMessage.module:138 msgid "Syntax error at function declaration" msgstr "Erreur de syntaxe dans la déclaration de fonction" -#: MErrorMessage.module:143 +#: MErrorMessage.module:144 msgid "Syntax error. Bad property type" msgstr "Erreur de syntaxe. Type de propriété incorrect" -#: MErrorMessage.module:146 +#: MErrorMessage.module:147 msgid "Syntax error. Cannot use this syntax in assignment" msgstr "Erreur de syntaxe. Impossible d'utiliser cette syntaxe au sein d'une affection" -#: MErrorMessage.module:144 +#: MErrorMessage.module:145 msgid "Syntax error. CASE or DEFAULT expected after SELECT" msgstr "Erreur de syntaxe. CASE ou DEFAULT attendu après SELECT" -#: MErrorMessage.module:145 +#: MErrorMessage.module:146 msgid "Syntax error. CLASS needs an identifier" msgstr "Erreur de syntaxe. CLASS doit être suivi d'un identificateur" -#: MErrorMessage.module:148 +#: MErrorMessage.module:149 msgid "Syntax error. Identifier expected." msgstr "Erreur de syntaxe. Identificateur attendu." -#: MErrorMessage.module:138 +#: MErrorMessage.module:139 msgid "Syntax error in event name" msgstr "Erreur de syntaxe dans le nom d'évènement" -#: MErrorMessage.module:139 +#: MErrorMessage.module:140 msgid "Syntax error in file open mode" msgstr "Erreur de syntaxe dans le mode d'ouverture du fichier" -#: MErrorMessage.module:147 +#: MErrorMessage.module:148 msgid "Syntax error. INHERITS needs a class name" msgstr "Erreur de syntaxe. INHERITS doit être suivi d'un nom de classe" -#: MErrorMessage.module:140 +#: MErrorMessage.module:141 msgid "Syntax error in return type" msgstr "Erreur de syntaxe dans le type de retour" -#: MErrorMessage.module:149 +#: MErrorMessage.module:150 msgid "Syntax error. Invalid identifier in function name" msgstr "Erreur de syntaxe. Le nom de fonction est un identificateur invalide" -#: MErrorMessage.module:150 +#: MErrorMessage.module:151 msgid "Syntax error. Invalid identifier in property name" msgstr "Erreur de syntaxe. Le nom de la propriété est un identificateur invalide" -#: MErrorMessage.module:151 +#: MErrorMessage.module:152 msgid "Syntax error. Invalid optional parameter" msgstr "Erreur de syntaxe. Paramètre optionnel invalide" -#: MErrorMessage.module:152 +#: MErrorMessage.module:153 msgid "Syntax error. Invalid return type" msgstr "Erreur de syntaxe. Type de retour invalide" -#: MErrorMessage.module:153 +#: MErrorMessage.module:154 msgid "Syntax error. Invalid type description of &1 argument" msgstr "Erreur de syntaxe. Description du type du &1 argument incorrecte" -#: MErrorMessage.module:154 +#: MErrorMessage.module:155 msgid "Syntax error. Invalid type description of &1 field" msgstr "Erreur de syntaxe. Description du type du &1 champ incorrecte." -#: MErrorMessage.module:155 +#: MErrorMessage.module:156 msgid "Syntax error. Missing &1" msgstr "Erreur de syntaxe. &1 manquant" -#: MErrorMessage.module:142 +#: MErrorMessage.module:143 msgid "Syntax error. '...' must be the last argument" msgstr "Erreur de syntaxe. '...' doit être le dernier argument" -#: MErrorMessage.module:156 +#: MErrorMessage.module:157 msgid "Syntax error. Needless arguments" msgstr "Erreur de syntaxe. Argument inutile" -#: MErrorMessage.module:157 +#: MErrorMessage.module:158 msgid "Syntax error. Point syntax used outside of WITH / END WITH" msgstr "Erreur de syntaxe. Une expression ne peut commencer par un point en dehors d'un bloc WITH / END WITH" -#: MErrorMessage.module:158 +#: MErrorMessage.module:159 msgid "Syntax error. STRUCT needs an identifier" msgstr "Erreur de syntaxe. STRUCT doit être suivi d'un identificateur." -#: MErrorMessage.module:159 +#: MErrorMessage.module:160 msgid "Syntax error. The &1 argument is not a valid identifier" msgstr "Erreur de syntaxe. Le &1 argument n'est pas un identificateur valide." -#: MErrorMessage.module:160 +#: MErrorMessage.module:161 msgid "Syntax error. The &1 field is not a valid identifier" msgstr "Erreur de syntaxe. Le &1 champ n'est pas un identificateur valide." -#: MErrorMessage.module:161 +#: MErrorMessage.module:162 msgid "Syntax error. VarPtr() takes only one identifier" msgstr "Erreur de syntaxe. VarPtr() ne prend qu'un seul identificateur." @@ -4775,7 +4779,7 @@ msgstr "Routines de coloration syntaxique" msgid "System" msgstr "Système" -#: MErrorMessage.module:162 +#: MErrorMessage.module:163 msgid "System error #&1: &2" msgstr "Erreur système n°&1: &2" @@ -4847,7 +4851,7 @@ msgstr "Le composant &1 nécessite un des composants suivants:
&2." msgid "The &1 component needs the &2 component." msgstr "Le composant &1 nécessite le composant &2." -#: Project.module:3476 +#: Project.module:3506 msgid "The directory will be removed at the next commit." msgstr "Le répertoire sera supprimé au prochain 'commit'." @@ -4867,7 +4871,7 @@ msgstr "Le fichier a été modifié.\nDésirez-vous réellement fermer la boite msgid "The file has been modified.\nDo you really want to open another file?" msgstr "Le fichier a été modifié.\nDésirez-vous réellement ouvrir un autre fichier ?" -#: FEditor.class:2367 FIconEditor.class:2046 FTextEditor.class:495 +#: FEditor.class:2372 FIconEditor.class:2046 FTextEditor.class:495 msgid "The file has been modified.\n\nAll your changes will be lost." msgstr "Le fichier a été modifié.\n\nToutes les modifications seront perdues." @@ -4875,11 +4879,11 @@ msgstr "Le fichier a été modifié.\n\nToutes les modifications seront perdues. msgid "The first line contains field names" msgstr "La première ligne contient les noms des champs" -#: Project.module:3946 +#: Project.module:3976 msgid "The following characters are forbidden in a project name: ? * / \\ SPACE" msgstr "Les caractères suivants sont interdits dans un nom de projet : ? * / \\ ESPACE" -#: Project.module:1257 +#: Project.module:1287 msgid "The following classes have circular inheritance:" msgstr "Les classes suivantes ont un héritage circulaire :" @@ -4911,7 +4915,7 @@ msgstr "Thème" msgid "The 'msgmerge' command has failed" msgstr "La commande 'msgmerge' a échoué" -#: Project.module:3532 +#: Project.module:3562 msgid "The name cannot begins with a dot." msgstr "Le nom ne peut pas commencer par un point." @@ -4919,11 +4923,11 @@ msgstr "Le nom ne peut pas commencer par un point." msgid "The name of the control." msgstr "Le nom du controle." -#: MErrorMessage.module:163 +#: MErrorMessage.module:164 msgid "The '!' operator must be followed by an identifier" msgstr "L'opérateur '!' doit être suivi d'un identificateur" -#: MErrorMessage.module:164 +#: MErrorMessage.module:165 msgid "The '.' operator must be followed by an identifier" msgstr "L'opérateur '.' doit être suivi d'un identificateur" @@ -4951,11 +4955,11 @@ msgstr "Le programme s'est arrêté de manière inattendue\nen déclenchant le s msgid "The project could not be committed." msgstr "Le projet n'a pu être envoyé." -#: Project.module:3956 +#: Project.module:3986 msgid "The project directory already exists." msgstr "Le répertoire du projet existe déjà." -#: Project.module:3958 +#: Project.module:3988 msgid "The project directory cannot be created because a file with the same name already exists." msgstr "Le répertoire du projet ne peut être créé car un fichier avec le même nom existe déjà." @@ -4967,7 +4971,7 @@ msgstr "Le projet a été créé avec succès." msgid "The project is void. There is nothing to translate." msgstr "Le projet est vide. Il n'y a rien à traduire." -#: Project.module:3942 +#: Project.module:3972 msgid "The project name cannot begin with a dot." msgstr "Un nom de projet ne peut commencer par un point." @@ -4983,55 +4987,59 @@ msgstr "Il n'y aucun changement à envoyer." msgid "These components are incompatible:
&1." msgstr "Ces composants sont incompatibles entre eux:
&1." -#: MErrorMessage.module:165 +#: MErrorMessage.module:166 msgid "The special method &1 cannot be a function" msgstr "La méthode spéciale &1 ne peut être une fonction" -#: MErrorMessage.module:166 +#: MErrorMessage.module:167 msgid "The special method &1 cannot be implemented" msgstr "La méthode spéciale &1 ne peut être implémentée" -#: MErrorMessage.module:167 +#: MErrorMessage.module:168 msgid "The special method &1 cannot be static" msgstr "La méthode spéciale &1 ne peut être statique" -#: MErrorMessage.module:168 +#: MErrorMessage.module:169 msgid "The special method &1 must be a function" msgstr "La méthode spéciale &1 doit être une fonction" -#: MErrorMessage.module:169 +#: MErrorMessage.module:170 msgid "The special method &1 must be public" msgstr "La méthode spéciale &1 doit être publique" -#: MErrorMessage.module:170 +#: MErrorMessage.module:171 msgid "The special method &1 must be static" msgstr "La méthode spéciale &1 doit être statique" #: MErrorMessage.module:172 +msgid "The special method &1 must return a boolean" +msgstr "La méthode spéciale &1 doit retourner un Boolean" + +#: MErrorMessage.module:174 msgid "The special method &1 must take at least one argument" msgstr "La méthode spéciale &1 doit prendre au moins un argument" -#: MErrorMessage.module:171 +#: MErrorMessage.module:173 msgid "The special method &1 must take a variable number of arguments only" msgstr "La méthode spéciale &1 doit prendre un nombre variable d'arguments" -#: MErrorMessage.module:173 +#: MErrorMessage.module:175 msgid "The special method &1 takes no arguments" msgstr "La méthode spéciale &1 ne prend pas d'arguments" -#: MErrorMessage.module:174 +#: MErrorMessage.module:176 msgid "The special method must return an integer" msgstr "La méthode spéciale &1 doit retourner un Integer" -#: MErrorMessage.module:175 +#: MErrorMessage.module:177 msgid "The special method must take exactly one argument" msgstr "La méthode spéciale &1 doit prendre un argument et un seul" -#: MErrorMessage.module:176 +#: MErrorMessage.module:178 msgid "The special method must take exactly two arguments" msgstr "La méthode spéciale &1 doit prendre deux arguments exactement" -#: MErrorMessage.module:177 +#: MErrorMessage.module:179 msgid "The special method signature is incorrect" msgstr "La signature de la méthode spéciale &1 est incorrecte" @@ -5043,7 +5051,7 @@ msgstr "La table « &1 » a été modifiée. Voulez-vous l'enregistrer ?" msgid "The table '&1' has no primary key." msgstr "La table « &1 » n'a pas de clef primaire." -#: Project.module:1921 +#: Project.module:1951 msgid "third" msgstr "troisième" @@ -5063,11 +5071,11 @@ msgstr "Cette classe est instanciable.
" msgid "This component is hidden" msgstr "Ce composant est caché" -#: MErrorMessage.module:178 +#: MErrorMessage.module:180 msgid "This expression cannot be a statement" msgstr "Cette expression ne peut être une instruction" -#: MErrorMessage.module:179 +#: MErrorMessage.module:181 msgid "This expression cannot be passed by reference" msgstr "Cette expression ne peut pas être passée par référence" @@ -5127,7 +5135,7 @@ msgstr "Ce mois-ci" msgid "This name already exists." msgstr "Ce nom existe déjà." -#: Project.module:3528 +#: Project.module:3558 msgid "This name contains a forbidden character:" msgstr "Ce nom contient un caractère interdit:" @@ -5139,7 +5147,7 @@ msgstr "Ce nom de contrôle est déjà utilisé." msgid "This name is already in used." msgstr "Ce nom est déjà utilisé." -#: Project.module:3536 +#: Project.module:3566 msgid "This name is already used. Choose another one." msgstr "Ce nom est déjà utilisé. Choisissez-en un autre." @@ -5147,7 +5155,7 @@ msgstr "Ce nom est déjà utilisé. Choisissez-en un autre." msgid "This program is published under\nthe GNU General Public License." msgstr "Ce programme est publié sous\nla Licence Publique Générale GNU" -#: Project.module:3953 +#: Project.module:3983 msgid "This project already exists." msgstr "Ce projet existe déjà." @@ -5235,67 +5243,67 @@ msgstr "Taille de la boîte à outils" msgid "&Tools" msgstr "&Outils" -#: MErrorMessage.module:180 +#: MErrorMessage.module:182 msgid "Too many arguments" msgstr "Trop d'arguments" -#: MErrorMessage.module:181 +#: MErrorMessage.module:183 msgid "Too many arguments to &1()" msgstr "Trop d'arguments à &1()" -#: MErrorMessage.module:182 +#: MErrorMessage.module:184 msgid "Too many array declarations" msgstr "Trop de déclarations de tableaux" -#: MErrorMessage.module:183 +#: MErrorMessage.module:185 msgid "Too many constants" msgstr "Trop de constantes" -#: MErrorMessage.module:184 +#: MErrorMessage.module:186 msgid "Too many different classes used" msgstr "Trop de classes différentes utilisées" -#: MErrorMessage.module:185 +#: MErrorMessage.module:187 msgid "Too many dimensions" msgstr "Trop de dimensions" -#: MErrorMessage.module:186 +#: MErrorMessage.module:188 msgid "Too many dynamic variables" msgstr "Trop de variables dynamiques" -#: MErrorMessage.module:187 +#: MErrorMessage.module:189 msgid "Too many events" msgstr "Trop d'évènements" -#: MErrorMessage.module:188 +#: MErrorMessage.module:190 msgid "Too many expressions in CASE" msgstr "Trop d'expressions dans CASE" -#: MErrorMessage.module:189 +#: MErrorMessage.module:191 msgid "Too many external functions" msgstr "Trop de fonctions externes" -#: MErrorMessage.module:190 +#: MErrorMessage.module:192 msgid "Too many functions" msgstr "Trop de fonctions" -#: MErrorMessage.module:191 +#: MErrorMessage.module:193 msgid "Too many imbricated #If...#Endif" msgstr "Trop d'imbrications de #If...#Endif" -#: MErrorMessage.module:192 +#: MErrorMessage.module:194 msgid "Too many nested control structures." msgstr "Trop de structure de contrôles imbriquées" -#: MErrorMessage.module:193 +#: MErrorMessage.module:195 msgid "Too many simultaneous new strings" msgstr "Trop de créations simultanées de chaînes de caractères" -#: MErrorMessage.module:194 +#: MErrorMessage.module:196 msgid "Too many static variables" msgstr "Trop de variables statiques" -#: MErrorMessage.module:195 +#: MErrorMessage.module:197 msgid "Too many unknown symbols" msgstr "Trop de symboles inconnus" @@ -5355,7 +5363,7 @@ msgstr "Avant-hier" msgid "Type" msgstr "Type" -#: MErrorMessage.module:196 +#: MErrorMessage.module:198 msgid "Type mismatch" msgstr "Type incorrect" @@ -5363,7 +5371,7 @@ msgstr "Type incorrect" msgid "Type mismatch." msgstr "Type de données incorrect." -#: MErrorMessage.module:197 +#: MErrorMessage.module:199 msgid "Type mismatch: wanted &1, got &2 instead" msgstr "Type incorrect: &1 attendu à la place de &2" @@ -5387,7 +5395,7 @@ msgstr "Impossible de compresser le fichier." msgid "Unable to connect to database." msgstr "Impossible de se connecter à la base de données." -#: Project.module:5136 +#: Project.module:5166 msgid "Unable to convert &1" msgstr "Impossible de convertir &1" @@ -5395,7 +5403,7 @@ msgstr "Impossible de convertir &1" msgid "Unable to create database." msgstr "Impossible de créer la base de données." -#: Project.module:3230 +#: Project.module:3260 msgid "Unable to create desktop shortcut." msgstr "Imposible de créer le raccourci sur le bureau." @@ -5435,7 +5443,7 @@ msgstr "Impossible de coller le texte." msgid "Unable to read tip of the day !" msgstr "Impossible de lire l'astuce du jour !" -#: Project.module:3818 +#: Project.module:3848 msgid "Unable to rename '&1'" msgstr "Impossible de renommer « &1 »" @@ -5479,15 +5487,15 @@ msgstr "&Annuler" msgid "Undock console" msgstr "Console flottante" -#: MErrorMessage.module:198 +#: MErrorMessage.module:200 msgid "Unexpected &1" msgstr "&1 inattendu" -#: MErrorMessage.module:199 +#: MErrorMessage.module:201 msgid "Unexpected end of line" msgstr "Fin de ligne inattendue" -#: MErrorMessage.module:200 +#: MErrorMessage.module:202 msgid "Unexpected string" msgstr "Chaîne de caractères inattendue" @@ -5507,15 +5515,15 @@ msgstr "-" msgid "Unknown" msgstr "Inconnu" -#: MErrorMessage.module:201 +#: MErrorMessage.module:203 msgid "Unknown error" msgstr "Erreur inconnue" -#: MErrorMessage.module:202 +#: MErrorMessage.module:204 msgid "Unknown event" msgstr "Evènement inconnu" -#: MErrorMessage.module:203 +#: MErrorMessage.module:205 msgid "Unknown file extension" msgstr "Extension de fichier inconnue" @@ -5523,15 +5531,15 @@ msgstr "Extension de fichier inconnue" msgid "Unknown format" msgstr "Format inconnu" -#: MErrorMessage.module:204 +#: MErrorMessage.module:206 msgid "Unknown identifier: &1" msgstr "Identificateur inconnu: &1" -#: MErrorMessage.module:205 +#: MErrorMessage.module:207 msgid "Unknown operator" msgstr "Opérateur inconnu" -#: MErrorMessage.module:206 +#: MErrorMessage.module:208 msgid "Unknown symbol '&1' in class '&2'" msgstr "Symbole '&1' inconnu dans la classe '&2'" @@ -5543,7 +5551,7 @@ msgstr "illimité" msgid "Unselect all" msgstr "Déselectionner tout" -#: MErrorMessage.module:207 +#: MErrorMessage.module:209 msgid "Unsupported string conversion" msgstr "Conversion de chaîne de caractères non supportée" @@ -5575,7 +5583,7 @@ msgstr "Utiliser une police non proportionnelle" msgid "Use a terminal emulator" msgstr "Utiliser un émulateur de terminal" -#: MErrorMessage.module:208 +#: MErrorMessage.module:210 msgid "Useless LOCK" msgstr "LOCK inutile" @@ -5611,7 +5619,7 @@ msgstr "Variable" msgid "Variables" msgstr "Variables" -#: MErrorMessage.module:209 +#: MErrorMessage.module:211 msgid "VarPtr() argument must be a dynamic, a static or a local variable" msgstr "L'argument de VarPtr() doit être une variable dynamique, une variable statique ou bien une variable locale" @@ -5683,7 +5691,7 @@ msgstr "Compatibilité avec Visual Basic" msgid "Visual Basic™ conversion help" msgstr "Conversion depuis Visual Basic™" -#: MErrorMessage.module:210 +#: MErrorMessage.module:212 msgid "Void key" msgstr "Clef vide" @@ -5751,7 +5759,7 @@ msgstr "-" msgid "&Words only" msgstr "&Mots seulements" -#: MErrorMessage.module:211 +#: MErrorMessage.module:213 msgid "Write error" msgstr "Erreur d'écriture" @@ -5791,7 +5799,7 @@ msgstr "Hier" msgid "You are going to cancel your changes!" msgstr "Tous les changements vont être annulés !" -#: Project.module:3493 +#: Project.module:3523 msgid "You must define a startup class or form!" msgstr "Vous devez définir une classe ou un formulaire de démarrage !" diff --git a/app/src/gambas3/.project b/app/src/gambas3/.project index 4c3a97eb6..6297cdb26 100644 --- a/app/src/gambas3/.project +++ b/app/src/gambas3/.project @@ -1,7 +1,7 @@ # Gambas Project File 3.0 # Compiled with Gambas 2.99.2 Title=Gambas 3 -Startup=Project +Startup=MErrorMessage Icon=img/logo/logo-ide.png Version=2.99.2 VersionProgram=gbx3 -V diff --git a/app/src/gambas3/.src/FMain.class b/app/src/gambas3/.src/FMain.class index 2e47a2ad4..e92390aed 100644 --- a/app/src/gambas3/.src/FMain.class +++ b/app/src/gambas3/.src/FMain.class @@ -1333,7 +1333,7 @@ Public Sub tvwProject_DragMove() Dim sKey As String - If Not tvwProject.Find(Drag.X, Drag.Y) Then + If Not tvwProject.FindAt(Drag.X, Drag.Y) Then $sKey = tvwProject.Item.Key If Project.IsLocked($sKey) Then Goto STOP_EVENT If Drag.Format = MMime.DATA And If Drag.Source Then @@ -1441,7 +1441,7 @@ Public Sub tvwProject_MouseDrag() If Not Mouse.Left Then Return - If tvwProject.Find(Mouse.StartX, Mouse.StartY) Then Return + If tvwProject.FindAt(Mouse.StartX, Mouse.StartY) Then Return sKey = tvwProject.Item.Key If tvwProject.Key <> sKey Then Return 'If Project.IsSourcePath(sKey) Then Return diff --git a/app/src/gambas3/.src/MErrorMessage.module b/app/src/gambas3/.src/MErrorMessage.module index 278e77dc8..f20ab882f 100644 --- a/app/src/gambas3/.src/MErrorMessage.module +++ b/app/src/gambas3/.src/MErrorMessage.module @@ -13,7 +13,7 @@ Private Const ERR_009 As String = ("&1: syntax error") Private Const ERR_010 As String = ("&1: syntax error in form file") Private Const ERR_011 As String = ("&1: too many nested containers") Private Const ERR_012 As String = ("'&1' already declared") -Private Const ERR_013 As String = ("'&1.&2' is badly overridden in class '&3'") +Private Const ERR_013 As String = ("'&1.&2' is incorrectly overridden in class '&3'") Private Const ERR_014 As String = ("'&1.&2' is not a property") Private Const ERR_015 As String = ("'&1.&2' is not static") Private Const ERR_016 As String = ("'&1.&2' is read only") @@ -56,159 +56,161 @@ Private Const ERR_052 As String = ("Cannot inherit twice") Private Const ERR_053 As String = ("Cannot instantiate native types") Private Const ERR_054 As String = ("Cannot load class '&1': &2&3") Private Const ERR_055 As String = ("Cannot load component '&1': &2") -Private Const ERR_056 As String = ("Cannot make executable: &1: &2") -Private Const ERR_057 As String = ("Cannot mix NEW and embedded array") -Private Const ERR_058 As String = ("Cannot mix NEW and embedded structure") -Private Const ERR_059 As String = ("Cannot open file '&1': &2") -Private Const ERR_060 As String = ("Cannot open file: &1") -Private Const ERR_061 As String = ("Cannot raise events in static function") -Private Const ERR_062 As String = ("Cannot read file: &1") -Private Const ERR_063 As String = ("Cannot read file: &1: &2") -Private Const ERR_064 As String = ("Cannot register class '&1'") -Private Const ERR_065 As String = ("Cannot remove file '&1': &2") -Private Const ERR_066 As String = ("Cannot rename file '&1' to '&2': &3") -Private Const ERR_067 As String = ("Cannot set file owner: &1: &2") -Private Const ERR_068 As String = ("Cannot use NEW operator there") -Private Const ERR_069 As String = ("Cannot use TRY twice") -Private Const ERR_070 As String = ("Class '&1' is not creatable") -Private Const ERR_071 As String = ("Comparison operator expected") -Private Const ERR_072 As String = ("Component not found: &1") -Private Const ERR_073 As String = ("Device is full") -Private Const ERR_074 As String = ("Division by zero") -Private Const ERR_075 As String = ("Dynamic symbols cannot be used in static function") -Private Const ERR_076 As String = ("Embedded array") -Private Const ERR_077 As String = ("Embedded arrays are forbidden here") -Private Const ERR_078 As String = ("End of file") -Private Const ERR_079 As String = ("Equality or inequality operator expected") -Private Const ERR_080 As String = ("Expression too complex") -Private Const ERR_081 As String = ("Expression too complex. Too many operands") -Private Const ERR_082 As String = ("File already exists") -Private Const ERR_083 As String = ("File is a directory") -Private Const ERR_084 As String = ("File is locked") -Private Const ERR_085 As String = ("File name is too long") -Private Const ERR_086 As String = ("File or directory does not exist") -Private Const ERR_087 As String = ("Forbidden GOTO") -Private Const ERR_088 As String = ("Illegal instruction") -Private Const ERR_089 As String = ("Internal compiler error: Bad stack usage computed!") -Private Const ERR_090 As String = ("Invalid assignment") -Private Const ERR_091 As String = ("Invalid date") -Private Const ERR_092 As String = ("Invalid object") -Private Const ERR_093 As String = ("Invalid path") -Private Const ERR_094 As String = ("Label '&1' not declared") -Private Const ERR_095 As String = ("Library name must be a string") -Private Const ERR_096 As String = ("Loop variable already in use") -Private Const ERR_097 As String = ("Loop variable must be local") -Private Const ERR_098 As String = ("ME cannot be used in a static function") -Private Const ERR_099 As String = ("Mathematic error") -Private Const ERR_100 As String = ("Missing #Endif") -Private Const ERR_101 As String = ("Missing &1") -Private Const ERR_102 As String = ("Missing operator") -Private Const ERR_103 As String = ("Missing right brace") -Private Const ERR_104 As String = ("NEW cannot have arguments passed by reference") -Private Const ERR_105 As String = ("No instantiation method") -Private Const ERR_106 As String = ("No parent class") -Private Const ERR_107 As String = ("No return value") -Private Const ERR_108 As String = ("No startup method") -Private Const ERR_109 As String = ("Non terminated string") -Private Const ERR_110 As String = ("Not a directory: &1") -Private Const ERR_111 As String = ("Not a function") -Private Const ERR_112 As String = ("Not an array") -Private Const ERR_113 As String = ("Not an enumeration") -Private Const ERR_114 As String = ("Not an object") -Private Const ERR_115 As String = ("Not enough argument to New()") -Private Const ERR_116 As String = ("Not enough arguments") -Private Const ERR_117 As String = ("Not enough arguments to &1()") -Private Const ERR_118 As String = ("Null object") -Private Const ERR_119 As String = ("Out of bounds") -Private Const ERR_120 As String = ("Out of memory") -Private Const ERR_121 As String = ("Out of range") -Private Const ERR_122 As String = ("Overflow") -Private Const ERR_123 As String = ("Read error") -Private Const ERR_124 As String = ("Return value datatype not specified in function declaration") -Private Const ERR_125 As String = ("STOP instruction encountered") -Private Const ERR_126 As String = ("SUPER cannot be used alone") -Private Const ERR_127 As String = ("Serialization error") -Private Const ERR_128 As String = ("Stack overflow") -Private Const ERR_129 As String = ("Stream is closed") -Private Const ERR_130 As String = ("String expected") -Private Const ERR_131 As String = ("Structures must be public") -Private Const ERR_132 As String = ("Subroutine arguments cannot be passed by reference") -Private Const ERR_133 As String = ("Syntax error") -Private Const ERR_134 As String = ("Syntax error at function declaration") -Private Const ERR_135 As String = ("Syntax error in event name") -Private Const ERR_136 As String = ("Syntax error in file open mode") -Private Const ERR_137 As String = ("Syntax error in return type") -Private Const ERR_138 As String = ("Syntax error. &1 expected") -Private Const ERR_139 As String = ("Syntax error. '...' must be the last argument") -Private Const ERR_140 As String = ("Syntax error. Bad property type") -Private Const ERR_141 As String = ("Syntax error. CASE or DEFAULT expected after SELECT") -Private Const ERR_142 As String = ("Syntax error. CLASS needs an identifier") -Private Const ERR_143 As String = ("Syntax error. Cannot use this syntax in assignment") -Private Const ERR_144 As String = ("Syntax error. INHERITS needs a class name") -Private Const ERR_145 As String = ("Syntax error. Identifier expected.") -Private Const ERR_146 As String = ("Syntax error. Invalid identifier in function name") -Private Const ERR_147 As String = ("Syntax error. Invalid identifier in property name") -Private Const ERR_148 As String = ("Syntax error. Invalid optional parameter") -Private Const ERR_149 As String = ("Syntax error. Invalid return type") -Private Const ERR_150 As String = ("Syntax error. Invalid type description of &1 argument") -Private Const ERR_151 As String = ("Syntax error. Invalid type description of &1 field") -Private Const ERR_152 As String = ("Syntax error. Missing &1") -Private Const ERR_153 As String = ("Syntax error. Needless arguments") -Private Const ERR_154 As String = ("Syntax error. Point syntax used outside of WITH / END WITH") -Private Const ERR_155 As String = ("Syntax error. STRUCT needs an identifier") -Private Const ERR_156 As String = ("Syntax error. The &1 argument is not a valid identifier") -Private Const ERR_157 As String = ("Syntax error. The &1 field is not a valid identifier") -Private Const ERR_158 As String = ("Syntax error. VarPtr() takes only one identifier") -Private Const ERR_159 As String = ("System error #&1: &2") -Private Const ERR_160 As String = ("The '!' operator must be followed by an identifier") -Private Const ERR_161 As String = ("The '.' operator must be followed by an identifier") -Private Const ERR_162 As String = ("The special method &1 cannot be a function") -Private Const ERR_163 As String = ("The special method &1 cannot be implemented") -Private Const ERR_164 As String = ("The special method &1 cannot be static") -Private Const ERR_165 As String = ("The special method &1 must be a function") -Private Const ERR_166 As String = ("The special method &1 must be public") -Private Const ERR_167 As String = ("The special method &1 must be static") -Private Const ERR_168 As String = ("The special method &1 must take a variable number of arguments only") -Private Const ERR_169 As String = ("The special method &1 must take at least one argument") -Private Const ERR_170 As String = ("The special method &1 takes no arguments") -Private Const ERR_171 As String = ("The special method must return an integer") -Private Const ERR_172 As String = ("The special method must take exactly one argument") -Private Const ERR_173 As String = ("The special method must take exactly two arguments") -Private Const ERR_174 As String = ("The special method signature is incorrect") -Private Const ERR_175 As String = ("This expression cannot be a statement") -Private Const ERR_176 As String = ("This expression cannot be passed by reference") -Private Const ERR_177 As String = ("Too many arguments") -Private Const ERR_178 As String = ("Too many arguments to &1()") -Private Const ERR_179 As String = ("Too many array declarations") -Private Const ERR_180 As String = ("Too many constants") -Private Const ERR_181 As String = ("Too many different classes used") -Private Const ERR_182 As String = ("Too many dimensions") -Private Const ERR_183 As String = ("Too many dynamic variables") -Private Const ERR_184 As String = ("Too many events") -Private Const ERR_185 As String = ("Too many expressions in CASE") -Private Const ERR_186 As String = ("Too many external functions") -Private Const ERR_187 As String = ("Too many functions") -Private Const ERR_188 As String = ("Too many imbricated #If...#Endif") -Private Const ERR_189 As String = ("Too many nested control structures.") -Private Const ERR_190 As String = ("Too many simultaneous new strings") -Private Const ERR_191 As String = ("Too many static variables") -Private Const ERR_192 As String = ("Too many unknown symbols") -Private Const ERR_193 As String = ("Type mismatch") -Private Const ERR_194 As String = ("Type mismatch: wanted &1, got &2 instead") -Private Const ERR_195 As String = ("Unexpected &1") -Private Const ERR_196 As String = ("Unexpected end of line") -Private Const ERR_197 As String = ("Unexpected string") -Private Const ERR_198 As String = ("Unknown error") -Private Const ERR_199 As String = ("Unknown event") -Private Const ERR_200 As String = ("Unknown file extension") -Private Const ERR_201 As String = ("Unknown identifier: &1") -Private Const ERR_202 As String = ("Unknown operator") -Private Const ERR_203 As String = ("Unknown symbol '&1' in class '&2'") -Private Const ERR_204 As String = ("Unsupported string conversion") -Private Const ERR_205 As String = ("Useless LOCK") -Private Const ERR_206 As String = ("VarPtr() argument must be a dynamic, a static or a local variable") -Private Const ERR_207 As String = ("Void key") -Private Const ERR_208 As String = ("Write error") +Private Const ERR_056 As String = ("Cannot load source file: &1") +Private Const ERR_057 As String = ("Cannot make executable: &1: &2") +Private Const ERR_058 As String = ("Cannot mix NEW and embedded array") +Private Const ERR_059 As String = ("Cannot mix NEW and embedded structure") +Private Const ERR_060 As String = ("Cannot open file '&1': &2") +Private Const ERR_061 As String = ("Cannot open file: &1") +Private Const ERR_062 As String = ("Cannot raise events in static function") +Private Const ERR_063 As String = ("Cannot read file: &1") +Private Const ERR_064 As String = ("Cannot read file: &1: &2") +Private Const ERR_065 As String = ("Cannot register class '&1'") +Private Const ERR_066 As String = ("Cannot remove file '&1': &2") +Private Const ERR_067 As String = ("Cannot rename file '&1' to '&2': &3") +Private Const ERR_068 As String = ("Cannot set file owner: &1: &2") +Private Const ERR_069 As String = ("Cannot use NEW operator there") +Private Const ERR_070 As String = ("Cannot use TRY twice") +Private Const ERR_071 As String = ("Class '&1' is not creatable") +Private Const ERR_072 As String = ("Comparison operator expected") +Private Const ERR_073 As String = ("Component not found: &1") +Private Const ERR_074 As String = ("Device is full") +Private Const ERR_075 As String = ("Division by zero") +Private Const ERR_076 As String = ("Dynamic symbols cannot be used in static function") +Private Const ERR_077 As String = ("Embedded array") +Private Const ERR_078 As String = ("Embedded arrays are forbidden here") +Private Const ERR_079 As String = ("End of file") +Private Const ERR_080 As String = ("Equality or inequality operator expected") +Private Const ERR_081 As String = ("Expression too complex") +Private Const ERR_082 As String = ("Expression too complex. Too many operands") +Private Const ERR_083 As String = ("File already exists") +Private Const ERR_084 As String = ("File is a directory") +Private Const ERR_085 As String = ("File is locked") +Private Const ERR_086 As String = ("File name is too long") +Private Const ERR_087 As String = ("File or directory does not exist") +Private Const ERR_088 As String = ("Forbidden GOTO") +Private Const ERR_089 As String = ("Illegal instruction") +Private Const ERR_090 As String = ("Internal compiler error: Bad stack usage computed!") +Private Const ERR_091 As String = ("Invalid assignment") +Private Const ERR_092 As String = ("Invalid date") +Private Const ERR_093 As String = ("Invalid object") +Private Const ERR_094 As String = ("Invalid path") +Private Const ERR_095 As String = ("Label '&1' not declared") +Private Const ERR_096 As String = ("Library name must be a string") +Private Const ERR_097 As String = ("Loop variable already in use") +Private Const ERR_098 As String = ("Loop variable must be local") +Private Const ERR_099 As String = ("ME cannot be used in a static function") +Private Const ERR_100 As String = ("Mathematic error") +Private Const ERR_101 As String = ("Missing #Endif") +Private Const ERR_102 As String = ("Missing &1") +Private Const ERR_103 As String = ("Missing operator") +Private Const ERR_104 As String = ("Missing right brace") +Private Const ERR_105 As String = ("NEW cannot have arguments passed by reference") +Private Const ERR_106 As String = ("No instantiation method") +Private Const ERR_107 As String = ("No parent class") +Private Const ERR_108 As String = ("No return value") +Private Const ERR_109 As String = ("No startup method") +Private Const ERR_110 As String = ("Non terminated string") +Private Const ERR_111 As String = ("Not a directory: &1") +Private Const ERR_112 As String = ("Not a function") +Private Const ERR_113 As String = ("Not an array") +Private Const ERR_114 As String = ("Not an enumeration") +Private Const ERR_115 As String = ("Not an object") +Private Const ERR_116 As String = ("Not enough argument to New()") +Private Const ERR_117 As String = ("Not enough arguments") +Private Const ERR_118 As String = ("Not enough arguments to &1()") +Private Const ERR_119 As String = ("Null object") +Private Const ERR_120 As String = ("Out of bounds") +Private Const ERR_121 As String = ("Out of memory") +Private Const ERR_122 As String = ("Out of range") +Private Const ERR_123 As String = ("Overflow") +Private Const ERR_124 As String = ("Read error") +Private Const ERR_125 As String = ("Return value datatype not specified in function declaration") +Private Const ERR_126 As String = ("STOP instruction encountered") +Private Const ERR_127 As String = ("SUPER cannot be used alone") +Private Const ERR_128 As String = ("Serialization error") +Private Const ERR_129 As String = ("Stack overflow") +Private Const ERR_130 As String = ("Stream is closed") +Private Const ERR_131 As String = ("String expected") +Private Const ERR_132 As String = ("Structures must be public") +Private Const ERR_133 As String = ("Subroutine arguments cannot be passed by reference") +Private Const ERR_134 As String = ("Syntax error") +Private Const ERR_135 As String = ("Syntax error at function declaration") +Private Const ERR_136 As String = ("Syntax error in event name") +Private Const ERR_137 As String = ("Syntax error in file open mode") +Private Const ERR_138 As String = ("Syntax error in return type") +Private Const ERR_139 As String = ("Syntax error. &1 expected") +Private Const ERR_140 As String = ("Syntax error. '...' must be the last argument") +Private Const ERR_141 As String = ("Syntax error. Bad property type") +Private Const ERR_142 As String = ("Syntax error. CASE or DEFAULT expected after SELECT") +Private Const ERR_143 As String = ("Syntax error. CLASS needs an identifier") +Private Const ERR_144 As String = ("Syntax error. Cannot use this syntax in assignment") +Private Const ERR_145 As String = ("Syntax error. INHERITS needs a class name") +Private Const ERR_146 As String = ("Syntax error. Identifier expected.") +Private Const ERR_147 As String = ("Syntax error. Invalid identifier in function name") +Private Const ERR_148 As String = ("Syntax error. Invalid identifier in property name") +Private Const ERR_149 As String = ("Syntax error. Invalid optional parameter") +Private Const ERR_150 As String = ("Syntax error. Invalid return type") +Private Const ERR_151 As String = ("Syntax error. Invalid type description of &1 argument") +Private Const ERR_152 As String = ("Syntax error. Invalid type description of &1 field") +Private Const ERR_153 As String = ("Syntax error. Missing &1") +Private Const ERR_154 As String = ("Syntax error. Needless arguments") +Private Const ERR_155 As String = ("Syntax error. Point syntax used outside of WITH / END WITH") +Private Const ERR_156 As String = ("Syntax error. STRUCT needs an identifier") +Private Const ERR_157 As String = ("Syntax error. The &1 argument is not a valid identifier") +Private Const ERR_158 As String = ("Syntax error. The &1 field is not a valid identifier") +Private Const ERR_159 As String = ("Syntax error. VarPtr() takes only one identifier") +Private Const ERR_160 As String = ("System error #&1: &2") +Private Const ERR_161 As String = ("The '!' operator must be followed by an identifier") +Private Const ERR_162 As String = ("The '.' operator must be followed by an identifier") +Private Const ERR_163 As String = ("The special method &1 cannot be a function") +Private Const ERR_164 As String = ("The special method &1 cannot be implemented") +Private Const ERR_165 As String = ("The special method &1 cannot be static") +Private Const ERR_166 As String = ("The special method &1 must be a function") +Private Const ERR_167 As String = ("The special method &1 must be public") +Private Const ERR_168 As String = ("The special method &1 must be static") +Private Const ERR_169 As String = ("The special method &1 must return a boolean") +Private Const ERR_170 As String = ("The special method &1 must take a variable number of arguments only") +Private Const ERR_171 As String = ("The special method &1 must take at least one argument") +Private Const ERR_172 As String = ("The special method &1 takes no arguments") +Private Const ERR_173 As String = ("The special method must return an integer") +Private Const ERR_174 As String = ("The special method must take exactly one argument") +Private Const ERR_175 As String = ("The special method must take exactly two arguments") +Private Const ERR_176 As String = ("The special method signature is incorrect") +Private Const ERR_177 As String = ("This expression cannot be a statement") +Private Const ERR_178 As String = ("This expression cannot be passed by reference") +Private Const ERR_179 As String = ("Too many arguments") +Private Const ERR_180 As String = ("Too many arguments to &1()") +Private Const ERR_181 As String = ("Too many array declarations") +Private Const ERR_182 As String = ("Too many constants") +Private Const ERR_183 As String = ("Too many different classes used") +Private Const ERR_184 As String = ("Too many dimensions") +Private Const ERR_185 As String = ("Too many dynamic variables") +Private Const ERR_186 As String = ("Too many events") +Private Const ERR_187 As String = ("Too many expressions in CASE") +Private Const ERR_188 As String = ("Too many external functions") +Private Const ERR_189 As String = ("Too many functions") +Private Const ERR_190 As String = ("Too many imbricated #If...#Endif") +Private Const ERR_191 As String = ("Too many nested control structures.") +Private Const ERR_192 As String = ("Too many simultaneous new strings") +Private Const ERR_193 As String = ("Too many static variables") +Private Const ERR_194 As String = ("Too many unknown symbols") +Private Const ERR_195 As String = ("Type mismatch") +Private Const ERR_196 As String = ("Type mismatch: wanted &1, got &2 instead") +Private Const ERR_197 As String = ("Unexpected &1") +Private Const ERR_198 As String = ("Unexpected end of line") +Private Const ERR_199 As String = ("Unexpected string") +Private Const ERR_200 As String = ("Unknown error") +Private Const ERR_201 As String = ("Unknown event") +Private Const ERR_202 As String = ("Unknown file extension") +Private Const ERR_203 As String = ("Unknown identifier: &1") +Private Const ERR_204 As String = ("Unknown operator") +Private Const ERR_205 As String = ("Unknown symbol '&1' in class '&2'") +Private Const ERR_206 As String = ("Unsupported string conversion") +Private Const ERR_207 As String = ("Useless LOCK") +Private Const ERR_208 As String = ("VarPtr() argument must be a dynamic, a static or a local variable") +Private Const ERR_209 As String = ("Void key") +Private Const ERR_210 As String = ("Write error") '} Public Sub Main() diff --git a/app/src/gambas3/.src/Project.module b/app/src/gambas3/.src/Project.module index 0def6a20f..4cf0cd277 100644 --- a/app/src/gambas3/.src/Project.module +++ b/app/src/gambas3/.src/Project.module @@ -660,7 +660,7 @@ Private Function CloseProject() As Boolean Design.WriteBreakpoints Config.Clear("/OpenFile") - For Each hForm In Workspace.Children + For Each hForm In Workspace.Windows If Not hForm.Closed Then @@ -776,7 +776,34 @@ Private Sub AddLinkEmblem(hSource As Image) As Image End -Public Sub MakeModuleIcon(sModule As String, Optional iSize As Integer) As Image +Private Sub MakeStartupIcon(hImage As Image) + + Dim X, Y As Integer + Dim iCol As Integer + Dim iGray As Integer + Dim hColorInfo As ColorInfo + + For X = 0 To hImage.W - 1 + For Y = 0 To hImage.H - 1 + + iCol = hImage[X, Y] + ' With Color[Color.Desaturate(iCol)] + ' iGray = (255 - .Blue) * (255 - .Alpha) / 255 + ' End With + ' Print Mid$(" .,-~+=oOINS8&%@", iGray \ 16 + 1, 1); + + If Color.GetAlpha(iCol) = 255 Then Continue + If X = 0 Or If X = (hImage.W - 1) Or If Y = 0 Or If Y = (hImage.H - 1) Or If Color[hImage[X - 1, Y]].Alpha = 255 Or If Color[hImage[X + 1, Y]].Alpha = 255 Or If Color[hImage[X, Y - 1]].Alpha = 255 Or If Color[hImage[X, Y + 1]].Alpha = 255 Then + hColorInfo = Color[Color.Darker(iCol)] + hColorInfo.Alpha = hColorInfo.Alpha \ 2 + hImage[X, Y] = hColorInfo.Color + Endif + Next + Next + +End + +Public Sub MakeModuleIcon(sModule As String, iSize As Integer, Optional bStartup As Boolean) As Image Dim hImage As Image Dim hImageModule As Image @@ -786,13 +813,16 @@ Public Sub MakeModuleIcon(sModule As String, Optional iSize As Integer) As Image If iSize = 0 Then iSize = 16 - sKey = sModule & "-" & iSize & ".png" + sKey = sModule & "-" & iSize & If(bStartup, "-s", "") & ".png" hImage = $cImageCache[sKey] If Not hImage Then hImage = $cImageCache["base"] hImage = hImage.Stretch(iSize, iSize) hImageModule = Image.Load("img/module" &/ sModule & ".png") '.Stretch(iSize / 2, iSize / 2) hImage.PaintImage(hImageModule, iSize / 4, iSize / 4, iSize / 2, iSize / 2) + If bStartup Then + MakeStartupIcon(hImage) + Endif $cImageCache[sKey] = hImage Endif @@ -956,7 +986,7 @@ Public Sub GetFileIcon(sPath As String, Optional iSize As Integer) As Picture If Not hPict Then If sModule Then - hImage = MakeModuleIcon(sModule, iSize) + hImage = MakeModuleIcon(sModule, iSize, bStartup) Else Try hImage = Picture[sIcon].Image If Error Then hImage = Picture[sPrefix &/ "file"].Image @@ -965,7 +995,7 @@ Public Sub GetFileIcon(sPath As String, Optional iSize As Integer) As Picture 'If Not hPict Then hPict = Picture["img/16/unknown.png"] 'hPict = hPict.Copy() - If bStartup Then hImage = AddEmblem(hImage, "icon:/32/play") + 'If bStartup Then hImage = AddEmblem(hImage, "icon:/32/play") If bConflict Then hImage = AddEmblem(hImage, "icon:/32/warning") If bLocked Then hImage = AddEmblem(hImage, "icon:/32/lock") If bAdded Then hImage = AddEmblem(hImage, "icon:/32/add") diff --git a/comp/src/gb.form.mdi/.info b/comp/src/gb.form.mdi/.info index 50748224f..46d992391 100644 --- a/comp/src/gb.form.mdi/.info +++ b/comp/src/gb.form.mdi/.info @@ -111,7 +111,7 @@ ActiveWindow p Window -Children +Windows r Window[] diff --git a/comp/src/gb.form.mdi/.project b/comp/src/gb.form.mdi/.project index a2a25a42c..fe326e6ec 100644 --- a/comp/src/gb.form.mdi/.project +++ b/comp/src/gb.form.mdi/.project @@ -1,8 +1,8 @@ # Gambas Project File 3.0 -# Compiled with Gambas 2.99.1 +# Compiled with Gambas 2.99.2 Title=Multiple document interface management Startup=FMain -Version=2.99.1 +Version=2.99.2 VersionProgram=gbx3 -V Component=gb.image Component=gb.gui diff --git a/comp/src/gb.form.mdi/.src/Workspace/Workspace.class b/comp/src/gb.form.mdi/.src/Workspace/Workspace.class index b63fe5eb8..1f9b3bfe5 100644 --- a/comp/src/gb.form.mdi/.src/Workspace/Workspace.class +++ b/comp/src/gb.form.mdi/.src/Workspace/Workspace.class @@ -12,7 +12,7 @@ Event Activate 'EVENT WindowMenu Property ActiveWindow As Window -Property Read Children As Window[] +Property Read Windows As Window[] Property Font As Font Property Background As Integer Property Orientation As Integer @@ -66,7 +66,7 @@ Private Sub ActiveWindow_Write(Value As Window) End -Private Function Children_Read() As Window[] +Private Function Windows_Read() As Window[] Return hWorkspace.GetWindows() diff --git a/comp/src/gb.form/.info b/comp/src/gb.form/.info index f38cdfe88..a58c378c4 100644 --- a/comp/src/gb.form/.info +++ b/comp/src/gb.form/.info @@ -1236,7 +1236,7 @@ Exist m b (Key)s -Find +FindAt m b (X)i(Y)i diff --git a/comp/src/gb.form/.src/IconView/IconView.class b/comp/src/gb.form/.src/IconView/IconView.class index 1048a903a..e967e6252 100644 --- a/comp/src/gb.form/.src/IconView/IconView.class +++ b/comp/src/gb.form/.src/IconView/IconView.class @@ -138,7 +138,7 @@ Public Sub Exist(Key As String) As Boolean End -Public Sub Find(X As Integer, Y As Integer) As Boolean +Public Sub FindAt(X As Integer, Y As Integer) As Boolean $iIntern = FindIconAccurate(X, Y) Return $iIntern < 0 diff --git a/gb.gtk/src/CTreeView.cpp b/gb.gtk/src/CTreeView.cpp index 550857608..8adbc3a2c 100644 --- a/gb.gtk/src/CTreeView.cpp +++ b/gb.gtk/src/CTreeView.cpp @@ -1109,7 +1109,7 @@ GB_DESC CListViewDesc[] = GB_METHOD("Add", ".ListViewItem", CLISTVIEW_add, "(Key)s(Text)s[(Picture)Picture;(After)s]"), GB_METHOD("Remove", 0, CTREEVIEW_remove, "(Key)s"), GB_METHOD("Exist", "b", CTREEVIEW_exist, "(Key)s"), - GB_METHOD("Find", "b", CTREEVIEW_find, "(X)i(Y)i"), + GB_METHOD("FindAt", "b", CTREEVIEW_find, "(X)i(Y)i"), //GB_METHOD("FindText", "b", CTREEVIEW_find, "(X)i(Y)i"), GB_METHOD("SelectAll", NULL, TreeView_SelectAll, NULL), GB_METHOD("UnselectAll", NULL, TreeView_UnselectAll, NULL), @@ -1182,7 +1182,7 @@ GB_DESC CTreeViewDesc[] = GB_METHOD("Add", ".TreeViewItem", CTREEVIEW_add, "(Key)s(Text)s[(Picture)Picture;(Parent)s(After)s]"), GB_METHOD("Remove", 0, CTREEVIEW_remove, "(Key)s"), GB_METHOD("Exist", "b", CTREEVIEW_exist, "(Key)s"), - GB_METHOD("Find", "b", CTREEVIEW_find, "(X)i(Y)i"), + GB_METHOD("FindAt", "b", CTREEVIEW_find, "(X)i(Y)i"), GB_METHOD("SelectAll", NULL, TreeView_SelectAll, NULL), GB_METHOD("UnselectAll", NULL, TreeView_UnselectAll, NULL), @@ -1278,7 +1278,7 @@ GB_DESC CColumnViewDesc[] = GB_METHOD("Add", ".ColumnViewItem", CTREEVIEW_add, "(Key)s(Text)s[(Picture)Picture;(Parent)s(After)s]"), GB_METHOD("Remove", 0, CTREEVIEW_remove, "(Key)s"), GB_METHOD("Exist", "b", CTREEVIEW_exist, "(Key)s"), - GB_METHOD("Find", "b", CTREEVIEW_find, "(X)i(Y)i"), + GB_METHOD("FindAt", "b", CTREEVIEW_find, "(X)i(Y)i"), GB_METHOD("SelectAll", NULL, TreeView_SelectAll, NULL), GB_METHOD("UnselectAll", NULL, TreeView_UnselectAll, NULL), diff --git a/gb.qt4/src/CTreeView.cpp b/gb.qt4/src/CTreeView.cpp index 74a493c10..9afa5d564 100644 --- a/gb.qt4/src/CTreeView.cpp +++ b/gb.qt4/src/CTreeView.cpp @@ -1733,7 +1733,7 @@ GB_DESC CListViewDesc[] = GB_METHOD("Add", ".ListViewItem", CLISTVIEW_add, "(Key)s(Text)s[(Picture)Picture;(After)s]"), GB_METHOD("Remove", NULL, CTREEVIEW_remove, "(Key)s"), GB_METHOD("Exist", "b", CTREEVIEW_exist, "(Key)s"), - GB_METHOD("Find", "b", CTREEVIEW_find, "(X)i(Y)i"), + GB_METHOD("FindAt", "b", CTREEVIEW_find, "(X)i(Y)i"), //GB_METHOD("FindText", "b", CTREEVIEW_find, "(X)i(Y)i"), GB_METHOD("SelectAll", NULL, TreeView_SelectAll, NULL), GB_METHOD("UnselectAll", NULL, TreeView_UnselectAll, NULL), @@ -1818,7 +1818,7 @@ GB_DESC CTreeViewDesc[] = GB_METHOD("Add", ".TreeViewItem", CTREEVIEW_add, "(Key)s(Text)s[(Picture)Picture;(Parent)s(After)s]"), GB_METHOD("Remove", NULL, CTREEVIEW_remove, "(Key)s"), GB_METHOD("Exist", "b", CTREEVIEW_exist, "(Key)s"), - GB_METHOD("Find", "b", CTREEVIEW_find, "(X)i(Y)i"), + GB_METHOD("FindAt", "b", CTREEVIEW_find, "(X)i(Y)i"), GB_METHOD("SelectAll", NULL, TreeView_SelectAll, NULL), GB_METHOD("UnselectAll", NULL, TreeView_UnselectAll, NULL), @@ -1913,7 +1913,7 @@ GB_DESC CColumnViewDesc[] = GB_METHOD("Add", ".ColumnViewItem", CTREEVIEW_add, "(Key)s(Text)s[(Picture)Picture;(Parent)s(After)s]"), GB_METHOD("Remove", NULL, CTREEVIEW_remove, "(Key)s"), GB_METHOD("Exist", "b", CTREEVIEW_exist, "(Key)s"), - GB_METHOD("Find", "b", CTREEVIEW_find, "(X)i(Y)i"), + GB_METHOD("FindAt", "b", CTREEVIEW_find, "(X)i(Y)i"), GB_METHOD("SelectAll", NULL, TreeView_SelectAll, NULL), GB_METHOD("UnselectAll", NULL, TreeView_UnselectAll, NULL), diff --git a/main/Makefile.am b/main/Makefile.am index f709fa17d..cc288a996 100644 --- a/main/Makefile.am +++ b/main/Makefile.am @@ -19,9 +19,9 @@ install-exec-local: @if test x"$(XDG_UTILS)" != x; then \ echo "Registering Gambas executable mimetype"; \ $(INSTALL) -d $(DESTDIR)$(gbdatadir)/icons; \ - cp -f $(srcdir)/mime/application-x-gambas.png $(DESTDIR)$(gbdatadir)/icons; \ - xdg-icon-resource install --context mimetypes --size 64 $(DESTDIR)$(gbdatadir)/icons/application-x-gambas.png application-x-gambas; \ - xdg-mime install $(srcdir)/mime/application-x-gambas.xml; \ + cp -f $(srcdir)/mime/application-x-gambas3.png $(DESTDIR)$(gbdatadir)/icons; \ + xdg-icon-resource install --context mimetypes --size 64 $(DESTDIR)$(gbdatadir)/icons/application-x-gambas3.png application-x-gambas3; \ + xdg-mime install $(srcdir)/mime/application-x-gambas3.xml; \ fi uninstall-local: diff --git a/main/gbx/gb_error.c b/main/gbx/gb_error.c index ba018a39e..51007f3e4 100644 --- a/main/gbx/gb_error.c +++ b/main/gbx/gb_error.c @@ -109,7 +109,7 @@ static const char *_message[67] = /* 60 E_EXTLIB */ ".2Cannot find dynamic library '&1': &2", /* 61 E_EXTSYM */ ".2Cannot find symbol '&2' in dynamic library '&1'", /* 62 E_BYREF */ "Argument cannot be passed by reference", - /* 63 E_OVERRIDE */ ".3'&1.&2' is badly overridden in class '&3'", + /* 63 E_OVERRIDE */ ".3'&1.&2' is incorrectly overridden in class '&3'", /* 64 E_NKEY */ "Void key", /* 65 E_SARRAY */ "Embedded array", /* 66 E_EXTCB */ ".1Cannot create callback: &1" diff --git a/main/gbx/gbx_class.c b/main/gbx/gbx_class.c index cccbaa089..933969078 100644 --- a/main/gbx/gbx_class.c +++ b/main/gbx/gbx_class.c @@ -882,7 +882,7 @@ void CLASS_inheritance(CLASS *class, CLASS *parent) -const char *CLASS_DESC_get_type_name(CLASS_DESC *desc) +const char *CLASS_DESC_get_type_name(const CLASS_DESC *desc) { switch (desc->gambas.val4) { @@ -895,30 +895,66 @@ const char *CLASS_DESC_get_type_name(CLASS_DESC *desc) case CD_CONSTANT_ID: return "C"; case CD_EVENT_ID: return ":"; case CD_EXTERN_ID: return "X"; - default: return "?"; + default: + fprintf(stderr, "CLASS_DESC_get_type_name: %s: %ld\n", desc->gambas.name, desc->gambas.val4); + return "?"; } } -// A symbol can be overridden by a more powerful one: -// - A read-only property can be overridden by a read-write property. -// - A constant can be overridden by any property. - -static bool check_override(char parent_type, char type) +static bool check_signature(char type, const CLASS_DESC *desc, const CLASS_DESC *pdesc) { - if (parent_type == type) - return FALSE; - - if (parent_type == 'r' && type == 'p') - return FALSE; - if (parent_type == 'R' && type == 'P') - return FALSE; - if (parent_type == 'C' && (type == 'R' || type == 'P')) + /*TYPE *sd, *sp; + int nsd, nsp;*/ + + if (desc->property.type != pdesc->property.type) + { + //fprintf(stderr, "type! %ld / %ld\n", desc->property.type, pdesc->property.type); + return TRUE; + } + else return FALSE; - return TRUE; +#if 0 + switch (type) + { + case CD_METHOD: + case CD_STATIC_METHOD: + + sd = desc->method.signature; + nsd = desc->method.npmax; + sp = pdesc->method.signature; + nsp = pdesc->method.npmax; + break; + + case CD_EVENT: + + sd = desc->event.signature; + nsd = desc->event.npmax; + sp = pdesc->event.signature; + nsp = pdesc->event.npmax; + break; + + case CD_EXTERN: + + sd = desc->ext.signature; + nsd = desc->ext.npmax; + sp = pdesc->ext.signature; + nsp = pdesc->ext.npmax; + break; + + default: + + return FALSE; + } + + if (TYPE_compare_signature(sd, nsd, sp, nsp)) + return TRUE; + else + return FALSE; +#endif } -void CLASS_make_description(CLASS *class, CLASS_DESC *desc, int n_desc, int *first) +void CLASS_make_description(CLASS *class, const CLASS_DESC *desc, int n_desc, int *first) { static const char *nonher[] = { "_new", "_free", "_init", "_exit", NULL }; @@ -961,6 +997,10 @@ void CLASS_make_description(CLASS *class, CLASS_DESC *desc, int n_desc, int *fir { name = &(desc[j].gambas.name[1]); type = CLASS_DESC_get_type(&desc[j]); + //ptype = (const char*)desc[j].gambas.type; + //fprintf(stderr, "%s -> ", ptype); + //desc[j].gambas.type = TYPE_from_string(&ptype); + //fprintf(stderr, "%p\n", (void *)desc[j].gambas.type); } else { @@ -976,43 +1016,46 @@ void CLASS_make_description(CLASS *class, CLASS_DESC *desc, int n_desc, int *fir while ((parent = parent->parent)) { ind = CLASS_find_symbol(parent, name); - if (ind != NO_SYMBOL) + if (ind == NO_SYMBOL) + continue; + + cds = &parent->table[ind]; + + // The parent class public symbols of non-native classes were replaced by the symbol kind returned by CLASS_DESC_get_type_name() + + if (cds->desc) { - cds = &parent->table[ind]; + parent_type = CLASS_DESC_get_type(cds->desc); - // The parent class public symbols of non-native classes were replaced by the symbol kind returned by CLASS_DESC_get_type_name() - - if (cds->desc) - { - parent_type = CLASS_DESC_get_type(cds->desc); - - if (check_override(parent_type, type)) - { - #if DEBUG_DESC - fprintf(stderr, "type = '%c' parent_type = '%c'\n", type, parent_type); - #endif - THROW(E_OVERRIDE, parent->name, cds->name, class->name); - } - } - - cds = &class->table[ind]; - - #if DEBUG_DESC - fprintf(stderr, "%s: [%d] (%p %d) := (%p %d)\n", name, ind, cds->desc, cds->desc ? cds->desc->gambas.val1 : 0, &desc[j], desc[j].gambas.val1); - #endif - - cds->desc = &desc[j]; - cds->name = "."; - cds->len = 1; - - if (!desc[j].gambas.val1 && index(CD_CALL_SOMETHING_LIST, type) != NULL) + if (parent_type != type) { #if DEBUG_DESC - fprintf(stderr, "'%s' gambas.val1: %d -> %d\n", desc[j].gambas.name, desc[j].gambas.val1, class->parent->table[ind].desc->gambas.val1); + fprintf(stderr, "type = '%c' parent_type = '%c'\n", type, parent_type); #endif - desc[j].gambas.val1 = class->parent->table[ind].desc->gambas.val1; + THROW(E_OVERRIDE, parent->name, cds->name, class->name); } + + if (!CLASS_is_native(class) && check_signature(type, &desc[j], cds->desc)) + THROW(E_OVERRIDE, parent->name, cds->name, class->name); } + + cds = &class->table[ind]; + + #if DEBUG_DESC + fprintf(stderr, "%s: [%d] (%p %ld) := (%p %ld)\n", name, ind, cds->desc, cds->desc ? cds->desc->gambas.val1 : 0, &desc[j], desc[j].gambas.val1); + #endif + + cds->desc = (CLASS_DESC *)&desc[j]; + cds->name = "."; + cds->len = 1; + + /*if (!desc[j].gambas.val1 && index(CD_CALL_SOMETHING_LIST, type) != NULL) + { + //#if DEBUG_DESC + fprintf(stderr, "CLASS_make_description: '%s.%s' gambas.val1: %ld -> %ld\n", class->name, desc[j].gambas.name, desc[j].gambas.val1, class->parent->table[ind].desc->gambas.val1); + //#endif + ((CLASS_DESC *)desc)[j].gambas.val1 = class->parent->table[ind].desc->gambas.val1; + }*/ } } @@ -1033,7 +1076,7 @@ void CLASS_make_description(CLASS *class, CLASS_DESC *desc, int n_desc, int *fir for (j = 0; j < n_desc; j++, i++) { - class->table[i].desc = &desc[j]; + class->table[i].desc = (CLASS_DESC *)&desc[j]; /* On saute le caractère de type de symbole */ if (CLASS_is_native(class)) diff --git a/main/gbx/gbx_class.h b/main/gbx/gbx_class.h index d2634be36..78e274d2a 100644 --- a/main/gbx/gbx_class.h +++ b/main/gbx/gbx_class.h @@ -462,7 +462,7 @@ int CLASS_return_zero(); void CLASS_sort(CLASS *class); void CLASS_inheritance(CLASS *class, CLASS *parent); -void CLASS_make_description(CLASS *class, CLASS_DESC *desc, int n_desc, int *first); +void CLASS_make_description(CLASS *class, const CLASS_DESC *desc, int n_desc, int *first); void CLASS_make_event(CLASS *class, int *first); void CLASS_calc_info(CLASS *class, int n_event, int size_dynamic, bool all, int size_static); diff --git a/main/gbx/gbx_class_desc.h b/main/gbx/gbx_class_desc.h index d13e4b283..b6bc922b5 100644 --- a/main/gbx/gbx_class_desc.h +++ b/main/gbx/gbx_class_desc.h @@ -198,6 +198,6 @@ typedef #define CLASS_DESC_SELF (-1) char *CLASS_DESC_get_signature(CLASS_DESC *cd); -const char *CLASS_DESC_get_type_name(CLASS_DESC *desc); +const char *CLASS_DESC_get_type_name(const CLASS_DESC *desc); #endif diff --git a/main/gbx/gbx_class_load.c b/main/gbx/gbx_class_load.c index 6b8277818..7517b0254 100644 --- a/main/gbx/gbx_class_load.c +++ b/main/gbx/gbx_class_load.c @@ -502,7 +502,7 @@ __MISMATCH: } -static void load_and_relocate(CLASS *class, int len_data, int *pndesc, int *pfirst) +static void load_and_relocate(CLASS *class, int len_data, CLASS_DESC **pstart, int *pndesc) { char *section; CLASS_INFO *info; @@ -879,14 +879,11 @@ static void load_and_relocate(CLASS *class, int len_data, int *pndesc, int *pfir //if (info->s_dynamic == 0) // class->no_create = TRUE; - /* Descriptions */ - - CLASS_make_description(class, start, n_desc, pfirst); - /* Class size and offsets */ CLASS_calc_info(class, class->n_event, info->s_dynamic, FALSE, info->s_static); + *pstart = start; *pndesc = n_desc; } @@ -908,6 +905,8 @@ void CLASS_load_without_init(CLASS *class) int first; int first_event; COMPONENT *save; + CLASS_DESC *start; + char kind; //size_t alloc = MEMORY_size; @@ -991,7 +990,7 @@ void CLASS_load_without_init(CLASS *class) class->init_dynamic = TRUE; - load_and_relocate(class, len_data, &n_desc, &first); + load_and_relocate(class, len_data, &start, &n_desc); /* Information on static and dynamic variables */ @@ -1059,15 +1058,20 @@ void CLASS_load_without_init(CLASS *class) /* Class public description */ - for (i = first; i < class->n_desc; i++) + for (i = 0; i < n_desc; i++) { - desc = class->table[i].desc; + desc = &start[i]; //class->table[i].desc; - desc->gambas.name = (char *)CLASS_DESC_get_type_name(desc); + //desc->gambas.name = (char *)CLASS_DESC_get_type_name(desc); conv_type(class, &desc->gambas.type); + + kind = *CLASS_DESC_get_type_name(desc); - switch (CLASS_DESC_get_type(desc)) + if (!desc->gambas.val1 && index(CD_CALL_SOMETHING_LIST, kind) != NULL) + fprintf(stderr, "CLASS_load_without_init: '%s.%s' gambas.val1 == 0\n", class->name, desc->gambas.name); + + switch (kind) { case CD_METHOD: case CD_STATIC_METHOD: @@ -1098,7 +1102,7 @@ void CLASS_load_without_init(CLASS *class) case CD_VARIABLE: case CD_STATIC_VARIABLE: - if (CLASS_DESC_get_type(desc) == CD_STATIC_VARIABLE) + if (kind == CD_STATIC_VARIABLE) var = &class->load->stat[desc->gambas.val1]; else var = &class->load->dyn[desc->gambas.val1]; @@ -1150,10 +1154,21 @@ void CLASS_load_without_init(CLASS *class) THROW(E_CLASS, ClassName, "Bad description", ""); } - - desc->method.class = class; } + /* Inheritance */ + + CLASS_make_description(class, start, n_desc, &first); + + /* Transfer symbol kind into symbol name (which is stored in the symbol table now), like native classes */ + + for (i = 0; i < n_desc; i++) + { + desc = &start[i]; + desc->gambas.name = (char *)CLASS_DESC_get_type_name(desc); + desc->method.class = class; + } + /* Event description */ CLASS_make_event(class, &first_event); diff --git a/main/gbx/gbx_class_native.c b/main/gbx/gbx_class_native.c index 225f48a01..25aac7e12 100644 --- a/main/gbx/gbx_class_native.c +++ b/main/gbx/gbx_class_native.c @@ -67,7 +67,7 @@ CLASS *CLASS_register_class(GB_DESC *ptr, CLASS *class) CLASS_EVENT *event; const char *ptype; - const char *type; + //const char *type; int first_event, nsign; TYPE *sign; int first; @@ -156,22 +156,15 @@ CLASS *CLASS_register_class(GB_DESC *ptr, CLASS *class) for(desc = start, n_desc = 0; desc->gambas.name != NULL; desc++, n_desc++); - CLASS_make_description(class, start, n_desc, &first); + /* Description analysis */ - /* Analyse de la description : - - Calcul du nombre de signatures - - Calcul du nombre d'��ements - */ - - for (i = first; i < class->n_desc; i++) + for (i = 0; i < n_desc; i++) { - desc = class->table[i].desc; - - ptype = (char *)desc->gambas.type; - - type = ptype; - desc->gambas.type = TYPE_from_string(&ptype); + desc = &start[i]; + ptype = (char *)desc->gambas.type; + desc->gambas.type = TYPE_from_string(&ptype); + switch (CLASS_DESC_get_type(desc)) { case CD_CONSTANT: @@ -229,9 +222,13 @@ CLASS *CLASS_register_class(GB_DESC *ptr, CLASS *class) CLASS_calc_info(class, class->n_event, size_dynamic, TRUE, 0); + // Inheritance + + CLASS_make_description(class, start, n_desc, &first); + CLASS_make_event(class, &first_event); - /* Transfert des évènements et signatures */ + // Transfer events and signatures if (nsign) { diff --git a/main/gbx/gbx_debug.c b/main/gbx/gbx_debug.c index b3b23aa6f..19cef475d 100644 --- a/main/gbx/gbx_debug.c +++ b/main/gbx/gbx_debug.c @@ -397,7 +397,6 @@ __NORMAL: return GB_DEBUG_ACCESS_NORMAL; } - void DEBUG_print_backtrace(ERROR_INFO *err) { int i, n; @@ -414,6 +413,38 @@ void DEBUG_print_backtrace(ERROR_INFO *err) } } +#if 0 +const char *DEBUG_get_current_backtrace(void) +{ + char *result = NULL; + int i, n; + ERROR_INFO err; + STACK_CONTEXT *sc; + + err.cp = CP; + err.fp = FP; + err.pc = PC; + err.bt_count = STACK_frame_count; + + sc = (STACK_CONTEXT *)(STACK_base + STACK_size) - err.bt_count; + + STRING_add(&result, DEBUG_get_position(err.cp, err.fp, err.pc), 0); + STRING_add_char(&result, '\n'); + for (i = 0, n = 0; i < err.bt_count; i++) + { + //fprintf(stderr, "%d: %s\n", i, DEBUG_get_position(bt[i].cp, bt[i].fp, bt[i].pc)); + if (!sc[i].pc) + continue; + n++; + STRING_add(&result, DEBUG_get_position(sc[i].cp, sc[i].fp, sc[i].pc), 0); + STRING_add_char(&result, '\n'); + } + + STRING_free_later(result); + return result; +} +#endif + GB_ARRAY DEBUG_get_string_array_from_backtrace(ERROR_INFO *err) { diff --git a/main/lib/image/c_color.c b/main/lib/image/c_color.c index 20ae8ad3e..b8b21641e 100644 --- a/main/lib/image/c_color.c +++ b/main/lib/image/c_color.c @@ -85,26 +85,26 @@ void COLOR_rgb_to_hsv(int r, int g, int b, int *H, int *S, int *V) } } -static void gt_rgb_to_hsv_cached(int r, int g, int b, int *H, int *S, int *V) +static void gt_rgb_to_hsv_cached(int r, int g, int b, int *h, int *s, int *v) { static int old_r = 0, old_g = 0, old_b = 0, old_h = -1, old_s = 0, old_v = 0; if (r == old_r && g == old_g && b == old_b) { - *H = old_h; - *S = old_s; - *V = old_v; + *h = old_h; + *s = old_s; + *v = old_v; return; } - COLOR_rgb_to_hsv(r, g, b, H, S, V); + COLOR_rgb_to_hsv(r, g, b, h, s, v); old_r = r; old_g = g; old_b = b; - old_h = *H; - old_s = *S; - old_v = *V; + old_h = *h; + old_s = *s; + old_v = *v; } void COLOR_hsv_to_rgb(int h, int s, int v, int *R, int *G, int *B) @@ -232,13 +232,21 @@ GB_COLOR COLOR_darker(GB_COLOR color) return v; } -BEGIN_METHOD(CCOLOR_rgb, GB_INTEGER r; GB_INTEGER g; GB_INTEGER b; GB_INTEGER a) +BEGIN_METHOD(Color_RGB, GB_INTEGER r; GB_INTEGER g; GB_INTEGER b; GB_INTEGER a) GB.ReturnInteger(gt_rgba_to_color(VARG(r), VARG(g), VARG(b), VARGOPT(a, 0))); END_METHOD -BEGIN_METHOD(CCOLOR_hsv, GB_INTEGER h; GB_INTEGER s; GB_INTEGER v; GB_INTEGER a) +BEGIN_METHOD(Color_SetRGB, GB_INTEGER color; GB_INTEGER red; GB_INTEGER green; GB_INTEGER blue; GB_INTEGER alpha) + + int r, g, b, a; + gt_color_to_rgba(VARG(color), &r, &g, &b, &a); + GB.ReturnInteger(gt_rgba_to_color(VARGOPT(red, r), VARGOPT(green, g), VARGOPT(blue, b), VARGOPT(alpha, a))); + +END_METHOD + +BEGIN_METHOD(Color_HSV, GB_INTEGER h; GB_INTEGER s; GB_INTEGER v; GB_INTEGER a) int r, g, b; COLOR_hsv_to_rgb(VARG(h), VARG(s), VARG(v), &r, &g, &b); @@ -246,7 +254,17 @@ BEGIN_METHOD(CCOLOR_hsv, GB_INTEGER h; GB_INTEGER s; GB_INTEGER v; GB_INTEGER a) END_METHOD -BEGIN_METHOD(CCOLOR_get, GB_INTEGER color) +BEGIN_METHOD(Color_SetHSV, GB_INTEGER color; GB_INTEGER hue; GB_INTEGER saturation; GB_INTEGER value; GB_INTEGER alpha) + + int r, g, b, a, h, s, v; + gt_color_to_rgba(VARG(color), &r, &g, &b, &a); + gt_rgb_to_hsv_cached(r, g, b, &h, &s, &v); + COLOR_hsv_to_rgb(VARGOPT(hue, h), VARGOPT(saturation, s), VARGOPT(value, v), &r, &g, &b); + GB.ReturnInteger(gt_rgba_to_color(r, g, b, VARGOPT(alpha, a))); + +END_METHOD + +BEGIN_METHOD(Color_get, GB_INTEGER color) CCOLOR *info; @@ -361,19 +379,19 @@ BEGIN_PROPERTY(CCOLOR_info_color) END_PROPERTY -BEGIN_METHOD(CCOLOR_lighter, GB_INTEGER color) +BEGIN_METHOD(Color_Lighter, GB_INTEGER color) GB.ReturnInteger(COLOR_lighter(VARG(color))); END_METHOD -BEGIN_METHOD(CCOLOR_darker, GB_INTEGER color) +BEGIN_METHOD(Color_Darker, GB_INTEGER color) GB.ReturnInteger(COLOR_darker(VARG(color))); END_METHOD -BEGIN_METHOD(CCOLOR_merge, GB_INTEGER color1; GB_INTEGER color2; GB_FLOAT weight) +BEGIN_METHOD(Color_Merge, GB_INTEGER color1; GB_INTEGER color2; GB_FLOAT weight) GB.ReturnInteger(COLOR_merge(VARG(color1), VARG(color2), VARGOPT(weight, 0.5))); @@ -389,7 +407,7 @@ BEGIN_METHOD(Color_Desaturate, GB_INTEGER color) END_METHOD -BEGIN_METHOD(CCOLOR_blend, GB_INTEGER src; GB_INTEGER dst) +BEGIN_METHOD(Color_Blend, GB_INTEGER src; GB_INTEGER dst) uint src = VARG(src); uint dst = VARG(dst); @@ -432,8 +450,17 @@ BEGIN_METHOD(CCOLOR_blend, GB_INTEGER src; GB_INTEGER dst) END_METHOD +BEGIN_METHOD(Color_GetAlpha, GB_INTEGER color) + + int r, g, b, a; + + gt_color_to_rgba(VARG(color), &r, &g, &b, &a); + GB.ReturnInteger(a); + +END_METHOD BEGIN_METHOD(Color_SetAlpha, GB_INTEGER color; GB_INTEGER alpha) + int r, g, b, a; gt_color_to_rgba(VARG(color), &r, &g, &b, &a); @@ -496,19 +523,22 @@ GB_DESC CColorDesc[] = GB_CONSTANT("Transparent", "i", 0xFFFFFFFF), - GB_STATIC_METHOD("RGB", "i", CCOLOR_rgb, "(Red)i(Green)i(Blue)i[(Alpha)i]"), - GB_STATIC_METHOD("HSV", "i", CCOLOR_hsv, "(Hue)i(Saturation)i(Value)i[(Alpha)i]"), + GB_STATIC_METHOD("RGB", "i", Color_RGB, "(Red)i(Green)i(Blue)i[(Alpha)i]"), + GB_STATIC_METHOD("HSV", "i", Color_HSV, "(Hue)i(Saturation)i(Value)i[(Alpha)i]"), - GB_STATIC_METHOD("Lighter", "i", CCOLOR_lighter, "(Color)i"), - GB_STATIC_METHOD("Darker", "i", CCOLOR_darker, "(Color)i"), - GB_STATIC_METHOD("Merge", "i", CCOLOR_merge, "(Color1)i(Color2)i[(Weight)f]"), - GB_STATIC_METHOD("Blend", "i", CCOLOR_blend, "(Source)i(Destination)i"), + GB_STATIC_METHOD("Lighter", "i", Color_Lighter, "(Color)i"), + GB_STATIC_METHOD("Darker", "i", Color_Darker, "(Color)i"), + GB_STATIC_METHOD("Merge", "i", Color_Merge, "(Color1)i(Color2)i[(Weight)f]"), + GB_STATIC_METHOD("Blend", "i", Color_Blend, "(Source)i(Destination)i"), GB_STATIC_METHOD("Desaturate", "i", Color_Desaturate, "(Color)i"), GB_STATIC_METHOD("SetAlpha", "i", Color_SetAlpha, "(Color)i(Alpha)i"), - - GB_STATIC_METHOD("_get", "ColorInfo", CCOLOR_get, "(Color)i"), - //GB_STATIC_METHOD("_call", "ColorInfo", CCOLOR_get, "(Color)i"), + GB_STATIC_METHOD("SetRGB", "i", Color_SetRGB, "(Color)i[(Red)i(Green)i(Blue)i(Alpha)i]"), + GB_STATIC_METHOD("SetHSV", "i", Color_SetHSV, "(Color)i[(Hue)i(Saturation)i(Value)i(Alpha)i]"), + GB_STATIC_METHOD("GetAlpha", "i", Color_GetAlpha, "(Color)i"), + + GB_STATIC_METHOD("_get", "ColorInfo", Color_get, "(Color)i"), + //GB_STATIC_METHOD("_call", "ColorInfo", Color_get, "(Color)i"), GB_END_DECLARE }; diff --git a/main/mime/application-x-gambas.png b/main/mime/application-x-gambas3.png similarity index 100% rename from main/mime/application-x-gambas.png rename to main/mime/application-x-gambas3.png diff --git a/main/mime/application-x-gambas.xml b/main/mime/application-x-gambas3.xml similarity index 69% rename from main/mime/application-x-gambas.xml rename to main/mime/application-x-gambas3.xml index a94fd7e71..d93770cf0 100644 --- a/main/mime/application-x-gambas.xml +++ b/main/mime/application-x-gambas3.xml @@ -1,9 +1,9 @@ - + - Gambas executable - Exécutable Gambas + Gambas 3 executable + Exécutable Gambas 3