From 1396b71262aa02a2f17b3ed6012c6a85245d6da1 Mon Sep 17 00:00:00 2001 From: Bastian Germann Date: Fri, 18 Aug 2023 21:13:04 +0100 Subject: [PATCH 1/1] Import gambas3_3.18.3.orig.tar.gz [dgit import orig gambas3_3.18.3.orig.tar.gz] --- .gitignore | 49 + .gitlab-ci.yml | 242 + AUTHORS | 311 + CONTRIBUTING.md | 149 + COPYING | 339 + ChangeLog | 0 INSTALL | 1 + Makefile.am | 62 + NEWS | 0 README | 54 + README.commit | 60 + README.md | 60 + TEMPLATE/README | 34 + TEMPLATE/TEMPLATE.c | 28 + TEMPLATE/TEMPLATE.conf | 79 + TEMPLATE/TEMPLATE.cpp | 28 + TEMPLATE/TEMPLATE.h | 35 + TEMPLATE/conf/gb.cairo.conf | 76 + TEMPLATE/conf/gb.dbus.conf | 76 + TEMPLATE/conf/gb.desktop.conf | 76 + TEMPLATE/conf/gb.form.htmlview.conf | 80 + TEMPLATE/conf/gb.gmp.conf | 76 + TEMPLATE/conf/gb.gsl.conf | 76 + TEMPLATE/conf/gb.image.io.conf | 76 + TEMPLATE/conf/gb.media.conf | 76 + TEMPLATE/conf/gb.mime.conf | 76 + TEMPLATE/conf/gb.net.pop3.conf | 76 + TEMPLATE/conf/gb.net.smtp.conf | 76 + TEMPLATE/conf/gb.openal.conf | 76 + TEMPLATE/conf/gb.poppler.conf | 79 + TEMPLATE/make-component | 64 + TEMPLATE/template/AUTHORS | 0 TEMPLATE/template/ChangeLog | 0 TEMPLATE/template/Makefile.am | 3 + TEMPLATE/template/NEWS | 0 TEMPLATE/template/README | 0 TEMPLATE/template/SOURCES | 2 + TEMPLATE/template/configure.ac | 72 + TEMPLATE/template/make-component | 3 + TEMPLATE/template/src/.component | 3 + TEMPLATE/template/src/Makefile.am | 12 + TODO | 74 + VERSION | 1 + acinclude.m4 | 1728 + app/AUTHORS | 0 app/COPYING | 1 + app/ChangeLog | 0 app/INSTALL | 231 + app/Makefile.am | 86 + app/NEWS | 0 app/README | 0 app/TODO | 0 app/acinclude.m4 | 1 + app/configure.ac | 21 + app/desktop/gambas3-48.png | Bin 0 -> 1864 bytes app/desktop/gambas3.appdata.xml | 31 + app/desktop/gambas3.desktop | 30 + app/desktop/gambas3.png | Bin 0 -> 6834 bytes app/desktop/gambas3.svg | 166 + app/examples/Basic/Blights/.directory | 2 + app/examples/Basic/Blights/.icon.png | Bin 0 -> 4209 bytes app/examples/Basic/Blights/.lang/ca.po | 28 + app/examples/Basic/Blights/.lang/cs.po | 20 + app/examples/Basic/Blights/.lang/de.po | 21 + app/examples/Basic/Blights/.lang/es.po | 20 + app/examples/Basic/Blights/.lang/fr.po | 3 + app/examples/Basic/Blights/.lang/nl.po | 20 + app/examples/Basic/Blights/.lang/ru.po | 34 + app/examples/Basic/Blights/.lang/sv.po | 15 + app/examples/Basic/Blights/.project | 16 + app/examples/Basic/Blights/.src/win1.class | 36 + app/examples/Basic/Blights/.src/win1.form | 53 + app/examples/Basic/Blights/ampoule.png | Bin 0 -> 1543 bytes app/examples/Basic/Blights/bloff.xpm | 1234 + app/examples/Basic/Blights/blon.xpm | 1503 + app/examples/Basic/Collection/.directory | 2 + app/examples/Basic/Collection/.icon.png | Bin 0 -> 4310 bytes app/examples/Basic/Collection/.lang/ca.po | 48 + app/examples/Basic/Collection/.lang/cs.po | 40 + app/examples/Basic/Collection/.lang/de.po | 41 + app/examples/Basic/Collection/.lang/es.po | 41 + app/examples/Basic/Collection/.lang/nl.po | 41 + app/examples/Basic/Collection/.lang/ru.po | 54 + app/examples/Basic/Collection/.project | 17 + .../Basic/Collection/.src/CThing.class | 6 + .../Basic/Collection/.src/FStart.class | 40 + .../Basic/Collection/.src/FStart.form | 20 + app/examples/Basic/Collection/collection.png | Bin 0 -> 2062 bytes app/examples/Basic/DragNDrop/.directory | 2 + app/examples/Basic/DragNDrop/.icon.png | Bin 0 -> 4159 bytes app/examples/Basic/DragNDrop/.lang/ru.po | 34 + app/examples/Basic/DragNDrop/.project | 17 + .../Basic/DragNDrop/.src/FDragNDrop.class | 138 + .../Basic/DragNDrop/.src/FDragNDrop.form | 108 + app/examples/Basic/DragNDrop/drop.png | Bin 0 -> 1503 bytes app/examples/Basic/Object/.directory | 2 + app/examples/Basic/Object/.icon.png | Bin 0 -> 4189 bytes app/examples/Basic/Object/.lang/ca.po | 43 + app/examples/Basic/Object/.lang/cs.po | 40 + app/examples/Basic/Object/.lang/de.po | 41 + app/examples/Basic/Object/.lang/es.po | 37 + app/examples/Basic/Object/.lang/nl.po | 41 + app/examples/Basic/Object/.lang/ru.po | 58 + app/examples/Basic/Object/.project | 17 + app/examples/Basic/Object/.src/CThing.class | 6 + app/examples/Basic/Object/.src/FStart.class | 44 + app/examples/Basic/Object/.src/FStart.form | 28 + app/examples/Basic/Object/object.png | Bin 0 -> 1499 bytes app/examples/Basic/Timer/.directory | 2 + app/examples/Basic/Timer/.icon.png | Bin 0 -> 4418 bytes app/examples/Basic/Timer/.lang/ca.po | 113 + app/examples/Basic/Timer/.lang/cs.po | 92 + app/examples/Basic/Timer/.lang/de.po | 93 + app/examples/Basic/Timer/.lang/es.po | 96 + app/examples/Basic/Timer/.lang/nl.po | 92 + app/examples/Basic/Timer/.lang/ru.po | 114 + app/examples/Basic/Timer/.project | 19 + .../Basic/Timer/.src/FOtherTimer.class | 85 + .../Basic/Timer/.src/FOtherTimer.form | 40 + app/examples/Basic/Timer/.src/FTimer.class | 56 + app/examples/Basic/Timer/.src/FTimer.form | 100 + app/examples/Basic/Timer/timer.png | Bin 0 -> 2778 bytes .../Control/ArrayOfControls/.directory | 2 + .../Control/ArrayOfControls/.icon.png | Bin 0 -> 4209 bytes .../Control/ArrayOfControls/.lang/ca.po | 45 + .../Control/ArrayOfControls/.lang/cs.po | 44 + .../Control/ArrayOfControls/.lang/de.po | 44 + .../Control/ArrayOfControls/.lang/nl.po | 43 + .../Control/ArrayOfControls/.lang/ru.po | 58 + app/examples/Control/ArrayOfControls/.project | 18 + .../Control/ArrayOfControls/.src/FMain.class | 83 + .../Control/ArrayOfControls/.src/FMain.form | 25 + .../Control/ArrayOfControls/green.png | Bin 0 -> 873 bytes .../Control/ArrayOfControls/green1.png | Bin 0 -> 1548 bytes .../Control/ArrayOfControls/phone.png | Bin 0 -> 18663 bytes app/examples/Control/ArrayOfControls/red.png | Bin 0 -> 1452 bytes app/examples/Control/ArrayOfControls/red1.png | Bin 0 -> 1571 bytes app/examples/Control/Embedder/.directory | 2 + app/examples/Control/Embedder/.icon.png | Bin 0 -> 4242 bytes app/examples/Control/Embedder/.lang/ca.po | 70 + app/examples/Control/Embedder/.lang/cs.po | 62 + app/examples/Control/Embedder/.lang/de.po | 59 + app/examples/Control/Embedder/.lang/es.po | 57 + app/examples/Control/Embedder/.lang/nl.po | 55 + app/examples/Control/Embedder/.lang/ru.po | 77 + app/examples/Control/Embedder/.project | 20 + .../Control/Embedder/.src/FMain.class | 89 + app/examples/Control/Embedder/.src/FMain.form | 54 + app/examples/Control/Embedder/embedder.png | Bin 0 -> 2623 bytes .../Control/HighlightEditor/.directory | 2 + .../.hidden/screenshots/2014-12-17.png | Bin 0 -> 58870 bytes .../Control/HighlightEditor/.icon.png | Bin 0 -> 18015 bytes .../Control/HighlightEditor/.lang/ca.po | 43 + .../Control/HighlightEditor/.lang/cs.po | 40 + .../Control/HighlightEditor/.lang/de.po | 41 + .../Control/HighlightEditor/.lang/es.po | 34 + .../Control/HighlightEditor/.lang/nl.po | 39 + .../Control/HighlightEditor/.lang/ru.po | 64 + app/examples/Control/HighlightEditor/.project | 21 + .../HighlightEditor/.src/FEditor.class | 184 + .../Control/HighlightEditor/.src/FEditor.form | 36 + .../Control/HighlightEditor/download.html | 155 + .../Control/HighlightEditor/editor.png | Bin 0 -> 1657 bytes app/examples/Control/LCDLabel/.directory | 2 + app/examples/Control/LCDLabel/.icon.png | Bin 0 -> 3429 bytes app/examples/Control/LCDLabel/.lang/ru.po | 48 + app/examples/Control/LCDLabel/.project | 17 + .../Control/LCDLabel/.src/FMain.class | 54 + app/examples/Control/LCDLabel/.src/FMain.form | 33 + .../Control/LCDLabel/.src/TimeBoxDemo.class | 152 + app/examples/Control/LCDLabel/alarm.ogg | Bin 0 -> 61621 bytes app/examples/Control/LCDLabel/lcdlabel.png | Bin 0 -> 492 bytes app/examples/Control/MapView/.directory | 2 + .../Control/MapView/.hidden/mapview.png | Bin 0 -> 1749 bytes app/examples/Control/MapView/.icon.png | Bin 0 -> 3486 bytes app/examples/Control/MapView/.lang/ru.po | 78 + app/examples/Control/MapView/.project | 18 + app/examples/Control/MapView/.src/FMain.class | 140 + app/examples/Control/MapView/.src/FMain.form | 80 + app/examples/Control/TextEdit/.directory | 2 + app/examples/Control/TextEdit/.icon.png | Bin 0 -> 4151 bytes app/examples/Control/TextEdit/.lang/ca.po | 118 + app/examples/Control/TextEdit/.lang/cs.po | 109 + app/examples/Control/TextEdit/.lang/de.po | 116 + app/examples/Control/TextEdit/.lang/es.po | 101 + app/examples/Control/TextEdit/.lang/fr.po | 83 + app/examples/Control/TextEdit/.lang/nl.po | 99 + app/examples/Control/TextEdit/.lang/ru.po | 120 + app/examples/Control/TextEdit/.lang/sv.po | 84 + app/examples/Control/TextEdit/.project | 22 + .../Control/TextEdit/.src/FMain.class | 171 + app/examples/Control/TextEdit/.src/FMain.form | 136 + .../Control/TextEdit/.src/frmShowHtml.class | 29 + .../Control/TextEdit/.src/frmShowHtml.form | 29 + app/examples/Control/TextEdit/edit.png | Bin 0 -> 1233 bytes app/examples/Control/TextEdit/text.html | 17 + app/examples/Control/TreeView/.directory | 2 + app/examples/Control/TreeView/.icon.png | Bin 0 -> 4093 bytes app/examples/Control/TreeView/.lang/ca.po | 88 + app/examples/Control/TreeView/.lang/cs.po | 76 + app/examples/Control/TreeView/.lang/de.po | 77 + app/examples/Control/TreeView/.lang/es.po | 73 + app/examples/Control/TreeView/.lang/nl.po | 75 + app/examples/Control/TreeView/.lang/ru.po | 154 + app/examples/Control/TreeView/.project | 17 + .../TreeView/.src/TreeViewExample.class | 184 + .../TreeView/.src/TreeViewExample.form | 59 + app/examples/Control/TreeView/Female.png | Bin 0 -> 293 bytes app/examples/Control/TreeView/Male.png | Bin 0 -> 323 bytes app/examples/Control/TreeView/treeview.png | Bin 0 -> 471 bytes app/examples/Control/Wizard/.directory | 2 + app/examples/Control/Wizard/.icon.png | Bin 0 -> 4168 bytes app/examples/Control/Wizard/.lang/ca.po | 139 + app/examples/Control/Wizard/.lang/cs.po | 138 + app/examples/Control/Wizard/.lang/de.po | 138 + app/examples/Control/Wizard/.lang/nl.po | 107 + app/examples/Control/Wizard/.lang/ru.po | 152 + app/examples/Control/Wizard/.project | 16 + app/examples/Control/Wizard/.src/FMain.class | 65 + app/examples/Control/Wizard/.src/FMain.form | 118 + app/examples/Control/Wizard/wizard.png | Bin 0 -> 1510 bytes app/examples/Database/Database/.component | 4 + app/examples/Database/Database/.directory | 2 + app/examples/Database/Database/.icon.png | Bin 0 -> 4336 bytes app/examples/Database/Database/.lang/ca.po | 160 + app/examples/Database/Database/.lang/cs.po | 157 + app/examples/Database/Database/.lang/de.po | 153 + app/examples/Database/Database/.lang/es.po | 151 + app/examples/Database/Database/.lang/nl.po | 147 + app/examples/Database/Database/.lang/ru.po | 198 + app/examples/Database/Database/.project | 19 + .../Database/Database/.src/FMain.class | 178 + .../Database/Database/.src/FMain.form | 118 + .../Database/Database/.src/FRequest.class | 131 + .../Database/Database/.src/FRequest.form | 12 + .../Database/Database/.src/FTest.class | 25 + .../Database/Database/.src/FTest.form | 121 + .../Database/Database/.src/Form1.class | 83 + .../Database/Database/.src/Form1.form | 8 + app/examples/Database/Database/database.png | Bin 0 -> 1142 bytes app/examples/Database/MySQLExample/.directory | 2 + app/examples/Database/MySQLExample/.icon.png | Bin 0 -> 4409 bytes .../Database/MySQLExample/.lang/ca.po | 539 + .../Database/MySQLExample/.lang/cs.po | 536 + .../Database/MySQLExample/.lang/de.po | 536 + .../Database/MySQLExample/.lang/es.po | 533 + .../Database/MySQLExample/.lang/fr.po | 1546 + .../Database/MySQLExample/.lang/nl.po | 531 + .../Database/MySQLExample/.lang/ru.po | 554 + app/examples/Database/MySQLExample/.project | 26 + .../.src/CreateObjects/FNewDatabase.class | 33 + .../.src/CreateObjects/FNewDatabase.form | 54 + .../.src/CreateObjects/FNewEvent.class | 51 + .../.src/CreateObjects/FNewEvent.form | 53 + .../.src/CreateObjects/FNewField.class | 53 + .../.src/CreateObjects/FNewField.form | 77 + .../.src/CreateObjects/FNewIndex.class | 79 + .../.src/CreateObjects/FNewIndex.form | 70 + .../.src/CreateObjects/FNewRoutine.class | 65 + .../.src/CreateObjects/FNewRoutine.form | 71 + .../.src/CreateObjects/FNewTable.class | 55 + .../.src/CreateObjects/FNewTable.form | 54 + .../.src/CreateObjects/FNewTrigger.class | 62 + .../.src/CreateObjects/FNewTrigger.form | 64 + .../.src/CreateObjects/FNewView.class | 45 + .../.src/CreateObjects/FNewView.form | 44 + .../Database/MySQLExample/.src/FConnect.class | 46 + .../Database/MySQLExample/.src/FConnect.form | 73 + .../Database/MySQLExample/.src/FMessage.class | 21 + .../Database/MySQLExample/.src/FMessage.form | 12 + .../Database/MySQLExample/.src/FTables.class | 1186 + .../Database/MySQLExample/.src/FTables.form | 206 + .../Database/MySQLExample/.src/modMain.module | 69 + .../Database/MySQLExample/icons/16/Admin.png | Bin 0 -> 1099 bytes .../Database/MySQLExample/icons/16/Blob.png | Bin 0 -> 646 bytes .../MySQLExample/icons/16/Column_FK.png | Bin 0 -> 529 bytes .../MySQLExample/icons/16/Database.png | Bin 0 -> 805 bytes .../MySQLExample/icons/16/Datetime.png | Bin 0 -> 1140 bytes .../Database/MySQLExample/icons/16/Field.png | Bin 0 -> 653 bytes .../MySQLExample/icons/16/Function.png | Bin 0 -> 245 bytes .../Database/MySQLExample/icons/16/Index.png | Bin 0 -> 1122 bytes .../Database/MySQLExample/icons/16/Lock.png | Bin 0 -> 1195 bytes .../Database/MySQLExample/icons/16/New.png | Bin 0 -> 817 bytes .../MySQLExample/icons/16/Numeric.png | Bin 0 -> 1021 bytes .../MySQLExample/icons/16/Primarykey.png | Bin 0 -> 585 bytes .../MySQLExample/icons/16/Refresh.png | Bin 0 -> 349 bytes .../MySQLExample/icons/16/Routine.png | Bin 0 -> 827 bytes .../Database/MySQLExample/icons/16/String.png | Bin 0 -> 1024 bytes .../Database/MySQLExample/icons/16/Table.png | Bin 0 -> 823 bytes .../MySQLExample/icons/16/Trigger.png | Bin 0 -> 930 bytes .../Database/MySQLExample/icons/16/View.png | Bin 0 -> 697 bytes .../MySQLExample/icons/16/Warning.png | Bin 0 -> 543 bytes .../Database/MySQLExample/icons/24/Null.png | Bin 0 -> 121 bytes .../Database/PictureDatabase/.directory | 2 + .../Database/PictureDatabase/.icon.png | Bin 0 -> 4228 bytes .../Database/PictureDatabase/.lang/ca.po | 84 + .../Database/PictureDatabase/.lang/cs.po | 75 + .../Database/PictureDatabase/.lang/de.po | 76 + .../Database/PictureDatabase/.lang/es.po | 36 + .../Database/PictureDatabase/.lang/nl.po | 67 + .../Database/PictureDatabase/.lang/ru.po | 194 + .../Database/PictureDatabase/.project | 25 + .../.src/FormPictureDatabase.class | 227 + .../.src/FormPictureDatabase.form | 67 + .../.src/ModuleDatabase.module | 215 + .../Images/document-save-as.png | Bin 0 -> 845 bytes .../PictureDatabase/Images/document-save.png | Bin 0 -> 903 bytes .../Images/image-x-generic.png | Bin 0 -> 1150 bytes .../PictureDatabase/Images/list-add.png | Bin 0 -> 366 bytes .../PictureDatabase/Images/list-remove.png | Bin 0 -> 282 bytes app/examples/Drawing/AnalogWatch/.directory | 2 + .../.hidden/screenshots/2014-12-14.png | Bin 0 -> 24631 bytes app/examples/Drawing/AnalogWatch/.icon.png | Bin 0 -> 3642 bytes app/examples/Drawing/AnalogWatch/.lang/ru.po | 72 + app/examples/Drawing/AnalogWatch/.project | 18 + .../Drawing/AnalogWatch/.src/FrmClock.class | 152 + .../Drawing/AnalogWatch/.src/FrmClock.form | 30 + app/examples/Drawing/AnalogWatch/timer.png | Bin 0 -> 2778 bytes app/examples/Drawing/Barcode/.directory | 2 + app/examples/Drawing/Barcode/.icon.png | Bin 0 -> 3990 bytes app/examples/Drawing/Barcode/.lang/ca.po | 77 + app/examples/Drawing/Barcode/.lang/cs.po | 76 + app/examples/Drawing/Barcode/.lang/de.po | 76 + app/examples/Drawing/Barcode/.lang/ru.po | 90 + app/examples/Drawing/Barcode/.project | 21 + app/examples/Drawing/Barcode/.src/FMain.class | 161 + app/examples/Drawing/Barcode/.src/FMain.form | 88 + .../Drawing/Barcode/.src/modCrBcode.module | 98 + app/examples/Drawing/Barcode/barcode.png | Bin 0 -> 765 bytes app/examples/Drawing/Chart/.directory | 2 + app/examples/Drawing/Chart/.icon.png | Bin 0 -> 4083 bytes app/examples/Drawing/Chart/.lang/ca.po | 85 + app/examples/Drawing/Chart/.lang/cs.po | 84 + app/examples/Drawing/Chart/.lang/de.po | 81 + app/examples/Drawing/Chart/.lang/es.po | 78 + app/examples/Drawing/Chart/.lang/ru.po | 114 + app/examples/Drawing/Chart/.project | 17 + .../Drawing/Chart/.src/FormChart.class | 112 + .../Drawing/Chart/.src/FormChart.form | 32 + .../Drawing/Chart/.src/FormData.class | 43 + app/examples/Drawing/Chart/.src/FormData.form | 89 + app/examples/Drawing/Chart/graph.png | Bin 0 -> 225 bytes app/examples/Drawing/Clock/.directory | 2 + app/examples/Drawing/Clock/.icon.png | Bin 0 -> 4367 bytes app/examples/Drawing/Clock/.icon/16.png | Bin 0 -> 949 bytes app/examples/Drawing/Clock/.icon/32.png | Bin 0 -> 2599 bytes app/examples/Drawing/Clock/.icon/48.png | Bin 0 -> 4946 bytes app/examples/Drawing/Clock/.lang/ca.po | 63 + app/examples/Drawing/Clock/.lang/cs.po | 56 + app/examples/Drawing/Clock/.lang/de.po | 57 + app/examples/Drawing/Clock/.lang/es.po | 53 + app/examples/Drawing/Clock/.lang/ru.po | 84 + app/examples/Drawing/Clock/.project | 21 + app/examples/Drawing/Clock/.src/FClock.class | 170 + app/examples/Drawing/Clock/.src/FClock.form | 55 + app/examples/Drawing/Clock/img/arrow_hour.png | Bin 0 -> 396 bytes app/examples/Drawing/Clock/img/arrow_min.png | Bin 0 -> 420 bytes app/examples/Drawing/Clock/img/arrow_sec.png | Bin 0 -> 1253 bytes .../Drawing/Clock/img/clock_bg_big1.png | Bin 0 -> 19642 bytes .../Drawing/Clock/img/clock_bg_big2.png | Bin 0 -> 24928 bytes .../Drawing/Clock/img/clock_bg_big3.png | Bin 0 -> 50841 bytes .../Drawing/Clock/img/clock_bg_big4.png | Bin 0 -> 21425 bytes app/examples/Drawing/Fractal/.directory | 2 + .../.hidden/screenshots/2014-12-14.png | Bin 0 -> 152730 bytes app/examples/Drawing/Fractal/.icon.png | Bin 0 -> 3483 bytes app/examples/Drawing/Fractal/.lang/cs.po | 60 + app/examples/Drawing/Fractal/.lang/fr.po | 61 + app/examples/Drawing/Fractal/.lang/ru.po | 80 + app/examples/Drawing/Fractal/.project | 18 + .../Drawing/Fractal/.src/FFractal.class | 245 + .../Drawing/Fractal/.src/FFractal.form | 18 + .../Drawing/Fractal/.src/FractalTask.class | 324 + app/examples/Drawing/Fractal/icon.png | Bin 0 -> 4737 bytes app/examples/Drawing/Fractal/rose.jpg | Bin 0 -> 26938 bytes app/examples/Drawing/GSLSpline/.directory | 2 + app/examples/Drawing/GSLSpline/.icon.png | Bin 0 -> 4045 bytes app/examples/Drawing/GSLSpline/.lang/ru.po | 54 + app/examples/Drawing/GSLSpline/.project | 15 + .../Drawing/GSLSpline/.src/FMain.class | 130 + .../Drawing/GSLSpline/.src/FMain.form | 45 + app/examples/Drawing/GSLSpline/spline.png | Bin 0 -> 1632 bytes app/examples/Drawing/Gravity/.directory | 2 + app/examples/Drawing/Gravity/.icon.png | Bin 0 -> 4437 bytes app/examples/Drawing/Gravity/.lang/ca.po | 135 + app/examples/Drawing/Gravity/.lang/cs.po | 128 + app/examples/Drawing/Gravity/.lang/de.po | 129 + app/examples/Drawing/Gravity/.lang/es.po | 126 + app/examples/Drawing/Gravity/.lang/ru.po | 162 + app/examples/Drawing/Gravity/.project | 18 + .../Drawing/Gravity/.src/FAbout.class | 8 + app/examples/Drawing/Gravity/.src/FAbout.form | 42 + app/examples/Drawing/Gravity/.src/FMain.class | 232 + app/examples/Drawing/Gravity/.src/FMain.form | 143 + app/examples/Drawing/Gravity/.src/cBall.class | 9 + app/examples/Drawing/Gravity/gravity.png | Bin 0 -> 7084 bytes .../Drawing/OnScreenDisplay/.directory | 2 + .../Drawing/OnScreenDisplay/.icon.png | Bin 0 -> 4186 bytes .../Drawing/OnScreenDisplay/.lang/ca.po | 27 + .../Drawing/OnScreenDisplay/.lang/cs.po | 20 + .../Drawing/OnScreenDisplay/.lang/de.po | 21 + .../Drawing/OnScreenDisplay/.lang/es.po | 15 + .../Drawing/OnScreenDisplay/.lang/ru.po | 34 + app/examples/Drawing/OnScreenDisplay/.project | 17 + .../.src/FOnScreenDisplay.class | 67 + .../.src/FOnScreenDisplay.form | 12 + app/examples/Drawing/OnScreenDisplay/icon.png | Bin 0 -> 1300 bytes app/examples/Drawing/Painting/.directory | 2 + .../.hidden/screenshots/2014-12-14.png | Bin 0 -> 90069 bytes app/examples/Drawing/Painting/.icon.png | Bin 0 -> 3331 bytes app/examples/Drawing/Painting/.lang/ca.po | 126 + app/examples/Drawing/Painting/.lang/cs.po | 128 + app/examples/Drawing/Painting/.lang/de.po | 129 + app/examples/Drawing/Painting/.lang/ru.po | 148 + app/examples/Drawing/Painting/.project | 16 + .../Drawing/Painting/.src/FMain.class | 548 + app/examples/Drawing/Painting/.src/FMain.form | 195 + .../Painting/.src/MMakeSourceFile.module | 32 + app/examples/Drawing/Painting/Example1 | 29 + app/examples/Drawing/Painting/Example10 | 11 + app/examples/Drawing/Painting/Example11 | 26 + app/examples/Drawing/Painting/Example12 | 18 + app/examples/Drawing/Painting/Example13 | 16 + app/examples/Drawing/Painting/Example14 | 28 + app/examples/Drawing/Painting/Example15 | 22 + app/examples/Drawing/Painting/Example16 | 25 + app/examples/Drawing/Painting/Example17 | 29 + app/examples/Drawing/Painting/Example18 | 16 + app/examples/Drawing/Painting/Example2 | 29 + app/examples/Drawing/Painting/Example20 | 17 + app/examples/Drawing/Painting/Example21 | 14 + app/examples/Drawing/Painting/Example22 | 10 + app/examples/Drawing/Painting/Example3 | 15 + app/examples/Drawing/Painting/Example4 | 13 + app/examples/Drawing/Painting/Example5 | 61 + app/examples/Drawing/Painting/Example6 | 27 + app/examples/Drawing/Painting/Example7 | 17 + app/examples/Drawing/Painting/Example8 | 22 + app/examples/Drawing/Painting/Example9 | 23 + app/examples/Drawing/Painting/clovis.jpg | Bin 0 -> 15838 bytes app/examples/Drawing/Painting/gambas.svg | 540 + app/examples/Drawing/Painting/icon.png | Bin 0 -> 2078 bytes app/examples/Drawing/Painting/image.jpg | Bin 0 -> 19496 bytes app/examples/Drawing/QuasiRegular/.directory | 2 + .../.hidden/screenshots/2014-12-14.png | Bin 0 -> 44667 bytes app/examples/Drawing/QuasiRegular/.icon.png | Bin 0 -> 3730 bytes app/examples/Drawing/QuasiRegular/.project | 14 + .../Drawing/QuasiRegular/.src/FMain.class | 87 + .../Drawing/QuasiRegular/.src/FMain.form | 10 + app/examples/Drawing/QuasiRegular/icon.png | Bin 0 -> 705 bytes .../Drawing/RandomColorSort/.directory | 2 + .../.hidden/screenshots/2014-12-14.png | Bin 0 -> 247987 bytes .../Drawing/RandomColorSort/.icon.png | Bin 0 -> 3663 bytes .../Drawing/RandomColorSort/.lang/ru.po | 96 + app/examples/Drawing/RandomColorSort/.project | 16 + .../Drawing/RandomColorSort/.src/FMain.class | 265 + .../Drawing/RandomColorSort/.src/FMain.form | 59 + .../RandomColorSort/RandomColorSort.png | Bin 0 -> 10533 bytes app/examples/Drawing/Tablet/.directory | 2 + .../Tablet/.hidden/screenshots/2014-12-14.png | Bin 0 -> 59466 bytes app/examples/Drawing/Tablet/.icon.png | Bin 0 -> 3536 bytes app/examples/Drawing/Tablet/.lang/ru.po | 112 + app/examples/Drawing/Tablet/.project | 16 + app/examples/Drawing/Tablet/.src/FMain.class | 178 + app/examples/Drawing/Tablet/.src/FMain.form | 174 + app/examples/Drawing/Tablet/Icon.png | Bin 0 -> 3753 bytes app/examples/Games/BeastScroll/.dir_icon.png | Bin 0 -> 1571 bytes app/examples/Games/BeastScroll/.directory | 2 + app/examples/Games/BeastScroll/.icon.png | Bin 0 -> 3371 bytes app/examples/Games/BeastScroll/.lang/ru.po | 56 + app/examples/Games/BeastScroll/.project | 18 + .../Games/BeastScroll/.src/MMain.module | 215 + app/examples/Games/BeastScroll/b-title.mod | Bin 0 -> 56838 bytes app/examples/Games/BeastScroll/bgd1_ciel.png | Bin 0 -> 6797 bytes .../Games/BeastScroll/bgd2_montagnes.png | Bin 0 -> 177395 bytes app/examples/Games/BeastScroll/bgd3_sol1.png | Bin 0 -> 9994 bytes app/examples/Games/BeastScroll/bgd4_sol2.png | Bin 0 -> 9668 bytes app/examples/Games/BeastScroll/bgd5_sol3.png | Bin 0 -> 4772 bytes app/examples/Games/BeastScroll/fireworks.png | Bin 0 -> 46710 bytes app/examples/Games/BeastScroll/logo.png | Bin 0 -> 4768 bytes app/examples/Games/BeastScroll/scrolltext.png | Bin 0 -> 18100 bytes .../Games/BeastScroll/sprite_arbre.png | Bin 0 -> 73213 bytes .../Games/BeastScroll/sprite_barriere.png | Bin 0 -> 6455 bytes .../Games/BeastScroll/sprite_nuages1.png | Bin 0 -> 14285 bytes .../Games/BeastScroll/sprite_nuages2.png | Bin 0 -> 5079 bytes .../Games/BeastScroll/sprite_nuages3.png | Bin 0 -> 2389 bytes .../Games/BeastScroll/sprite_nuages4.png | Bin 0 -> 1036 bytes app/examples/Games/Concent/.directory | 2 + app/examples/Games/Concent/.icon.png | Bin 0 -> 4417 bytes app/examples/Games/Concent/.icon/16.png | Bin 0 -> 949 bytes app/examples/Games/Concent/.icon/32.png | Bin 0 -> 2599 bytes app/examples/Games/Concent/.icon/48.png | Bin 0 -> 4946 bytes app/examples/Games/Concent/.lang/ca.po | 217 + app/examples/Games/Concent/.lang/cs.po | 224 + app/examples/Games/Concent/.lang/de.po | 168 + app/examples/Games/Concent/.lang/en.po | 226 + app/examples/Games/Concent/.lang/es.po | 120 + app/examples/Games/Concent/.lang/fr.po | 164 + app/examples/Games/Concent/.lang/ru.po | 222 + app/examples/Games/Concent/.project | 22 + app/examples/Games/Concent/.src/fotos.class | 7 + app/examples/Games/Concent/.src/fotos.form | 210 + .../Games/Concent/.src/frmAcerca.class | 12 + .../Games/Concent/.src/frmAcerca.form | 20 + .../Games/Concent/.src/frmInstrucciones.class | 11 + .../Games/Concent/.src/frmInstrucciones.form | 22 + .../Games/Concent/.src/funciones.module | 162 + .../Games/Concent/.src/principal.class | 390 + .../Games/Concent/.src/principal.form | 220 + app/examples/Games/Concent/Blockhit.wav | Bin 0 -> 1148 bytes app/examples/Games/Concent/CHANGELOG | 6 + app/examples/Games/Concent/Missed.wav | Bin 0 -> 15612 bytes app/examples/Games/Concent/Newlevel.wav | Bin 0 -> 19842 bytes app/examples/Games/Concent/Paddle.wav | Bin 0 -> 1754 bytes app/examples/Games/Concent/Setup.wav | Bin 0 -> 768 bytes app/examples/Games/Concent/Wallhit.wav | Bin 0 -> 768 bytes app/examples/Games/Concent/applause.wav | Bin 0 -> 33654 bytes app/examples/Games/Concent/imagenes/an1.gif | Bin 0 -> 1601 bytes app/examples/Games/Concent/imagenes/an10.gif | Bin 0 -> 2209 bytes app/examples/Games/Concent/imagenes/an11.gif | Bin 0 -> 1365 bytes app/examples/Games/Concent/imagenes/an12.gif | Bin 0 -> 1332 bytes app/examples/Games/Concent/imagenes/an13.gif | Bin 0 -> 2223 bytes app/examples/Games/Concent/imagenes/an14.gif | Bin 0 -> 1924 bytes app/examples/Games/Concent/imagenes/an15.gif | Bin 0 -> 1132 bytes app/examples/Games/Concent/imagenes/an16.gif | Bin 0 -> 1318 bytes app/examples/Games/Concent/imagenes/an17.gif | Bin 0 -> 1845 bytes app/examples/Games/Concent/imagenes/an18.gif | Bin 0 -> 1571 bytes app/examples/Games/Concent/imagenes/an19.gif | Bin 0 -> 1849 bytes app/examples/Games/Concent/imagenes/an2.gif | Bin 0 -> 1373 bytes app/examples/Games/Concent/imagenes/an20.gif | Bin 0 -> 1540 bytes app/examples/Games/Concent/imagenes/an21.gif | Bin 0 -> 1720 bytes app/examples/Games/Concent/imagenes/an22.gif | Bin 0 -> 1332 bytes app/examples/Games/Concent/imagenes/an23.gif | Bin 0 -> 961 bytes app/examples/Games/Concent/imagenes/an24.gif | Bin 0 -> 1627 bytes app/examples/Games/Concent/imagenes/an25.gif | Bin 0 -> 1694 bytes app/examples/Games/Concent/imagenes/an26.gif | Bin 0 -> 1931 bytes app/examples/Games/Concent/imagenes/an27.gif | Bin 0 -> 2124 bytes app/examples/Games/Concent/imagenes/an28.gif | Bin 0 -> 1944 bytes app/examples/Games/Concent/imagenes/an29.gif | Bin 0 -> 1414 bytes app/examples/Games/Concent/imagenes/an3.gif | Bin 0 -> 1279 bytes app/examples/Games/Concent/imagenes/an30.gif | Bin 0 -> 1891 bytes app/examples/Games/Concent/imagenes/an31.gif | Bin 0 -> 1910 bytes app/examples/Games/Concent/imagenes/an32.gif | Bin 0 -> 1455 bytes app/examples/Games/Concent/imagenes/an33.gif | Bin 0 -> 1444 bytes app/examples/Games/Concent/imagenes/an34.gif | Bin 0 -> 1772 bytes app/examples/Games/Concent/imagenes/an35.gif | Bin 0 -> 1737 bytes app/examples/Games/Concent/imagenes/an36.gif | Bin 0 -> 1686 bytes app/examples/Games/Concent/imagenes/an37.gif | Bin 0 -> 2003 bytes app/examples/Games/Concent/imagenes/an38.gif | Bin 0 -> 1782 bytes app/examples/Games/Concent/imagenes/an39.gif | Bin 0 -> 2443 bytes app/examples/Games/Concent/imagenes/an4.gif | Bin 0 -> 1227 bytes app/examples/Games/Concent/imagenes/an40.gif | Bin 0 -> 2582 bytes app/examples/Games/Concent/imagenes/an5.gif | Bin 0 -> 1628 bytes app/examples/Games/Concent/imagenes/an6.gif | Bin 0 -> 2511 bytes app/examples/Games/Concent/imagenes/an7.gif | Bin 0 -> 1811 bytes app/examples/Games/Concent/imagenes/an8.gif | Bin 0 -> 1756 bytes app/examples/Games/Concent/imagenes/an9.gif | Bin 0 -> 2486 bytes .../Games/Concent/imagenes/colombia.gif | Bin 0 -> 145 bytes app/examples/Games/Concent/imagenes/inter.gif | Bin 0 -> 131 bytes app/examples/Games/Concent/imagenes/inter.jpg | Bin 0 -> 1148 bytes app/examples/Games/Concent/imagenes/logo.gif | Bin 0 -> 6138 bytes app/examples/Games/Concent/imagenes/logo.png | Bin 0 -> 1591 bytes app/examples/Games/Concent/imagenes/ok.gif | Bin 0 -> 1355 bytes .../Games/Concent/imagenes/tierra.gif | Bin 0 -> 32485 bytes .../Games/Concent/imagenes/tierra3.jpg | Bin 0 -> 23070 bytes app/examples/Games/Concent/move.wav | Bin 0 -> 13318 bytes app/examples/Games/Concent/shuffle.wav | Bin 0 -> 6999 bytes app/examples/Games/DeepSpace/.directory | 2 + app/examples/Games/DeepSpace/.icon.png | Bin 0 -> 4334 bytes app/examples/Games/DeepSpace/.lang/ca.po | 51 + app/examples/Games/DeepSpace/.lang/cs.po | 44 + app/examples/Games/DeepSpace/.lang/de.po | 44 + app/examples/Games/DeepSpace/.lang/es.po | 44 + app/examples/Games/DeepSpace/.lang/ru.po | 78 + app/examples/Games/DeepSpace/.project | 17 + .../Games/DeepSpace/.src/CBullet.class | 11 + .../Games/DeepSpace/.src/CObject.class | 87 + .../Games/DeepSpace/.src/FAbout.class | 19 + app/examples/Games/DeepSpace/.src/FAbout.form | 19 + app/examples/Games/DeepSpace/.src/FMain.class | 81 + app/examples/Games/DeepSpace/.src/FMain.form | 35 + .../Games/DeepSpace/.src/MMain.module | 348 + .../Games/DeepSpace/.src/MMath.module | 64 + .../Games/DeepSpace/doc/.html_files/eg3.gif | Bin 0 -> 2782 bytes .../Games/DeepSpace/doc/.html_files/eg3b.gif | Bin 0 -> 4590 bytes .../Games/DeepSpace/doc/coordinates.html | 150 + app/examples/Games/DeepSpace/doc/howto.txt | 16 + app/examples/Games/DeepSpace/doc/todo.txt | 17 + .../Games/DeepSpace/images/deepspace.png | Bin 0 -> 14195 bytes .../Games/DeepSpace/object.data/kite.2do | 8 + .../Games/DeepSpace/object.data/main.lst | 12 + .../Games/DeepSpace/object.data/ship.2do | 13 + .../Games/DeepSpace/object.data/triangle.2do | 8 + .../Games/DeepSpace/object.data/x-wing.2do | 38 + app/examples/Games/GNUBoxWorld/.directory | 2 + .../.hidden/screenshots/2014-12-14.png | Bin 0 -> 185109 bytes app/examples/Games/GNUBoxWorld/.icon.png | Bin 0 -> 3722 bytes app/examples/Games/GNUBoxWorld/.lang/ca.po | 112 + app/examples/Games/GNUBoxWorld/.lang/cs.po | 116 + app/examples/Games/GNUBoxWorld/.lang/de.po | 105 + app/examples/Games/GNUBoxWorld/.lang/es_AR.po | 101 + app/examples/Games/GNUBoxWorld/.lang/ru.po | 160 + app/examples/Games/GNUBoxWorld/.project | 19 + .../Games/GNUBoxWorld/.src/Cell.class | 78 + .../Games/GNUBoxWorld/.src/FMain.class | 274 + .../Games/GNUBoxWorld/.src/FMain.form | 37 + .../Games/GNUBoxWorld/.src/FrmAbout.class | 19 + .../Games/GNUBoxWorld/.src/FrmAbout.form | 45 + .../Games/GNUBoxWorld/.src/GameBoard.class | 595 + app/examples/Games/GNUBoxWorld/License | 189 + app/examples/Games/GNUBoxWorld/abajo.png | Bin 0 -> 5205 bytes app/examples/Games/GNUBoxWorld/arriba.png | Bin 0 -> 5291 bytes app/examples/Games/GNUBoxWorld/derecha.png | Bin 0 -> 4347 bytes app/examples/Games/GNUBoxWorld/destino.png | Bin 0 -> 9527 bytes app/examples/Games/GNUBoxWorld/ganador.png | Bin 0 -> 255686 bytes app/examples/Games/GNUBoxWorld/icon.png | Bin 0 -> 5889 bytes app/examples/Games/GNUBoxWorld/izquierda.png | Bin 0 -> 4350 bytes app/examples/Games/GNUBoxWorld/logo.png | Bin 0 -> 108170 bytes app/examples/Games/GNUBoxWorld/movible.png | Bin 0 -> 3831 bytes .../Games/GNUBoxWorld/movibleendestino.png | Bin 0 -> 3656 bytes .../Games/GNUBoxWorld/obstaculo-l.png | Bin 0 -> 1633 bytes .../Games/GNUBoxWorld/obstaculo-lr.png | Bin 0 -> 1643 bytes .../Games/GNUBoxWorld/obstaculo-r.png | Bin 0 -> 1627 bytes app/examples/Games/GNUBoxWorld/obstaculo.png | Bin 0 -> 1575 bytes app/examples/Games/GNUBoxWorld/piso.png | Bin 0 -> 10046 bytes app/examples/Games/GameOfLife/.debug | 9 + app/examples/Games/GameOfLife/.directory | 2 + app/examples/Games/GameOfLife/.icon.png | Bin 0 -> 3502 bytes app/examples/Games/GameOfLife/.lang/ca.po | 131 + app/examples/Games/GameOfLife/.lang/cs.po | 130 + app/examples/Games/GameOfLife/.lang/de.po | 121 + app/examples/Games/GameOfLife/.lang/ru.po | 158 + app/examples/Games/GameOfLife/.project | 17 + .../Games/GameOfLife/.src/CGameField.class | 236 + .../Games/GameOfLife/.src/FMain.class | 95 + app/examples/Games/GameOfLife/.src/FMain.form | 162 + .../Games/GameOfLife/glob2-icon-48x48.png | Bin 0 -> 3390 bytes app/examples/Games/Invaders/.directory | 2 + app/examples/Games/Invaders/.icon.png | Bin 0 -> 3092 bytes app/examples/Games/Invaders/.project | 13 + .../Games/Invaders/.src/Enemies.class | 102 + app/examples/Games/Invaders/.src/Enemy.class | 161 + app/examples/Games/Invaders/.src/MMain.module | 139 + .../Games/Invaders/.src/Missile.class | 84 + .../Games/Invaders/.src/Missiles.class | 65 + app/examples/Games/Invaders/invaders.png | Bin 0 -> 125 bytes app/examples/Games/MineSweeper/.directory | 2 + .../.hidden/screenshots/2014-12-14.png | Bin 0 -> 48121 bytes app/examples/Games/MineSweeper/.icon.png | Bin 0 -> 3434 bytes app/examples/Games/MineSweeper/.lang/cs.po | 52 + app/examples/Games/MineSweeper/.lang/ja.po | 53 + app/examples/Games/MineSweeper/.lang/ru.po | 80 + app/examples/Games/MineSweeper/.lang/zh.po | 52 + app/examples/Games/MineSweeper/.lang/zh_TW.po | 52 + app/examples/Games/MineSweeper/.project | 19 + .../Games/MineSweeper/.src/FMain.class | 249 + .../Games/MineSweeper/.src/FMain.form | 77 + .../Games/MineSweeper/.src/FSettings.class | 66 + .../Games/MineSweeper/.src/FSettings.form | 71 + .../MineSweeper/.src/MineSweeperGame.class | 194 + .../Games/MineSweeper/image/bigflag.png | Bin 0 -> 6066 bytes .../Games/MineSweeper/image/cover.png | Bin 0 -> 331 bytes .../Games/MineSweeper/image/coveron.png | Bin 0 -> 238 bytes .../Games/MineSweeper/image/empty.png | Bin 0 -> 97 bytes .../Games/MineSweeper/image/expr_lose.png | Bin 0 -> 1941 bytes .../Games/MineSweeper/image/expr_normal.png | Bin 0 -> 1869 bytes .../Games/MineSweeper/image/expr_o.png | Bin 0 -> 1462 bytes .../Games/MineSweeper/image/expr_win.png | Bin 0 -> 2259 bytes .../Games/MineSweeper/image/false.png | Bin 0 -> 1021 bytes app/examples/Games/MineSweeper/image/flag.png | Bin 0 -> 765 bytes app/examples/Games/MineSweeper/image/mine.png | Bin 0 -> 755 bytes .../Games/MineSweeper/image/number_1.png | Bin 0 -> 388 bytes .../Games/MineSweeper/image/number_2.png | Bin 0 -> 407 bytes .../Games/MineSweeper/image/number_3.png | Bin 0 -> 428 bytes .../Games/MineSweeper/image/number_4.png | Bin 0 -> 387 bytes .../Games/MineSweeper/image/number_5.png | Bin 0 -> 381 bytes .../Games/MineSweeper/image/number_6.png | Bin 0 -> 462 bytes .../Games/MineSweeper/image/number_7.png | Bin 0 -> 367 bytes .../Games/MineSweeper/image/number_8.png | Bin 0 -> 454 bytes app/examples/Games/Pong/.directory | 2 + app/examples/Games/Pong/.icon.png | Bin 0 -> 4849 bytes app/examples/Games/Pong/.project | 11 + app/examples/Games/Pong/.src/Ball.class | 145 + app/examples/Games/Pong/.src/MMain.module | 191 + app/examples/Games/Pong/.src/NPC.class | 116 + app/examples/Games/Pong/.src/Paddle.class | 96 + app/examples/Games/Pong/SPEED | 47 + app/examples/Games/Pong/pong.png | Bin 0 -> 89 bytes app/examples/Games/Puzzle1To8/.directory | 2 + app/examples/Games/Puzzle1To8/.icon.png | Bin 0 -> 4303 bytes app/examples/Games/Puzzle1To8/.lang/ca.po | 98 + app/examples/Games/Puzzle1To8/.lang/cs.po | 92 + app/examples/Games/Puzzle1To8/.lang/de.po | 112 + app/examples/Games/Puzzle1To8/.lang/es_AR.po | 94 + app/examples/Games/Puzzle1To8/.lang/fr.po | 111 + app/examples/Games/Puzzle1To8/.lang/ru.po | 126 + app/examples/Games/Puzzle1To8/.project | 17 + .../Games/Puzzle1To8/.src/Casillero.class | 66 + .../Games/Puzzle1To8/.src/Esquema.class | 110 + .../Games/Puzzle1To8/.src/FMain.class | 111 + app/examples/Games/Puzzle1To8/.src/FMain.form | 95 + .../Games/Puzzle1To8/.src/FrmAbout.class | 18 + .../Games/Puzzle1To8/.src/FrmAbout.form | 39 + .../Games/Puzzle1To8/.src/FrmAyuda.class | 18 + .../Games/Puzzle1To8/.src/FrmAyuda.form | 37 + app/examples/Games/Puzzle1To8/Licence | 189 + app/examples/Games/Puzzle1To8/ejemplo1.png | Bin 0 -> 5594 bytes app/examples/Games/Puzzle1To8/ejemplo2.png | Bin 0 -> 5481 bytes app/examples/Games/Puzzle1To8/logo.png | Bin 0 -> 41279 bytes .../Games/RobotFindsKitten/.directory | 2 + app/examples/Games/RobotFindsKitten/.icon.png | Bin 0 -> 4141 bytes .../Games/RobotFindsKitten/.lang/ca.po | 40 + .../Games/RobotFindsKitten/.lang/cs.po | 32 + .../Games/RobotFindsKitten/.lang/de.po | 32 + .../Games/RobotFindsKitten/.lang/es.po | 28 + .../Games/RobotFindsKitten/.lang/ru.po | 50 + app/examples/Games/RobotFindsKitten/.project | 18 + .../Games/RobotFindsKitten/.src/Frfk.class | 193 + .../Games/RobotFindsKitten/.src/Frfk.form | 32 + app/examples/Games/RobotFindsKitten/COPYING | 340 + app/examples/Games/RobotFindsKitten/heart.png | Bin 0 -> 9149 bytes app/examples/Games/RobotFindsKitten/nkis.txt | 622 + .../Games/RobotFindsKitten/nkis_ru.txt | 622 + .../Games/RobotFindsKitten/readme.txt | 24 + app/examples/Games/Snake/.directory | 2 + app/examples/Games/Snake/.icon.png | Bin 0 -> 3584 bytes app/examples/Games/Snake/.lang/ca.po | 102 + app/examples/Games/Snake/.lang/cs.po | 114 + app/examples/Games/Snake/.lang/de.po | 101 + app/examples/Games/Snake/.lang/ru.po | 162 + app/examples/Games/Snake/.project | 18 + app/examples/Games/Snake/.src/FrmMain.class | 430 + app/examples/Games/Snake/.src/FrmMain.form | 89 + app/examples/Games/Snake/apple.png | Bin 0 -> 1141 bytes app/examples/Games/Snake/body.png | Bin 0 -> 1138 bytes app/examples/Games/Snake/dead.wav | Bin 0 -> 10026 bytes app/examples/Games/Snake/eat.wav | Bin 0 -> 1192 bytes app/examples/Games/Snake/head.png | Bin 0 -> 1197 bytes app/examples/Games/Snake/start.wav | Bin 0 -> 31810 bytes app/examples/Games/Solitaire/.directory | 2 + app/examples/Games/Solitaire/.icon.png | Bin 0 -> 4209 bytes app/examples/Games/Solitaire/.lang/ca.po | 96 + app/examples/Games/Solitaire/.lang/cs.po | 94 + app/examples/Games/Solitaire/.lang/de.po | 89 + app/examples/Games/Solitaire/.lang/es.po | 79 + app/examples/Games/Solitaire/.lang/ru.po | 116 + app/examples/Games/Solitaire/.project | 18 + .../Games/Solitaire/.src/CBoardDesign.class | 9 + app/examples/Games/Solitaire/.src/CMove.class | 5 + .../Games/Solitaire/.src/FBoardSelect.class | 35 + .../Games/Solitaire/.src/FBoardSelect.form | 23 + .../Games/Solitaire/.src/FGameArea.class | 368 + .../Games/Solitaire/.src/FGameArea.form | 64 + .../Games/Solitaire/.src/Global.class | 11 + .../Games/Solitaire/.src/MBoards.module | 69 + app/examples/Games/Solitaire/ball.png | Bin 0 -> 3327 bytes app/examples/Games/Solitaire/new.png | Bin 0 -> 155 bytes app/examples/Games/Solitaire/quit.png | Bin 0 -> 179 bytes app/examples/Games/Solitaire/redo.png | Bin 0 -> 131 bytes app/examples/Games/Solitaire/undo.png | Bin 0 -> 131 bytes app/examples/Games/StarField/.directory | 2 + app/examples/Games/StarField/.icon.png | Bin 0 -> 3140 bytes app/examples/Games/StarField/.project | 13 + .../Games/StarField/.src/MMain.module | 82 + app/examples/Games/StarField/enterprise.png | Bin 0 -> 4623 bytes app/examples/Games/StarField/logo.png | Bin 0 -> 12795 bytes app/examples/Image/ImageViewer/.directory | 2 + app/examples/Image/ImageViewer/.icon.png | Bin 0 -> 4419 bytes app/examples/Image/ImageViewer/.lang/ca.po | 64 + app/examples/Image/ImageViewer/.lang/cs.po | 60 + app/examples/Image/ImageViewer/.lang/de.po | 57 + app/examples/Image/ImageViewer/.lang/es.po | 43 + app/examples/Image/ImageViewer/.lang/nl.po | 55 + app/examples/Image/ImageViewer/.lang/ru.po | 82 + app/examples/Image/ImageViewer/.project | 21 + .../Image/ImageViewer/.src/FViewer.class | 106 + .../Image/ImageViewer/.src/FViewer.form | 52 + app/examples/Image/ImageViewer/image.png | Bin 0 -> 8428 bytes app/examples/Image/ImageViewer/test.png | Bin 0 -> 110 bytes app/examples/Image/Lighttable/.directory | 2 + app/examples/Image/Lighttable/.icon.png | Bin 0 -> 4434 bytes app/examples/Image/Lighttable/.lang/ca.po | 337 + app/examples/Image/Lighttable/.lang/cs.po | 330 + app/examples/Image/Lighttable/.lang/de.po | 330 + app/examples/Image/Lighttable/.lang/en.po | 264 + app/examples/Image/Lighttable/.lang/nl.po | 327 + app/examples/Image/Lighttable/.lang/ru.po | 350 + app/examples/Image/Lighttable/.project | 25 + .../Image/Lighttable/.src/FHelp.class | 28 + app/examples/Image/Lighttable/.src/FHelp.form | 26 + .../Image/Lighttable/.src/FInfo.class | 37 + app/examples/Image/Lighttable/.src/FInfo.form | 25 + .../Image/Lighttable/.src/FMain.class | 903 + app/examples/Image/Lighttable/.src/FMain.form | 162 + .../Image/Lighttable/.src/FRename.class | 58 + .../Image/Lighttable/.src/FRename.form | 25 + .../Image/Lighttable/.src/FRenameAll.class | 101 + .../Image/Lighttable/.src/FRenameAll.form | 77 + .../Lighttable/.src/FRenameAllWarning.class | 19 + .../Lighttable/.src/FRenameAllWarning.form | 29 + .../Image/Lighttable/.src/FSlideshow.class | 56 + .../Image/Lighttable/.src/FSlideshow.form | 46 + .../Image/Lighttable/.src/FStart.class | 135 + .../Image/Lighttable/.src/FStart.form | 42 + .../Image/Lighttable/.src/FTime.class | 27 + app/examples/Image/Lighttable/.src/FTime.form | 58 + .../Image/Lighttable/.src/MMain.module | 53 + app/examples/Image/Lighttable/CHANGELOG | 3 + app/examples/Image/Lighttable/FStart.class | 92 + app/examples/Image/Lighttable/FStart.form | 35 + app/examples/Image/Lighttable/Help_ca.html | 60 + app/examples/Image/Lighttable/Help_de.html | 74 + app/examples/Image/Lighttable/Help_en.html | 71 + app/examples/Image/Lighttable/Help_ru.html | 29 + app/examples/Image/Lighttable/LTicon.png | Bin 0 -> 296 bytes app/examples/Image/Lighttable/Liesmich.txt | 33 + app/examples/Image/Lighttable/Readme.txt | 33 + app/examples/Image/Lighttable/close.png | Bin 0 -> 596 bytes app/examples/Image/Lighttable/hand1.png | Bin 0 -> 176 bytes .../Image/Lighttable/help-contents.png | Bin 0 -> 742 bytes app/examples/Image/Lighttable/lighttable.png | Bin 0 -> 6536 bytes app/examples/Image/Lighttable/move.png | Bin 0 -> 169 bytes app/examples/Image/Lighttable/zoom-in.png | Bin 0 -> 710 bytes app/examples/Image/PhotoTouch/.directory | 2 + .../.hidden/screenshots/phototouch.jpg | Bin 0 -> 150309 bytes app/examples/Image/PhotoTouch/.icon.png | Bin 0 -> 3488 bytes app/examples/Image/PhotoTouch/.lang/fr.po | 184 + app/examples/Image/PhotoTouch/.lang/nl.po | 183 + app/examples/Image/PhotoTouch/.lang/ru.po | 212 + app/examples/Image/PhotoTouch/.project | 24 + .../Image/PhotoTouch/.src/CAnimation.class | 97 + .../Image/PhotoTouch/.src/CButton.class | 189 + .../Image/PhotoTouch/.src/FBrightness.class | 146 + .../Image/PhotoTouch/.src/FBrightness.form | 37 + .../Image/PhotoTouch/.src/FMain.class | 1117 + app/examples/Image/PhotoTouch/.src/FMain.form | 65 + .../Image/PhotoTouch/.src/FResize.class | 57 + .../Image/PhotoTouch/.src/FResize.form | 40 + .../Image/PhotoTouch/.src/FScissors.class | 260 + .../Image/PhotoTouch/.src/FScissors.form | 38 + app/examples/Image/PhotoTouch/balance.png | Bin 0 -> 1125 bytes app/examples/Image/PhotoTouch/blur.png | Bin 0 -> 1309 bytes app/examples/Image/PhotoTouch/brightness.png | Bin 0 -> 1534 bytes app/examples/Image/PhotoTouch/contrast.png | Bin 0 -> 1340 bytes app/examples/Image/PhotoTouch/delete.png | Bin 0 -> 853 bytes app/examples/Image/PhotoTouch/despeckle.png | Bin 0 -> 1530 bytes app/examples/Image/PhotoTouch/film.png | Bin 0 -> 756 bytes app/examples/Image/PhotoTouch/gamma.png | Bin 0 -> 693 bytes app/examples/Image/PhotoTouch/hflip.png | Bin 0 -> 953 bytes app/examples/Image/PhotoTouch/icon.png | Bin 0 -> 4904 bytes app/examples/Image/PhotoTouch/invert.png | Bin 0 -> 1942 bytes app/examples/Image/PhotoTouch/magic.png | Bin 0 -> 1093 bytes app/examples/Image/PhotoTouch/next.png | Bin 0 -> 749 bytes app/examples/Image/PhotoTouch/normalize.png | Bin 0 -> 910 bytes app/examples/Image/PhotoTouch/oil.png | Bin 0 -> 1189 bytes app/examples/Image/PhotoTouch/ok.png | Bin 0 -> 655 bytes app/examples/Image/PhotoTouch/photo.png | Bin 0 -> 1068 bytes app/examples/Image/PhotoTouch/previous.png | Bin 0 -> 724 bytes app/examples/Image/PhotoTouch/quit.png | Bin 0 -> 1034 bytes app/examples/Image/PhotoTouch/redo.png | Bin 0 -> 1042 bytes app/examples/Image/PhotoTouch/resize.png | Bin 0 -> 852 bytes app/examples/Image/PhotoTouch/rotate-left.png | Bin 0 -> 1204 bytes .../Image/PhotoTouch/rotate-right.png | Bin 0 -> 1192 bytes app/examples/Image/PhotoTouch/save-all.png | Bin 0 -> 998 bytes app/examples/Image/PhotoTouch/save.png | Bin 0 -> 674 bytes app/examples/Image/PhotoTouch/scissors.png | Bin 0 -> 1549 bytes app/examples/Image/PhotoTouch/sharpen.png | Bin 0 -> 1301 bytes app/examples/Image/PhotoTouch/undo.png | Bin 0 -> 1071 bytes app/examples/Image/PhotoTouch/usb.png | Bin 0 -> 739 bytes app/examples/Image/PhotoTouch/vflip.png | Bin 0 -> 1018 bytes app/examples/Image/PhotoTouch/zoom-fit.png | Bin 0 -> 1571 bytes app/examples/Image/PhotoTouch/zoom-in.png | Bin 0 -> 1634 bytes .../Image/PhotoTouch/zoom-original.png | Bin 0 -> 1615 bytes app/examples/Image/PhotoTouch/zoom-out.png | Bin 0 -> 1568 bytes app/examples/Misc/Console/.directory | 2 + app/examples/Misc/Console/.icon.png | Bin 0 -> 4129 bytes app/examples/Misc/Console/.lang/fr.po | 19 + app/examples/Misc/Console/.lang/ru.po | 46 + app/examples/Misc/Console/.project | 16 + app/examples/Misc/Console/.src/FConsole.class | 162 + app/examples/Misc/Console/.src/FConsole.form | 37 + app/examples/Misc/Console/terminal.png | Bin 0 -> 2312 bytes app/examples/Misc/DBusExplorer/.directory | 2 + .../.hidden/screenshots/2014-12-14.png | Bin 0 -> 131380 bytes app/examples/Misc/DBusExplorer/.icon.png | Bin 0 -> 17373 bytes app/examples/Misc/DBusExplorer/.lang/ru.po | 72 + app/examples/Misc/DBusExplorer/.project | 20 + .../DBusExplorer/.src/FVersiongbXML.class | 313 + .../Misc/DBusExplorer/.src/FVersiongbXML.form | 121 + app/examples/Misc/DBusExplorer/dbus22.png | Bin 0 -> 894 bytes app/examples/Misc/DBusExplorer/dbus64.png | Bin 0 -> 4222 bytes app/examples/Misc/DBusExplorer/method.png | Bin 0 -> 724 bytes app/examples/Misc/DBusExplorer/property.png | Bin 0 -> 728 bytes app/examples/Misc/DBusExplorer/signal.png | Bin 0 -> 780 bytes app/examples/Misc/Evaluator/.directory | 2 + app/examples/Misc/Evaluator/.icon.png | Bin 0 -> 4208 bytes app/examples/Misc/Evaluator/.lang/ca.po | 76 + app/examples/Misc/Evaluator/.lang/cs.po | 68 + app/examples/Misc/Evaluator/.lang/de.po | 69 + app/examples/Misc/Evaluator/.lang/es.po | 71 + app/examples/Misc/Evaluator/.lang/ru.po | 82 + app/examples/Misc/Evaluator/.project | 18 + app/examples/Misc/Evaluator/.src/FEval.class | 53 + app/examples/Misc/Evaluator/.src/FEval.form | 83 + app/examples/Misc/Evaluator/calculator.png | Bin 0 -> 3612 bytes app/examples/Misc/Explorer/.directory | 2 + app/examples/Misc/Explorer/.icon.png | Bin 0 -> 3277 bytes app/examples/Misc/Explorer/.lang/ca.po | 56 + app/examples/Misc/Explorer/.lang/cs.po | 52 + app/examples/Misc/Explorer/.lang/de.po | 49 + app/examples/Misc/Explorer/.lang/es.po | 35 + app/examples/Misc/Explorer/.lang/ru.po | 70 + app/examples/Misc/Explorer/.project | 20 + .../Misc/Explorer/.src/FExplorer.class | 175 + .../Misc/Explorer/.src/FExplorer.form | 38 + app/examples/Misc/Explorer/folder.png | Bin 0 -> 2450 bytes app/examples/Misc/Notepad/.directory | 2 + app/examples/Misc/Notepad/.icon.png | Bin 0 -> 4288 bytes app/examples/Misc/Notepad/.lang/ca.po | 148 + app/examples/Misc/Notepad/.lang/cs.po | 150 + app/examples/Misc/Notepad/.lang/de.po | 141 + app/examples/Misc/Notepad/.lang/es.po | 95 + app/examples/Misc/Notepad/.lang/ru.po | 164 + app/examples/Misc/Notepad/.project | 20 + app/examples/Misc/Notepad/.src/FAbout.class | 25 + app/examples/Misc/Notepad/.src/FAbout.form | 22 + app/examples/Misc/Notepad/.src/FNotepad.class | 222 + app/examples/Misc/Notepad/.src/FNotepad.form | 93 + app/examples/Misc/Notepad/notepad.png | Bin 0 -> 4015 bytes app/examples/Misc/PDFViewer/.directory | 2 + app/examples/Misc/PDFViewer/.icon.png | Bin 0 -> 4253 bytes app/examples/Misc/PDFViewer/.lang/ca.po | 80 + app/examples/Misc/PDFViewer/.lang/cs.po | 80 + app/examples/Misc/PDFViewer/.lang/de.po | 80 + app/examples/Misc/PDFViewer/.lang/es.po | 64 + app/examples/Misc/PDFViewer/.lang/ru.po | 112 + app/examples/Misc/PDFViewer/.project | 21 + app/examples/Misc/PDFViewer/.src/FMain.class | 472 + app/examples/Misc/PDFViewer/.src/FMain.form | 126 + app/examples/Misc/PDFViewer/.src/Fabout.class | 43 + app/examples/Misc/PDFViewer/.src/Fabout.form | 32 + app/examples/Misc/PDFViewer/pdf.png | Bin 0 -> 4588 bytes app/examples/Misc/SystemTray/.directory | 2 + app/examples/Misc/SystemTray/.icon.png | Bin 0 -> 17595 bytes app/examples/Misc/SystemTray/.lang/ru.po | 44 + app/examples/Misc/SystemTray/.project | 16 + app/examples/Misc/SystemTray/.src/FMain.class | 45 + app/examples/Misc/SystemTray/.src/FMain.form | 14 + app/examples/Misc/SystemTray/bg.png | Bin 0 -> 163 bytes app/examples/Misc/SystemTray/icon.png | Bin 0 -> 4363 bytes .../Misc/WatchGambasDirectory/.directory | 2 + .../Misc/WatchGambasDirectory/.icon.png | Bin 0 -> 3409 bytes .../Misc/WatchGambasDirectory/.lang/ru.po | 76 + .../Misc/WatchGambasDirectory/.project | 14 + .../WatchGambasDirectory/.src/MMain.module | 54 + .../Misc/WatchGambasDirectory/watch.svg | 1257 + app/examples/Multimedia/CDPlayer/.directory | 2 + app/examples/Multimedia/CDPlayer/.icon.png | Bin 0 -> 4311 bytes app/examples/Multimedia/CDPlayer/.lang/ca.po | 60 + app/examples/Multimedia/CDPlayer/.lang/cs.po | 52 + app/examples/Multimedia/CDPlayer/.lang/es.po | 44 + app/examples/Multimedia/CDPlayer/.lang/ru.po | 90 + app/examples/Multimedia/CDPlayer/.project | 19 + .../Multimedia/CDPlayer/.src/Fcdplayer.class | 139 + .../Multimedia/CDPlayer/.src/Fcdplayer.form | 47 + app/examples/Multimedia/CDPlayer/cdrom.png | Bin 0 -> 3987 bytes .../Multimedia/MediaPlayer/.directory | 2 + .../.hidden/screenshots/MediaPlayer.jpg | Bin 0 -> 144138 bytes app/examples/Multimedia/MediaPlayer/.icon.png | Bin 0 -> 3571 bytes .../Multimedia/MediaPlayer/.lang/fr.po | 64 + .../Multimedia/MediaPlayer/.lang/ru.po | 92 + app/examples/Multimedia/MediaPlayer/.project | 55 + .../MediaPlayer/.src/CAnimation.class | 101 + .../Multimedia/MediaPlayer/.src/CButton.class | 215 + .../MediaPlayer/.src/FControl.class | 133 + .../Multimedia/MediaPlayer/.src/FControl.form | 37 + .../Multimedia/MediaPlayer/.src/FMain.class | 616 + .../Multimedia/MediaPlayer/.src/FMain.form | 18 + .../Multimedia/MediaPlayer/.src/FTags.class | 147 + .../Multimedia/MediaPlayer/.src/FTags.form | 91 + .../Multimedia/MediaPlayer/.src/MTest.module | 67 + .../Multimedia/MediaPlayer/brightness.png | Bin 0 -> 1534 bytes .../Multimedia/MediaPlayer/config.png | Bin 0 -> 831 bytes .../Multimedia/MediaPlayer/contrast.png | Bin 0 -> 1340 bytes app/examples/Multimedia/MediaPlayer/eject.png | Bin 0 -> 1004 bytes app/examples/Multimedia/MediaPlayer/film.png | Bin 0 -> 756 bytes .../Multimedia/MediaPlayer/fullscreen.png | Bin 0 -> 598 bytes app/examples/Multimedia/MediaPlayer/gamma.png | Bin 0 -> 693 bytes app/examples/Multimedia/MediaPlayer/icon.png | Bin 0 -> 2509 bytes app/examples/Multimedia/MediaPlayer/info.png | Bin 0 -> 2413 bytes app/examples/Multimedia/MediaPlayer/mute.png | Bin 0 -> 958 bytes app/examples/Multimedia/MediaPlayer/pause.png | Bin 0 -> 393 bytes app/examples/Multimedia/MediaPlayer/play.png | Bin 0 -> 757 bytes app/examples/Multimedia/MediaPlayer/quit.png | Bin 0 -> 1034 bytes .../Multimedia/MediaPlayer/screenshot.png | Bin 0 -> 1090 bytes .../Multimedia/MediaPlayer/seek-backward.png | Bin 0 -> 1316 bytes .../Multimedia/MediaPlayer/seek-forward.png | Bin 0 -> 1283 bytes .../Multimedia/MediaPlayer/skip-backward.png | Bin 0 -> 1093 bytes .../Multimedia/MediaPlayer/skip-forward.png | Bin 0 -> 1085 bytes app/examples/Multimedia/MediaPlayer/stop.png | Bin 0 -> 495 bytes .../Multimedia/MediaPlayer/subtitle.png | Bin 0 -> 1174 bytes app/examples/Multimedia/MediaPlayer/undo.png | Bin 0 -> 1091 bytes app/examples/Multimedia/MediaPlayer/video.png | Bin 0 -> 762 bytes .../Multimedia/MediaPlayer/visualisation.png | Bin 0 -> 1093 bytes .../Multimedia/MediaPlayer/volume-0.png | Bin 0 -> 908 bytes .../Multimedia/MediaPlayer/volume-1.png | Bin 0 -> 785 bytes .../Multimedia/MediaPlayer/volume-2.png | Bin 0 -> 1052 bytes .../Multimedia/MediaPlayer/volume-3.png | Bin 0 -> 1384 bytes .../Multimedia/MediaPlayer/volume.png | Bin 0 -> 1384 bytes .../Multimedia/MediaPlayer/zoom-in.png | Bin 0 -> 1634 bytes .../Multimedia/MoviePlayer/.directory | 2 + app/examples/Multimedia/MoviePlayer/.icon.png | Bin 0 -> 4342 bytes .../Multimedia/MoviePlayer/.lang/ca.po | 32 + .../Multimedia/MoviePlayer/.lang/cs.po | 30 + .../Multimedia/MoviePlayer/.lang/es.po | 27 + .../Multimedia/MoviePlayer/.lang/ru.po | 52 + app/examples/Multimedia/MoviePlayer/.project | 19 + .../MoviePlayer/.src/FMoviePlayer.class | 136 + .../MoviePlayer/.src/FMoviePlayer.form | 42 + app/examples/Multimedia/MoviePlayer/video.png | Bin 0 -> 5244 bytes .../Multimedia/MusicPlayer/.directory | 2 + app/examples/Multimedia/MusicPlayer/.icon.png | Bin 0 -> 4226 bytes .../Multimedia/MusicPlayer/.icon/16.png | Bin 0 -> 288 bytes .../Multimedia/MusicPlayer/.icon/32.png | Bin 0 -> 272 bytes .../Multimedia/MusicPlayer/.icon/48.png | Bin 0 -> 555 bytes .../Multimedia/MusicPlayer/.lang/ca.po | 32 + .../Multimedia/MusicPlayer/.lang/cs.po | 24 + .../Multimedia/MusicPlayer/.lang/es.po | 24 + .../Multimedia/MusicPlayer/.lang/fr.po | 35 + .../Multimedia/MusicPlayer/.lang/ru.po | 38 + app/examples/Multimedia/MusicPlayer/.project | 25 + .../MusicPlayer/.src/FSoundPlayer.class | 145 + .../MusicPlayer/.src/FSoundPlayer.form | 62 + app/examples/Multimedia/MusicPlayer/sound.png | Bin 0 -> 3551 bytes app/examples/Multimedia/MyWebCam/.directory | 2 + app/examples/Multimedia/MyWebCam/.icon.png | Bin 0 -> 4360 bytes app/examples/Multimedia/MyWebCam/.lang/ca.po | 107 + app/examples/Multimedia/MyWebCam/.lang/cs.po | 112 + app/examples/Multimedia/MyWebCam/.lang/es.po | 95 + app/examples/Multimedia/MyWebCam/.lang/ru.po | 158 + app/examples/Multimedia/MyWebCam/.project | 19 + .../Multimedia/MyWebCam/.src/Form1.class | 203 + .../Multimedia/MyWebCam/.src/Form1.form | 122 + app/examples/Multimedia/MyWebCam/camera.png | Bin 0 -> 5363 bytes .../Multimedia/WaveGenerator/.directory | 2 + .../Multimedia/WaveGenerator/.icon.png | Bin 0 -> 4098 bytes .../Multimedia/WaveGenerator/.lang/ru.po | 106 + .../Multimedia/WaveGenerator/.project | 14 + .../Multimedia/WaveGenerator/.src/FMain.class | 102 + .../Multimedia/WaveGenerator/.src/FMain.form | 61 + .../WaveGenerator/audio-headphones.png | Bin 0 -> 2578 bytes app/examples/Multimedia/WebCam/.directory | 2 + app/examples/Multimedia/WebCam/.icon.png | Bin 0 -> 4272 bytes app/examples/Multimedia/WebCam/.lang/ru.po | 174 + app/examples/Multimedia/WebCam/.project | 17 + .../Multimedia/WebCam/.src/FDevice.class | 304 + .../Multimedia/WebCam/.src/FDevice.form | 149 + .../Multimedia/WebCam/.src/FMain.class | 126 + .../Multimedia/WebCam/.src/FMain.form | 62 + app/examples/Multimedia/WebCam/camera.png | Bin 0 -> 1027 bytes app/examples/Multimedia/WebCam/settings.png | Bin 0 -> 248 bytes .../Networking/ClientSocket/.directory | 2 + .../Networking/ClientSocket/.icon.png | Bin 0 -> 3551 bytes .../Networking/ClientSocket/.lang/ca.po | 127 + .../Networking/ClientSocket/.lang/cs.po | 120 + .../Networking/ClientSocket/.lang/de.po | 120 + .../Networking/ClientSocket/.lang/es.po | 63 + .../Networking/ClientSocket/.lang/nl.po | 120 + .../Networking/ClientSocket/.lang/ru.po | 148 + app/examples/Networking/ClientSocket/.project | 20 + .../ClientSocket/.src/FrmMain.class | 231 + .../Networking/ClientSocket/.src/FrmMain.form | 75 + .../Networking/ClientSocket/socket.png | Bin 0 -> 2200 bytes app/examples/Networking/DnsClient/.directory | 2 + app/examples/Networking/DnsClient/.icon.png | Bin 0 -> 18981 bytes app/examples/Networking/DnsClient/.lang/ca.po | 100 + app/examples/Networking/DnsClient/.lang/cs.po | 92 + app/examples/Networking/DnsClient/.lang/de.po | 93 + app/examples/Networking/DnsClient/.lang/es.po | 67 + app/examples/Networking/DnsClient/.lang/nl.po | 92 + app/examples/Networking/DnsClient/.lang/ru.po | 98 + app/examples/Networking/DnsClient/.project | 18 + .../Networking/DnsClient/.src/FMain.class | 308 + .../Networking/DnsClient/.src/FMain.form | 119 + .../Networking/DnsClient/dnsclient.png | Bin 0 -> 1808 bytes app/examples/Networking/HTTPGet/.directory | 2 + app/examples/Networking/HTTPGet/.icon.png | Bin 0 -> 3515 bytes app/examples/Networking/HTTPGet/.lang/ca.po | 124 + app/examples/Networking/HTTPGet/.lang/cs.po | 121 + app/examples/Networking/HTTPGet/.lang/de.po | 117 + .../Networking/HTTPGet/.lang/en_GB.po | 120 + app/examples/Networking/HTTPGet/.lang/es.po | 91 + app/examples/Networking/HTTPGet/.lang/nl.po | 120 + app/examples/Networking/HTTPGet/.lang/ru.po | 144 + app/examples/Networking/HTTPGet/.project | 22 + .../Networking/HTTPGet/.src/ClsParams.class | 8 + .../Networking/HTTPGet/.src/FConfig.class | 75 + .../Networking/HTTPGet/.src/FConfig.form | 64 + .../Networking/HTTPGet/.src/FHttpGet.class | 285 + .../Networking/HTTPGet/.src/FHttpGet.form | 65 + .../Networking/HTTPGet/httpclient.png | Bin 0 -> 1768 bytes app/examples/Networking/HTTPPost/.directory | 2 + app/examples/Networking/HTTPPost/.icon.png | Bin 0 -> 3515 bytes app/examples/Networking/HTTPPost/.lang/ca.po | 80 + app/examples/Networking/HTTPPost/.lang/cs.po | 72 + app/examples/Networking/HTTPPost/.lang/de.po | 73 + app/examples/Networking/HTTPPost/.lang/es.po | 56 + app/examples/Networking/HTTPPost/.lang/nl.po | 72 + app/examples/Networking/HTTPPost/.lang/ru.po | 104 + app/examples/Networking/HTTPPost/.project | 20 + .../Networking/HTTPPost/.src/FHttpPost.class | 105 + .../Networking/HTTPPost/.src/FHttpPost.form | 85 + .../Networking/HTTPPost/httpclient.png | Bin 0 -> 1768 bytes app/examples/Networking/POPMailbox/.directory | 2 + app/examples/Networking/POPMailbox/.icon.png | Bin 0 -> 4202 bytes .../Networking/POPMailbox/.lang/ru.po | 98 + app/examples/Networking/POPMailbox/.project | 19 + .../Networking/POPMailbox/.src/FMain.class | 106 + .../Networking/POPMailbox/.src/FMain.form | 50 + .../POPMailbox/.src/FSettings.class | 68 + .../Networking/POPMailbox/.src/FSettings.form | 66 + .../Networking/POPMailbox/pop3client.png | Bin 0 -> 957 bytes app/examples/Networking/SerialPort/.directory | 2 + app/examples/Networking/SerialPort/.icon.png | Bin 0 -> 4320 bytes .../Networking/SerialPort/.lang/ru.po | 266 + app/examples/Networking/SerialPort/.project | 17 + .../Networking/SerialPort/.src/FAbout.class | 16 + .../Networking/SerialPort/.src/FAbout.form | 32 + .../Networking/SerialPort/.src/FMain.class | 246 + .../Networking/SerialPort/.src/FMain.form | 189 + .../SerialPort/.src/Module_Config.module | 92 + .../SerialPort/.src/Module_RS232.module | 93 + .../Networking/SerialPort/serialport.png | Bin 0 -> 2498 bytes .../Networking/ServerSocket/.directory | 2 + .../Networking/ServerSocket/.icon.png | Bin 0 -> 3502 bytes .../Networking/ServerSocket/.lang/ca.po | 112 + .../Networking/ServerSocket/.lang/cs.po | 104 + .../Networking/ServerSocket/.lang/es.po | 99 + .../Networking/ServerSocket/.lang/nl.po | 104 + .../Networking/ServerSocket/.lang/ru.po | 172 + app/examples/Networking/ServerSocket/.project | 21 + .../ServerSocket/.src/FrmMain.class | 176 + .../Networking/ServerSocket/.src/FrmMain.form | 61 + .../Networking/ServerSocket/serversocket.png | Bin 0 -> 2122 bytes .../Networking/UDPServerClient/.directory | 2 + .../Networking/UDPServerClient/.icon.png | Bin 0 -> 4294 bytes .../Networking/UDPServerClient/.lang/ca.po | 104 + .../Networking/UDPServerClient/.lang/cs.po | 96 + .../Networking/UDPServerClient/.lang/es.po | 101 + .../Networking/UDPServerClient/.lang/nl.po | 96 + .../Networking/UDPServerClient/.lang/ru.po | 110 + .../Networking/UDPServerClient/.project | 17 + .../UDPServerClient/.src/FrmClient.class | 73 + .../UDPServerClient/.src/FrmClient.form | 68 + .../UDPServerClient/.src/FrmServer.class | 86 + .../UDPServerClient/.src/FrmServer.form | 38 + .../Networking/UDPServerClient/udpsocket.png | Bin 0 -> 2161 bytes app/examples/Networking/WebBrowser/.directory | 2 + app/examples/Networking/WebBrowser/.icon.png | Bin 0 -> 3585 bytes .../Networking/WebBrowser/.lang/ca.po | 212 + .../Networking/WebBrowser/.lang/cs.po | 204 + .../Networking/WebBrowser/.lang/de.po | 205 + .../Networking/WebBrowser/.lang/es.po | 62 + .../Networking/WebBrowser/.lang/nl.po | 204 + .../Networking/WebBrowser/.lang/ru.po | 258 + app/examples/Networking/WebBrowser/.project | 26 + .../Networking/WebBrowser/.src/FAuth.class | 38 + .../Networking/WebBrowser/.src/FAuth.form | 57 + .../Networking/WebBrowser/.src/FBrowser.class | 584 + .../Networking/WebBrowser/.src/FBrowser.form | 352 + .../WebBrowser/.src/FDownload.class | 50 + .../Networking/WebBrowser/.src/FDownload.form | 34 + .../WebBrowser/.src/FDownloadList.class | 20 + .../WebBrowser/.src/FDownloadList.form | 20 + .../WebBrowser/.src/FEditable.class | 15 + .../Networking/WebBrowser/.src/FEditable.form | 19 + .../Networking/WebBrowser/.src/FOption.class | 67 + .../Networking/WebBrowser/.src/FOption.form | 69 + app/examples/Networking/WebBrowser/icon.png | Bin 0 -> 2932 bytes .../Networking/WebBrowser/list-ordered.png | Bin 0 -> 518 bytes .../Networking/WebBrowser/list-unordered.png | Bin 0 -> 237 bytes app/examples/OpenGL/3DWebCam/.directory | 2 + app/examples/OpenGL/3DWebCam/.icon.png | Bin 0 -> 4343 bytes app/examples/OpenGL/3DWebCam/.lang/ru.po | 46 + app/examples/OpenGL/3DWebCam/.project | 19 + .../OpenGL/3DWebCam/.src/Mmain.module | 256 + app/examples/OpenGL/3DWebCam/webcam.png | Bin 0 -> 6442 bytes app/examples/OpenGL/GambasGears/.directory | 2 + app/examples/OpenGL/GambasGears/.icon.png | Bin 0 -> 3450 bytes app/examples/OpenGL/GambasGears/.lang/ru.po | 38 + app/examples/OpenGL/GambasGears/.project | 19 + .../OpenGL/GambasGears/.src/Module1.module | 256 + app/examples/OpenGL/GambasGears/gears.png | Bin 0 -> 3488 bytes app/examples/OpenGL/Md2Model/.directory | 2 + app/examples/OpenGL/Md2Model/.icon.png | Bin 0 -> 3521 bytes app/examples/OpenGL/Md2Model/.lang/ru.po | 50 + app/examples/OpenGL/Md2Model/.project | 22 + app/examples/OpenGL/Md2Model/.src/FMain.class | 243 + app/examples/OpenGL/Md2Model/.src/FMain.form | 31 + app/examples/OpenGL/Md2Model/Weapon.md2 | Bin 0 -> 71708 bytes app/examples/OpenGL/Md2Model/Weapon.png | Bin 0 -> 17376 bytes app/examples/OpenGL/Md2Model/bauul.jpg | Bin 0 -> 25801 bytes app/examples/OpenGL/Md2Model/bauul.md2 | Bin 0 -> 261308 bytes app/examples/OpenGL/Md2Model/goblin.jpg | Bin 0 -> 23224 bytes app/examples/OpenGL/Md2Model/goblin.md2 | Bin 0 -> 259348 bytes app/examples/OpenGL/Md2Model/icon.png | Bin 0 -> 5529 bytes app/examples/OpenGL/Md2Model/igdosh.png | Bin 0 -> 22466 bytes app/examples/OpenGL/Md2Model/knight.jpg | Bin 0 -> 16927 bytes app/examples/OpenGL/Md2Model/knight.md2 | Bin 0 -> 320236 bytes app/examples/OpenGL/Md2Model/ogro.jpg | Bin 0 -> 23954 bytes app/examples/OpenGL/Md2Model/ogro.md2 | Bin 0 -> 317276 bytes app/examples/OpenGL/Md2Model/rat.jpg | Bin 0 -> 22384 bytes app/examples/OpenGL/Md2Model/rat.md2 | Bin 0 -> 303388 bytes app/examples/OpenGL/Md2Model/rhino.jpg | Bin 0 -> 18925 bytes app/examples/OpenGL/Md2Model/rhino.md2 | Bin 0 -> 418932 bytes app/examples/OpenGL/NeHeTutorial/.directory | 2 + app/examples/OpenGL/NeHeTutorial/.icon.png | Bin 0 -> 4212 bytes app/examples/OpenGL/NeHeTutorial/.lang/ru.po | 34 + app/examples/OpenGL/NeHeTutorial/.project | 16 + .../OpenGL/NeHeTutorial/.src/Example1.module | 48 + .../OpenGL/NeHeTutorial/.src/Example10.module | 389 + .../OpenGL/NeHeTutorial/.src/Example11.module | 157 + .../OpenGL/NeHeTutorial/.src/Example16.module | 238 + .../OpenGL/NeHeTutorial/.src/Example19.module | 295 + .../OpenGL/NeHeTutorial/.src/Example2.module | 73 + .../OpenGL/NeHeTutorial/.src/Example25.module | 243 + .../OpenGL/NeHeTutorial/.src/Example3.module | 76 + .../OpenGL/NeHeTutorial/.src/Example4.module | 90 + .../OpenGL/NeHeTutorial/.src/Example42.module | 301 + .../OpenGL/NeHeTutorial/.src/Example5.module | 149 + .../OpenGL/NeHeTutorial/.src/Example6.module | 184 + .../OpenGL/NeHeTutorial/.src/Example7.module | 219 + .../OpenGL/NeHeTutorial/.src/Example8.module | 232 + .../OpenGL/NeHeTutorial/.src/Example9.module | 190 + .../OpenGL/NeHeTutorial/.src/MMain.module | 17 + app/examples/OpenGL/NeHeTutorial/NeHe.png | Bin 0 -> 14493 bytes app/examples/OpenGL/NeHeTutorial/Sphere.txt | 486 + app/examples/OpenGL/NeHeTutorial/Star.png | Bin 0 -> 4910 bytes app/examples/OpenGL/NeHeTutorial/Torus.txt | 486 + app/examples/OpenGL/NeHeTutorial/Tube.txt | 486 + app/examples/OpenGL/NeHeTutorial/barrel.png | Bin 0 -> 294 bytes app/examples/OpenGL/NeHeTutorial/ceiling.png | Bin 0 -> 140734 bytes app/examples/OpenGL/NeHeTutorial/crate.jpeg | Bin 0 -> 16088 bytes app/examples/OpenGL/NeHeTutorial/floor.png | Bin 0 -> 29009 bytes app/examples/OpenGL/NeHeTutorial/glass.png | Bin 0 -> 41118 bytes app/examples/OpenGL/NeHeTutorial/icon.png | Bin 0 -> 3377 bytes app/examples/OpenGL/NeHeTutorial/rainbow.txt | 12 + app/examples/OpenGL/NeHeTutorial/wall.jpeg | Bin 0 -> 121454 bytes app/examples/OpenGL/NeHeTutorial/world.txt | 16 + .../OpenGL/NeHeTutorialShell/.directory | 2 + .../OpenGL/NeHeTutorialShell/.icon.png | Bin 0 -> 4202 bytes .../OpenGL/NeHeTutorialShell/.lang/ru.po | 110 + .../OpenGL/NeHeTutorialShell/.project | 13 + .../OpenGL/NeHeTutorialShell/.src/FMain.class | 64 + .../OpenGL/NeHeTutorialShell/.src/FMain.form | 64 + .../OpenGL/NeHeTutorialShell/icon.png | Bin 0 -> 4015 bytes .../OpenGL/NeHeTutorialShell/nehe.png | Bin 0 -> 5785 bytes .../OpenGL/PDFPresentation/.directory | 2 + app/examples/OpenGL/PDFPresentation/.icon.png | Bin 0 -> 3540 bytes .../OpenGL/PDFPresentation/.lang/ru.po | 70 + app/examples/OpenGL/PDFPresentation/.project | 27 + .../OpenGL/PDFPresentation/.src/CLogo.class | 224 + .../.src/CPdfPresentation.class | 464 + .../OpenGL/PDFPresentation/.src/FMain.class | 111 + .../OpenGL/PDFPresentation/.src/FMain.form | 37 + .../OpenGL/PDFPresentation/.src/MMain.module | 12 + app/examples/OpenGL/PDFPresentation/icon.png | Bin 0 -> 14695 bytes app/examples/OpenGL/PDFPresentation/logo.png | Bin 0 -> 27199 bytes app/examples/OpenGL/PDFPresentation/music.xm | Bin 0 -> 482806 bytes app/examples/OpenGL/TunnelSDL/.dir_icon.png | Bin 0 -> 1571 bytes app/examples/OpenGL/TunnelSDL/.directory | 2 + app/examples/OpenGL/TunnelSDL/.icon.png | Bin 0 -> 3650 bytes app/examples/OpenGL/TunnelSDL/.lang/ru.po | 38 + app/examples/OpenGL/TunnelSDL/.project | 23 + .../OpenGL/TunnelSDL/.src/CTunnel.class | 132 + .../OpenGL/TunnelSDL/.src/MMain.module | 67 + app/examples/OpenGL/TunnelSDL/texture.png | Bin 0 -> 118636 bytes app/examples/OpenGL/TunnelSDL/tunnelsdl.png | Bin 0 -> 7012 bytes app/examples/Printing/Printing/.directory | 2 + .../.hidden/screenshots/2014-12-14.png | Bin 0 -> 76629 bytes app/examples/Printing/Printing/.icon.png | Bin 0 -> 3334 bytes app/examples/Printing/Printing/.lang/ru.po | 72 + app/examples/Printing/Printing/.project | 15 + .../Printing/Printing/.src/FMain.class | 174 + .../Printing/Printing/.src/FMain.form | 90 + .../Printing/Printing/molly-malone.txt | 35 + .../Printing/Printing/printer-laser.png | Bin 0 -> 1358 bytes .../.connection/Connection1.connection | 11 + .../.connection/Connection1.template | 65 + .../Printing/ReportExample/.directory | 2 + .../Printing/ReportExample/.hidden/report.png | Bin 0 -> 3154 bytes app/examples/Printing/ReportExample/.icon.png | Bin 0 -> 3544 bytes .../Printing/ReportExample/.lang/ru.po | 114 + app/examples/Printing/ReportExample/.project | 17 + .../Printing/ReportExample/.src/FMain.class | 41 + .../Printing/ReportExample/.src/FMain.form | 72 + .../Printing/ReportExample/.src/Report1.class | 32 + .../ReportExample/.src/Report1.report | 102 + .../Printing/ReportExample/.src/Report2.class | 19 + .../ReportExample/.src/Report2.report | 19 + .../Printing/ReportExample/.src/Report3.class | 45 + .../ReportExample/.src/Report3.report | 74 + .../Printing/ReportExample/gambas.svg | 540 + app/examples/Web/SmallWiki/.directory | 2 + app/examples/Web/SmallWiki/.icon.png | Bin 0 -> 15892 bytes app/examples/Web/SmallWiki/.lang/ru.po | 52 + app/examples/Web/SmallWiki/.project | 15 + .../Web/SmallWiki/.public/critical.png | Bin 0 -> 589 bytes app/examples/Web/SmallWiki/.public/edit.png | Bin 0 -> 116 bytes app/examples/Web/SmallWiki/.public/info.png | Bin 0 -> 777 bytes app/examples/Web/SmallWiki/.public/logo.png | Bin 0 -> 4125 bytes app/examples/Web/SmallWiki/.public/style.css | 233 + app/examples/Web/SmallWiki/.public/tip.png | Bin 0 -> 534 bytes app/examples/Web/SmallWiki/.public/up.png | Bin 0 -> 185 bytes .../Web/SmallWiki/.public/warning.png | Bin 0 -> 704 bytes app/examples/Web/SmallWiki/.src/Main.module | 282 + .../Web/SmallWiki/.src/Markdown.class | 40 + .../Web/SmallWiki/.src/MarkdownLink.class | 9 + app/examples/Web/SmallWiki/.src/Markup.module | 909 + app/examples/Web/SmallWiki/.src/Wiki.class | 47 + app/examples/Web/SmallWiki/.src/Wiki.webpage | 90 + .../Web/SmallWiki/.src/WikiMarkdown.class | 31 + app/examples/Web/SmallWiki/page | 8 + app/examples/Web/SmallWiki/passwd | 1 + app/man/Makefile.am | 1 + app/man/gambas3.1 | 53 + app/man/gbs3.1 | 151 + app/man/gbw3.1 | 111 + app/mime/application-x-gambasscript-48.png | Bin 0 -> 1416 bytes app/mime/application-x-gambasscript.png | Bin 0 -> 7529 bytes app/mime/application-x-gambasscript.xml | 14 + .../application-x-gambasserverpage-48.png | Bin 0 -> 1557 bytes app/mime/application-x-gambasserverpage.png | Bin 0 -> 8809 bytes app/mime/application-x-gambasserverpage.xml | 13 + app/reconf | 1 + app/src/INSTALL | 1 + .../.connection/Connection1.connection | 11 + .../.connection/Connection1.template | 160 + .../.connection/Connection2.connection | 10 + .../.connection/gambas3_farm.connection | 11 + .../.connection/gambas3_farm.template | 213 + app/src/gambas-farm-server/.directory | 2 + app/src/gambas-farm-server/.icon.png | Bin 0 -> 8866 bytes app/src/gambas-farm-server/.project | 16 + app/src/gambas-farm-server/.src/MMain.module | 1031 + app/src/gambas-farm-server/logo.png | Bin 0 -> 743 bytes app/src/gambas-farm-server/usage.txt | 8 + .../.connection/Connection1.connection | 9 + app/src/gambas-wiki/.directory | 2 + app/src/gambas-wiki/.hidden/CHANGELOG | 7 + .../.hidden/Uncompressed/.public/hilitor.js | 236 + .../Uncompressed/.public/style-rtl.css | 16 + .../.hidden/Uncompressed/.public/style-w.css | 20 + .../.hidden/Uncompressed/.public/style.css | 677 + app/src/gambas-wiki/.icon.png | Bin 0 -> 15462 bytes app/src/gambas-wiki/.lang/ar.po | 224 + app/src/gambas-wiki/.lang/ca.po | 224 + app/src/gambas-wiki/.lang/cs.po | 224 + app/src/gambas-wiki/.lang/de.po | 350 + app/src/gambas-wiki/.lang/es.po | 319 + app/src/gambas-wiki/.lang/es_ES.po | 319 + app/src/gambas-wiki/.lang/fa.po | 224 + app/src/gambas-wiki/.lang/fr.po | 350 + app/src/gambas-wiki/.lang/it.po | 354 + app/src/gambas-wiki/.lang/nl.po | 336 + app/src/gambas-wiki/.lang/pt_BR.po | 342 + app/src/gambas-wiki/.lang/ru.po | 354 + app/src/gambas-wiki/.lang/sv.po | 224 + app/src/gambas-wiki/.lang/zh.po | 341 + app/src/gambas-wiki/.project | 28 + app/src/gambas-wiki/.public/critical.png | 1 + app/src/gambas-wiki/.public/edit.png | Bin 0 -> 237 bytes app/src/gambas-wiki/.public/error-bg.png | Bin 0 -> 153 bytes app/src/gambas-wiki/.public/gambas.png | Bin 0 -> 16241 bytes app/src/gambas-wiki/.public/highlight.js | 1 + app/src/gambas-wiki/.public/hilitor.js | 305 + app/src/gambas-wiki/.public/home.png | Bin 0 -> 217 bytes app/src/gambas-wiki/.public/info.png | 1 + app/src/gambas-wiki/.public/logo.png | Bin 0 -> 1973 bytes app/src/gambas-wiki/.public/playground.js | 95 + app/src/gambas-wiki/.public/style-nh.css | 27 + app/src/gambas-wiki/.public/style-rtl.css | 4 + app/src/gambas-wiki/.public/style-w.css | 20 + app/src/gambas-wiki/.public/style.css | 829 + app/src/gambas-wiki/.public/tip.png | Bin 0 -> 241 bytes app/src/gambas-wiki/.public/up-gray.png | Bin 0 -> 197 bytes app/src/gambas-wiki/.public/up.png | Bin 0 -> 201 bytes app/src/gambas-wiki/.public/vb.png | Bin 0 -> 544 bytes app/src/gambas-wiki/.public/waiting.gif | Bin 0 -> 723 bytes app/src/gambas-wiki/.public/warning.png | 1 + app/src/gambas-wiki/.src/CAuthor.class | 108 + app/src/gambas-wiki/.src/CClassInfo.class | 602 + app/src/gambas-wiki/.src/CComponent.class | 1010 + app/src/gambas-wiki/.src/CPropertyInfo.class | 246 + app/src/gambas-wiki/.src/CSymbolInfo.class | 743 + app/src/gambas-wiki/.src/CUser.class | 99 + app/src/gambas-wiki/.src/Confirm.class | 24 + app/src/gambas-wiki/.src/Confirm.webpage | 43 + app/src/gambas-wiki/.src/FixNews.module | 63 + app/src/gambas-wiki/.src/HttpStat.module | 118 + app/src/gambas-wiki/.src/Main.module | 1746 + app/src/gambas-wiki/.src/OldWiki.module | 603 + app/src/gambas-wiki/.src/Register.class | 17 + app/src/gambas-wiki/.src/Register.webpage | 131 + app/src/gambas-wiki/.src/Wiki.class | 414 + app/src/gambas-wiki/.src/Wiki.webpage | 219 + app/src/gambas-wiki/.src/WikiMarkdown.class | 331 + app/src/gambas-wiki/AUTHORS | 1 + app/src/gambas-wiki/gambas3-ide.project | 1 + app/src/gambas-wiki/gambas3-scripter.project | 1 + app/src/gambas-wiki/icon.png | Bin 0 -> 1126 bytes app/src/gambas-wiki/page | 8 + app/src/gambas-wiki/passwd | 1 + app/src/gambas3-selftest/.directory | 2 + app/src/gambas3-selftest/.hidden/logo.png | Bin 0 -> 2848 bytes app/src/gambas3-selftest/.icon.png | Bin 0 -> 10556 bytes app/src/gambas3-selftest/.lang/en_GB.po | 43 + app/src/gambas3-selftest/.lang/it.po | 40 + app/src/gambas3-selftest/.project | 18 + app/src/gambas3-selftest/.settings_old | 22 + .../.src/TestSources/BaseClass.class | 37 + .../.src/TestSources/ChildClass.class | 19 + .../.src/TestSources/Class1.class | 4 + .../.src/TestSources/Class4.class | 11 + .../.src/TestSources/Class5.class | 9 + .../.src/TestSources/Crash.class | 1 + .../.src/TestSources/Crash2.class | 14 + .../.src/TestSources/Crash3.class | 22 + .../mFileReadWrite.module | 173 + .../.src/TestSources/Module1.module | 42 + .../.src/TestSources/POINT3D.class | 34 + .../.src/TestSources/POINTFloat.class | 25 + .../.src/TestSources/SubCrash.class | 23 + .../.src/TestSources/TestClass1.class | 5 + .../.src/TestSources/TestClass2.class | 132 + .../.src/TestSources/TestClass3.class | 41 + .../.src/TestSources/YetAnotherClass.class | 21 + .../.src/TestSources/mTest.module | 627 + .../.src/Tests/CrashMyTests.test | 10 + .../.src/Tests/Errorhandling.test | 27 + .../.src/Tests/FileReadWrite.test | 19 + .../.src/Tests/GambasSelftests.test | 2417 + .../.src/Tests/LocalStaticFun.test | 69 + .../.src/Tests/SlowThousandsProcs.test | 75 + .../gambas3-selftest/.src/Tests/Timers.test | 63 + app/src/gambas3-selftest/.test | 21 + app/src/gambas3-selftest/COPYING | 339 + .../Excluded or Unimplemented | 55 + app/src/gambas3-selftest/SearchList | 287 + app/src/gambas3-selftest/run.sh | 34 + app/src/gambas3/.directory | 2 + app/src/gambas3/.hidden/font/GambasBold.sfd | 38101 +++++++++++++++ .../gambas3/.hidden/font/GambasRegular.sfd | 38246 +++++++++++++++ .../.hidden/font/GambasRoundRegular.sfd | 38254 ++++++++++++++++ app/src/gambas3/.hidden/font/LICENSE | 97 + app/src/gambas3/.hidden/font/gambasb12.otb | Bin 0 -> 32992 bytes app/src/gambas3/.hidden/font/gambasb13.otb | Bin 0 -> 45620 bytes app/src/gambas3/.hidden/font/gambasb16.otb | Bin 0 -> 87980 bytes app/src/gambas3/.hidden/font/gambasr12.otb | Bin 0 -> 32996 bytes app/src/gambas3/.hidden/font/gambasr13.otb | Bin 0 -> 43232 bytes app/src/gambas3/.hidden/font/gambasr16.otb | Bin 0 -> 87520 bytes app/src/gambas3/.hidden/font/groundr16.otb | Bin 0 -> 100900 bytes app/src/gambas3/.hidden/make-help-archive | 4 + app/src/gambas3/.hidden/report-ng.sh | 132 + app/src/gambas3/.icon.png | Bin 0 -> 12239 bytes app/src/gambas3/.lang/ar.po | 8688 ++++ app/src/gambas3/.lang/ca.po | 8511 ++++ app/src/gambas3/.lang/cs.po | 8550 ++++ app/src/gambas3/.lang/cy.po | 8499 ++++ app/src/gambas3/.lang/de.po | 8572 ++++ app/src/gambas3/.lang/el.po | 8508 ++++ app/src/gambas3/.lang/es.po | 8542 ++++ app/src/gambas3/.lang/es_ES.po | 8529 ++++ app/src/gambas3/.lang/fa.po | 8507 ++++ app/src/gambas3/.lang/fr.po | 8512 ++++ app/src/gambas3/.lang/gl_ES.po | 8499 ++++ app/src/gambas3/.lang/hr.po | 8500 ++++ app/src/gambas3/.lang/hu.po | 8502 ++++ app/src/gambas3/.lang/id.po | 8514 ++++ app/src/gambas3/.lang/it.po | 8526 ++++ app/src/gambas3/.lang/ja.po | 8505 ++++ app/src/gambas3/.lang/ko.po | 8499 ++++ app/src/gambas3/.lang/lt.po | 8563 ++++ app/src/gambas3/.lang/nl.po | 8587 ++++ app/src/gambas3/.lang/no.po | 8499 ++++ app/src/gambas3/.lang/pl.po | 8502 ++++ app/src/gambas3/.lang/pt.po | 8499 ++++ app/src/gambas3/.lang/pt_BR.po | 8547 ++++ app/src/gambas3/.lang/ro.po | 8500 ++++ app/src/gambas3/.lang/ru.po | 8499 ++++ app/src/gambas3/.lang/sl.po | 8500 ++++ app/src/gambas3/.lang/sv.po | 8499 ++++ app/src/gambas3/.lang/tr.po | 8511 ++++ app/src/gambas3/.lang/zh.po | 8499 ++++ app/src/gambas3/.lang/zh_TW.po | 8506 ++++ app/src/gambas3/.project | 60 + app/src/gambas3/.src/CRecentProject.class | 259 + app/src/gambas3/.src/CStyle.class | 76 + app/src/gambas3/.src/CWaitingAnimation.class | 113 + .../gambas3/.src/Component/CClassInfo.class | 1040 + .../gambas3/.src/Component/CComponent.class | 706 + .../.src/Component/CDocumentation.class | 1248 + app/src/gambas3/.src/Component/CModule.class | 107 + .../.src/Component/CPropertyInfo.class | 397 + .../gambas3/.src/Component/CSymbolInfo.class | 1549 + .../gambas3/.src/Connection/FExportData.class | 146 + .../gambas3/.src/Connection/FExportData.form | 47 + .../.src/Connection/FImportTable.class | 512 + .../gambas3/.src/Connection/FImportTable.form | 154 + .../.src/Connection/FNewConnection.class | 434 + .../.src/Connection/FNewConnection.form | 220 + .../gambas3/.src/Connection/FPasteTable.class | 221 + .../gambas3/.src/Connection/FPasteTable.form | 77 + .../.src/Connection/MConnection.module | 553 + app/src/gambas3/.src/Debug/Breakpoints.module | 190 + app/src/gambas3/.src/Debug/CProfile.class | 165 + app/src/gambas3/.src/Debug/CProfileTask.class | 427 + app/src/gambas3/.src/Debug/Design.module | 1989 + app/src/gambas3/.src/Debug/FBrowser.class | 30 + app/src/gambas3/.src/Debug/FBrowser.form | 23 + app/src/gambas3/.src/Debug/FCrash.class | 150 + app/src/gambas3/.src/Debug/FCrash.form | 78 + app/src/gambas3/.src/Debug/FDebugButton.class | 227 + app/src/gambas3/.src/Debug/FDebugButton.form | 81 + app/src/gambas3/.src/Debug/FDebugConfig.class | 234 + app/src/gambas3/.src/Debug/FDebugConfig.form | 430 + app/src/gambas3/.src/Debug/FDebugExpr.class | 901 + app/src/gambas3/.src/Debug/FDebugExpr.form | 72 + app/src/gambas3/.src/Debug/FDebugInfo.class | 1042 + app/src/gambas3/.src/Debug/FDebugInfo.form | 388 + app/src/gambas3/.src/Debug/FDebugger.class | 1172 + app/src/gambas3/.src/Debug/FDebugger.form | 271 + app/src/gambas3/.src/Debug/FOutput.class | 574 + app/src/gambas3/.src/Debug/FOutput.form | 132 + app/src/gambas3/.src/Debug/FProfile.class | 794 + app/src/gambas3/.src/Debug/FProfile.form | 151 + app/src/gambas3/.src/Debug/FTestSuite.class | 332 + app/src/gambas3/.src/Debug/FTestSuite.form | 114 + .../.src/Dialog/Database/FFieldChooser.class | 159 + .../.src/Dialog/Database/FFieldChooser.form | 104 + .../.src/Dialog/Database/FTableChooser.class | 75 + .../.src/Dialog/Database/FTableChooser.form | 52 + .../gambas3/.src/Dialog/FColorChooser.class | 371 + .../gambas3/.src/Dialog/FColorChooser.form | 59 + .../gambas3/.src/Dialog/FFileProperty.class | 96 + .../gambas3/.src/Dialog/FFileProperty.form | 35 + .../gambas3/.src/Dialog/FFontChooser.class | 47 + app/src/gambas3/.src/Dialog/FFontChooser.form | 32 + app/src/gambas3/.src/Dialog/FList.class | 227 + app/src/gambas3/.src/Dialog/FList.form | 94 + app/src/gambas3/.src/Dialog/FSelectIcon.class | 243 + app/src/gambas3/.src/Dialog/FSelectIcon.form | 86 + .../.src/Editor/Browse/FFileOverwrite.class | 50 + .../.src/Editor/Browse/FFileOverwrite.form | 72 + .../.src/Editor/Browse/FProjectBrowser.class | 795 + .../.src/Editor/Browse/FProjectBrowser.form | 433 + app/src/gambas3/.src/Editor/CBookmark.class | 181 + .../gambas3/.src/Editor/CInsertColor.class | 309 + app/src/gambas3/.src/Editor/CInsertDate.class | 174 + app/src/gambas3/.src/Editor/CPosition.class | 238 + app/src/gambas3/.src/Editor/CTask.class | 89 + app/src/gambas3/.src/Editor/CUndo.class | 188 + .../.src/Editor/Code/CCompletion.class | 282 + .../gambas3/.src/Editor/Code/CDatatype.class | 98 + .../.src/Editor/Code/CSampleCode.class | 508 + .../.src/Editor/Code/FCompletion.class | 1232 + .../gambas3/.src/Editor/Code/FCompletion.form | 51 + .../.src/Editor/Code/FConflictEditor.class | 1564 + .../.src/Editor/Code/FConflictEditor.form | 637 + .../gambas3/.src/Editor/Code/FEditor.class | 4058 ++ app/src/gambas3/.src/Editor/Code/FEditor.form | 757 + .../.src/Editor/Code/FPasteSpecial.class | 226 + .../.src/Editor/Code/FPasteSpecial.form | 68 + .../.src/Editor/Code/FProcedureList.class | 390 + .../.src/Editor/Code/FProcedureList.form | 87 + .../gambas3/.src/Editor/Code/FSignature.class | 283 + .../gambas3/.src/Editor/Code/FSignature.form | 56 + .../.src/Editor/Code/FTextEditor.class | 2030 + .../gambas3/.src/Editor/Code/FTextEditor.form | 877 + .../.src/Editor/Code/MPrettyCode.module | 574 + .../.src/Editor/Connection/CField.class | 31 + .../.src/Editor/Connection/CIndexField.class | 18 + .../Editor/Connection/FConnectionEditor.class | 2018 + .../Editor/Connection/FConnectionEditor.form | 517 + .../.src/Editor/Connection/FNewTable.class | 75 + .../.src/Editor/Connection/FNewTable.form | 64 + .../gambas3/.src/Editor/Csv/FCsvEditor.class | 2 + .../gambas3/.src/Editor/Csv/FCsvEditor.form | 54 + .../gambas3/.src/Editor/Csv/FCsvOption.class | 20 + .../gambas3/.src/Editor/Csv/FCsvOption.form | 124 + app/src/gambas3/.src/Editor/FInsertChar.class | 113 + app/src/gambas3/.src/Editor/FInsertChar.form | 16 + .../gambas3/.src/Editor/Form/CControl.class | 2620 ++ app/src/gambas3/.src/Editor/Form/CMenu.class | 79 + .../.src/Editor/Form/FDeleteUnknown.class | 39 + .../.src/Editor/Form/FDeleteUnknown.form | 47 + app/src/gambas3/.src/Editor/Form/FForm.class | 4733 ++ app/src/gambas3/.src/Editor/Form/FForm.form | 1046 + .../gambas3/.src/Editor/Form/FFormStack.class | 321 + .../gambas3/.src/Editor/Form/FFormStack.form | 43 + app/src/gambas3/.src/Editor/Form/FMenu.class | 1353 + app/src/gambas3/.src/Editor/Form/FMenu.form | 412 + .../gambas3/.src/Editor/Form/FProperty.class | 1379 + .../gambas3/.src/Editor/Form/FProperty.form | 119 + app/src/gambas3/.src/Editor/Form/FText.class | 60 + app/src/gambas3/.src/Editor/Form/FText.form | 32 + .../gambas3/.src/Editor/Form/FToolBox.class | 435 + .../gambas3/.src/Editor/Form/FToolBox.form | 96 + .../gambas3/.src/Editor/Form/FToolPanel.class | 221 + .../gambas3/.src/Editor/Form/FToolPanel.form | 14 + .../.src/Editor/Image/CImageClipboard.class | 13 + .../.src/Editor/Image/CImageSelection.class | 1227 + .../.src/Editor/Image/CImageShape.class | 331 + .../.src/Editor/Image/FImageEditor.class | 3455 ++ .../.src/Editor/Image/FImageEditor.form | 878 + .../Editor/Image/FImageOffsetSelection.class | 44 + .../Editor/Image/FImageOffsetSelection.form | 52 + .../.src/Editor/Image/FImageProperty.class | 1588 + .../.src/Editor/Image/FImageProperty.form | 667 + .../.src/Editor/Image/FImageQuality.class | 20 + .../.src/Editor/Image/FImageQuality.form | 25 + .../.src/Editor/Image/FImageResize.class | 147 + .../.src/Editor/Image/FImageResize.form | 108 + .../.src/Editor/Image/FImageRotate.class | 39 + .../.src/Editor/Image/FImageRotate.form | 25 + .../.src/Editor/Image/ImageSelectionBox.class | 102 + .../gambas3/.src/Editor/MCompressFile.module | 603 + app/src/gambas3/.src/Editor/MPrint.module | 141 + .../.src/Exported/EnvChooser/EnvChooser.class | 398 + .../ProjectChooser/FProjectChooser.class | 219 + .../ProjectChooser/FProjectChooser.form | 65 + .../ProjectChooser/ProjectChooser.class | 132 + app/src/gambas3/.src/Exported/TabPanel.class | 98 + .../gambas3/.src/Exported/TextEditor.class | 626 + app/src/gambas3/.src/FCommandError.class | 53 + app/src/gambas3/.src/FCommandError.form | 43 + app/src/gambas3/.src/FMain.class | 3558 ++ app/src/gambas3/.src/FMain.form | 2091 + app/src/gambas3/.src/FSave.class | 83 + app/src/gambas3/.src/FSave.form | 53 + app/src/gambas3/.src/FScreenshot.class | 50 + app/src/gambas3/.src/FScreenshot.form | 41 + app/src/gambas3/.src/Family/CFamily.class | 719 + .../.src/Family/Form/CFamilyForm.class | 194 + .../gambas3/.src/Family/Report/AngleBox.class | 90 + .../.src/Family/Report/CFamilyReport.class | 574 + .../.src/Family/Report/CReportBrush.class | 264 + .../gambas3/.src/Family/Report/CoordBox.class | 422 + .../Family/Report/FReportBorderChooser.class | 503 + .../Family/Report/FReportBorderChooser.form | 169 + .../Report/FReportBoxShadowChooser.class | 136 + .../Report/FReportBoxShadowChooser.form | 79 + .../Family/Report/FReportBrushChooser.class | 561 + .../Family/Report/FReportBrushChooser.form | 118 + .../Family/Report/FReportCoordChooser.class | 95 + .../Family/Report/FReportCoordChooser.form | 33 + .../Family/Report/FReportPaddingChooser.class | 97 + .../Family/Report/FReportPaddingChooser.form | 58 + .../Family/TermForm/CFamilyTermForm.class | 99 + .../.src/Family/WebForm/CFamilyWebForm.class | 278 + .../.src/Family/WebForm/FWebFontChooser.class | 126 + .../.src/Family/WebForm/FWebFontChooser.form | 103 + .../.src/Family/WebForm/WebformWebMenu.class | 51 + .../gambas3/.src/Help/CHelpSearchTask.class | 115 + app/src/gambas3/.src/Help/FHelpBrowser.class | 458 + app/src/gambas3/.src/Help/FHelpBrowser.form | 161 + app/src/gambas3/.src/Help/FHelpShortcut.class | 50 + app/src/gambas3/.src/Help/FHelpShortcut.form | 38 + app/src/gambas3/.src/Help/FTips.class | 176 + app/src/gambas3/.src/Help/FTips.form | 79 + app/src/gambas3/.src/Help/HelpBrowser.class | 295 + app/src/gambas3/.src/Help/HelpView.class | 210 + app/src/gambas3/.src/Help/MHelp.module | 1075 + app/src/gambas3/.src/Help/Wiki/URL.class | 105 + app/src/gambas3/.src/Help/Wiki/Wiki.module | 1043 + .../gambas3/.src/Help/Wiki/WikiMarkdown.class | 319 + app/src/gambas3/.src/MMime.module | 123 + app/src/gambas3/.src/MTest.module | 227 + app/src/gambas3/.src/MTheme.module | 233 + .../gambas3/.src/Options/CBackground.class | 68 + app/src/gambas3/.src/Options/FLayout.class | 58 + app/src/gambas3/.src/Options/FLayout.form | 38 + app/src/gambas3/.src/Options/FOption.class | 1998 + app/src/gambas3/.src/Options/FOption.form | 1279 + app/src/gambas3/.src/Options/FProxy.class | 55 + app/src/gambas3/.src/Options/FProxy.form | 67 + app/src/gambas3/.src/Options/FSnippet.class | 79 + app/src/gambas3/.src/Options/FSnippet.form | 43 + .../gambas3/.src/Packager/FMakeInstall.class | 1395 + .../gambas3/.src/Packager/FMakeInstall.form | 721 + .../.src/Packager/FSelectExtraFile.class | 39 + .../.src/Packager/FSelectExtraFile.form | 35 + app/src/gambas3/.src/Packager/Package.module | 2815 ++ app/src/gambas3/.src/Project.module | 7042 +++ .../gambas3/.src/Project/CProjectInfo.class | 281 + .../gambas3/.src/Project/CProjectList.class | 683 + .../gambas3/.src/Project/CProjectTree.class | 1257 + .../Project/Component/ComponentChooser.class | 167 + .../Project/Component/FComponentChooser.class | 823 + .../Project/Component/FComponentChooser.form | 107 + .../Project/Component/FSelectComponent.class | 24 + .../Project/Component/FSelectComponent.form | 30 + .../.src/Project/Conversion/FConvert.class | 56 + .../.src/Project/Conversion/FConvert.form | 22 + .../.src/Project/Conversion/MConvert.module | 819 + .../gambas3/.src/Project/FCreateFile.class | 379 + app/src/gambas3/.src/Project/FCreateFile.form | 157 + .../gambas3/.src/Project/FCreateProject.class | 260 + .../gambas3/.src/Project/FCreateProject.form | 144 + .../gambas3/.src/Project/FImportFile.class | 204 + app/src/gambas3/.src/Project/FImportFile.form | 20 + .../.src/Project/FMakeExecutable.class | 127 + .../gambas3/.src/Project/FMakeExecutable.form | 134 + .../.src/Project/FMakeSourceArchive.class | 44 + .../.src/Project/FMakeSourceArchive.form | 19 + .../gambas3/.src/Project/FOpenProject.class | 234 + .../gambas3/.src/Project/FOpenProject.form | 150 + .../.src/Project/FProjectProperty.class | 1220 + .../.src/Project/FProjectProperty.form | 771 + .../gambas3/.src/Project/FSaveProjectAs.class | 103 + .../gambas3/.src/Project/FSaveProjectAs.form | 65 + .../gambas3/.src/Project/Farm/CSoftware.class | 704 + .../.src/Project/Farm/CSoftwareGroup.class | 27 + .../.src/Project/Farm/FFarmConfig.class | 32 + .../.src/Project/Farm/FFarmConfig.form | 30 + .../.src/Project/Farm/FFarmLogin.class | 114 + .../gambas3/.src/Project/Farm/FFarmLogin.form | 90 + .../.src/Project/Farm/FFarmRegister.class | 64 + .../.src/Project/Farm/FFarmRegister.form | 100 + .../.src/Project/Farm/FFarmRequest.class | 64 + .../.src/Project/Farm/FFarmRequest.form | 32 + .../gambas3/.src/Project/Farm/FPublish.class | 355 + .../gambas3/.src/Project/Farm/FPublish.form | 235 + .../.src/Project/Farm/FSoftwareFarm.class | 777 + .../.src/Project/Farm/FSoftwareFarm.form | 320 + .../.src/Project/Farm/FarmIdentity.class | 144 + .../.src/Project/Farm/FarmRequest.class | 396 + .../Project/Farm/FarmRequestManager.module | 97 + .../.src/Project/Farm/Publish/CTag.class | 78 + .../Project/Farm/Publish/CTagCompletion.class | 82 + .../Project/Farm/Publish/CTagEditor.class | 223 + .../.src/Project/Farm/SoftwareBox.class | 326 + .../.src/Project/Library/CLibraryInfo.class | 228 + .../.src/Project/Library/FSelectLibrary.class | 146 + .../.src/Project/Library/FSelectLibrary.form | 52 + .../.src/Project/Library/LibraryItem.class | 120 + .../.src/Project/Patch/FMakePatch.class | 155 + .../.src/Project/Patch/FMakePatch.form | 97 + .../gambas3/.src/Project/Patch/FPatch.class | 221 + .../gambas3/.src/Project/Patch/FPatch.form | 68 + .../gambas3/.src/Project/Patch/Patch.class | 212 + app/src/gambas3/.src/Project/ProjectBox.class | 548 + app/src/gambas3/.src/Save.module | 62 + app/src/gambas3/.src/Search/CGrepResult.class | 6 + .../gambas3/.src/Search/CSearchResult.class | 34 + app/src/gambas3/.src/Search/CSearchTask.class | 205 + app/src/gambas3/.src/Search/FSearch.class | 1537 + app/src/gambas3/.src/Search/FSearch.form | 198 + .../.src/Translation/CTranslation.class | 299 + .../.src/Translation/FNewTranslation.class | 55 + .../.src/Translation/FNewTranslation.form | 32 + .../gambas3/.src/Translation/FTranslate.class | 1878 + .../gambas3/.src/Translation/FTranslate.form | 366 + .../.src/Translation/MyLanguage.module | 272 + app/src/gambas3/.src/Util.module | 87 + .../gambas3/.src/Util/MErrorMessage.module | 393 + .../gambas3/.src/Util/MRemoveAccents.module | 69 + .../gambas3/.src/Util/MSdlDefaultFont.module | 85 + .../.src/VersionControl/CVersionControl.class | 137 + .../VersionControl/CVersionControlGit.class | 576 + .../CVersionControlHistoryTask.class | 22 + .../CVersionControlSubversion.class | 422 + .../.src/VersionControl/FConflict.class | 288 + .../.src/VersionControl/FConflict.form | 121 + .../.src/VersionControl/FCreateBranch.class | 35 + .../.src/VersionControl/FCreateBranch.form | 41 + .../.src/VersionControl/FFileInfoVC.class | 196 + .../.src/VersionControl/FFileInfoVC.form | 82 + .../.src/VersionControl/FProjectVersion.class | 307 + .../.src/VersionControl/FProjectVersion.form | 231 + .../.src/VersionControl/FVersionControl.class | 300 + .../.src/VersionControl/FVersionControl.form | 160 + .../.src/VersionControl/VersionControl.module | 922 + .../gambas3/.src/Welcome/CCoolButton.class | 232 + app/src/gambas3/.src/Welcome/CSnowFlake.class | 9 + app/src/gambas3/.src/Welcome/CTear.class | 4 + app/src/gambas3/.src/Welcome/CUser.class | 11 + app/src/gambas3/.src/Welcome/CWelcome.class | 433 + app/src/gambas3/.src/Welcome/FAbout.class | 431 + app/src/gambas3/.src/Welcome/FAbout.form | 37 + .../gambas3/.src/Welcome/FSystemInfo.class | 294 + app/src/gambas3/.src/Welcome/FSystemInfo.form | 38 + app/src/gambas3/.src/Welcome/FWelcome.class | 473 + app/src/gambas3/.src/Welcome/FWelcome.form | 111 + app/src/gambas3/AUTHORS | 1 + app/src/gambas3/_fake_project | 4 + app/src/gambas3/debugger/Main.module | 84 + app/src/gambas3/debugger/_project | 7 + app/src/gambas3/font/font.allow | 8 + app/src/gambas3/font/font.conf | 4 + app/src/gambas3/font/gambasb12.otb | 1 + app/src/gambas3/font/gambasb13.otb | 1 + app/src/gambas3/font/gambasb16.otb | 1 + app/src/gambas3/font/gambasr12.otb | 1 + app/src/gambas3/font/gambasr13.otb | 1 + app/src/gambas3/font/gambasr16.otb | 1 + app/src/gambas3/font/groundr16.otb | 1 + app/src/gambas3/gitignore | 18 + app/src/gambas3/help/class-help.html | 35 + app/src/gambas3/help/component-help.html | 23 + app/src/gambas3/help/property-help.html | 21 + app/src/gambas3/help/symbol-help.html | 17 + app/src/gambas3/help/wiki/critical.png | 1 + app/src/gambas3/help/wiki/error-bg.png | Bin 0 -> 153 bytes app/src/gambas3/help/wiki/highlight.js | 60 + app/src/gambas3/help/wiki/info.png | 1 + app/src/gambas3/help/wiki/page.html | 38 + app/src/gambas3/help/wiki/style-custom.css | 12 + .../help/wiki/style-offline-htmlview.css | 45 + app/src/gambas3/help/wiki/style-offline.css | 22 + app/src/gambas3/help/wiki/style.css | 1 + app/src/gambas3/help/wiki/tip.png | 1 + app/src/gambas3/help/wiki/up.png | Bin 0 -> 185 bytes app/src/gambas3/help/wiki/vb.png | 1 + app/src/gambas3/help/wiki/warning.png | 1 + app/src/gambas3/img/16/arrange-h.png | Bin 0 -> 161 bytes app/src/gambas3/img/16/arrange-hcenter.png | Bin 0 -> 164 bytes app/src/gambas3/img/16/arrange-lr.png | Bin 0 -> 164 bytes app/src/gambas3/img/16/arrange-tb.png | Bin 0 -> 162 bytes app/src/gambas3/img/16/arrange-v.png | Bin 0 -> 158 bytes app/src/gambas3/img/16/arrange-vcenter.png | Bin 0 -> 166 bytes app/src/gambas3/img/16/checked-gray.png | Bin 0 -> 210 bytes app/src/gambas3/img/16/checked-lock.png | Bin 0 -> 157 bytes app/src/gambas3/img/16/checked.png | Bin 0 -> 190 bytes app/src/gambas3/img/16/close-window.png | Bin 0 -> 164 bytes app/src/gambas3/img/16/collapse-container.png | Bin 0 -> 165 bytes app/src/gambas3/img/16/configure.png | 1 + app/src/gambas3/img/16/control.png | Bin 0 -> 411 bytes app/src/gambas3/img/16/cursive.png | Bin 0 -> 551 bytes app/src/gambas3/img/16/expand-container.png | Bin 0 -> 165 bytes app/src/gambas3/img/16/fantasy.png | Bin 0 -> 478 bytes app/src/gambas3/img/16/max-window.png | Bin 0 -> 169 bytes app/src/gambas3/img/16/monospace.png | Bin 0 -> 372 bytes app/src/gambas3/img/16/red-arrow-c.png | Bin 0 -> 155 bytes app/src/gambas3/img/16/red-arrow-h.png | Bin 0 -> 148 bytes app/src/gambas3/img/16/red-arrow-r.png | Bin 0 -> 151 bytes app/src/gambas3/img/16/red-arrow-v.png | Bin 0 -> 152 bytes .../gambas3/img/16/remove-from-container.png | Bin 0 -> 159 bytes app/src/gambas3/img/16/rename.png | Bin 0 -> 219 bytes app/src/gambas3/img/16/round-ne.png | Bin 0 -> 219 bytes app/src/gambas3/img/16/round-nw.png | Bin 0 -> 221 bytes app/src/gambas3/img/16/round-se.png | Bin 0 -> 219 bytes app/src/gambas3/img/16/round-sw.png | Bin 0 -> 216 bytes app/src/gambas3/img/16/sans-serif.png | Bin 0 -> 487 bytes app/src/gambas3/img/16/select.png | Bin 0 -> 171 bytes app/src/gambas3/img/16/separator.png | Bin 0 -> 155 bytes app/src/gambas3/img/16/serif.png | Bin 0 -> 493 bytes app/src/gambas3/img/16/stack.png | Bin 0 -> 164 bytes app/src/gambas3/img/16/tabmove.png | Bin 0 -> 275 bytes app/src/gambas3/img/16/tabstrip.png | Bin 0 -> 248 bytes app/src/gambas3/img/16/tile.png | Bin 0 -> 120 bytes app/src/gambas3/img/16/toggle-container.png | Bin 0 -> 164 bytes app/src/gambas3/img/16/unchecked.png | Bin 0 -> 156 bytes app/src/gambas3/img/16/white-close.png | Bin 0 -> 157 bytes app/src/gambas3/img/32/breakpoint.png | Bin 0 -> 313 bytes app/src/gambas3/img/32/comment.png | Bin 0 -> 248 bytes app/src/gambas3/img/32/cross.png | Bin 0 -> 171 bytes app/src/gambas3/img/32/dbus.png | Bin 0 -> 1505 bytes app/src/gambas3/img/32/delete-container.png | Bin 0 -> 151 bytes app/src/gambas3/img/32/do-not-translate.png | Bin 0 -> 256 bytes app/src/gambas3/img/32/embed-container.png | Bin 0 -> 157 bytes app/src/gambas3/img/32/eol.png | Bin 0 -> 194 bytes app/src/gambas3/img/32/error.png | Bin 0 -> 356 bytes app/src/gambas3/img/32/exported-namespace.png | Bin 0 -> 602 bytes app/src/gambas3/img/32/exported.png | Bin 0 -> 603 bytes app/src/gambas3/img/32/filter-menu.png | Bin 0 -> 530 bytes app/src/gambas3/img/32/filter.png | Bin 0 -> 521 bytes app/src/gambas3/img/32/linked.png | Bin 0 -> 214 bytes app/src/gambas3/img/32/magic.png | Bin 0 -> 241 bytes app/src/gambas3/img/32/multicontainer.png | Bin 0 -> 156 bytes app/src/gambas3/img/32/opengl.png | Bin 0 -> 1329 bytes app/src/gambas3/img/32/tab.png | Bin 0 -> 206 bytes app/src/gambas3/img/32/tile.png | Bin 0 -> 116 bytes app/src/gambas3/img/32/uncomment.png | Bin 0 -> 388 bytes app/src/gambas3/img/32/wrap.png | Bin 0 -> 204 bytes app/src/gambas3/img/48/all.png | Bin 0 -> 1521 bytes app/src/gambas3/img/background/baraka.png | Bin 0 -> 10448 bytes app/src/gambas3/img/background/christ.png | Bin 0 -> 186 bytes app/src/gambas3/img/background/circle.png | Bin 0 -> 193 bytes app/src/gambas3/img/background/cross.png | Bin 0 -> 146 bytes app/src/gambas3/img/background/cubism.png | Bin 0 -> 63853 bytes app/src/gambas3/img/background/dark.png | Bin 0 -> 113 bytes app/src/gambas3/img/background/gambas.png | Bin 0 -> 974 bytes app/src/gambas3/img/background/hline.png | Bin 0 -> 138 bytes app/src/gambas3/img/background/hose.png | Bin 0 -> 44520 bytes app/src/gambas3/img/background/illusion.png | Bin 0 -> 2946 bytes app/src/gambas3/img/background/labyrinth.png | Bin 0 -> 973 bytes app/src/gambas3/img/background/light.png | Bin 0 -> 113 bytes app/src/gambas3/img/background/list | 23 + app/src/gambas3/img/background/medracim.png | Bin 0 -> 172457 bytes app/src/gambas3/img/background/mosaic.png | Bin 0 -> 76015 bytes app/src/gambas3/img/background/nature.png | Bin 0 -> 46970 bytes app/src/gambas3/img/background/oil.png | Bin 0 -> 74848 bytes app/src/gambas3/img/background/point.png | Bin 0 -> 135 bytes app/src/gambas3/img/background/quasi.png | Bin 0 -> 34460 bytes app/src/gambas3/img/background/smoke.png | Bin 0 -> 25578 bytes app/src/gambas3/img/background/square.png | Bin 0 -> 480 bytes app/src/gambas3/img/background/star.png | Bin 0 -> 34262 bytes app/src/gambas3/img/background/tawhid.png | Bin 0 -> 22454 bytes app/src/gambas3/img/background/vline.png | Bin 0 -> 133 bytes app/src/gambas3/img/background/warda.png | Bin 0 -> 24560 bytes app/src/gambas3/img/background/weave.png | Bin 0 -> 60153 bytes app/src/gambas3/img/broken.svg | 122 + app/src/gambas3/img/component/deprecated.png | Bin 0 -> 285 bytes .../gambas3/img/component/experimental.png | Bin 0 -> 245 bytes app/src/gambas3/img/component/finished.png | Bin 0 -> 239 bytes app/src/gambas3/img/component/unfinished.png | Bin 0 -> 290 bytes app/src/gambas3/img/component/unknown.png | Bin 0 -> 350 bytes app/src/gambas3/img/contrib/Radoslav.gif | Bin 0 -> 2405 bytes app/src/gambas3/img/control/button.png | Bin 0 -> 804 bytes app/src/gambas3/img/control/checkbox.png | Bin 0 -> 229 bytes app/src/gambas3/img/control/columnview.png | Bin 0 -> 170 bytes app/src/gambas3/img/control/combobox.png | Bin 0 -> 306 bytes app/src/gambas3/img/control/deprecated.png | Bin 0 -> 803 bytes app/src/gambas3/img/control/dial.png | Bin 0 -> 1008 bytes app/src/gambas3/img/control/dnsclient.png | Bin 0 -> 2333 bytes app/src/gambas3/img/control/drawingarea.png | Bin 0 -> 460 bytes app/src/gambas3/img/control/embedder.png | Bin 0 -> 1467 bytes app/src/gambas3/img/control/frame.png | Bin 0 -> 1016 bytes app/src/gambas3/img/control/ftpclient.png | Bin 0 -> 2193 bytes app/src/gambas3/img/control/glarea.png | Bin 0 -> 1781 bytes app/src/gambas3/img/control/gridview.png | Bin 0 -> 137 bytes app/src/gambas3/img/control/hbox.png | Bin 0 -> 253 bytes app/src/gambas3/img/control/hpanel.png | Bin 0 -> 256 bytes app/src/gambas3/img/control/hsplit.png | Bin 0 -> 279 bytes app/src/gambas3/img/control/httpclient.png | Bin 0 -> 2229 bytes app/src/gambas3/img/control/iconview.png | Bin 0 -> 151 bytes app/src/gambas3/img/control/label.png | Bin 0 -> 1285 bytes app/src/gambas3/img/control/lcdnumber.png | Bin 0 -> 212 bytes app/src/gambas3/img/control/listbox.png | Bin 0 -> 127 bytes app/src/gambas3/img/control/listview.png | Bin 0 -> 145 bytes app/src/gambas3/img/control/moviebox.png | Bin 0 -> 432 bytes app/src/gambas3/img/control/panel.png | Bin 0 -> 159 bytes app/src/gambas3/img/control/picturebox.png | Bin 0 -> 384 bytes app/src/gambas3/img/control/printer.png | Bin 0 -> 281 bytes app/src/gambas3/img/control/progressbar.png | Bin 0 -> 219 bytes app/src/gambas3/img/control/radiobutton.png | Bin 0 -> 774 bytes app/src/gambas3/img/control/scrollarea.png | Bin 0 -> 490 bytes app/src/gambas3/img/control/scrollbar.png | Bin 0 -> 315 bytes app/src/gambas3/img/control/scrollview.png | Bin 0 -> 202 bytes app/src/gambas3/img/control/select.png | Bin 0 -> 1203 bytes app/src/gambas3/img/control/separator.png | Bin 0 -> 129 bytes app/src/gambas3/img/control/serialport.png | Bin 0 -> 847 bytes app/src/gambas3/img/control/serversocket.png | Bin 0 -> 998 bytes app/src/gambas3/img/control/slider.png | Bin 0 -> 471 bytes app/src/gambas3/img/control/socket.png | Bin 0 -> 640 bytes app/src/gambas3/img/control/spinbox.png | Bin 0 -> 311 bytes app/src/gambas3/img/control/splitter.png | Bin 0 -> 144 bytes app/src/gambas3/img/control/spring.png | Bin 0 -> 132 bytes app/src/gambas3/img/control/tabstrip.png | Bin 0 -> 540 bytes app/src/gambas3/img/control/textarea.png | Bin 0 -> 1002 bytes app/src/gambas3/img/control/textbox.png | Bin 0 -> 946 bytes app/src/gambas3/img/control/textedit.png | Bin 0 -> 992 bytes app/src/gambas3/img/control/textlabel.png | Bin 0 -> 1235 bytes app/src/gambas3/img/control/timer.png | Bin 0 -> 944 bytes app/src/gambas3/img/control/togglebutton.png | Bin 0 -> 235 bytes app/src/gambas3/img/control/toolbutton.png | Bin 0 -> 970 bytes app/src/gambas3/img/control/trayicon.png | Bin 0 -> 1238 bytes app/src/gambas3/img/control/treeview.png | Bin 0 -> 243 bytes app/src/gambas3/img/control/udpsocket.png | Bin 0 -> 1115 bytes app/src/gambas3/img/control/unknown.png | Bin 0 -> 125 bytes app/src/gambas3/img/control/vbox.png | Bin 0 -> 252 bytes app/src/gambas3/img/control/void.png | Bin 0 -> 212 bytes app/src/gambas3/img/control/void2.png | Bin 0 -> 226 bytes app/src/gambas3/img/control/voidbutton.png | Bin 0 -> 445 bytes app/src/gambas3/img/control/vpanel.png | Bin 0 -> 274 bytes app/src/gambas3/img/control/vsplit.png | Bin 0 -> 285 bytes app/src/gambas3/img/control/webview.png | Bin 0 -> 1432 bytes app/src/gambas3/img/crash/atari-dark.png | Bin 0 -> 215 bytes app/src/gambas3/img/crash/atari.png | Bin 0 -> 215 bytes app/src/gambas3/img/draw/duplicate.png | Bin 0 -> 167 bytes app/src/gambas3/img/draw/expand.png | Bin 0 -> 334 bytes app/src/gambas3/img/draw/invert.png | Bin 0 -> 257 bytes app/src/gambas3/img/draw/move.png | Bin 0 -> 214 bytes app/src/gambas3/img/draw/offset.png | Bin 0 -> 157 bytes app/src/gambas3/img/draw/save-selection.png | Bin 0 -> 210 bytes app/src/gambas3/img/family/column-i.png | Bin 0 -> 165 bytes app/src/gambas3/img/family/column.png | Bin 0 -> 163 bytes app/src/gambas3/img/family/expand.png | Bin 0 -> 127 bytes app/src/gambas3/img/family/fill-c.png | Bin 0 -> 131 bytes app/src/gambas3/img/family/fill.png | Bin 0 -> 132 bytes app/src/gambas3/img/family/horizontal-c.png | Bin 0 -> 158 bytes app/src/gambas3/img/family/horizontal-i-c.png | Bin 0 -> 160 bytes app/src/gambas3/img/family/horizontal-i.png | Bin 0 -> 159 bytes app/src/gambas3/img/family/horizontal.png | Bin 0 -> 157 bytes app/src/gambas3/img/family/hsplit.png | Bin 0 -> 161 bytes app/src/gambas3/img/family/row-i.png | Bin 0 -> 163 bytes app/src/gambas3/img/family/row.png | Bin 0 -> 165 bytes app/src/gambas3/img/family/vertical-c.png | Bin 0 -> 160 bytes app/src/gambas3/img/family/vertical-i-c.png | Bin 0 -> 162 bytes app/src/gambas3/img/family/vertical-i.png | Bin 0 -> 160 bytes app/src/gambas3/img/family/vertical.png | Bin 0 -> 158 bytes app/src/gambas3/img/family/vsplit.png | Bin 0 -> 188 bytes app/src/gambas3/img/logo/archlinux.png | Bin 0 -> 2137 bytes app/src/gambas3/img/logo/autotools.png | Bin 0 -> 2115 bytes app/src/gambas3/img/logo/debian.png | Bin 0 -> 2277 bytes app/src/gambas3/img/logo/fedora.png | Bin 0 -> 2846 bytes app/src/gambas3/img/logo/folder.png | Bin 0 -> 2647 bytes app/src/gambas3/img/logo/gambas.svg | 540 + app/src/gambas3/img/logo/head-16.png | Bin 0 -> 514 bytes app/src/gambas3/img/logo/head-256.png | Bin 0 -> 14310 bytes app/src/gambas3/img/logo/head-32.png | Bin 0 -> 946 bytes app/src/gambas3/img/logo/logo-ide.png | Bin 0 -> 6834 bytes app/src/gambas3/img/logo/logo.png | Bin 0 -> 5164 bytes app/src/gambas3/img/logo/mageia.png | Bin 0 -> 1967 bytes app/src/gambas3/img/logo/mandriva.png | Bin 0 -> 2048 bytes app/src/gambas3/img/logo/package-gnu.png | Bin 0 -> 3166 bytes app/src/gambas3/img/logo/project.png | Bin 0 -> 1310 bytes app/src/gambas3/img/logo/redhat.png | Bin 0 -> 1373 bytes app/src/gambas3/img/logo/self-extractible.png | Bin 0 -> 2595 bytes app/src/gambas3/img/logo/slackware.png | Bin 0 -> 3840 bytes app/src/gambas3/img/logo/suse.png | Bin 0 -> 2386 bytes app/src/gambas3/img/logo/ubuntu.png | Bin 0 -> 2113 bytes app/src/gambas3/img/module/class.png | Bin 0 -> 997 bytes app/src/gambas3/img/module/form.png | Bin 0 -> 149 bytes app/src/gambas3/img/module/module.png | Bin 0 -> 601 bytes app/src/gambas3/img/module/report.png | Bin 0 -> 596 bytes app/src/gambas3/img/module/termform.png | Bin 0 -> 179 bytes app/src/gambas3/img/module/test.png | Bin 0 -> 444 bytes app/src/gambas3/img/module/webform.png | Bin 0 -> 2071 bytes app/src/gambas3/img/module/webpage.png | Bin 0 -> 1898 bytes app/src/gambas3/img/symbol/constant.png | Bin 0 -> 138 bytes app/src/gambas3/img/symbol/control.png | Bin 0 -> 141 bytes app/src/gambas3/img/symbol/event.png | Bin 0 -> 322 bytes app/src/gambas3/img/symbol/method.png | Bin 0 -> 383 bytes app/src/gambas3/img/symbol/property-ro.png | Bin 0 -> 140 bytes app/src/gambas3/img/symbol/property-rw.png | Bin 0 -> 225 bytes app/src/gambas3/img/symbol/property.png | Bin 0 -> 141 bytes app/src/gambas3/img/symbol/s-method.png | Bin 0 -> 384 bytes app/src/gambas3/img/symbol/s-property-ro.png | Bin 0 -> 138 bytes app/src/gambas3/img/symbol/s-property-rw.png | Bin 0 -> 225 bytes app/src/gambas3/img/symbol/s-property.png | Bin 0 -> 141 bytes app/src/gambas3/img/symbol/s-special.png | Bin 0 -> 375 bytes app/src/gambas3/img/symbol/s-variable.png | Bin 0 -> 141 bytes app/src/gambas3/img/symbol/special.png | Bin 0 -> 384 bytes app/src/gambas3/img/symbol/symbol.png | Bin 0 -> 127 bytes app/src/gambas3/img/symbol/unknown.png | Bin 0 -> 140 bytes app/src/gambas3/img/symbol/variable.png | Bin 0 -> 141 bytes app/src/gambas3/img/waiting.gif | Bin 0 -> 9746 bytes app/src/gambas3/install/Makefile.am | 64 + app/src/gambas3/install/acinclude.m4 | 161 + app/src/gambas3/install/categories | 136 + app/src/gambas3/install/group/archlinux | 51 + app/src/gambas3/install/group/autotools | 1 + app/src/gambas3/install/group/debian | 57 + app/src/gambas3/install/group/fedora | 34 + app/src/gambas3/install/group/mageia | 132 + app/src/gambas3/install/group/mandriva | 99 + app/src/gambas3/install/group/self | 1 + app/src/gambas3/install/group/slackware | 34 + app/src/gambas3/install/group/suse | 225 + app/src/gambas3/install/group/ubuntu | 57 + app/src/gambas3/install/menu/archlinux | 64 + app/src/gambas3/install/menu/autotools | 1 + app/src/gambas3/install/menu/debian | 64 + app/src/gambas3/install/menu/fedora | 109 + app/src/gambas3/install/menu/mageia | 111 + app/src/gambas3/install/menu/mandriva | 111 + app/src/gambas3/install/menu/self | 1 + app/src/gambas3/install/menu/slackware | 109 + app/src/gambas3/install/menu/suse | 109 + app/src/gambas3/install/menu/ubuntu | 64 + app/src/gambas3/install/slack-desc-header | 7 + app/src/gambas3/layout/$compact.layout | 23 + app/src/gambas3/layout/$default.layout | 23 + app/src/gambas3/license | 15 + app/src/gambas3/markdown/markdown.css | 392 + app/src/gambas3/markdown/markdown.js | 96 + app/src/gambas3/po-header.txt | 10 + app/src/gambas3/pot-header.txt | 10 + app/src/gambas3/shortcut.desktop | 9 + app/src/gambas3/snippets | 97 + app/src/gambas3/support.txt | 168 + app/src/gambas3/tags.txt | 19 + app/src/gambas3/template/CClass.class | 9 + app/src/gambas3/template/CContainer.class | 9 + app/src/gambas3/template/CControl.class | 29 + app/src/gambas3/template/FMain.class | 9 + app/src/gambas3/template/FMain.form | 6 + app/src/gambas3/template/FTest.class | 9 + app/src/gambas3/template/FTest.form | 5 + app/src/gambas3/template/MMain.module | 5 + app/src/gambas3/template/MTest.module | 9 + app/src/gambas3/template/_project | 108 + app/src/gambas3/template/ccontainer.png | Bin 0 -> 1606 bytes app/src/gambas3/template/ccontrol.png | Bin 0 -> 1606 bytes app/src/gambas3/template/list | 22 + app/src/gambas3/theme/amber | 23 + app/src/gambas3/theme/amethyst | 23 + app/src/gambas3/theme/blues | 24 + app/src/gambas3/theme/emerald | 23 + app/src/gambas3/theme/gambas | 42 + app/src/gambas3/theme/obsidian | 24 + app/src/gambas3/theme/pastel | 24 + app/src/gambas3/theme/quest | 23 + app/src/gambas3/theme/quick | 24 + app/src/gambas3/theme/ruby | 23 + app/src/gambas3/theme/sapphire | 24 + app/src/gambas3/theme/visual | 23 + app/src/gambas3/theme/zen | 24 + app/src/gambas3/tips/tips.ca.txt | 463 + app/src/gambas3/tips/tips.cs.txt | 547 + app/src/gambas3/tips/tips.de.txt | 417 + app/src/gambas3/tips/tips.en.txt | 592 + app/src/gambas3/tips/tips.es.txt | 302 + app/src/gambas3/tips/tips.fr.txt | 604 + app/src/gambas3/tips/tips.it.txt | 558 + app/src/gambas3/tips/tips.nl.txt | 274 + app/src/gambas3/tips/tips.pl.txt | 280 + app/src/gambas3/tips/tips.ru.txt | 578 + app/src/gambas3/tips/tips.sl.txt | 236 + app/src/gambas3/tips/tips.sv.txt | 401 + app/src/gambas3/tips/tips.tr.txt | 278 + app/src/gambas3/tips/tips.zh.txt | 341 + app/src/gambas3/tips/tips.zh_TW.txt | 442 + app/src/gambas3/usage | 33 + app/src/gambas3/welcome/bells.mp3 | Bin 0 -> 139443 bytes app/src/gambas3/welcome/border.png | Bin 0 -> 437 bytes app/src/gambas3/welcome/corner.png | Bin 0 -> 2836 bytes app/src/gambas3/welcome/fir.png | Bin 0 -> 6955 bytes app/src/gambas3/welcome/spiritus.mp3 | Bin 0 -> 131582 bytes app/src/gb.wiki/.directory | 2 + app/src/gb.wiki/.icon.png | Bin 0 -> 4229 bytes app/src/gb.wiki/.lang/it.po | 193 + app/src/gb.wiki/.lang/nl.po | 188 + app/src/gb.wiki/.lang/pt_BR.po | 190 + app/src/gb.wiki/.lang/ru.po | 210 + app/src/gb.wiki/.lang/zh.po | 188 + app/src/gb.wiki/.project | 15 + app/src/gb.wiki/.src/Actions.module | 189 + app/src/gb.wiki/.src/Controllers/Admin.module | 115 + app/src/gb.wiki/.src/Controllers/Image.module | 42 + .../.src/Controllers/UserManage.module | 109 + app/src/gb.wiki/.src/Controllers/Wiki.module | 64 + app/src/gb.wiki/.src/DBScheme.class | 21 + app/src/gb.wiki/.src/Main.module | 253 + app/src/gb.wiki/.src/Models/Comments.module | 2 + app/src/gb.wiki/.src/Models/Pages.module | 58 + app/src/gb.wiki/.src/Models/Users.module | 163 + app/src/gb.wiki/.src/Models/_Page.class | 171 + app/src/gb.wiki/.src/Models/_User.class | 162 + app/src/gb.wiki/.src/Parser.module | 1223 + app/src/gb.wiki/.src/Path.module | 120 + .../gb.wiki/.src/Views/Admin/WAdminMain.class | 2 + .../.src/Views/Admin/WAdminMain.webpage | 78 + app/src/gb.wiki/.src/Views/WAccount.class | 2 + app/src/gb.wiki/.src/Views/WAccount.webpage | 52 + app/src/gb.wiki/.src/Views/WEdit.class | 2 + app/src/gb.wiki/.src/Views/WEdit.webpage | 27 + app/src/gb.wiki/.src/Views/WHeader.class | 190 + app/src/gb.wiki/.src/Views/WHeader.webpage | 242 + app/src/gb.wiki/.src/Views/WLogin.class | 2 + app/src/gb.wiki/.src/Views/WLogin.webpage | 23 + app/src/gb.wiki/.src/Views/WWiki.class | 1 + app/src/gb.wiki/.src/Views/WWiki.webpage | 17 + app/src/gb.wiki/help.png | Bin 0 -> 1563 bytes app/src/gbs3/.directory | 2 + app/src/gbs3/.hidden/CHANGELOG | 40 + app/src/gbs3/.icon.png | Bin 0 -> 17086 bytes app/src/gbs3/.lang/OldTranslation/en_US.po | 159 + app/src/gbs3/.lang/OldTranslation/fr.po | 181 + app/src/gbs3/.lang/de.po | 91 + app/src/gbs3/.lang/en_US.po | 91 + app/src/gbs3/.lang/fr.po | 91 + app/src/gbs3/.lang/it.po | 91 + app/src/gbs3/.project | 26 + app/src/gbs3/.src/CComponent.class | 412 + app/src/gbs3/.src/ClassDef.class | 40 + app/src/gbs3/.src/Compile.module | 46 + app/src/gbs3/.src/CompileError.module | 10 + app/src/gbs3/.src/Context.class | 90 + app/src/gbs3/.src/ConvertProject.module | 130 + app/src/gbs3/.src/GenerateFiles.module | 67 + .../gbs3/.src/GenerateFilesFromArgs.module | 92 + .../gbs3/.src/GenerateFromLazyScript.module | 139 + app/src/gbs3/.src/Libraries.module | 167 + app/src/gbs3/.src/MServerPage.module | 127 + app/src/gbs3/.src/MakeListing.module | 47 + app/src/gbs3/.src/MakeVirtualProject.module | 116 + app/src/gbs3/.src/ParseArgs.module | 234 + app/src/gbs3/.src/PluginInfo.module | 41 + app/src/gbs3/.src/ProcessAssignment.module | 130 + app/src/gbs3/.src/Reader.class | 665 + app/src/gbs3/.src/ScriptApplyAlias.module | 145 + .../gbs3/.src/ScriptApplyLineCallBacks.module | 19 + .../.src/ScriptApplyPostProgCallBacks.module | 20 + .../.src/ScriptApplyProgramCallBacks.module | 20 + app/src/gbs3/.src/ScriptKeywordFilter.module | 29 + app/src/gbs3/.src/ScriptMain.module | 376 + app/src/gbs3/.src/ScriptPreProcess.module | 238 + app/src/gbs3/.src/ScriptSetAliasTable.module | 40 + .../gbs3/.src/ScriptSetKeywordFilter.module | 42 + .../.src/ScriptSetPostProcessCallBack.module | 40 + .../.src/ScriptSetPreProcessCallBack.module | 59 + app/src/gbs3/.src/ScripterExecute.class | 40 + app/src/gbs3/.src/ScripterPlugin.class | 68 + app/src/gbs3/.src/TestSuite/TSR.module | 221 + .../gbs3/.src/TestSuite/TaMServerPages.test | 44 + .../.src/TestSuite/TbCommandLinePrograms.test | 62 + .../gbs3/.src/TestSuite/TcMMainFunctions.test | 130 + .../gbs3/.src/TestSuite/TdGeneralCompile.test | 11 + app/src/gbs3/.src/TestSuite/TeAliases.test | 42 + .../gbs3/.src/TestSuite/TfKeyWordFilter.test | 41 + app/src/gbs3/.src/TestSuite/TgPluginMode.test | 41 + .../TestSuite/ThPrePostProcessCallBacks.test | 94 + app/src/gbs3/.src/UseLibComp.module | 44 + app/src/gbs3/.src/Verbose.module | 15 + app/src/gbs3/.src/Warning.module | 13 + app/src/gbs3/.test | 5 + app/src/gbs3/PrePostProcessPlugin | 20 + app/src/gbs3/RunComponent | 34 + app/src/gbs3/TestApp | 19 + app/src/gbs3/TestAppCompiled | 38 + app/src/gbs3/TestAppInclude | 8 + app/src/gbs3/TestAppInclude2 | 9 + app/src/gbs3/TestAppWithMain | 20 + app/src/gbs3/TestAppWithMainCompiled | 38 + app/src/gbs3/TestExternStructNoMain.gbs | 63 + app/src/gbs3/TestExternStructWithMain.gbs | 63 + app/src/gbs3/TestFile.info | 2 + app/src/gbs3/TestFileFail.info | 2 + app/src/gbs3/TestLazyApp | 43 + app/src/gbs3/TestPlugin | 43 + app/src/gbs3/TestPlugin2 | 28 + app/src/gbs3/TestPlugin3.gbs | 12 + app/src/gbs3/TestPrePostProcess.gbs | 12 + app/src/gbs3/TestWebPageSource | 13 + app/src/gbs3/WebPageCompiled | 13 + app/src/gbs3/WebPageExpected | 13 + app/src/gbs3/WebPageTest | 11 + app/src/gbs3/icon.png | Bin 0 -> 1528 bytes app/src/gbs3/license | 6 + app/src/gbs3/usage-gbs | 30 + app/src/gbs3/usage-gbw | 21 + app/template/console/.directory | 2 + app/template/console/.icon.png | Bin 0 -> 7173 bytes app/template/console/.lang/es.po | 19 + app/template/console/.lang/es_ES.po | 19 + app/template/console/.lang/fr.po | 19 + app/template/console/.lang/it.po | 19 + app/template/console/.lang/ru.po | 34 + app/template/console/.lang/zh.po | 19 + app/template/console/.project | 11 + app/template/console/.src/Main.module | 7 + app/template/console/icon.png | Bin 0 -> 264 bytes app/template/database/.directory | 2 + app/template/database/.icon.png | Bin 0 -> 6607 bytes app/template/database/.lang/fr.po | 19 + app/template/database/.lang/it.po | 19 + app/template/database/.lang/ru.po | 34 + app/template/database/.lang/zh.po | 19 + app/template/database/.project | 16 + app/template/database/.src/FMain.class | 2 + app/template/database/.src/FMain.form | 5 + app/template/database/icon.png | Bin 0 -> 147 bytes app/template/graphical/.directory | 2 + app/template/graphical/.icon.png | Bin 0 -> 9715 bytes app/template/graphical/.lang/es.po | 19 + app/template/graphical/.lang/es_ES.po | 19 + app/template/graphical/.lang/fr.po | 19 + app/template/graphical/.lang/it.po | 19 + app/template/graphical/.lang/ru.po | 33 + app/template/graphical/.lang/zh.po | 19 + app/template/graphical/.project | 14 + app/template/graphical/.src/FMain.class | 2 + app/template/graphical/.src/FMain.form | 5 + app/template/graphical/icon.png | Bin 0 -> 429 bytes app/template/gtk2/.directory | 2 + app/template/gtk2/.icon.png | Bin 0 -> 13010 bytes app/template/gtk2/.lang/es.po | 19 + app/template/gtk2/.lang/es_ES.po | 19 + app/template/gtk2/.lang/fr.po | 19 + app/template/gtk2/.lang/it.po | 19 + app/template/gtk2/.lang/ru.po | 34 + app/template/gtk2/.lang/zh.po | 19 + app/template/gtk2/.project | 14 + app/template/gtk2/.src/FMain.class | 2 + app/template/gtk2/.src/FMain.form | 5 + app/template/gtk2/icon.png | Bin 0 -> 644 bytes app/template/gtk3/.directory | 2 + app/template/gtk3/.icon.png | Bin 0 -> 13132 bytes app/template/gtk3/.lang/es.po | 19 + app/template/gtk3/.lang/fr.po | 19 + app/template/gtk3/.lang/it.po | 19 + app/template/gtk3/.lang/ru.po | 34 + app/template/gtk3/.lang/zh.po | 19 + app/template/gtk3/.project | 14 + app/template/gtk3/.src/FMain.class | 2 + app/template/gtk3/.src/FMain.form | 5 + app/template/gtk3/icon.png | Bin 0 -> 647 bytes app/template/qt/.directory | 2 + app/template/qt/.icon.png | Bin 0 -> 13190 bytes app/template/qt/.lang/es.po | 19 + app/template/qt/.lang/es_ES.po | 19 + app/template/qt/.lang/fr.po | 19 + app/template/qt/.lang/it.po | 19 + app/template/qt/.lang/ru.po | 34 + app/template/qt/.lang/zh.po | 19 + app/template/qt/.project | 14 + app/template/qt/.src/FMain.class | 2 + app/template/qt/.src/FMain.form | 5 + app/template/qt/icon.png | Bin 0 -> 769 bytes app/template/sdl/.directory | 2 + app/template/sdl/.icon.png | Bin 0 -> 10332 bytes app/template/sdl/.lang/es.po | 19 + app/template/sdl/.lang/es_ES.po | 19 + app/template/sdl/.lang/fr.po | 19 + app/template/sdl/.lang/it.po | 19 + app/template/sdl/.lang/ru.po | 34 + app/template/sdl/.lang/zh.po | 19 + app/template/sdl/.project | 14 + app/template/sdl/.src/MMain.module | 40 + app/template/sdl/icon.png | Bin 0 -> 538 bytes app/template/web/.directory | 2 + app/template/web/.icon.png | Bin 0 -> 14817 bytes app/template/web/.lang/es.po | 19 + app/template/web/.lang/es_ES.po | 19 + app/template/web/.lang/fr.po | 19 + app/template/web/.lang/it.po | 19 + app/template/web/.lang/ru.po | 34 + app/template/web/.lang/zh.po | 19 + app/template/web/.project | 14 + app/template/web/.src/Main.class | 2 + app/template/web/.src/Main.webpage | 27 + app/template/web/icon.png | Bin 0 -> 775 bytes app/template/webform/.directory | 2 + app/template/webform/.icon.png | Bin 0 -> 12584 bytes app/template/webform/.lang/fr.po | 27 + app/template/webform/.lang/it.po | 27 + app/template/webform/.lang/ru.po | 42 + app/template/webform/.lang/zh.po | 27 + app/template/webform/.project | 16 + app/template/webform/.src/Webform1.class | 22 + app/template/webform/.src/Webform1.webform | 27 + app/template/webform/icon.png | Bin 0 -> 668 bytes app/template/~subversion/.directory | 2 + app/template/~subversion/.icon.png | Bin 0 -> 9478 bytes app/template/~subversion/.lang/es.po | 19 + app/template/~subversion/.lang/es_ES.po | 19 + app/template/~subversion/.lang/fr.po | 19 + app/template/~subversion/.lang/it.po | 19 + app/template/~subversion/.lang/ru.po | 34 + app/template/~subversion/.lang/zh.po | 19 + app/template/~subversion/.project | 11 + app/template/~subversion/.src/Main.module | 7 + app/template/~subversion/icon.png | Bin 0 -> 465 bytes benchmark/benchmark.gbs | 168 + benchmark/mandelbrot.gbs | 80 + benchmark/mandelbrot.jvs | 166 + benchmark/mandelbrot.pl | 75 + benchmark/mandelbrot.py | 54 + benchmark/nbody.gbs | 212 + benchmark/nbody.jvs | 174 + benchmark/nbody.pl | 112 + benchmark/nbody.py | 120 + benchmark/polynom.gbs | 34 + benchmark/polynom.jvs | 38 + benchmark/polynom.pl | 35 + benchmark/polynom.py | 23 + benchmark/primes.gbs | 61 + benchmark/primes.jvs | 69 + benchmark/primes.pl | 44 + benchmark/primes.py | 30 + benchmark/sort.gbs | 69 + benchmark/sort.jvs | 84 + benchmark/sort.pl | 129 + benchmark/sort.py | 115 + benchmark/string.gbs | 23 + benchmark/string.jvs | 29 + benchmark/string.pl | 18 + benchmark/string.py | 23 + benchmark/string2.gbs | 17 + benchmark/string2.jvs | 31 + benchmark/string2.pl | 16 + benchmark/string2.py | 11 + benchmark/test.jvs | 8 + build-dist | 34 + comp/AUTHORS | 0 comp/COPYING | 1 + comp/ChangeLog | 0 comp/INSTALL | 231 + comp/Makefile.am | 54 + comp/NEWS | 0 comp/README | 0 comp/TODO | 0 comp/acinclude.m4 | 1 + comp/configure.ac | 17 + comp/reconf | 1 + comp/src/gb.args/.component | 4 + comp/src/gb.args/.directory | 2 + comp/src/gb.args/.icon.png | Bin 0 -> 10569 bytes comp/src/gb.args/.lang/cs.po | 40 + comp/src/gb.args/.lang/es.po | 40 + comp/src/gb.args/.lang/es_ES.po | 40 + comp/src/gb.args/.lang/fr.po | 40 + comp/src/gb.args/.lang/it.po | 40 + comp/src/gb.args/.lang/nl.po | 39 + comp/src/gb.args/.lang/pt_BR.po | 40 + comp/src/gb.args/.lang/ru.po | 39 + comp/src/gb.args/.lang/zh.po | 40 + comp/src/gb.args/.project | 12 + comp/src/gb.args/.src/Args.module | 255 + comp/src/gb.args/.src/MMain.module | 24 + comp/src/gb.chart/.component | 7 + comp/src/gb.chart/.directory | 2 + comp/src/gb.chart/.icon.png | Bin 0 -> 10569 bytes comp/src/gb.chart/.project | 14 + comp/src/gb.chart/.src/CPoint.class | 13 + comp/src/gb.chart/.src/CRect.class | 16 + comp/src/gb.chart/.src/Chart.class | 376 + comp/src/gb.chart/.src/ChartStyle.class | 9 + comp/src/gb.chart/.src/ChartType.class | 33 + comp/src/gb.chart/.src/FTest.class | 510 + comp/src/gb.chart/.src/FTest.form | 234 + comp/src/gb.chart/.src/FTest2.class | 45 + comp/src/gb.chart/.src/FTest2.form | 19 + comp/src/gb.chart/.src/MTools.module | 376 + comp/src/gb.chart/.src/Styles/_CSerie.class | 151 + .../gb.chart/.src/Styles/_CStyleAreas.class | 135 + .../src/gb.chart/.src/Styles/_CStyleBar.class | 109 + .../gb.chart/.src/Styles/_CStyleColumns.class | 113 + .../gb.chart/.src/Styles/_CStyleLine.class | 122 + .../src/gb.chart/.src/Styles/_CStylePie.class | 106 + .../gb.chart/.src/Styles/_CStylePlot.class | 94 + comp/src/gb.chart/.src/_CAxes.class | 89 + comp/src/gb.chart/.src/_CHeaders.class | 103 + comp/src/gb.chart/.src/_CLabel.class | 41 + comp/src/gb.chart/.src/_CLabels.class | 3 + comp/src/gb.chart/.src/_CLegend.class | 206 + comp/src/gb.chart/.src/_CTitle.class | 53 + comp/src/gb.chart/.src/_CXAxe.class | 25 + comp/src/gb.chart/.src/_CYAxe.class | 22 + comp/src/gb.chart/.src/_Colors.class | 65 + comp/src/gb.chart/img/areas.png | Bin 0 -> 308 bytes comp/src/gb.chart/img/areasnormal.png | Bin 0 -> 278 bytes comp/src/gb.chart/img/areaspercent.png | Bin 0 -> 226 bytes comp/src/gb.chart/img/areasstacked.png | Bin 0 -> 308 bytes comp/src/gb.chart/img/bars.png | Bin 0 -> 235 bytes comp/src/gb.chart/img/barsnormal.png | Bin 0 -> 204 bytes comp/src/gb.chart/img/barspercent.png | Bin 0 -> 172 bytes comp/src/gb.chart/img/barsstacked.png | Bin 0 -> 177 bytes comp/src/gb.chart/img/columns.png | Bin 0 -> 201 bytes .../gb.chart/img/columnslinecombination.png | Bin 0 -> 249 bytes comp/src/gb.chart/img/columnsnormal.png | Bin 0 -> 195 bytes comp/src/gb.chart/img/columnspercent.png | Bin 0 -> 194 bytes comp/src/gb.chart/img/columnsstacked.png | Bin 0 -> 191 bytes comp/src/gb.chart/img/lines.png | Bin 0 -> 307 bytes comp/src/gb.chart/img/linesnormal.png | Bin 0 -> 307 bytes comp/src/gb.chart/img/linespercent.png | Bin 0 -> 217 bytes comp/src/gb.chart/img/linesstacked.png | Bin 0 -> 309 bytes comp/src/gb.chart/img/linessymbols.png | Bin 0 -> 322 bytes comp/src/gb.chart/img/net.png | Bin 0 -> 334 bytes comp/src/gb.chart/img/pie.png | Bin 0 -> 290 bytes comp/src/gb.chart/img/pienormal.png | Bin 0 -> 290 bytes comp/src/gb.chart/img/pieoffset1.png | Bin 0 -> 315 bytes comp/src/gb.chart/img/pieoffset2.png | Bin 0 -> 333 bytes comp/src/gb.chart/img/pierings.png | Bin 0 -> 367 bytes comp/src/gb.chart/img/plots.png | Bin 0 -> 229 bytes comp/src/gb.chart/img/plotsnormal.png | Bin 0 -> 229 bytes comp/src/gb.chart/img/stockchart.png | Bin 0 -> 246 bytes comp/src/gb.db.form/.component | 6 + .../.connection/Connection1.connection | 8 + .../.connection/Connection2.connection | 11 + .../.connection/Connection3.connection | 12 + .../.connection/Connection4.connection | 12 + comp/src/gb.db.form/.directory | 2 + .../.hidden/control/databrowser.png | Bin 0 -> 922 bytes .../.hidden/control/datacheckbox.png | Bin 0 -> 984 bytes .../gb.db.form/.hidden/control/datacombo.png | Bin 0 -> 989 bytes .../.hidden/control/datacomboview.png | Bin 0 -> 918 bytes .../.hidden/control/datacontrol.png | Bin 0 -> 1519 bytes .../gb.db.form/.hidden/control/datasource.png | Bin 0 -> 1177 bytes .../gb.db.form/.hidden/control/dataview.png | Bin 0 -> 773 bytes comp/src/gb.db.form/.hidden/icon.png | Bin 0 -> 1594 bytes comp/src/gb.db.form/.icon.png | Bin 0 -> 9749 bytes comp/src/gb.db.form/.lang/ca.po | 123 + comp/src/gb.db.form/.lang/cs.po | 126 + comp/src/gb.db.form/.lang/de.po | 124 + comp/src/gb.db.form/.lang/es.po | 123 + comp/src/gb.db.form/.lang/es_ES.po | 123 + comp/src/gb.db.form/.lang/fr.po | 211 + comp/src/gb.db.form/.lang/it.po | 123 + comp/src/gb.db.form/.lang/nl.po | 123 + comp/src/gb.db.form/.lang/pt_BR.po | 123 + comp/src/gb.db.form/.lang/ru.po | 123 + comp/src/gb.db.form/.lang/sv.po | 123 + comp/src/gb.db.form/.lang/zh.po | 123 + comp/src/gb.db.form/.project | 21 + comp/src/gb.db.form/.src/Common.module | 110 + comp/src/gb.db.form/.src/DataBrowser.class | 216 + comp/src/gb.db.form/.src/DataCheckBox.class | 163 + comp/src/gb.db.form/.src/DataCombo.class | 344 + comp/src/gb.db.form/.src/DataComboView.class | 482 + comp/src/gb.db.form/.src/DataConnection.class | 147 + comp/src/gb.db.form/.src/DataControl.class | 385 + comp/src/gb.db.form/.src/DataField.class | 82 + comp/src/gb.db.form/.src/DataSource.class | 803 + comp/src/gb.db.form/.src/DataTable.class | 484 + comp/src/gb.db.form/.src/DataTree.class | 145 + comp/src/gb.db.form/.src/DataView.class | 1312 + comp/src/gb.db.form/.src/FBlobEditor.class | 229 + comp/src/gb.db.form/.src/FBlobEditor.form | 50 + comp/src/gb.db.form/.src/FBrowser.class | 272 + comp/src/gb.db.form/.src/FBrowser.form | 65 + comp/src/gb.db.form/.src/Test/FMain.class | 9 + comp/src/gb.db.form/.src/Test/FMain.form | 16 + comp/src/gb.db.form/.src/Test/FMain2.class | 76 + comp/src/gb.db.form/.src/Test/FMain2.form | 139 + comp/src/gb.db.form/.src/Test/FMain3.class | 8 + comp/src/gb.db.form/.src/Test/FMain3.form | 33 + comp/src/gb.db.form/.src/Test/FTest.class | 44 + comp/src/gb.db.form/.src/Test/FTest.form | 66 + comp/src/gb.db.form/.src/Test/Main.module | 24 + comp/src/gb.dbus.trayicon/.component | 7 + comp/src/gb.dbus.trayicon/.directory | 2 + .../.hidden/com.canonical.dbusmenu.xml | 437 + comp/src/gb.dbus.trayicon/.hidden/doc.txt | 167 + comp/src/gb.dbus.trayicon/.icon.png | Bin 0 -> 10569 bytes comp/src/gb.dbus.trayicon/.project | 13 + .../.src/DBusStatusIcon.class | 348 + .../.src/DBusStatusIconMenu.class | 275 + comp/src/gb.dbus.trayicon/.src/FMain.class | 60 + comp/src/gb.dbus.trayicon/.src/FMain.form | 18 + comp/src/gb.dbus.trayicon/.src/FMain1.class | 53 + comp/src/gb.dbus.trayicon/.src/FMain1.form | 36 + comp/src/gb.dbus.trayicon/.src/FTest.class | 95 + comp/src/gb.dbus.trayicon/.src/FTest.form | 76 + comp/src/gb.dbus.trayicon/.src/Main.module | 56 + comp/src/gb.dbus.trayicon/.src/TrayIcon.class | 347 + .../src/gb.dbus.trayicon/.src/TrayIcons.class | 44 + .../gb.dbus.trayicon/.src/_DBusMenuItem.class | 6 + .../.src/_DBusMenuLayout.class | 6 + .../.src/_DBusMenuProperties.class | 6 + .../.src/_DBusStatusIconPixmap.class | 29 + .../.src/_DBusStatusIconTooltip.class | 16 + .../src/gb.dbus.trayicon/.src/_DBusUInt.class | 16 + comp/src/gb.dbus.trayicon/default.png | Bin 0 -> 9744 bytes comp/src/gb.desktop/.component | 6 + comp/src/gb.desktop/.directory | 2 + .../.hidden/control/desktopwatcher.png | Bin 0 -> 2758 bytes comp/src/gb.desktop/.hidden/icon.png | Bin 0 -> 182 bytes .../.hidden/xdg-utils-1.0.2/LICENSE | 18 + .../.hidden/xdg-utils-1.0.2/scripts/README | 17 + .../xdg-utils-1.0.2/scripts/xdg-desktop-icon | 549 + .../xdg-utils-1.0.2/scripts/xdg-desktop-menu | 1264 + .../.hidden/xdg-utils-1.0.2/scripts/xdg-email | 640 + .../xdg-utils-1.0.2/scripts/xdg-icon-resource | 837 + .../.hidden/xdg-utils-1.0.2/scripts/xdg-mime | 1090 + .../.hidden/xdg-utils-1.0.2/scripts/xdg-open | 436 + .../xdg-utils-1.0.2/scripts/xdg-screensaver | 786 + .../xdg-utils-1.0.3.pre.patch/xdg-email | 730 + .../.hidden/xdg-utils-1.0.3.pre/xdg-copy | 303 + .../xdg-utils-1.0.3.pre/xdg-desktop-icon | 559 + .../xdg-utils-1.0.3.pre/xdg-desktop-menu | 1224 + .../.hidden/xdg-utils-1.0.3.pre/xdg-email | 723 + .../xdg-utils-1.0.3.pre/xdg-file-dialog | 603 + .../xdg-utils-1.0.3.pre/xdg-icon-resource | 841 + .../.hidden/xdg-utils-1.0.3.pre/xdg-mime | 1212 + .../.hidden/xdg-utils-1.0.3.pre/xdg-open | 523 + .../xdg-utils-1.0.3.pre/xdg-screensaver | 888 + .../.hidden/xdg-utils-1.0.3.pre/xdg-settings | 872 + .../.hidden/xdg-utils-1.0.3.pre/xdg-su | 438 + .../.hidden/xdg-utils-1.0.3.pre/xdg-terminal | 462 + comp/src/gb.desktop/.icon.png | Bin 0 -> 5379 bytes comp/src/gb.desktop/.project | 17 + comp/src/gb.desktop/.src/Desktop.class | 604 + comp/src/gb.desktop/.src/DesktopFile.class | 749 + comp/src/gb.desktop/.src/DesktopMime.class | 509 + comp/src/gb.desktop/.src/Main.module | 279 + comp/src/gb.desktop/.src/Tests/Form1.class | 82 + comp/src/gb.desktop/.src/Tests/Form1.form | 25 + comp/src/gb.desktop/.src/Tests/Form11.class | 2 + comp/src/gb.desktop/.src/Tests/Form11.form | 11 + comp/src/gb.desktop/.src/Tests/Form2.class | 38 + comp/src/gb.desktop/.src/Tests/Form2.form | 10 + comp/src/gb.desktop/.src/Tests/Module1.module | 7 + comp/src/gb.desktop/.src/_DesktopIcons.class | 16 + comp/src/gb.desktop/.src/_DesktopMenus.class | 15 + .../gb.desktop/.src/_Desktop_Passwords.class | 185 + .../.src/_Desktop_ScreenSaver.class | 45 + comp/src/gb.desktop/file.png | 1 + .../src/gb.desktop/xdg-utils/xdg-desktop-icon | 757 + .../src/gb.desktop/xdg-utils/xdg-desktop-menu | 1447 + comp/src/gb.desktop/xdg-utils/xdg-email | 1036 + .../gb.desktop/xdg-utils/xdg-icon-resource | 1053 + comp/src/gb.desktop/xdg-utils/xdg-mime | 1586 + comp/src/gb.desktop/xdg-utils/xdg-open | 1066 + comp/src/gb.desktop/xdg-utils/xdg-screensaver | 1434 + comp/src/gb.desktop/xdg-utils/xdg-settings | 1401 + comp/src/gb.eval.highlight/.component | 4 + comp/src/gb.eval.highlight/.directory | 2 + .../.hidden/OldHighlighter/Helper.module | 71 + .../.hidden/OldHighlighter/HighlightC.module | 274 + .../OldHighlighter/HighlightCPlusPlus.module | 53 + .../OldHighlighter/HighlightCSS.module | 243 + .../OldHighlighter/HighlightDiff.module | 34 + .../OldHighlighter/HighlightHTML.module | 538 + .../OldHighlighter/HighlightJavascript.module | 287 + .../OldHighlighter/HighlightSQL.module | 159 + comp/src/gb.eval.highlight/.icon.png | Bin 0 -> 11424 bytes comp/src/gb.eval.highlight/.lang/ar.po | 175 + comp/src/gb.eval.highlight/.lang/ca.po | 181 + comp/src/gb.eval.highlight/.lang/cs.po | 179 + comp/src/gb.eval.highlight/.lang/cy.po | 179 + comp/src/gb.eval.highlight/.lang/de.po | 179 + comp/src/gb.eval.highlight/.lang/el.po | 179 + comp/src/gb.eval.highlight/.lang/es.po | 179 + comp/src/gb.eval.highlight/.lang/es_ES.po | 179 + comp/src/gb.eval.highlight/.lang/fa.po | 180 + comp/src/gb.eval.highlight/.lang/fr.po | 175 + comp/src/gb.eval.highlight/.lang/gl_ES.po | 179 + comp/src/gb.eval.highlight/.lang/hr.po | 175 + comp/src/gb.eval.highlight/.lang/hu.po | 179 + comp/src/gb.eval.highlight/.lang/id.po | 179 + comp/src/gb.eval.highlight/.lang/it.po | 175 + comp/src/gb.eval.highlight/.lang/ja.po | 179 + comp/src/gb.eval.highlight/.lang/ko.po | 179 + comp/src/gb.eval.highlight/.lang/lt.po | 179 + comp/src/gb.eval.highlight/.lang/nl.po | 179 + comp/src/gb.eval.highlight/.lang/no.po | 179 + comp/src/gb.eval.highlight/.lang/pl.po | 179 + comp/src/gb.eval.highlight/.lang/pt.po | 179 + comp/src/gb.eval.highlight/.lang/pt_BR.po | 179 + comp/src/gb.eval.highlight/.lang/ro.po | 179 + comp/src/gb.eval.highlight/.lang/ru.po | 179 + comp/src/gb.eval.highlight/.lang/sl.po | 179 + comp/src/gb.eval.highlight/.lang/sv.po | 179 + comp/src/gb.eval.highlight/.lang/tr.po | 179 + comp/src/gb.eval.highlight/.lang/zh.po | 175 + comp/src/gb.eval.highlight/.lang/zh_TW.po | 175 + comp/src/gb.eval.highlight/.project | 11 + comp/src/gb.eval.highlight/.src/Helper.module | 71 + .../gb.eval.highlight/.src/Highlight.class | 110 + comp/src/gb.eval.highlight/.src/Init.module | 171 + comp/src/gb.eval.highlight/.src/Main.module | 57 + comp/src/gb.eval.highlight/.src/State.class | 5 + .../.src/TestSuite/AnsiTextColor.test | 13 + .../.src/TestSuite/HtmlTextFormatColor.test | 14 + .../.src/TestSuite/RichTextFormatColor.test | 13 + .../.src/TextHighlighter.class | 965 + .../.src/TextHighlighterStyle.class | 174 + .../.src/TextHighlighterTheme.class | 228 + .../.src/TextHighlighter_C.class | 284 + .../.src/TextHighlighter_CPlusPlus.class | 59 + .../.src/TextHighlighter_CSS.class | 304 + .../.src/TextHighlighter_Diff.class | 47 + .../.src/TextHighlighter_Gambas.class | 88 + .../.src/TextHighlighter_Html.class | 640 + .../.src/TextHighlighter_Javascript.class | 291 + .../.src/TextHighlighter_SQL.class | 171 + .../.src/TextHighlighter_Sh.class | 367 + .../.src/TextHighlighter_WebPage.class | 13 + comp/src/gb.eval.highlight/.test | 5 + .../UnitTest/ANSITestResults | 18 + .../UnitTest/HTMLTestResults | 18 + .../gb.eval.highlight/UnitTest/RTFTestResults | 18 + .../gb.eval.highlight/UnitTest/TestProgram | 17 + comp/src/gb.eval.highlight/css/properties | 238 + comp/src/gb.eval.highlight/css/values | 290 + comp/src/gb.eval.highlight/gambas | 1 + comp/src/gb.eval.highlight/sql/datatypes | 67 + comp/src/gb.eval.highlight/sql/functions | 206 + comp/src/gb.eval.highlight/sql/keywords | 543 + comp/src/gb.eval.highlight/sql/operators | 58 + comp/src/gb.form.dialog/.component | 6 + comp/src/gb.form.dialog/.directory | 2 + comp/src/gb.form.dialog/.hidden/icon.png | Bin 0 -> 231 bytes comp/src/gb.form.dialog/.icon.png | Bin 0 -> 5643 bytes comp/src/gb.form.dialog/.lang/ca.po | 44 + comp/src/gb.form.dialog/.lang/cs.po | 42 + comp/src/gb.form.dialog/.lang/de.po | 42 + comp/src/gb.form.dialog/.lang/es.po | 46 + comp/src/gb.form.dialog/.lang/es_ES.po | 46 + comp/src/gb.form.dialog/.lang/fr.po | 63 + comp/src/gb.form.dialog/.lang/it.po | 55 + comp/src/gb.form.dialog/.lang/ja.po | 33 + comp/src/gb.form.dialog/.lang/nl.po | 56 + comp/src/gb.form.dialog/.lang/pt_BR.po | 55 + comp/src/gb.form.dialog/.lang/ru.po | 76 + comp/src/gb.form.dialog/.lang/sv.po | 32 + comp/src/gb.form.dialog/.lang/zh.po | 55 + comp/src/gb.form.dialog/.project | 20 + comp/src/gb.form.dialog/.src/Dialog.class | 156 + .../gb.form.dialog/.src/FAskPassword.class | 110 + .../src/gb.form.dialog/.src/FAskPassword.form | 76 + comp/src/gb.form.dialog/.src/FDirDialog.class | 61 + comp/src/gb.form.dialog/.src/FDirDialog.form | 30 + .../src/gb.form.dialog/.src/FFileDialog.class | 164 + comp/src/gb.form.dialog/.src/FFileDialog.form | 18 + .../src/gb.form.dialog/.src/FFontDialog.class | 62 + comp/src/gb.form.dialog/.src/FFontDialog.form | 33 + comp/src/gb.form.dialog/.src/FInputDate.class | 43 + comp/src/gb.form.dialog/.src/FInputDate.form | 37 + comp/src/gb.form.dialog/.src/Main.module | 11 + comp/src/gb.form.editor/.component | 5 + comp/src/gb.form.editor/.directory | 2 + comp/src/gb.form.editor/.hidden/CHANGELOG | 3 + .../.hidden/control/texteditor.png | Bin 0 -> 238 bytes comp/src/gb.form.editor/.icon.png | Bin 0 -> 6026 bytes comp/src/gb.form.editor/.lang/fr.po | 95 + comp/src/gb.form.editor/.project | 31 + comp/src/gb.form.editor/.src/CCommand.class | 261 + .../gb.form.editor/.src/CCommandBefore.class | 7 + comp/src/gb.form.editor/.src/CDocument.class | 1681 + comp/src/gb.form.editor/.src/CLineInfo.class | 101 + comp/src/gb.form.editor/.src/FFind.class | 108 + comp/src/gb.form.editor/.src/FFind.form | 41 + comp/src/gb.form.editor/.src/FGoto.class | 52 + comp/src/gb.form.editor/.src/FGoto.form | 42 + comp/src/gb.form.editor/.src/Helper.module | 71 + comp/src/gb.form.editor/.src/Main.module | 16 + comp/src/gb.form.editor/.src/TextEditor.class | 7020 +++ .../gb.form.editor/.src/TextEditorMode.class | 301 + .../.src/TextEditorMode_CSS.class | 13 + .../.src/TextEditorMode_Gambas.class | 69 + .../.src/TextEditorMode_HTML.class | 89 + .../.src/TextEditorMode_Javascript.class | 15 + .../.src/TextEditorMode_SQL.class | 5 + .../.src/TextEditorMode_Sh.class | 14 + .../.src/TextEditorMode_WebPage.class | 3 + .../gb.form.editor/.src/TextEditorStyle.class | 42 + .../.src/_TextEditor_Line.class | 259 + .../.src/_TextEditor_Rows.class | 438 + .../.src/_TextEditor_State.class | 37 + comp/src/gb.form.editor/.src/test/FTest.class | 10 + comp/src/gb.form.editor/.src/test/FTest.form | 13 + .../.src/test/FTestEditor.class | 287 + .../gb.form.editor/.src/test/FTestEditor.form | 78 + comp/src/gb.form.editor/Text1 | 19 + comp/src/gb.form.editor/test.html | 89 + comp/src/gb.form.mdi/.component | 6 + comp/src/gb.form.mdi/.directory | 2 + .../gb.form.mdi/.hidden/control/toolbar.png | Bin 0 -> 189 bytes .../gb.form.mdi/.hidden/control/workspace.png | Bin 0 -> 182 bytes comp/src/gb.form.mdi/.icon.png | Bin 0 -> 5310 bytes comp/src/gb.form.mdi/.lang/ca.po | 199 + comp/src/gb.form.mdi/.lang/cs.po | 201 + comp/src/gb.form.mdi/.lang/de.po | 200 + comp/src/gb.form.mdi/.lang/es.po | 199 + comp/src/gb.form.mdi/.lang/es_ES.po | 199 + comp/src/gb.form.mdi/.lang/fr.po | 255 + comp/src/gb.form.mdi/.lang/it.po | 199 + comp/src/gb.form.mdi/.lang/nl.po | 199 + comp/src/gb.form.mdi/.lang/pt_BR.po | 199 + comp/src/gb.form.mdi/.lang/ru.po | 199 + comp/src/gb.form.mdi/.lang/sv.po | 199 + comp/src/gb.form.mdi/.lang/zh.po | 199 + comp/src/gb.form.mdi/.project | 21 + comp/src/gb.form.mdi/.src/Action/Action.class | 112 + .../src/gb.form.mdi/.src/Action/CAction.class | 128 + .../gb.form.mdi/.src/Action/MAction.module | 170 + comp/src/gb.form.mdi/.src/MMain.module | 7 + .../gb.form.mdi/.src/Shortcut/FShortcut.class | 336 + .../gb.form.mdi/.src/Shortcut/FShortcut.form | 61 + .../.src/Shortcut/FShortcutEditor.class | 100 + .../.src/Shortcut/FShortcutEditor.form | 22 + comp/src/gb.form.mdi/.src/Tests/FMain.class | 82 + comp/src/gb.form.mdi/.src/Tests/FMain.form | 120 + comp/src/gb.form.mdi/.src/Tests/FMain1.class | 48 + comp/src/gb.form.mdi/.src/Tests/FMain1.form | 105 + comp/src/gb.form.mdi/.src/Tests/FMain2.class | 1 + comp/src/gb.form.mdi/.src/Tests/FMain2.form | 121 + .../.src/Tests/FTestBackground.class | 8 + .../.src/Tests/FTestBackground.form | 10 + .../.src/Tests/FTestSidePanel.class | 12 + .../.src/Tests/FTestSidePanel.form | 19 + comp/src/gb.form.mdi/.src/Tests/Form1.class | 18 + comp/src/gb.form.mdi/.src/Tests/Form1.form | 17 + comp/src/gb.form.mdi/.src/Tests/Form2.class | 17 + comp/src/gb.form.mdi/.src/Tests/Form2.form | 22 + .../gb.form.mdi/.src/ToolBar/CToolbar.class | 18 + .../gb.form.mdi/.src/ToolBar/FToolBar.class | 1804 + .../gb.form.mdi/.src/ToolBar/FToolBar.form | 27 + .../.src/ToolBar/FToolBarConfig.class | 506 + .../.src/ToolBar/FToolBarConfig.form | 98 + .../gb.form.mdi/.src/ToolBar/ToolBar.class | 213 + .../.src/ToolBar/ToolBarExpander.class | 9 + .../gb.form.mdi/.src/Workspace/CWindow.class | 9 + .../.src/Workspace/FWorkspace.class | 1047 + .../.src/Workspace/FWorkspace.form | 145 + .../.src/Workspace/Workspace.class | 284 + comp/src/gb.form.mdi/70a017.png | Bin 0 -> 1542 bytes comp/src/gb.form.mdi/control/buttonbox.png | Bin 0 -> 290 bytes comp/src/gb.form.mdi/control/combobox.png | Bin 0 -> 287 bytes comp/src/gb.form.mdi/control/datebox.png | Bin 0 -> 568 bytes comp/src/gb.form.mdi/control/valuebox.png | Bin 0 -> 374 bytes comp/src/gb.form.mdi/img/close.png | Bin 0 -> 112 bytes comp/src/gb.form.mdi/img/configure.png | Bin 0 -> 141 bytes comp/src/gb.form.mdi/img/configure_dark.png | Bin 0 -> 139 bytes comp/src/gb.form.mdi/img/expander.png | Bin 0 -> 188 bytes comp/src/gb.form.mdi/img/handle-v.png | Bin 0 -> 100 bytes comp/src/gb.form.mdi/img/handle.png | Bin 0 -> 97 bytes comp/src/gb.form.mdi/img/hash.png | Bin 0 -> 86 bytes comp/src/gb.form.mdi/img/roll.png | Bin 0 -> 90 bytes comp/src/gb.form.mdi/img/separator.png | Bin 0 -> 92 bytes comp/src/gb.form.mdi/img/space.png | Bin 0 -> 92 bytes comp/src/gb.form.mdi/img/unroll.png | Bin 0 -> 93 bytes comp/src/gb.form.print/.component | 6 + comp/src/gb.form.print/.directory | 2 + comp/src/gb.form.print/.hidden/printer.png | Bin 0 -> 566 bytes comp/src/gb.form.print/.icon.png | Bin 0 -> 6301 bytes comp/src/gb.form.print/.lang/es.po | 215 + comp/src/gb.form.print/.lang/es_ES.po | 215 + comp/src/gb.form.print/.lang/fr.po | 174 + comp/src/gb.form.print/.lang/it.po | 174 + comp/src/gb.form.print/.lang/nl.po | 219 + comp/src/gb.form.print/.lang/pt_BR.po | 174 + comp/src/gb.form.print/.lang/ru.po | 190 + comp/src/gb.form.print/.lang/zh.po | 175 + comp/src/gb.form.print/.project | 16 + comp/src/gb.form.print/.src/FPreview.class | 694 + comp/src/gb.form.print/.src/FPreview.form | 337 + comp/src/gb.form.print/.src/FPrinting.class | 13 + comp/src/gb.form.print/.src/FPrinting.form | 24 + comp/src/gb.form.print/.src/MTest.module | 51 + comp/src/gb.form.print/.src/Printer.class | 31 + comp/src/gb.form.print/molly-malone.txt | 35 + comp/src/gb.form.stock/.component | 4 + comp/src/gb.form.stock/.directory | 2 + comp/src/gb.form.stock/.hidden/CHANGELOG | 3 + comp/src/gb.form.stock/.hidden/earth.png | Bin 0 -> 3866 bytes comp/src/gb.form.stock/.hidden/goutte.png | Bin 0 -> 575 bytes comp/src/gb.form.stock/.hidden/icon.png | Bin 0 -> 173 bytes comp/src/gb.form.stock/.icon.png | Bin 0 -> 6121 bytes comp/src/gb.form.stock/.project | 21 + comp/src/gb.form.stock/.src/Main.module | 270 + .../gb.form.stock/.src/MakeIconTheme.module | 226 + .../gb.form.stock/.src/_DefaultStock.class | 120 + .../gb.form.stock/gambas-mono/128/alarm.png | Bin 0 -> 2275 bytes .../gb.form.stock/gambas-mono/128/android.png | Bin 0 -> 1617 bytes .../gambas-mono/128/application.png | Bin 0 -> 153 bytes .../gb.form.stock/gambas-mono/128/audio.png | Bin 0 -> 2068 bytes .../gb.form.stock/gambas-mono/128/book.png | Bin 0 -> 282 bytes .../src/gb.form.stock/gambas-mono/128/bus.png | Bin 0 -> 1068 bytes comp/src/gb.form.stock/gambas-mono/128/c.png | Bin 0 -> 1231 bytes .../gambas-mono/128/chart-line.png | Bin 0 -> 736 bytes .../gambas-mono/128/chart-pie.png | Bin 0 -> 2350 bytes .../gb.form.stock/gambas-mono/128/chart.png | Bin 0 -> 159 bytes .../gb.form.stock/gambas-mono/128/chat.png | Bin 0 -> 1777 bytes .../gb.form.stock/gambas-mono/128/clock.png | Bin 0 -> 1991 bytes .../gb.form.stock/gambas-mono/128/cloud.png | Bin 0 -> 1555 bytes .../gb.form.stock/gambas-mono/128/compass.png | Bin 0 -> 2284 bytes .../gb.form.stock/gambas-mono/128/cookie.png | Bin 0 -> 1732 bytes .../src/gb.form.stock/gambas-mono/128/cpp.png | Bin 0 -> 1199 bytes .../src/gb.form.stock/gambas-mono/128/css.png | Bin 0 -> 1873 bytes .../gambas-mono/128/currency.png | Bin 0 -> 2896 bytes .../gb.form.stock/gambas-mono/128/delete.png | Bin 0 -> 2037 bytes .../gambas-mono/128/directory.png | Bin 0 -> 162 bytes .../gambas-mono/128/download.png | Bin 0 -> 4843 bytes .../gb.form.stock/gambas-mono/128/error.png | Bin 0 -> 1208 bytes .../gb.form.stock/gambas-mono/128/exec.png | Bin 0 -> 1603 bytes .../gb.form.stock/gambas-mono/128/file.png | Bin 0 -> 218 bytes .../src/gb.form.stock/gambas-mono/128/fog.png | Bin 0 -> 1053 bytes .../gambas-mono/128/folder-document.png | Bin 0 -> 212 bytes .../gambas-mono/128/folder-download.png | Bin 0 -> 376 bytes .../gambas-mono/128/folder-home.png | Bin 0 -> 300 bytes .../gambas-mono/128/folder-image.png | Bin 0 -> 380 bytes .../gambas-mono/128/folder-music.png | Bin 0 -> 551 bytes .../gambas-mono/128/folder-network.png | Bin 0 -> 387 bytes .../gambas-mono/128/folder-recent.png | Bin 0 -> 1015 bytes .../gambas-mono/128/folder-remote.png | Bin 0 -> 418 bytes .../gambas-mono/128/folder-root.png | Bin 0 -> 379 bytes .../gambas-mono/128/folder-share.png | Bin 0 -> 639 bytes .../gambas-mono/128/folder-template.png | Bin 0 -> 730 bytes .../gambas-mono/128/folder-video.png | Bin 0 -> 246 bytes .../gb.form.stock/gambas-mono/128/gambas.png | Bin 0 -> 2729 bytes comp/src/gb.form.stock/gambas-mono/128/h.png | Bin 0 -> 645 bytes .../gb.form.stock/gambas-mono/128/help.png | Bin 0 -> 2635 bytes .../gb.form.stock/gambas-mono/128/html.png | Bin 0 -> 1381 bytes .../gb.form.stock/gambas-mono/128/image.png | Bin 0 -> 653 bytes .../gb.form.stock/gambas-mono/128/info.png | Bin 0 -> 285 bytes .../gambas-mono/128/internet.png | Bin 0 -> 2745 bytes .../gb.form.stock/gambas-mono/128/java.png | Bin 0 -> 597 bytes comp/src/gb.form.stock/gambas-mono/128/js.png | Bin 0 -> 1076 bytes .../gb.form.stock/gambas-mono/128/json.png | Bin 0 -> 1180 bytes .../gb.form.stock/gambas-mono/128/layout.png | Bin 0 -> 906 bytes .../gb.form.stock/gambas-mono/128/linux.png | Bin 0 -> 3004 bytes .../gb.form.stock/gambas-mono/128/magnet.png | Bin 0 -> 1060 bytes .../src/gb.form.stock/gambas-mono/128/map.png | Bin 0 -> 2741 bytes .../gb.form.stock/gambas-mono/128/marker.png | Bin 0 -> 1529 bytes comp/src/gb.form.stock/gambas-mono/128/md.png | Bin 0 -> 816 bytes .../gb.form.stock/gambas-mono/128/memory.png | Bin 0 -> 182 bytes .../gb.form.stock/gambas-mono/128/message.png | Bin 0 -> 2405 bytes .../gb.form.stock/gambas-mono/128/modem.png | Bin 0 -> 490 bytes .../gb.form.stock/gambas-mono/128/money.png | Bin 0 -> 1379 bytes .../gambas-mono/128/moon-cloud.png | Bin 0 -> 1871 bytes .../gb.form.stock/gambas-mono/128/moon.png | Bin 0 -> 1338 bytes .../gambas-mono/128/multimedia.png | Bin 0 -> 824 bytes .../gb.form.stock/gambas-mono/128/network.png | Bin 0 -> 594 bytes .../gb.form.stock/gambas-mono/128/news.png | Bin 0 -> 495 bytes .../src/gb.form.stock/gambas-mono/128/pda.png | Bin 0 -> 446 bytes .../gb.form.stock/gambas-mono/128/people.png | Bin 0 -> 2047 bytes .../gb.form.stock/gambas-mono/128/phone.png | Bin 0 -> 318 bytes .../gb.form.stock/gambas-mono/128/printer.png | Bin 0 -> 424 bytes .../gb.form.stock/gambas-mono/128/program.png | Bin 0 -> 1169 bytes .../gambas-mono/128/question.png | Bin 0 -> 2633 bytes .../gb.form.stock/gambas-mono/128/rain.png | Bin 0 -> 1177 bytes .../gb.form.stock/gambas-mono/128/script.png | Bin 0 -> 1038 bytes .../gb.form.stock/gambas-mono/128/sdcard.png | Bin 0 -> 220 bytes .../gb.form.stock/gambas-mono/128/share.png | Bin 0 -> 832 bytes .../gambas-mono/128/smartphone.png | Bin 0 -> 377 bytes .../gb.form.stock/gambas-mono/128/snow.png | Bin 0 -> 1263 bytes .../gb.form.stock/gambas-mono/128/sport.png | Bin 0 -> 3747 bytes .../gambas-mono/128/statistics.png | Bin 0 -> 754 bytes .../gb.form.stock/gambas-mono/128/storm.png | Bin 0 -> 1447 bytes .../gambas-mono/128/sun-cloud.png | Bin 0 -> 1789 bytes .../src/gb.form.stock/gambas-mono/128/sun.png | Bin 0 -> 1336 bytes .../gb.form.stock/gambas-mono/128/taxi.png | Bin 0 -> 849 bytes .../gambas-mono/128/template.png | Bin 0 -> 551 bytes .../gb.form.stock/gambas-mono/128/text.png | Bin 0 -> 231 bytes .../gb.form.stock/gambas-mono/128/traffic.png | Bin 0 -> 817 bytes .../gb.form.stock/gambas-mono/128/truck.png | Bin 0 -> 722 bytes .../gb.form.stock/gambas-mono/128/upload.png | Bin 0 -> 4793 bytes .../gambas-mono/128/user-group.png | Bin 0 -> 2442 bytes .../gb.form.stock/gambas-mono/128/user.png | Bin 0 -> 1667 bytes .../gb.form.stock/gambas-mono/128/vector.png | Bin 0 -> 806 bytes .../gb.form.stock/gambas-mono/128/video.png | Bin 0 -> 302 bytes .../gb.form.stock/gambas-mono/128/warning.png | Bin 0 -> 828 bytes .../src/gb.form.stock/gambas-mono/128/xml.png | Bin 0 -> 1547 bytes .../gb.form.stock/gambas-mono/32/access.png | Bin 0 -> 201 bytes comp/src/gb.form.stock/gambas-mono/32/add.png | Bin 0 -> 135 bytes .../gb.form.stock/gambas-mono/32/added.png | Bin 0 -> 469 bytes .../gambas-mono/32/administrator.png | Bin 0 -> 545 bytes .../gb.form.stock/gambas-mono/32/agenda.png | Bin 0 -> 188 bytes .../gb.form.stock/gambas-mono/32/alarm.png | Bin 0 -> 608 bytes .../gambas-mono/32/align-bottom.png | Bin 0 -> 142 bytes .../gambas-mono/32/align-center.png | Bin 0 -> 149 bytes .../gambas-mono/32/align-height.png | Bin 0 -> 143 bytes .../gambas-mono/32/align-left.png | Bin 0 -> 144 bytes .../gambas-mono/32/align-middle.png | Bin 0 -> 144 bytes .../gambas-mono/32/align-right.png | Bin 0 -> 147 bytes .../gambas-mono/32/align-top.png | Bin 0 -> 144 bytes .../gambas-mono/32/align-width.png | Bin 0 -> 144 bytes .../gb.form.stock/gambas-mono/32/anchor.png | Bin 0 -> 632 bytes .../gb.form.stock/gambas-mono/32/android.png | Bin 0 -> 544 bytes .../gambas-mono/32/application.png | Bin 0 -> 140 bytes .../gb.form.stock/gambas-mono/32/apply.png | Bin 0 -> 207 bytes .../gb.form.stock/gambas-mono/32/archive.png | Bin 0 -> 178 bytes .../gb.form.stock/gambas-mono/32/attach.png | Bin 0 -> 751 bytes .../gb.form.stock/gambas-mono/32/audio.png | Bin 0 -> 606 bytes .../gb.form.stock/gambas-mono/32/average.png | Bin 0 -> 608 bytes .../gambas-mono/32/battery-high.png | Bin 0 -> 155 bytes .../gambas-mono/32/battery-low.png | Bin 0 -> 155 bytes .../gambas-mono/32/battery-medium.png | Bin 0 -> 155 bytes .../gb.form.stock/gambas-mono/32/battery.png | Bin 0 -> 249 bytes .../gb.form.stock/gambas-mono/32/bicycle.png | Bin 0 -> 504 bytes .../src/gb.form.stock/gambas-mono/32/blue.png | Bin 0 -> 534 bytes .../gambas-mono/32/bluetooth-off.png | Bin 0 -> 321 bytes .../gambas-mono/32/bluetooth.png | Bin 0 -> 243 bytes .../src/gb.form.stock/gambas-mono/32/blur.png | Bin 0 -> 1699 bytes .../src/gb.form.stock/gambas-mono/32/book.png | Bin 0 -> 170 bytes .../gb.form.stock/gambas-mono/32/bookmark.png | Bin 0 -> 265 bytes .../gambas-mono/32/border-bottom.png | Bin 0 -> 153 bytes .../gambas-mono/32/border-diag.png | Bin 0 -> 315 bytes .../gambas-mono/32/border-horizontal.png | Bin 0 -> 153 bytes .../gambas-mono/32/border-inside.png | Bin 0 -> 153 bytes .../gambas-mono/32/border-left.png | Bin 0 -> 146 bytes .../gambas-mono/32/border-none.png | Bin 0 -> 143 bytes .../gambas-mono/32/border-outside.png | Bin 0 -> 153 bytes .../gambas-mono/32/border-rev-diag.png | Bin 0 -> 311 bytes .../gambas-mono/32/border-right.png | Bin 0 -> 146 bytes .../gambas-mono/32/border-top.png | Bin 0 -> 153 bytes .../gambas-mono/32/border-vertical.png | Bin 0 -> 156 bytes .../gb.form.stock/gambas-mono/32/border.png | Bin 0 -> 143 bytes .../gb.form.stock/gambas-mono/32/bottom.png | Bin 0 -> 233 bytes .../gambas-mono/32/brightness.png | Bin 0 -> 353 bytes .../gb.form.stock/gambas-mono/32/brush.png | Bin 0 -> 334 bytes comp/src/gb.form.stock/gambas-mono/32/bus.png | Bin 0 -> 358 bytes comp/src/gb.form.stock/gambas-mono/32/c.png | Bin 0 -> 443 bytes .../src/gb.form.stock/gambas-mono/32/cake.png | Bin 0 -> 347 bytes .../gambas-mono/32/calculator.png | Bin 0 -> 170 bytes .../gb.form.stock/gambas-mono/32/calendar.png | Bin 0 -> 189 bytes .../gambas-mono/32/call-stop.png | Bin 0 -> 337 bytes .../src/gb.form.stock/gambas-mono/32/call.png | Bin 0 -> 602 bytes .../gb.form.stock/gambas-mono/32/camera.png | Bin 0 -> 249 bytes .../gb.form.stock/gambas-mono/32/cancel.png | Bin 0 -> 305 bytes .../gb.form.stock/gambas-mono/32/cap-butt.png | Bin 0 -> 136 bytes .../gambas-mono/32/cap-round.png | Bin 0 -> 328 bytes .../gambas-mono/32/cap-square.png | Bin 0 -> 134 bytes comp/src/gb.form.stock/gambas-mono/32/car.png | Bin 0 -> 327 bytes .../gb.form.stock/gambas-mono/32/cdrom.png | Bin 0 -> 428 bytes .../gambas-mono/32/chart-line.png | Bin 0 -> 334 bytes .../gambas-mono/32/chart-pie.png | Bin 0 -> 724 bytes .../gb.form.stock/gambas-mono/32/chart.png | Bin 0 -> 147 bytes .../src/gb.form.stock/gambas-mono/32/chat.png | Bin 0 -> 533 bytes .../gb.form.stock/gambas-mono/32/cherry.png | Bin 0 -> 655 bytes .../src/gb.form.stock/gambas-mono/32/city.png | Bin 0 -> 223 bytes .../gb.form.stock/gambas-mono/32/clear.png | Bin 0 -> 317 bytes .../gb.form.stock/gambas-mono/32/clock.png | Bin 0 -> 487 bytes .../gb.form.stock/gambas-mono/32/clone.png | Bin 0 -> 231 bytes .../gb.form.stock/gambas-mono/32/close.png | Bin 0 -> 281 bytes .../gb.form.stock/gambas-mono/32/cloud.png | Bin 0 -> 475 bytes .../gambas-mono/32/color-picker.png | Bin 0 -> 253 bytes .../gb.form.stock/gambas-mono/32/color.png | Bin 0 -> 292 bytes .../gambas-mono/32/column-after.png | Bin 0 -> 325 bytes .../gambas-mono/32/column-before.png | Bin 0 -> 306 bytes .../gambas-mono/32/column-remove.png | Bin 0 -> 353 bytes .../gb.form.stock/gambas-mono/32/compass.png | Bin 0 -> 557 bytes .../gambas-mono/32/component.png | Bin 0 -> 144 bytes .../gb.form.stock/gambas-mono/32/compress.png | Bin 0 -> 328 bytes .../gb.form.stock/gambas-mono/32/computer.png | Bin 0 -> 305 bytes .../gb.form.stock/gambas-mono/32/conflict.png | Bin 0 -> 544 bytes .../gb.form.stock/gambas-mono/32/connect.png | Bin 0 -> 276 bytes .../gb.form.stock/gambas-mono/32/contrast.png | Bin 0 -> 430 bytes .../gb.form.stock/gambas-mono/32/cookie.png | Bin 0 -> 475 bytes .../src/gb.form.stock/gambas-mono/32/copy.png | Bin 0 -> 160 bytes comp/src/gb.form.stock/gambas-mono/32/cpp.png | Bin 0 -> 436 bytes comp/src/gb.form.stock/gambas-mono/32/cpu.png | Bin 0 -> 174 bytes .../src/gb.form.stock/gambas-mono/32/crop.png | Bin 0 -> 154 bytes comp/src/gb.form.stock/gambas-mono/32/css.png | Bin 0 -> 617 bytes comp/src/gb.form.stock/gambas-mono/32/csv.png | Bin 0 -> 184 bytes .../gb.form.stock/gambas-mono/32/currency.png | Bin 0 -> 712 bytes comp/src/gb.form.stock/gambas-mono/32/cut.png | Bin 0 -> 315 bytes .../gb.form.stock/gambas-mono/32/database.png | Bin 0 -> 440 bytes .../gambas-mono/32/debug-cursor.png | Bin 0 -> 240 bytes .../gambas-mono/32/debug-into.png | Bin 0 -> 181 bytes .../gambas-mono/32/debug-out.png | Bin 0 -> 182 bytes .../gambas-mono/32/debug-over.png | Bin 0 -> 197 bytes .../gb.form.stock/gambas-mono/32/delete.png | Bin 0 -> 482 bytes .../gb.form.stock/gambas-mono/32/desktop.png | Bin 0 -> 162 bytes .../gambas-mono/32/development.png | Bin 0 -> 242 bytes .../gambas-mono/32/difference.png | Bin 0 -> 173 bytes .../gambas-mono/32/directory.png | Bin 0 -> 151 bytes .../gambas-mono/32/disconnect.png | Bin 0 -> 281 bytes .../src/gb.form.stock/gambas-mono/32/down.png | Bin 0 -> 219 bytes .../gb.form.stock/gambas-mono/32/download.png | Bin 0 -> 990 bytes .../gambas-mono/32/draw-arrow.png | Bin 0 -> 343 bytes .../gambas-mono/32/draw-circle.png | Bin 0 -> 458 bytes .../gambas-mono/32/draw-line.png | Bin 0 -> 173 bytes .../gambas-mono/32/draw-path.png | Bin 0 -> 391 bytes .../gambas-mono/32/draw-polygon.png | Bin 0 -> 748 bytes .../gambas-mono/32/draw-rectangle.png | Bin 0 -> 136 bytes .../gambas-mono/32/draw-round.png | Bin 0 -> 321 bytes .../gambas-mono/32/draw-star.png | Bin 0 -> 816 bytes .../gambas-mono/32/draw-text.png | Bin 0 -> 266 bytes .../gb.form.stock/gambas-mono/32/drink.png | Bin 0 -> 256 bytes .../gb.form.stock/gambas-mono/32/earth.png | Bin 0 -> 635 bytes .../src/gb.form.stock/gambas-mono/32/edit.png | Bin 0 -> 221 bytes .../gb.form.stock/gambas-mono/32/eject.png | Bin 0 -> 190 bytes .../gambas-mono/32/emote-cool.png | Bin 0 -> 498 bytes .../gambas-mono/32/emote-crying.png | Bin 0 -> 507 bytes .../gambas-mono/32/emote-happy.png | Bin 0 -> 461 bytes .../gambas-mono/32/emote-kiss.png | Bin 0 -> 423 bytes .../gambas-mono/32/emote-laugh.png | Bin 0 -> 429 bytes .../gambas-mono/32/emote-plain.png | Bin 0 -> 379 bytes .../gambas-mono/32/emote-raspberry.png | Bin 0 -> 406 bytes .../gambas-mono/32/emote-sad.png | Bin 0 -> 461 bytes .../gambas-mono/32/emote-surprise.png | Bin 0 -> 481 bytes .../gambas-mono/32/emote-uncertain.png | Bin 0 -> 457 bytes .../gambas-mono/32/emote-wink.png | Bin 0 -> 462 bytes .../gambas-mono/32/end-of-line.png | Bin 0 -> 186 bytes comp/src/gb.form.stock/gambas-mono/32/end.png | Bin 0 -> 181 bytes .../gb.form.stock/gambas-mono/32/energy.png | Bin 0 -> 304 bytes .../gb.form.stock/gambas-mono/32/erase.png | Bin 0 -> 225 bytes .../gb.form.stock/gambas-mono/32/error.png | Bin 0 -> 357 bytes .../gambas-mono/32/exclusive.png | Bin 0 -> 156 bytes .../src/gb.form.stock/gambas-mono/32/exec.png | Bin 0 -> 442 bytes .../gb.form.stock/gambas-mono/32/export.png | Bin 0 -> 197 bytes .../gb.form.stock/gambas-mono/32/factory.png | Bin 0 -> 246 bytes .../gambas-mono/32/file-manager.png | Bin 0 -> 161 bytes .../src/gb.form.stock/gambas-mono/32/file.png | Bin 0 -> 163 bytes .../src/gb.form.stock/gambas-mono/32/fill.png | Bin 0 -> 407 bytes .../gb.form.stock/gambas-mono/32/filter.png | Bin 0 -> 189 bytes .../src/gb.form.stock/gambas-mono/32/find.png | Bin 0 -> 402 bytes .../gb.form.stock/gambas-mono/32/firewall.png | Bin 0 -> 380 bytes .../gb.form.stock/gambas-mono/32/first.png | Bin 0 -> 214 bytes .../gambas-mono/32/flag-blue.png | Bin 0 -> 364 bytes .../gambas-mono/32/flag-green.png | Bin 0 -> 397 bytes .../gb.form.stock/gambas-mono/32/flag-red.png | Bin 0 -> 348 bytes .../gambas-mono/32/flag-yellow.png | Bin 0 -> 364 bytes .../src/gb.form.stock/gambas-mono/32/flag.png | Bin 0 -> 197 bytes .../gb.form.stock/gambas-mono/32/flip-h.png | Bin 0 -> 198 bytes .../gb.form.stock/gambas-mono/32/flip-v.png | Bin 0 -> 226 bytes .../gb.form.stock/gambas-mono/32/floppy.png | Bin 0 -> 184 bytes comp/src/gb.form.stock/gambas-mono/32/fog.png | Bin 0 -> 334 bytes .../gambas-mono/32/folder-blue.png | Bin 0 -> 314 bytes .../gambas-mono/32/folder-document.png | Bin 0 -> 173 bytes .../gambas-mono/32/folder-download.png | Bin 0 -> 207 bytes .../gambas-mono/32/folder-green.png | Bin 0 -> 363 bytes .../gambas-mono/32/folder-home.png | Bin 0 -> 192 bytes .../gambas-mono/32/folder-image.png | Bin 0 -> 205 bytes .../gambas-mono/32/folder-music.png | Bin 0 -> 244 bytes .../gambas-mono/32/folder-network.png | Bin 0 -> 214 bytes .../gambas-mono/32/folder-recent.png | Bin 0 -> 291 bytes .../gambas-mono/32/folder-red.png | Bin 0 -> 300 bytes .../gambas-mono/32/folder-remote.png | Bin 0 -> 187 bytes .../gambas-mono/32/folder-root.png | Bin 0 -> 208 bytes .../gambas-mono/32/folder-share.png | Bin 0 -> 260 bytes .../gambas-mono/32/folder-template.png | Bin 0 -> 730 bytes .../gambas-mono/32/folder-video.png | Bin 0 -> 216 bytes .../gambas-mono/32/folder-yellow.png | Bin 0 -> 279 bytes .../src/gb.form.stock/gambas-mono/32/font.png | Bin 0 -> 834 bytes .../gb.form.stock/gambas-mono/32/formula.png | Bin 0 -> 848 bytes .../gb.form.stock/gambas-mono/32/forward.png | Bin 0 -> 205 bytes .../gambas-mono/32/fullscreen.png | Bin 0 -> 159 bytes .../gb.form.stock/gambas-mono/32/gambas.png | Bin 0 -> 935 bytes .../src/gb.form.stock/gambas-mono/32/game.png | Bin 0 -> 223 bytes .../gb.form.stock/gambas-mono/32/gamma.png | Bin 0 -> 373 bytes comp/src/gb.form.stock/gambas-mono/32/gnu.png | Bin 0 -> 889 bytes .../gb.form.stock/gambas-mono/32/gradient.png | Bin 0 -> 278 bytes .../gb.form.stock/gambas-mono/32/green.png | Bin 0 -> 582 bytes .../src/gb.form.stock/gambas-mono/32/grid.png | Bin 0 -> 154 bytes .../gb.form.stock/gambas-mono/32/group.png | Bin 0 -> 311 bytes comp/src/gb.form.stock/gambas-mono/32/h.png | Bin 0 -> 302 bytes .../src/gb.form.stock/gambas-mono/32/halt.png | Bin 0 -> 404 bytes .../gambas-mono/32/harddisk-root.png | Bin 0 -> 191 bytes .../gb.form.stock/gambas-mono/32/harddisk.png | Bin 0 -> 147 bytes .../gb.form.stock/gambas-mono/32/hardware.png | Bin 0 -> 167 bytes .../gb.form.stock/gambas-mono/32/hatch.png | Bin 0 -> 206 bytes .../gb.form.stock/gambas-mono/32/headset.png | Bin 0 -> 529 bytes .../src/gb.form.stock/gambas-mono/32/help.png | Bin 0 -> 649 bytes .../gambas-mono/32/hibernate.png | Bin 0 -> 520 bytes .../gambas-mono/32/highlight.png | Bin 0 -> 223 bytes .../src/gb.form.stock/gambas-mono/32/home.png | Bin 0 -> 194 bytes .../gb.form.stock/gambas-mono/32/house.png | Bin 0 -> 189 bytes .../src/gb.form.stock/gambas-mono/32/html.png | Bin 0 -> 416 bytes comp/src/gb.form.stock/gambas-mono/32/hue.png | Bin 0 -> 456 bytes .../gb.form.stock/gambas-mono/32/identity.png | Bin 0 -> 626 bytes .../gb.form.stock/gambas-mono/32/image.png | Bin 0 -> 243 bytes .../gb.form.stock/gambas-mono/32/import.png | Bin 0 -> 200 bytes .../gambas-mono/32/important.png | Bin 0 -> 396 bytes .../gb.form.stock/gambas-mono/32/indent.png | Bin 0 -> 191 bytes .../src/gb.form.stock/gambas-mono/32/info.png | Bin 0 -> 165 bytes .../gambas-mono/32/inheritance.png | Bin 0 -> 220 bytes .../gambas-mono/32/insert-image.png | Bin 0 -> 414 bytes .../gambas-mono/32/insert-link.png | Bin 0 -> 633 bytes .../gambas-mono/32/insert-table.png | Bin 0 -> 360 bytes .../gambas-mono/32/insert-text.png | Bin 0 -> 354 bytes .../gb.form.stock/gambas-mono/32/internet.png | Bin 0 -> 1132 bytes .../gambas-mono/32/intersection.png | Bin 0 -> 164 bytes .../gb.form.stock/gambas-mono/32/invert.png | Bin 0 -> 243 bytes .../src/gb.form.stock/gambas-mono/32/java.png | Bin 0 -> 234 bytes .../gambas-mono/32/join-bevel.png | Bin 0 -> 176 bytes .../gambas-mono/32/join-miter.png | Bin 0 -> 135 bytes .../gambas-mono/32/join-round.png | Bin 0 -> 417 bytes comp/src/gb.form.stock/gambas-mono/32/js.png | Bin 0 -> 421 bytes .../src/gb.form.stock/gambas-mono/32/json.png | Bin 0 -> 450 bytes .../src/gb.form.stock/gambas-mono/32/jump.png | Bin 0 -> 296 bytes comp/src/gb.form.stock/gambas-mono/32/key.png | Bin 0 -> 290 bytes .../gb.form.stock/gambas-mono/32/keyboard.png | Bin 0 -> 283 bytes .../src/gb.form.stock/gambas-mono/32/lamp.png | Bin 0 -> 372 bytes .../gb.form.stock/gambas-mono/32/language.png | Bin 0 -> 354 bytes .../src/gb.form.stock/gambas-mono/32/last.png | Bin 0 -> 212 bytes .../gb.form.stock/gambas-mono/32/layer.png | Bin 0 -> 506 bytes .../gb.form.stock/gambas-mono/32/layout.png | Bin 0 -> 390 bytes .../src/gb.form.stock/gambas-mono/32/left.png | Bin 0 -> 183 bytes .../gb.form.stock/gambas-mono/32/library.png | Bin 0 -> 192 bytes .../gambas-mono/32/lightness.png | Bin 0 -> 391 bytes .../gambas-mono/32/line-style.png | Bin 0 -> 142 bytes .../gambas-mono/32/line-width.png | Bin 0 -> 135 bytes .../src/gb.form.stock/gambas-mono/32/link.png | Bin 0 -> 489 bytes .../gb.form.stock/gambas-mono/32/linux.png | Bin 0 -> 1311 bytes .../gambas-mono/32/lock-screen.png | Bin 0 -> 460 bytes .../src/gb.form.stock/gambas-mono/32/lock.png | Bin 0 -> 270 bytes .../gb.form.stock/gambas-mono/32/logout.png | Bin 0 -> 425 bytes .../src/gb.form.stock/gambas-mono/32/love.png | Bin 0 -> 614 bytes .../gb.form.stock/gambas-mono/32/lower.png | Bin 0 -> 145 bytes .../gb.form.stock/gambas-mono/32/magnet.png | Bin 0 -> 1060 bytes .../src/gb.form.stock/gambas-mono/32/mail.png | Bin 0 -> 250 bytes .../gb.form.stock/gambas-mono/32/make-all.png | Bin 0 -> 248 bytes .../src/gb.form.stock/gambas-mono/32/make.png | Bin 0 -> 252 bytes comp/src/gb.form.stock/gambas-mono/32/map.png | Bin 0 -> 632 bytes .../gb.form.stock/gambas-mono/32/marker.png | Bin 0 -> 494 bytes .../src/gb.form.stock/gambas-mono/32/math.png | Bin 0 -> 861 bytes comp/src/gb.form.stock/gambas-mono/32/md.png | Bin 0 -> 356 bytes .../gambas-mono/32/media-player.png | Bin 0 -> 179 bytes .../gb.form.stock/gambas-mono/32/memory.png | Bin 0 -> 166 bytes .../src/gb.form.stock/gambas-mono/32/menu.png | Bin 0 -> 131 bytes .../gb.form.stock/gambas-mono/32/message.png | Bin 0 -> 636 bytes .../gambas-mono/32/microphone-off.png | Bin 0 -> 442 bytes .../gambas-mono/32/microphone.png | Bin 0 -> 371 bytes .../gb.form.stock/gambas-mono/32/modem.png | Bin 0 -> 188 bytes .../gb.form.stock/gambas-mono/32/modified.png | Bin 0 -> 523 bytes .../gb.form.stock/gambas-mono/32/money.png | Bin 0 -> 367 bytes .../gb.form.stock/gambas-mono/32/monitor.png | Bin 0 -> 536 bytes .../gambas-mono/32/moon-cloud.png | Bin 0 -> 547 bytes .../src/gb.form.stock/gambas-mono/32/moon.png | Bin 0 -> 386 bytes .../gb.form.stock/gambas-mono/32/more-h.png | Bin 0 -> 148 bytes .../src/gb.form.stock/gambas-mono/32/more.png | Bin 0 -> 143 bytes .../gb.form.stock/gambas-mono/32/mount.png | Bin 0 -> 185 bytes .../gb.form.stock/gambas-mono/32/mouse.png | Bin 0 -> 273 bytes .../src/gb.form.stock/gambas-mono/32/move.png | Bin 0 -> 323 bytes .../gambas-mono/32/multimedia.png | Bin 0 -> 268 bytes .../gb.form.stock/gambas-mono/32/muted.png | Bin 0 -> 340 bytes .../gb.form.stock/gambas-mono/32/network.png | Bin 0 -> 206 bytes .../gambas-mono/32/new-appointment.png | Bin 0 -> 653 bytes .../gb.form.stock/gambas-mono/32/new-dir.png | Bin 0 -> 346 bytes .../gb.form.stock/gambas-mono/32/new-mail.png | Bin 0 -> 436 bytes .../gb.form.stock/gambas-mono/32/new-tab.png | Bin 0 -> 355 bytes .../gb.form.stock/gambas-mono/32/new-tag.png | Bin 0 -> 422 bytes .../gb.form.stock/gambas-mono/32/new-user.png | Bin 0 -> 597 bytes .../gambas-mono/32/new-window.png | Bin 0 -> 355 bytes comp/src/gb.form.stock/gambas-mono/32/new.png | Bin 0 -> 350 bytes .../src/gb.form.stock/gambas-mono/32/news.png | Bin 0 -> 198 bytes .../src/gb.form.stock/gambas-mono/32/next.png | Bin 0 -> 194 bytes .../gambas-mono/32/notification.png | Bin 0 -> 493 bytes .../gambas-mono/32/office-calc.png | Bin 0 -> 184 bytes .../gambas-mono/32/office-draw.png | Bin 0 -> 232 bytes .../gambas-mono/32/office-math.png | Bin 0 -> 444 bytes .../gambas-mono/32/office-presentation.png | Bin 0 -> 261 bytes .../gb.form.stock/gambas-mono/32/office.png | Bin 0 -> 186 bytes comp/src/gb.form.stock/gambas-mono/32/ok.png | Bin 0 -> 207 bytes .../gb.form.stock/gambas-mono/32/opacity.png | Bin 0 -> 450 bytes .../gambas-mono/32/open-link.png | Bin 0 -> 298 bytes .../gambas-mono/32/open-recent.png | Bin 0 -> 167 bytes .../src/gb.form.stock/gambas-mono/32/open.png | Bin 0 -> 209 bytes .../gb.form.stock/gambas-mono/32/options.png | Bin 0 -> 351 bytes .../gb.form.stock/gambas-mono/32/package.png | Bin 0 -> 200 bytes .../gambas-mono/32/page-break.png | Bin 0 -> 175 bytes .../gb.form.stock/gambas-mono/32/page-two.png | Bin 0 -> 182 bytes .../src/gb.form.stock/gambas-mono/32/page.png | Bin 0 -> 164 bytes .../gambas-mono/32/paragraph.png | Bin 0 -> 204 bytes .../gambas-mono/32/paste-special.png | Bin 0 -> 289 bytes .../gb.form.stock/gambas-mono/32/paste.png | Bin 0 -> 149 bytes .../gb.form.stock/gambas-mono/32/pause.png | Bin 0 -> 137 bytes comp/src/gb.form.stock/gambas-mono/32/pda.png | Bin 0 -> 212 bytes comp/src/gb.form.stock/gambas-mono/32/pdf.png | Bin 0 -> 492 bytes comp/src/gb.form.stock/gambas-mono/32/pen.png | Bin 0 -> 201 bytes .../gb.form.stock/gambas-mono/32/people.png | Bin 0 -> 961 bytes .../gb.form.stock/gambas-mono/32/percent.png | Bin 0 -> 947 bytes .../gb.form.stock/gambas-mono/32/phone.png | Bin 0 -> 188 bytes comp/src/gb.form.stock/gambas-mono/32/pin.png | Bin 0 -> 537 bytes .../gb.form.stock/gambas-mono/32/plane.png | Bin 0 -> 625 bytes .../src/gb.form.stock/gambas-mono/32/play.png | Bin 0 -> 184 bytes .../gb.form.stock/gambas-mono/32/plugin.png | Bin 0 -> 253 bytes .../gb.form.stock/gambas-mono/32/pointer.png | Bin 0 -> 649 bytes .../gb.form.stock/gambas-mono/32/preview.png | Bin 0 -> 627 bytes .../gb.form.stock/gambas-mono/32/previous.png | Bin 0 -> 201 bytes .../gb.form.stock/gambas-mono/32/print.png | Bin 0 -> 173 bytes .../gb.form.stock/gambas-mono/32/printer.png | Bin 0 -> 260 bytes .../gb.form.stock/gambas-mono/32/program.png | Bin 0 -> 372 bytes .../gambas-mono/32/properties.png | Bin 0 -> 143 bytes .../gb.form.stock/gambas-mono/32/question.png | Bin 0 -> 677 bytes .../src/gb.form.stock/gambas-mono/32/quit.png | Bin 0 -> 373 bytes .../gb.form.stock/gambas-mono/32/quote.png | Bin 0 -> 210 bytes .../src/gb.form.stock/gambas-mono/32/rain.png | Bin 0 -> 384 bytes .../gb.form.stock/gambas-mono/32/raise.png | Bin 0 -> 158 bytes .../gb.form.stock/gambas-mono/32/record.png | Bin 0 -> 321 bytes comp/src/gb.form.stock/gambas-mono/32/red.png | Bin 0 -> 502 bytes .../src/gb.form.stock/gambas-mono/32/redo.png | Bin 0 -> 311 bytes .../gb.form.stock/gambas-mono/32/refresh.png | Bin 0 -> 440 bytes .../gb.form.stock/gambas-mono/32/remove.png | Bin 0 -> 129 bytes .../gb.form.stock/gambas-mono/32/rename.png | Bin 0 -> 208 bytes .../gb.form.stock/gambas-mono/32/repeat.png | Bin 0 -> 234 bytes .../gb.form.stock/gambas-mono/32/replace.png | Bin 0 -> 400 bytes .../gambas-mono/32/reply-all.png | Bin 0 -> 336 bytes .../gb.form.stock/gambas-mono/32/reply.png | Bin 0 -> 321 bytes .../gb.form.stock/gambas-mono/32/resize.png | Bin 0 -> 151 bytes .../gb.form.stock/gambas-mono/32/restart.png | Bin 0 -> 442 bytes .../gambas-mono/32/restaurant.png | Bin 0 -> 724 bytes .../gb.form.stock/gambas-mono/32/revert.png | Bin 0 -> 238 bytes .../gb.form.stock/gambas-mono/32/rewind.png | Bin 0 -> 203 bytes .../gb.form.stock/gambas-mono/32/right.png | Bin 0 -> 184 bytes .../gambas-mono/32/rotate-left.png | Bin 0 -> 200 bytes .../gambas-mono/32/rotate-right.png | Bin 0 -> 201 bytes .../gb.form.stock/gambas-mono/32/rotate.png | Bin 0 -> 380 bytes .../gambas-mono/32/row-after.png | Bin 0 -> 326 bytes .../gambas-mono/32/row-before.png | Bin 0 -> 305 bytes .../gambas-mono/32/row-remove.png | Bin 0 -> 352 bytes comp/src/gb.form.stock/gambas-mono/32/rss.png | Bin 0 -> 529 bytes .../gambas-mono/32/saturation.png | Bin 0 -> 446 bytes .../gb.form.stock/gambas-mono/32/save-as.png | Bin 0 -> 216 bytes .../src/gb.form.stock/gambas-mono/32/save.png | Bin 0 -> 207 bytes .../gb.form.stock/gambas-mono/32/scanner.png | Bin 0 -> 483 bytes .../gb.form.stock/gambas-mono/32/science.png | Bin 0 -> 370 bytes .../gb.form.stock/gambas-mono/32/screen.png | Bin 0 -> 177 bytes .../gb.form.stock/gambas-mono/32/script.png | Bin 0 -> 446 bytes .../gb.form.stock/gambas-mono/32/sdcard.png | Bin 0 -> 173 bytes .../gambas-mono/32/security-high.png | Bin 0 -> 815 bytes .../gambas-mono/32/security-low.png | Bin 0 -> 681 bytes .../gambas-mono/32/security-medium.png | Bin 0 -> 788 bytes .../gb.form.stock/gambas-mono/32/security.png | Bin 0 -> 719 bytes .../gambas-mono/32/select-all.png | Bin 0 -> 217 bytes .../gb.form.stock/gambas-mono/32/select.png | Bin 0 -> 198 bytes .../gb.form.stock/gambas-mono/32/server.png | Bin 0 -> 153 bytes .../gb.form.stock/gambas-mono/32/share.png | Bin 0 -> 267 bytes .../gb.form.stock/gambas-mono/32/shopping.png | Bin 0 -> 352 bytes .../gb.form.stock/gambas-mono/32/shortcut.png | Bin 0 -> 576 bytes .../gb.form.stock/gambas-mono/32/shuffle.png | Bin 0 -> 353 bytes .../gb.form.stock/gambas-mono/32/shutdown.png | Bin 0 -> 443 bytes .../gambas-mono/32/smartphone.png | Bin 0 -> 177 bytes .../src/gb.form.stock/gambas-mono/32/snow.png | Bin 0 -> 373 bytes .../gambas-mono/32/sort-ascent.png | Bin 0 -> 249 bytes .../gambas-mono/32/sort-descent.png | Bin 0 -> 256 bytes .../gb.form.stock/gambas-mono/32/speaker.png | Bin 0 -> 418 bytes .../gambas-mono/32/spell-check.png | Bin 0 -> 707 bytes .../gb.form.stock/gambas-mono/32/sport.png | Bin 0 -> 1005 bytes .../src/gb.form.stock/gambas-mono/32/star.png | Bin 0 -> 897 bytes .../gb.form.stock/gambas-mono/32/start.png | Bin 0 -> 185 bytes .../gambas-mono/32/statistics.png | Bin 0 -> 314 bytes .../src/gb.form.stock/gambas-mono/32/stop.png | Bin 0 -> 137 bytes .../gb.form.stock/gambas-mono/32/storm.png | Bin 0 -> 461 bytes .../gb.form.stock/gambas-mono/32/subtitle.png | Bin 0 -> 166 bytes comp/src/gb.form.stock/gambas-mono/32/sum.png | Bin 0 -> 549 bytes .../gambas-mono/32/sun-cloud.png | Bin 0 -> 537 bytes comp/src/gb.form.stock/gambas-mono/32/sun.png | Bin 0 -> 420 bytes .../gb.form.stock/gambas-mono/32/suspend.png | Bin 0 -> 366 bytes .../gambas-mono/32/switch-user.png | Bin 0 -> 444 bytes .../gb.form.stock/gambas-mono/32/system.png | Bin 0 -> 283 bytes comp/src/gb.form.stock/gambas-mono/32/tab.png | Bin 0 -> 206 bytes .../gb.form.stock/gambas-mono/32/table.png | Bin 0 -> 151 bytes .../gb.form.stock/gambas-mono/32/tablet.png | Bin 0 -> 268 bytes comp/src/gb.form.stock/gambas-mono/32/tag.png | Bin 0 -> 265 bytes .../src/gb.form.stock/gambas-mono/32/taxi.png | Bin 0 -> 338 bytes .../gb.form.stock/gambas-mono/32/template.png | Bin 0 -> 255 bytes .../gb.form.stock/gambas-mono/32/terminal.png | Bin 0 -> 198 bytes .../gambas-mono/32/text-baseline.png | Bin 0 -> 173 bytes .../gambas-mono/32/text-bigger.png | Bin 0 -> 818 bytes .../gambas-mono/32/text-bold.png | Bin 0 -> 727 bytes .../gambas-mono/32/text-bottom.png | Bin 0 -> 173 bytes .../gambas-mono/32/text-center.png | Bin 0 -> 136 bytes .../gambas-mono/32/text-fill.png | Bin 0 -> 130 bytes .../gambas-mono/32/text-italic.png | Bin 0 -> 734 bytes .../gambas-mono/32/text-left.png | Bin 0 -> 134 bytes .../gambas-mono/32/text-line-spacing.png | Bin 0 -> 229 bytes .../gambas-mono/32/text-list-order-rtl.png | Bin 0 -> 365 bytes .../gambas-mono/32/text-list-order.png | Bin 0 -> 367 bytes .../gambas-mono/32/text-list.png | Bin 0 -> 172 bytes .../gambas-mono/32/text-lower.png | Bin 0 -> 908 bytes .../gambas-mono/32/text-middle.png | Bin 0 -> 186 bytes .../gambas-mono/32/text-outline.png | Bin 0 -> 1035 bytes .../gambas-mono/32/text-right.png | Bin 0 -> 136 bytes .../gambas-mono/32/text-shadow.png | Bin 0 -> 1185 bytes .../gambas-mono/32/text-smaller.png | Bin 0 -> 817 bytes .../gambas-mono/32/text-strike.png | Bin 0 -> 693 bytes .../gb.form.stock/gambas-mono/32/text-sub.png | Bin 0 -> 823 bytes .../gambas-mono/32/text-super.png | Bin 0 -> 817 bytes .../gb.form.stock/gambas-mono/32/text-top.png | Bin 0 -> 174 bytes .../gambas-mono/32/text-underline.png | Bin 0 -> 741 bytes .../gambas-mono/32/text-upper.png | Bin 0 -> 777 bytes .../src/gb.form.stock/gambas-mono/32/text.png | Bin 0 -> 177 bytes .../gb.form.stock/gambas-mono/32/theme.png | Bin 0 -> 168 bytes .../gb.form.stock/gambas-mono/32/today.png | Bin 0 -> 223 bytes .../gb.form.stock/gambas-mono/32/toilet.png | Bin 0 -> 697 bytes .../gb.form.stock/gambas-mono/32/tools.png | Bin 0 -> 311 bytes comp/src/gb.form.stock/gambas-mono/32/top.png | Bin 0 -> 232 bytes .../src/gb.form.stock/gambas-mono/32/town.png | Bin 0 -> 234 bytes .../gb.form.stock/gambas-mono/32/traffic.png | Bin 0 -> 251 bytes .../gb.form.stock/gambas-mono/32/train.png | Bin 0 -> 404 bytes .../gambas-mono/32/transparency.png | Bin 0 -> 447 bytes .../gambas-mono/32/trash-full.png | Bin 0 -> 268 bytes .../gb.form.stock/gambas-mono/32/trash.png | Bin 0 -> 191 bytes .../gb.form.stock/gambas-mono/32/truck.png | Bin 0 -> 272 bytes .../gambas-mono/32/uncompress.png | Bin 0 -> 319 bytes .../src/gb.form.stock/gambas-mono/32/undo.png | Bin 0 -> 306 bytes .../gb.form.stock/gambas-mono/32/ungroup.png | Bin 0 -> 321 bytes .../gb.form.stock/gambas-mono/32/unindent.png | Bin 0 -> 192 bytes .../gb.form.stock/gambas-mono/32/union.png | Bin 0 -> 164 bytes .../gb.form.stock/gambas-mono/32/unlock.png | Bin 0 -> 279 bytes .../gb.form.stock/gambas-mono/32/unselect.png | Bin 0 -> 357 bytes comp/src/gb.form.stock/gambas-mono/32/up.png | Bin 0 -> 219 bytes .../gb.form.stock/gambas-mono/32/update.png | Bin 0 -> 385 bytes .../gb.form.stock/gambas-mono/32/upload.png | Bin 0 -> 971 bytes comp/src/gb.form.stock/gambas-mono/32/usb.png | Bin 0 -> 226 bytes .../gambas-mono/32/user-group.png | Bin 0 -> 1166 bytes .../src/gb.form.stock/gambas-mono/32/user.png | Bin 0 -> 499 bytes .../gb.form.stock/gambas-mono/32/vector.png | Bin 0 -> 271 bytes .../gambas-mono/32/version-control.png | Bin 0 -> 338 bytes .../gb.form.stock/gambas-mono/32/video.png | Bin 0 -> 199 bytes .../gambas-mono/32/view-compact.png | Bin 0 -> 140 bytes .../gambas-mono/32/view-detail.png | Bin 0 -> 130 bytes .../gambas-mono/32/view-icon.png | Bin 0 -> 131 bytes .../gambas-mono/32/view-normal.png | Bin 0 -> 299 bytes .../gambas-mono/32/view-preview.png | Bin 0 -> 242 bytes .../gambas-mono/32/view-split-h.png | Bin 0 -> 151 bytes .../gambas-mono/32/view-split-v.png | Bin 0 -> 147 bytes .../gambas-mono/32/view-tree.png | Bin 0 -> 142 bytes .../gambas-mono/32/volume-high.png | Bin 0 -> 595 bytes .../gambas-mono/32/volume-low.png | Bin 0 -> 290 bytes .../gambas-mono/32/volume-medium.png | Bin 0 -> 434 bytes .../gb.form.stock/gambas-mono/32/volume.png | Bin 0 -> 240 bytes comp/src/gb.form.stock/gambas-mono/32/vpn.png | Bin 0 -> 318 bytes .../src/gb.form.stock/gambas-mono/32/walk.png | Bin 0 -> 878 bytes .../gb.form.stock/gambas-mono/32/warning.png | Bin 0 -> 303 bytes .../gb.form.stock/gambas-mono/32/watch.png | Bin 0 -> 543 bytes .../gb.form.stock/gambas-mono/32/webcam.png | Bin 0 -> 440 bytes .../gambas-mono/32/wifi-high.png | Bin 0 -> 605 bytes .../gb.form.stock/gambas-mono/32/wifi-low.png | Bin 0 -> 632 bytes .../gambas-mono/32/wifi-medium.png | Bin 0 -> 640 bytes .../src/gb.form.stock/gambas-mono/32/wifi.png | Bin 0 -> 593 bytes .../gb.form.stock/gambas-mono/32/window.png | Bin 0 -> 153 bytes .../gb.form.stock/gambas-mono/32/windows.png | Bin 0 -> 694 bytes .../gb.form.stock/gambas-mono/32/wizard.png | Bin 0 -> 265 bytes .../gb.form.stock/gambas-mono/32/worship.png | Bin 0 -> 242 bytes .../src/gb.form.stock/gambas-mono/32/wrap.png | Bin 0 -> 273 bytes comp/src/gb.form.stock/gambas-mono/32/xml.png | Bin 0 -> 438 bytes .../gb.form.stock/gambas-mono/32/zoom-fit.png | Bin 0 -> 554 bytes .../gb.form.stock/gambas-mono/32/zoom-in.png | Bin 0 -> 453 bytes .../gambas-mono/32/zoom-normal-rtl.png | Bin 0 -> 494 bytes .../gambas-mono/32/zoom-normal.png | Bin 0 -> 503 bytes .../gb.form.stock/gambas-mono/32/zoom-out.png | Bin 0 -> 450 bytes .../gambas-mono/32/zoom-width.png | Bin 0 -> 603 bytes .../gb.form.stock/gambas-mono/app/gambas3.png | Bin 0 -> 6361 bytes comp/src/gb.form.stock/gambas/128/access.png | Bin 0 -> 354 bytes .../gambas/128/administrator.png | Bin 0 -> 2098 bytes comp/src/gb.form.stock/gambas/128/agenda.png | Bin 0 -> 340 bytes comp/src/gb.form.stock/gambas/128/alarm.png | Bin 0 -> 2280 bytes comp/src/gb.form.stock/gambas/128/android.png | Bin 0 -> 1900 bytes .../gb.form.stock/gambas/128/application.png | Bin 0 -> 189 bytes comp/src/gb.form.stock/gambas/128/archive.png | Bin 0 -> 264 bytes comp/src/gb.form.stock/gambas/128/audio.png | Bin 0 -> 2090 bytes comp/src/gb.form.stock/gambas/128/battery.png | Bin 0 -> 436 bytes comp/src/gb.form.stock/gambas/128/bicycle.png | Bin 0 -> 1542 bytes .../gambas/128/bluetooth-off.png | Bin 0 -> 717 bytes .../gb.form.stock/gambas/128/bluetooth.png | Bin 0 -> 516 bytes comp/src/gb.form.stock/gambas/128/book.png | Bin 0 -> 301 bytes .../src/gb.form.stock/gambas/128/bookmark.png | Bin 0 -> 706 bytes comp/src/gb.form.stock/gambas/128/bus.png | Bin 0 -> 1068 bytes comp/src/gb.form.stock/gambas/128/c.png | Bin 0 -> 1336 bytes comp/src/gb.form.stock/gambas/128/cake.png | Bin 0 -> 1200 bytes .../gb.form.stock/gambas/128/calculator.png | Bin 0 -> 322 bytes .../src/gb.form.stock/gambas/128/calendar.png | Bin 0 -> 429 bytes comp/src/gb.form.stock/gambas/128/camera.png | Bin 0 -> 695 bytes comp/src/gb.form.stock/gambas/128/car.png | Bin 0 -> 803 bytes comp/src/gb.form.stock/gambas/128/cdrom.png | Bin 0 -> 1516 bytes .../gb.form.stock/gambas/128/chart-line.png | Bin 0 -> 862 bytes .../gb.form.stock/gambas/128/chart-pie.png | Bin 0 -> 2864 bytes comp/src/gb.form.stock/gambas/128/chart.png | Bin 0 -> 187 bytes comp/src/gb.form.stock/gambas/128/chat.png | Bin 0 -> 1902 bytes comp/src/gb.form.stock/gambas/128/cherry.png | Bin 0 -> 2467 bytes comp/src/gb.form.stock/gambas/128/city.png | Bin 0 -> 396 bytes comp/src/gb.form.stock/gambas/128/clock.png | Bin 0 -> 2007 bytes comp/src/gb.form.stock/gambas/128/cloud.png | Bin 0 -> 1560 bytes .../gb.form.stock/gambas/128/color-picker.png | Bin 0 -> 511 bytes comp/src/gb.form.stock/gambas/128/color.png | Bin 0 -> 1145 bytes comp/src/gb.form.stock/gambas/128/compass.png | Bin 0 -> 2461 bytes .../gb.form.stock/gambas/128/component.png | Bin 0 -> 167 bytes .../src/gb.form.stock/gambas/128/computer.png | Bin 0 -> 972 bytes comp/src/gb.form.stock/gambas/128/cookie.png | Bin 0 -> 1747 bytes comp/src/gb.form.stock/gambas/128/copy.png | Bin 0 -> 169 bytes comp/src/gb.form.stock/gambas/128/cpp.png | Bin 0 -> 1292 bytes comp/src/gb.form.stock/gambas/128/cpu.png | Bin 0 -> 192 bytes comp/src/gb.form.stock/gambas/128/css.png | Bin 0 -> 2144 bytes comp/src/gb.form.stock/gambas/128/csv.png | Bin 0 -> 275 bytes .../src/gb.form.stock/gambas/128/currency.png | Bin 0 -> 2635 bytes comp/src/gb.form.stock/gambas/128/cut.png | Bin 0 -> 1130 bytes .../src/gb.form.stock/gambas/128/database.png | Bin 0 -> 1940 bytes comp/src/gb.form.stock/gambas/128/delete.png | Bin 0 -> 2037 bytes comp/src/gb.form.stock/gambas/128/desktop.png | Bin 0 -> 213 bytes .../gb.form.stock/gambas/128/development.png | Bin 0 -> 460 bytes .../gb.form.stock/gambas/128/directory.png | Bin 0 -> 162 bytes .../src/gb.form.stock/gambas/128/download.png | Bin 0 -> 2277 bytes comp/src/gb.form.stock/gambas/128/drink.png | Bin 0 -> 559 bytes comp/src/gb.form.stock/gambas/128/earth.png | Bin 0 -> 3010 bytes comp/src/gb.form.stock/gambas/128/edit.png | Bin 0 -> 458 bytes .../gb.form.stock/gambas/128/emote-cool.png | Bin 0 -> 1967 bytes .../gb.form.stock/gambas/128/emote-crying.png | Bin 0 -> 1995 bytes .../gb.form.stock/gambas/128/emote-happy.png | Bin 0 -> 1837 bytes .../gb.form.stock/gambas/128/emote-kiss.png | Bin 0 -> 1673 bytes .../gb.form.stock/gambas/128/emote-laugh.png | Bin 0 -> 1639 bytes .../gb.form.stock/gambas/128/emote-plain.png | Bin 0 -> 1368 bytes .../gambas/128/emote-raspberry.png | Bin 0 -> 1536 bytes .../gb.form.stock/gambas/128/emote-sad.png | Bin 0 -> 1819 bytes .../gambas/128/emote-surprise.png | Bin 0 -> 1626 bytes .../gambas/128/emote-uncertain.png | Bin 0 -> 1443 bytes .../gb.form.stock/gambas/128/emote-wink.png | Bin 0 -> 1825 bytes comp/src/gb.form.stock/gambas/128/energy.png | Bin 0 -> 596 bytes comp/src/gb.form.stock/gambas/128/error.png | Bin 0 -> 1206 bytes comp/src/gb.form.stock/gambas/128/exec.png | Bin 0 -> 1603 bytes comp/src/gb.form.stock/gambas/128/factory.png | Bin 0 -> 430 bytes .../gb.form.stock/gambas/128/file-manager.png | Bin 0 -> 201 bytes comp/src/gb.form.stock/gambas/128/file.png | Bin 0 -> 218 bytes comp/src/gb.form.stock/gambas/128/find.png | Bin 0 -> 1329 bytes .../src/gb.form.stock/gambas/128/firewall.png | Bin 0 -> 1275 bytes .../gb.form.stock/gambas/128/flag-blue.png | Bin 0 -> 353 bytes .../gb.form.stock/gambas/128/flag-green.png | Bin 0 -> 348 bytes .../src/gb.form.stock/gambas/128/flag-red.png | Bin 0 -> 353 bytes .../gb.form.stock/gambas/128/flag-yellow.png | Bin 0 -> 348 bytes comp/src/gb.form.stock/gambas/128/flag.png | Bin 0 -> 342 bytes comp/src/gb.form.stock/gambas/128/floppy.png | Bin 0 -> 238 bytes comp/src/gb.form.stock/gambas/128/fog.png | Bin 0 -> 1051 bytes .../gb.form.stock/gambas/128/folder-blue.png | Bin 0 -> 162 bytes .../gambas/128/folder-document.png | Bin 0 -> 234 bytes .../gambas/128/folder-download.png | Bin 0 -> 378 bytes .../gb.form.stock/gambas/128/folder-green.png | Bin 0 -> 162 bytes .../gb.form.stock/gambas/128/folder-home.png | Bin 0 -> 336 bytes .../gb.form.stock/gambas/128/folder-image.png | Bin 0 -> 389 bytes .../gb.form.stock/gambas/128/folder-music.png | Bin 0 -> 563 bytes .../gambas/128/folder-network.png | Bin 0 -> 390 bytes .../gambas/128/folder-recent.png | Bin 0 -> 1034 bytes .../gb.form.stock/gambas/128/folder-red.png | Bin 0 -> 162 bytes .../gambas/128/folder-remote.png | Bin 0 -> 425 bytes .../gb.form.stock/gambas/128/folder-root.png | Bin 0 -> 382 bytes .../gb.form.stock/gambas/128/folder-share.png | Bin 0 -> 673 bytes .../gambas/128/folder-template.png | Bin 0 -> 740 bytes .../gb.form.stock/gambas/128/folder-video.png | Bin 0 -> 288 bytes .../gambas/128/folder-yellow.png | Bin 0 -> 162 bytes comp/src/gb.form.stock/gambas/128/font.png | Bin 0 -> 2350 bytes comp/src/gb.form.stock/gambas/128/gambas.png | Bin 0 -> 2872 bytes comp/src/gb.form.stock/gambas/128/game.png | Bin 0 -> 638 bytes comp/src/gb.form.stock/gambas/128/gnu.png | Bin 0 -> 3479 bytes comp/src/gb.form.stock/gambas/128/h.png | Bin 0 -> 657 bytes .../gambas/128/harddisk-root.png | Bin 0 -> 326 bytes .../src/gb.form.stock/gambas/128/harddisk.png | Bin 0 -> 192 bytes .../src/gb.form.stock/gambas/128/hardware.png | Bin 0 -> 212 bytes comp/src/gb.form.stock/gambas/128/headset.png | Bin 0 -> 2376 bytes comp/src/gb.form.stock/gambas/128/help.png | Bin 0 -> 2787 bytes .../gb.form.stock/gambas/128/hibernate.png | Bin 0 -> 1978 bytes comp/src/gb.form.stock/gambas/128/house.png | Bin 0 -> 331 bytes comp/src/gb.form.stock/gambas/128/html.png | Bin 0 -> 1538 bytes .../src/gb.form.stock/gambas/128/identity.png | Bin 0 -> 2830 bytes comp/src/gb.form.stock/gambas/128/image.png | Bin 0 -> 677 bytes .../gb.form.stock/gambas/128/important.png | Bin 0 -> 1339 bytes comp/src/gb.form.stock/gambas/128/info.png | Bin 0 -> 291 bytes .../src/gb.form.stock/gambas/128/internet.png | Bin 0 -> 2764 bytes comp/src/gb.form.stock/gambas/128/java.png | Bin 0 -> 602 bytes comp/src/gb.form.stock/gambas/128/js.png | Bin 0 -> 1157 bytes comp/src/gb.form.stock/gambas/128/json.png | Bin 0 -> 1165 bytes .../src/gb.form.stock/gambas/128/keyboard.png | Bin 0 -> 836 bytes comp/src/gb.form.stock/gambas/128/library.png | Bin 0 -> 276 bytes comp/src/gb.form.stock/gambas/128/linux.png | Bin 0 -> 3240 bytes .../gb.form.stock/gambas/128/lock-screen.png | Bin 0 -> 1950 bytes comp/src/gb.form.stock/gambas/128/lock.png | Bin 0 -> 873 bytes comp/src/gb.form.stock/gambas/128/logout.png | Bin 0 -> 1814 bytes comp/src/gb.form.stock/gambas/128/love.png | Bin 0 -> 1815 bytes comp/src/gb.form.stock/gambas/128/magnet.png | Bin 0 -> 1378 bytes comp/src/gb.form.stock/gambas/128/mail.png | Bin 0 -> 591 bytes comp/src/gb.form.stock/gambas/128/map.png | Bin 0 -> 2741 bytes comp/src/gb.form.stock/gambas/128/marker.png | Bin 0 -> 1529 bytes comp/src/gb.form.stock/gambas/128/md.png | Bin 0 -> 858 bytes .../gb.form.stock/gambas/128/media-player.png | Bin 0 -> 280 bytes comp/src/gb.form.stock/gambas/128/memory.png | Bin 0 -> 180 bytes comp/src/gb.form.stock/gambas/128/message.png | Bin 0 -> 2393 bytes .../gambas/128/microphone-off.png | Bin 0 -> 1501 bytes .../gb.form.stock/gambas/128/microphone.png | Bin 0 -> 1655 bytes comp/src/gb.form.stock/gambas/128/modem.png | Bin 0 -> 591 bytes comp/src/gb.form.stock/gambas/128/money.png | Bin 0 -> 1427 bytes comp/src/gb.form.stock/gambas/128/monitor.png | Bin 0 -> 1481 bytes .../gb.form.stock/gambas/128/moon-cloud.png | Bin 0 -> 1944 bytes comp/src/gb.form.stock/gambas/128/moon.png | Bin 0 -> 1341 bytes comp/src/gb.form.stock/gambas/128/mouse.png | Bin 0 -> 744 bytes .../gb.form.stock/gambas/128/multimedia.png | Bin 0 -> 824 bytes comp/src/gb.form.stock/gambas/128/network.png | Bin 0 -> 616 bytes comp/src/gb.form.stock/gambas/128/new.png | Bin 0 -> 1118 bytes comp/src/gb.form.stock/gambas/128/news.png | Bin 0 -> 482 bytes .../gb.form.stock/gambas/128/notification.png | Bin 0 -> 1915 bytes .../gb.form.stock/gambas/128/office-calc.png | Bin 0 -> 275 bytes .../gb.form.stock/gambas/128/office-draw.png | Bin 0 -> 489 bytes .../gb.form.stock/gambas/128/office-math.png | Bin 0 -> 1053 bytes .../gambas/128/office-presentation.png | Bin 0 -> 757 bytes comp/src/gb.form.stock/gambas/128/office.png | Bin 0 -> 275 bytes .../gb.form.stock/gambas/128/open-recent.png | Bin 0 -> 306 bytes comp/src/gb.form.stock/gambas/128/open.png | Bin 0 -> 402 bytes comp/src/gb.form.stock/gambas/128/options.png | Bin 0 -> 933 bytes comp/src/gb.form.stock/gambas/128/package.png | Bin 0 -> 322 bytes comp/src/gb.form.stock/gambas/128/pda.png | Bin 0 -> 393 bytes comp/src/gb.form.stock/gambas/128/pdf.png | Bin 0 -> 1709 bytes comp/src/gb.form.stock/gambas/128/pen.png | Bin 0 -> 370 bytes comp/src/gb.form.stock/gambas/128/people.png | Bin 0 -> 2839 bytes comp/src/gb.form.stock/gambas/128/phone.png | Bin 0 -> 324 bytes comp/src/gb.form.stock/gambas/128/plane.png | Bin 0 -> 1592 bytes comp/src/gb.form.stock/gambas/128/plugin.png | Bin 0 -> 647 bytes comp/src/gb.form.stock/gambas/128/preview.png | Bin 0 -> 2591 bytes comp/src/gb.form.stock/gambas/128/printer.png | Bin 0 -> 435 bytes comp/src/gb.form.stock/gambas/128/program.png | Bin 0 -> 1169 bytes .../src/gb.form.stock/gambas/128/question.png | Bin 0 -> 2195 bytes comp/src/gb.form.stock/gambas/128/quit.png | Bin 0 -> 1243 bytes comp/src/gb.form.stock/gambas/128/rain.png | Bin 0 -> 1177 bytes comp/src/gb.form.stock/gambas/128/rename.png | Bin 0 -> 380 bytes comp/src/gb.form.stock/gambas/128/restart.png | Bin 0 -> 1791 bytes .../gb.form.stock/gambas/128/restaurant.png | Bin 0 -> 1947 bytes comp/src/gb.form.stock/gambas/128/rss.png | Bin 0 -> 1826 bytes comp/src/gb.form.stock/gambas/128/scanner.png | Bin 0 -> 996 bytes comp/src/gb.form.stock/gambas/128/science.png | Bin 0 -> 1663 bytes comp/src/gb.form.stock/gambas/128/screen.png | Bin 0 -> 392 bytes comp/src/gb.form.stock/gambas/128/script.png | Bin 0 -> 1032 bytes comp/src/gb.form.stock/gambas/128/sdcard.png | Bin 0 -> 220 bytes .../src/gb.form.stock/gambas/128/security.png | Bin 0 -> 2383 bytes comp/src/gb.form.stock/gambas/128/server.png | Bin 0 -> 198 bytes comp/src/gb.form.stock/gambas/128/share.png | Bin 0 -> 991 bytes .../src/gb.form.stock/gambas/128/shopping.png | Bin 0 -> 868 bytes .../src/gb.form.stock/gambas/128/shutdown.png | Bin 0 -> 1995 bytes .../gb.form.stock/gambas/128/smartphone.png | Bin 0 -> 694 bytes comp/src/gb.form.stock/gambas/128/snow.png | Bin 0 -> 1297 bytes comp/src/gb.form.stock/gambas/128/speaker.png | Bin 0 -> 1573 bytes comp/src/gb.form.stock/gambas/128/sport.png | Bin 0 -> 3718 bytes comp/src/gb.form.stock/gambas/128/star.png | Bin 0 -> 2035 bytes .../gb.form.stock/gambas/128/statistics.png | Bin 0 -> 767 bytes comp/src/gb.form.stock/gambas/128/storm.png | Bin 0 -> 1688 bytes .../gb.form.stock/gambas/128/sun-cloud.png | Bin 0 -> 1718 bytes comp/src/gb.form.stock/gambas/128/sun.png | Bin 0 -> 1000 bytes comp/src/gb.form.stock/gambas/128/suspend.png | Bin 0 -> 1424 bytes .../gb.form.stock/gambas/128/switch-user.png | Bin 0 -> 1873 bytes comp/src/gb.form.stock/gambas/128/system.png | Bin 0 -> 917 bytes comp/src/gb.form.stock/gambas/128/table.png | Bin 0 -> 205 bytes comp/src/gb.form.stock/gambas/128/tablet.png | Bin 0 -> 843 bytes comp/src/gb.form.stock/gambas/128/tag.png | Bin 0 -> 690 bytes comp/src/gb.form.stock/gambas/128/taxi.png | Bin 0 -> 849 bytes .../src/gb.form.stock/gambas/128/template.png | Bin 0 -> 551 bytes .../src/gb.form.stock/gambas/128/terminal.png | Bin 0 -> 398 bytes comp/src/gb.form.stock/gambas/128/text.png | Bin 0 -> 259 bytes comp/src/gb.form.stock/gambas/128/theme.png | Bin 0 -> 219 bytes comp/src/gb.form.stock/gambas/128/toilet.png | Bin 0 -> 1771 bytes comp/src/gb.form.stock/gambas/128/tools.png | Bin 0 -> 1026 bytes comp/src/gb.form.stock/gambas/128/town.png | Bin 0 -> 468 bytes comp/src/gb.form.stock/gambas/128/traffic.png | Bin 0 -> 1242 bytes comp/src/gb.form.stock/gambas/128/train.png | Bin 0 -> 1289 bytes .../gb.form.stock/gambas/128/trash-full.png | Bin 0 -> 657 bytes comp/src/gb.form.stock/gambas/128/trash.png | Bin 0 -> 434 bytes comp/src/gb.form.stock/gambas/128/truck.png | Bin 0 -> 722 bytes comp/src/gb.form.stock/gambas/128/unlock.png | Bin 0 -> 858 bytes comp/src/gb.form.stock/gambas/128/update.png | Bin 0 -> 1343 bytes comp/src/gb.form.stock/gambas/128/upload.png | Bin 0 -> 2212 bytes comp/src/gb.form.stock/gambas/128/usb.png | Bin 0 -> 754 bytes .../gb.form.stock/gambas/128/user-group.png | Bin 0 -> 2649 bytes comp/src/gb.form.stock/gambas/128/user.png | Bin 0 -> 1785 bytes comp/src/gb.form.stock/gambas/128/vector.png | Bin 0 -> 847 bytes comp/src/gb.form.stock/gambas/128/video.png | Bin 0 -> 315 bytes comp/src/gb.form.stock/gambas/128/vpn.png | Bin 0 -> 874 bytes comp/src/gb.form.stock/gambas/128/walk.png | Bin 0 -> 2967 bytes comp/src/gb.form.stock/gambas/128/warning.png | Bin 0 -> 804 bytes comp/src/gb.form.stock/gambas/128/webcam.png | Bin 0 -> 2032 bytes comp/src/gb.form.stock/gambas/128/window.png | Bin 0 -> 205 bytes comp/src/gb.form.stock/gambas/128/windows.png | Bin 0 -> 4598 bytes comp/src/gb.form.stock/gambas/128/wizard.png | Bin 0 -> 571 bytes comp/src/gb.form.stock/gambas/128/worship.png | Bin 0 -> 608 bytes comp/src/gb.form.stock/gambas/128/xml.png | Bin 0 -> 1537 bytes comp/src/gb.form.stock/gambas/32/access.png | Bin 0 -> 189 bytes comp/src/gb.form.stock/gambas/32/add.png | Bin 0 -> 135 bytes comp/src/gb.form.stock/gambas/32/added.png | Bin 0 -> 459 bytes .../gb.form.stock/gambas/32/administrator.png | Bin 0 -> 587 bytes comp/src/gb.form.stock/gambas/32/agenda.png | Bin 0 -> 185 bytes comp/src/gb.form.stock/gambas/32/alarm.png | Bin 0 -> 603 bytes .../gb.form.stock/gambas/32/align-bottom.png | Bin 0 -> 136 bytes .../gb.form.stock/gambas/32/align-center.png | Bin 0 -> 140 bytes .../gb.form.stock/gambas/32/align-height.png | Bin 0 -> 134 bytes .../gb.form.stock/gambas/32/align-left.png | Bin 0 -> 141 bytes .../gb.form.stock/gambas/32/align-middle.png | Bin 0 -> 138 bytes .../gb.form.stock/gambas/32/align-right.png | Bin 0 -> 140 bytes .../src/gb.form.stock/gambas/32/align-top.png | Bin 0 -> 138 bytes .../gb.form.stock/gambas/32/align-width.png | Bin 0 -> 141 bytes comp/src/gb.form.stock/gambas/32/anchor.png | Bin 0 -> 632 bytes comp/src/gb.form.stock/gambas/32/android.png | Bin 0 -> 588 bytes .../gb.form.stock/gambas/32/application.png | Bin 0 -> 152 bytes comp/src/gb.form.stock/gambas/32/apply.png | Bin 0 -> 207 bytes comp/src/gb.form.stock/gambas/32/archive.png | Bin 0 -> 181 bytes comp/src/gb.form.stock/gambas/32/attach.png | Bin 0 -> 751 bytes comp/src/gb.form.stock/gambas/32/audio.png | Bin 0 -> 670 bytes comp/src/gb.form.stock/gambas/32/average.png | Bin 0 -> 608 bytes .../gb.form.stock/gambas/32/battery-high.png | Bin 0 -> 156 bytes .../gb.form.stock/gambas/32/battery-low.png | Bin 0 -> 155 bytes .../gambas/32/battery-medium.png | Bin 0 -> 156 bytes comp/src/gb.form.stock/gambas/32/battery.png | Bin 0 -> 252 bytes comp/src/gb.form.stock/gambas/32/bicycle.png | Bin 0 -> 504 bytes comp/src/gb.form.stock/gambas/32/blue.png | Bin 0 -> 345 bytes .../gb.form.stock/gambas/32/bluetooth-off.png | Bin 0 -> 320 bytes .../src/gb.form.stock/gambas/32/bluetooth.png | Bin 0 -> 243 bytes comp/src/gb.form.stock/gambas/32/blur.png | Bin 0 -> 1699 bytes comp/src/gb.form.stock/gambas/32/book.png | Bin 0 -> 189 bytes comp/src/gb.form.stock/gambas/32/bookmark.png | Bin 0 -> 273 bytes .../gb.form.stock/gambas/32/border-bottom.png | Bin 0 -> 153 bytes .../gb.form.stock/gambas/32/border-diag.png | Bin 0 -> 315 bytes .../gambas/32/border-horizontal.png | Bin 0 -> 153 bytes .../gb.form.stock/gambas/32/border-inside.png | Bin 0 -> 153 bytes .../gb.form.stock/gambas/32/border-left.png | Bin 0 -> 146 bytes .../gb.form.stock/gambas/32/border-none.png | Bin 0 -> 143 bytes .../gambas/32/border-outside.png | Bin 0 -> 153 bytes .../gambas/32/border-rev-diag.png | Bin 0 -> 311 bytes .../gb.form.stock/gambas/32/border-right.png | Bin 0 -> 146 bytes .../gb.form.stock/gambas/32/border-top.png | Bin 0 -> 153 bytes .../gambas/32/border-vertical.png | Bin 0 -> 156 bytes comp/src/gb.form.stock/gambas/32/border.png | Bin 0 -> 143 bytes comp/src/gb.form.stock/gambas/32/bottom.png | Bin 0 -> 233 bytes .../gb.form.stock/gambas/32/brightness.png | Bin 0 -> 353 bytes comp/src/gb.form.stock/gambas/32/brush.png | Bin 0 -> 334 bytes comp/src/gb.form.stock/gambas/32/bus.png | Bin 0 -> 358 bytes comp/src/gb.form.stock/gambas/32/c.png | Bin 0 -> 475 bytes comp/src/gb.form.stock/gambas/32/cake.png | Bin 0 -> 380 bytes .../gb.form.stock/gambas/32/calculator.png | Bin 0 -> 173 bytes comp/src/gb.form.stock/gambas/32/calendar.png | Bin 0 -> 214 bytes .../src/gb.form.stock/gambas/32/call-stop.png | Bin 0 -> 337 bytes comp/src/gb.form.stock/gambas/32/call.png | Bin 0 -> 602 bytes comp/src/gb.form.stock/gambas/32/camera.png | Bin 0 -> 249 bytes comp/src/gb.form.stock/gambas/32/cancel.png | Bin 0 -> 305 bytes comp/src/gb.form.stock/gambas/32/cap-butt.png | Bin 0 -> 136 bytes .../src/gb.form.stock/gambas/32/cap-round.png | Bin 0 -> 328 bytes .../gb.form.stock/gambas/32/cap-square.png | Bin 0 -> 134 bytes comp/src/gb.form.stock/gambas/32/car.png | Bin 0 -> 327 bytes comp/src/gb.form.stock/gambas/32/cdrom.png | Bin 0 -> 408 bytes .../gb.form.stock/gambas/32/chart-line.png | Bin 0 -> 409 bytes .../src/gb.form.stock/gambas/32/chart-pie.png | Bin 0 -> 1036 bytes comp/src/gb.form.stock/gambas/32/chart.png | Bin 0 -> 171 bytes comp/src/gb.form.stock/gambas/32/chat.png | Bin 0 -> 565 bytes comp/src/gb.form.stock/gambas/32/cherry.png | Bin 0 -> 791 bytes comp/src/gb.form.stock/gambas/32/city.png | Bin 0 -> 223 bytes comp/src/gb.form.stock/gambas/32/clear.png | Bin 0 -> 317 bytes comp/src/gb.form.stock/gambas/32/clock.png | Bin 0 -> 453 bytes comp/src/gb.form.stock/gambas/32/clone.png | Bin 0 -> 231 bytes comp/src/gb.form.stock/gambas/32/close.png | Bin 0 -> 281 bytes comp/src/gb.form.stock/gambas/32/cloud.png | Bin 0 -> 475 bytes .../gb.form.stock/gambas/32/color-picker.png | Bin 0 -> 266 bytes comp/src/gb.form.stock/gambas/32/color.png | Bin 0 -> 284 bytes .../gb.form.stock/gambas/32/column-after.png | Bin 0 -> 325 bytes .../gb.form.stock/gambas/32/column-before.png | Bin 0 -> 305 bytes .../gb.form.stock/gambas/32/column-remove.png | Bin 0 -> 351 bytes comp/src/gb.form.stock/gambas/32/compass.png | Bin 0 -> 649 bytes .../src/gb.form.stock/gambas/32/component.png | Bin 0 -> 144 bytes comp/src/gb.form.stock/gambas/32/compress.png | Bin 0 -> 337 bytes comp/src/gb.form.stock/gambas/32/computer.png | Bin 0 -> 318 bytes comp/src/gb.form.stock/gambas/32/conflict.png | Bin 0 -> 533 bytes comp/src/gb.form.stock/gambas/32/connect.png | Bin 0 -> 262 bytes comp/src/gb.form.stock/gambas/32/contrast.png | Bin 0 -> 430 bytes comp/src/gb.form.stock/gambas/32/cookie.png | Bin 0 -> 489 bytes comp/src/gb.form.stock/gambas/32/copy.png | Bin 0 -> 160 bytes comp/src/gb.form.stock/gambas/32/cpp.png | Bin 0 -> 459 bytes comp/src/gb.form.stock/gambas/32/cpu.png | Bin 0 -> 165 bytes comp/src/gb.form.stock/gambas/32/crop.png | Bin 0 -> 154 bytes comp/src/gb.form.stock/gambas/32/css.png | Bin 0 -> 724 bytes comp/src/gb.form.stock/gambas/32/csv.png | Bin 0 -> 190 bytes comp/src/gb.form.stock/gambas/32/currency.png | Bin 0 -> 721 bytes comp/src/gb.form.stock/gambas/32/cut.png | Bin 0 -> 350 bytes comp/src/gb.form.stock/gambas/32/database.png | Bin 0 -> 659 bytes .../gb.form.stock/gambas/32/debug-cursor.png | Bin 0 -> 240 bytes .../gb.form.stock/gambas/32/debug-into.png | Bin 0 -> 181 bytes .../src/gb.form.stock/gambas/32/debug-out.png | Bin 0 -> 182 bytes .../gb.form.stock/gambas/32/debug-over.png | Bin 0 -> 197 bytes comp/src/gb.form.stock/gambas/32/delete.png | Bin 0 -> 531 bytes comp/src/gb.form.stock/gambas/32/desktop.png | Bin 0 -> 174 bytes .../gb.form.stock/gambas/32/development.png | Bin 0 -> 241 bytes .../gb.form.stock/gambas/32/difference.png | Bin 0 -> 173 bytes .../src/gb.form.stock/gambas/32/directory.png | Bin 0 -> 151 bytes .../gb.form.stock/gambas/32/disconnect.png | Bin 0 -> 298 bytes comp/src/gb.form.stock/gambas/32/down.png | Bin 0 -> 219 bytes comp/src/gb.form.stock/gambas/32/download.png | Bin 0 -> 623 bytes .../gb.form.stock/gambas/32/draw-arrow.png | Bin 0 -> 343 bytes .../gb.form.stock/gambas/32/draw-circle.png | Bin 0 -> 458 bytes .../src/gb.form.stock/gambas/32/draw-line.png | Bin 0 -> 173 bytes .../src/gb.form.stock/gambas/32/draw-path.png | Bin 0 -> 391 bytes .../gb.form.stock/gambas/32/draw-polygon.png | Bin 0 -> 748 bytes .../gambas/32/draw-rectangle.png | Bin 0 -> 136 bytes .../gb.form.stock/gambas/32/draw-round.png | Bin 0 -> 321 bytes .../src/gb.form.stock/gambas/32/draw-star.png | Bin 0 -> 816 bytes .../src/gb.form.stock/gambas/32/draw-text.png | Bin 0 -> 266 bytes comp/src/gb.form.stock/gambas/32/drink.png | Bin 0 -> 256 bytes comp/src/gb.form.stock/gambas/32/earth.png | Bin 0 -> 919 bytes comp/src/gb.form.stock/gambas/32/edit.png | Bin 0 -> 247 bytes comp/src/gb.form.stock/gambas/32/eject.png | Bin 0 -> 190 bytes .../gb.form.stock/gambas/32/emote-cool.png | Bin 0 -> 469 bytes .../gb.form.stock/gambas/32/emote-crying.png | Bin 0 -> 471 bytes .../gb.form.stock/gambas/32/emote-happy.png | Bin 0 -> 438 bytes .../gb.form.stock/gambas/32/emote-kiss.png | Bin 0 -> 411 bytes .../gb.form.stock/gambas/32/emote-laugh.png | Bin 0 -> 405 bytes .../gb.form.stock/gambas/32/emote-plain.png | Bin 0 -> 358 bytes .../gambas/32/emote-raspberry.png | Bin 0 -> 388 bytes .../src/gb.form.stock/gambas/32/emote-sad.png | Bin 0 -> 439 bytes .../gambas/32/emote-surprise.png | Bin 0 -> 398 bytes .../gambas/32/emote-uncertain.png | Bin 0 -> 388 bytes .../gb.form.stock/gambas/32/emote-wink.png | Bin 0 -> 438 bytes .../gb.form.stock/gambas/32/end-of-line.png | Bin 0 -> 186 bytes comp/src/gb.form.stock/gambas/32/end.png | Bin 0 -> 181 bytes comp/src/gb.form.stock/gambas/32/energy.png | Bin 0 -> 313 bytes comp/src/gb.form.stock/gambas/32/erase.png | Bin 0 -> 229 bytes comp/src/gb.form.stock/gambas/32/error.png | Bin 0 -> 349 bytes .../src/gb.form.stock/gambas/32/exclusive.png | Bin 0 -> 156 bytes comp/src/gb.form.stock/gambas/32/exec.png | Bin 0 -> 442 bytes comp/src/gb.form.stock/gambas/32/export.png | Bin 0 -> 203 bytes comp/src/gb.form.stock/gambas/32/factory.png | Bin 0 -> 246 bytes .../gb.form.stock/gambas/32/file-manager.png | Bin 0 -> 168 bytes comp/src/gb.form.stock/gambas/32/file.png | Bin 0 -> 163 bytes comp/src/gb.form.stock/gambas/32/fill.png | Bin 0 -> 434 bytes comp/src/gb.form.stock/gambas/32/filter.png | Bin 0 -> 189 bytes comp/src/gb.form.stock/gambas/32/find.png | Bin 0 -> 402 bytes comp/src/gb.form.stock/gambas/32/firewall.png | Bin 0 -> 396 bytes comp/src/gb.form.stock/gambas/32/first.png | Bin 0 -> 214 bytes .../src/gb.form.stock/gambas/32/flag-blue.png | Bin 0 -> 197 bytes .../gb.form.stock/gambas/32/flag-green.png | Bin 0 -> 197 bytes comp/src/gb.form.stock/gambas/32/flag-red.png | Bin 0 -> 197 bytes .../gb.form.stock/gambas/32/flag-yellow.png | Bin 0 -> 202 bytes comp/src/gb.form.stock/gambas/32/flag.png | Bin 0 -> 197 bytes comp/src/gb.form.stock/gambas/32/flip-h.png | Bin 0 -> 198 bytes comp/src/gb.form.stock/gambas/32/flip-v.png | Bin 0 -> 226 bytes comp/src/gb.form.stock/gambas/32/floppy.png | Bin 0 -> 184 bytes comp/src/gb.form.stock/gambas/32/fog.png | Bin 0 -> 339 bytes .../gb.form.stock/gambas/32/folder-blue.png | Bin 0 -> 143 bytes .../gambas/32/folder-document.png | Bin 0 -> 174 bytes .../gambas/32/folder-download.png | Bin 0 -> 210 bytes .../gb.form.stock/gambas/32/folder-green.png | Bin 0 -> 143 bytes .../gb.form.stock/gambas/32/folder-home.png | Bin 0 -> 200 bytes .../gb.form.stock/gambas/32/folder-image.png | Bin 0 -> 208 bytes .../gb.form.stock/gambas/32/folder-music.png | Bin 0 -> 252 bytes .../gambas/32/folder-network.png | Bin 0 -> 223 bytes .../gb.form.stock/gambas/32/folder-recent.png | Bin 0 -> 305 bytes .../gb.form.stock/gambas/32/folder-red.png | Bin 0 -> 143 bytes .../gb.form.stock/gambas/32/folder-remote.png | Bin 0 -> 200 bytes .../gb.form.stock/gambas/32/folder-root.png | Bin 0 -> 211 bytes .../gb.form.stock/gambas/32/folder-share.png | Bin 0 -> 311 bytes .../gambas/32/folder-template.png | Bin 0 -> 327 bytes .../gb.form.stock/gambas/32/folder-video.png | Bin 0 -> 229 bytes .../gb.form.stock/gambas/32/folder-yellow.png | Bin 0 -> 143 bytes comp/src/gb.form.stock/gambas/32/font.png | Bin 0 -> 834 bytes comp/src/gb.form.stock/gambas/32/formula.png | Bin 0 -> 848 bytes comp/src/gb.form.stock/gambas/32/forward.png | Bin 0 -> 205 bytes .../gb.form.stock/gambas/32/fullscreen.png | Bin 0 -> 159 bytes comp/src/gb.form.stock/gambas/32/gambas.png | Bin 0 -> 946 bytes comp/src/gb.form.stock/gambas/32/game.png | Bin 0 -> 226 bytes comp/src/gb.form.stock/gambas/32/gamma.png | Bin 0 -> 373 bytes comp/src/gb.form.stock/gambas/32/gnu.png | Bin 0 -> 1309 bytes comp/src/gb.form.stock/gambas/32/gradient.png | Bin 0 -> 278 bytes comp/src/gb.form.stock/gambas/32/green.png | Bin 0 -> 345 bytes comp/src/gb.form.stock/gambas/32/grid.png | Bin 0 -> 154 bytes comp/src/gb.form.stock/gambas/32/group.png | Bin 0 -> 311 bytes comp/src/gb.form.stock/gambas/32/h.png | Bin 0 -> 311 bytes comp/src/gb.form.stock/gambas/32/halt.png | Bin 0 -> 409 bytes .../gb.form.stock/gambas/32/harddisk-root.png | Bin 0 -> 199 bytes comp/src/gb.form.stock/gambas/32/harddisk.png | Bin 0 -> 160 bytes comp/src/gb.form.stock/gambas/32/hardware.png | Bin 0 -> 172 bytes comp/src/gb.form.stock/gambas/32/hatch.png | Bin 0 -> 206 bytes comp/src/gb.form.stock/gambas/32/headset.png | Bin 0 -> 666 bytes comp/src/gb.form.stock/gambas/32/help.png | Bin 0 -> 702 bytes .../src/gb.form.stock/gambas/32/hibernate.png | Bin 0 -> 571 bytes .../src/gb.form.stock/gambas/32/highlight.png | Bin 0 -> 230 bytes comp/src/gb.form.stock/gambas/32/home.png | Bin 0 -> 217 bytes comp/src/gb.form.stock/gambas/32/house.png | Bin 0 -> 189 bytes comp/src/gb.form.stock/gambas/32/html.png | Bin 0 -> 443 bytes comp/src/gb.form.stock/gambas/32/hue.png | Bin 0 -> 459 bytes comp/src/gb.form.stock/gambas/32/identity.png | Bin 0 -> 673 bytes comp/src/gb.form.stock/gambas/32/image.png | Bin 0 -> 249 bytes comp/src/gb.form.stock/gambas/32/import.png | Bin 0 -> 206 bytes .../src/gb.form.stock/gambas/32/important.png | Bin 0 -> 368 bytes comp/src/gb.form.stock/gambas/32/indent.png | Bin 0 -> 191 bytes comp/src/gb.form.stock/gambas/32/info.png | Bin 0 -> 165 bytes .../gb.form.stock/gambas/32/inheritance.png | Bin 0 -> 220 bytes .../gb.form.stock/gambas/32/insert-image.png | Bin 0 -> 433 bytes .../gb.form.stock/gambas/32/insert-link.png | Bin 0 -> 633 bytes .../gb.form.stock/gambas/32/insert-table.png | Bin 0 -> 382 bytes .../gb.form.stock/gambas/32/insert-text.png | Bin 0 -> 354 bytes comp/src/gb.form.stock/gambas/32/internet.png | Bin 0 -> 1159 bytes .../gb.form.stock/gambas/32/intersection.png | Bin 0 -> 164 bytes comp/src/gb.form.stock/gambas/32/invert.png | Bin 0 -> 243 bytes comp/src/gb.form.stock/gambas/32/java.png | Bin 0 -> 238 bytes .../gb.form.stock/gambas/32/join-bevel.png | Bin 0 -> 176 bytes .../gb.form.stock/gambas/32/join-miter.png | Bin 0 -> 135 bytes .../gb.form.stock/gambas/32/join-round.png | Bin 0 -> 417 bytes comp/src/gb.form.stock/gambas/32/js.png | Bin 0 -> 432 bytes comp/src/gb.form.stock/gambas/32/json.png | Bin 0 -> 441 bytes comp/src/gb.form.stock/gambas/32/jump.png | Bin 0 -> 212 bytes comp/src/gb.form.stock/gambas/32/key.png | Bin 0 -> 342 bytes comp/src/gb.form.stock/gambas/32/keyboard.png | Bin 0 -> 289 bytes comp/src/gb.form.stock/gambas/32/lamp.png | Bin 0 -> 341 bytes comp/src/gb.form.stock/gambas/32/language.png | Bin 0 -> 387 bytes comp/src/gb.form.stock/gambas/32/last.png | Bin 0 -> 212 bytes comp/src/gb.form.stock/gambas/32/layer.png | Bin 0 -> 506 bytes comp/src/gb.form.stock/gambas/32/layout.png | Bin 0 -> 384 bytes comp/src/gb.form.stock/gambas/32/left.png | Bin 0 -> 183 bytes comp/src/gb.form.stock/gambas/32/library.png | Bin 0 -> 195 bytes .../src/gb.form.stock/gambas/32/lightness.png | Bin 0 -> 391 bytes .../gb.form.stock/gambas/32/line-style.png | Bin 0 -> 142 bytes .../gb.form.stock/gambas/32/line-width.png | Bin 0 -> 135 bytes comp/src/gb.form.stock/gambas/32/link.png | Bin 0 -> 489 bytes comp/src/gb.form.stock/gambas/32/linux.png | Bin 0 -> 1446 bytes .../gb.form.stock/gambas/32/lock-screen.png | Bin 0 -> 491 bytes comp/src/gb.form.stock/gambas/32/lock.png | Bin 0 -> 266 bytes comp/src/gb.form.stock/gambas/32/logout.png | Bin 0 -> 448 bytes comp/src/gb.form.stock/gambas/32/love.png | Bin 0 -> 623 bytes comp/src/gb.form.stock/gambas/32/lower.png | Bin 0 -> 145 bytes comp/src/gb.form.stock/gambas/32/magnet.png | Bin 0 -> 431 bytes comp/src/gb.form.stock/gambas/32/mail.png | Bin 0 -> 282 bytes comp/src/gb.form.stock/gambas/32/make-all.png | Bin 0 -> 248 bytes comp/src/gb.form.stock/gambas/32/make.png | Bin 0 -> 252 bytes comp/src/gb.form.stock/gambas/32/map.png | Bin 0 -> 632 bytes comp/src/gb.form.stock/gambas/32/marker.png | Bin 0 -> 494 bytes comp/src/gb.form.stock/gambas/32/math.png | Bin 0 -> 861 bytes comp/src/gb.form.stock/gambas/32/md.png | Bin 0 -> 376 bytes .../gb.form.stock/gambas/32/media-player.png | Bin 0 -> 179 bytes comp/src/gb.form.stock/gambas/32/memory.png | Bin 0 -> 161 bytes comp/src/gb.form.stock/gambas/32/menu.png | Bin 0 -> 131 bytes comp/src/gb.form.stock/gambas/32/message.png | Bin 0 -> 673 bytes .../gambas/32/microphone-off.png | Bin 0 -> 446 bytes .../gb.form.stock/gambas/32/microphone.png | Bin 0 -> 448 bytes comp/src/gb.form.stock/gambas/32/modem.png | Bin 0 -> 214 bytes comp/src/gb.form.stock/gambas/32/modified.png | Bin 0 -> 524 bytes comp/src/gb.form.stock/gambas/32/money.png | Bin 0 -> 410 bytes comp/src/gb.form.stock/gambas/32/monitor.png | Bin 0 -> 517 bytes .../gb.form.stock/gambas/32/moon-cloud.png | Bin 0 -> 551 bytes comp/src/gb.form.stock/gambas/32/moon.png | Bin 0 -> 376 bytes comp/src/gb.form.stock/gambas/32/more-h.png | Bin 0 -> 148 bytes comp/src/gb.form.stock/gambas/32/more.png | Bin 0 -> 143 bytes comp/src/gb.form.stock/gambas/32/mount.png | Bin 0 -> 185 bytes comp/src/gb.form.stock/gambas/32/mouse.png | Bin 0 -> 273 bytes comp/src/gb.form.stock/gambas/32/move.png | Bin 0 -> 323 bytes .../gb.form.stock/gambas/32/multimedia.png | Bin 0 -> 268 bytes comp/src/gb.form.stock/gambas/32/muted.png | Bin 0 -> 306 bytes comp/src/gb.form.stock/gambas/32/network.png | Bin 0 -> 230 bytes .../gambas/32/new-appointment.png | Bin 0 -> 636 bytes comp/src/gb.form.stock/gambas/32/new-dir.png | Bin 0 -> 348 bytes comp/src/gb.form.stock/gambas/32/new-mail.png | Bin 0 -> 464 bytes comp/src/gb.form.stock/gambas/32/new-tab.png | Bin 0 -> 358 bytes comp/src/gb.form.stock/gambas/32/new-tag.png | Bin 0 -> 422 bytes comp/src/gb.form.stock/gambas/32/new-user.png | Bin 0 -> 628 bytes .../gb.form.stock/gambas/32/new-window.png | Bin 0 -> 364 bytes comp/src/gb.form.stock/gambas/32/new.png | Bin 0 -> 350 bytes comp/src/gb.form.stock/gambas/32/news.png | Bin 0 -> 205 bytes comp/src/gb.form.stock/gambas/32/next.png | Bin 0 -> 194 bytes .../gb.form.stock/gambas/32/notification.png | Bin 0 -> 511 bytes .../gb.form.stock/gambas/32/office-calc.png | Bin 0 -> 190 bytes .../gb.form.stock/gambas/32/office-draw.png | Bin 0 -> 237 bytes .../gb.form.stock/gambas/32/office-math.png | Bin 0 -> 460 bytes .../gambas/32/office-presentation.png | Bin 0 -> 268 bytes comp/src/gb.form.stock/gambas/32/office.png | Bin 0 -> 191 bytes comp/src/gb.form.stock/gambas/32/ok.png | Bin 0 -> 207 bytes comp/src/gb.form.stock/gambas/32/opacity.png | Bin 0 -> 450 bytes .../src/gb.form.stock/gambas/32/open-link.png | Bin 0 -> 298 bytes .../gb.form.stock/gambas/32/open-recent.png | Bin 0 -> 164 bytes comp/src/gb.form.stock/gambas/32/open.png | Bin 0 -> 215 bytes comp/src/gb.form.stock/gambas/32/options.png | Bin 0 -> 351 bytes comp/src/gb.form.stock/gambas/32/package.png | Bin 0 -> 200 bytes .../gb.form.stock/gambas/32/page-break.png | Bin 0 -> 178 bytes comp/src/gb.form.stock/gambas/32/page-two.png | Bin 0 -> 182 bytes comp/src/gb.form.stock/gambas/32/page.png | Bin 0 -> 164 bytes .../src/gb.form.stock/gambas/32/paragraph.png | Bin 0 -> 204 bytes .../gb.form.stock/gambas/32/paste-special.png | Bin 0 -> 309 bytes comp/src/gb.form.stock/gambas/32/paste.png | Bin 0 -> 149 bytes comp/src/gb.form.stock/gambas/32/pause.png | Bin 0 -> 137 bytes comp/src/gb.form.stock/gambas/32/pda.png | Bin 0 -> 211 bytes comp/src/gb.form.stock/gambas/32/pdf.png | Bin 0 -> 635 bytes comp/src/gb.form.stock/gambas/32/pen.png | Bin 0 -> 201 bytes comp/src/gb.form.stock/gambas/32/people.png | Bin 0 -> 1207 bytes comp/src/gb.form.stock/gambas/32/percent.png | Bin 0 -> 947 bytes comp/src/gb.form.stock/gambas/32/phone.png | Bin 0 -> 193 bytes comp/src/gb.form.stock/gambas/32/pin.png | Bin 0 -> 709 bytes comp/src/gb.form.stock/gambas/32/plane.png | Bin 0 -> 625 bytes comp/src/gb.form.stock/gambas/32/play.png | Bin 0 -> 183 bytes comp/src/gb.form.stock/gambas/32/plugin.png | Bin 0 -> 253 bytes comp/src/gb.form.stock/gambas/32/pointer.png | Bin 0 -> 649 bytes comp/src/gb.form.stock/gambas/32/preview.png | Bin 0 -> 627 bytes comp/src/gb.form.stock/gambas/32/previous.png | Bin 0 -> 201 bytes comp/src/gb.form.stock/gambas/32/print.png | Bin 0 -> 173 bytes comp/src/gb.form.stock/gambas/32/printer.png | Bin 0 -> 213 bytes comp/src/gb.form.stock/gambas/32/program.png | Bin 0 -> 375 bytes .../gb.form.stock/gambas/32/properties.png | Bin 0 -> 143 bytes comp/src/gb.form.stock/gambas/32/question.png | Bin 0 -> 610 bytes comp/src/gb.form.stock/gambas/32/quit.png | Bin 0 -> 374 bytes comp/src/gb.form.stock/gambas/32/quote.png | Bin 0 -> 210 bytes comp/src/gb.form.stock/gambas/32/rain.png | Bin 0 -> 384 bytes comp/src/gb.form.stock/gambas/32/raise.png | Bin 0 -> 158 bytes comp/src/gb.form.stock/gambas/32/record.png | Bin 0 -> 321 bytes comp/src/gb.form.stock/gambas/32/red.png | Bin 0 -> 345 bytes comp/src/gb.form.stock/gambas/32/redo.png | Bin 0 -> 311 bytes comp/src/gb.form.stock/gambas/32/refresh.png | Bin 0 -> 440 bytes comp/src/gb.form.stock/gambas/32/remove.png | Bin 0 -> 129 bytes comp/src/gb.form.stock/gambas/32/rename.png | Bin 0 -> 211 bytes comp/src/gb.form.stock/gambas/32/repeat.png | Bin 0 -> 264 bytes comp/src/gb.form.stock/gambas/32/replace.png | Bin 0 -> 400 bytes .../src/gb.form.stock/gambas/32/reply-all.png | Bin 0 -> 336 bytes comp/src/gb.form.stock/gambas/32/reply.png | Bin 0 -> 321 bytes comp/src/gb.form.stock/gambas/32/resize.png | Bin 0 -> 151 bytes comp/src/gb.form.stock/gambas/32/restart.png | Bin 0 -> 468 bytes .../gb.form.stock/gambas/32/restaurant.png | Bin 0 -> 724 bytes comp/src/gb.form.stock/gambas/32/revert.png | Bin 0 -> 243 bytes comp/src/gb.form.stock/gambas/32/rewind.png | Bin 0 -> 203 bytes comp/src/gb.form.stock/gambas/32/right.png | Bin 0 -> 184 bytes .../gb.form.stock/gambas/32/rotate-left.png | Bin 0 -> 200 bytes .../gb.form.stock/gambas/32/rotate-right.png | Bin 0 -> 201 bytes comp/src/gb.form.stock/gambas/32/rotate.png | Bin 0 -> 380 bytes .../src/gb.form.stock/gambas/32/row-after.png | Bin 0 -> 327 bytes .../gb.form.stock/gambas/32/row-before.png | Bin 0 -> 304 bytes .../gb.form.stock/gambas/32/row-remove.png | Bin 0 -> 351 bytes comp/src/gb.form.stock/gambas/32/rss.png | Bin 0 -> 576 bytes .../gb.form.stock/gambas/32/saturation.png | Bin 0 -> 446 bytes comp/src/gb.form.stock/gambas/32/save-as.png | Bin 0 -> 222 bytes comp/src/gb.form.stock/gambas/32/save.png | Bin 0 -> 213 bytes comp/src/gb.form.stock/gambas/32/scanner.png | Bin 0 -> 520 bytes comp/src/gb.form.stock/gambas/32/science.png | Bin 0 -> 439 bytes comp/src/gb.form.stock/gambas/32/screen.png | Bin 0 -> 233 bytes comp/src/gb.form.stock/gambas/32/script.png | Bin 0 -> 449 bytes comp/src/gb.form.stock/gambas/32/sdcard.png | Bin 0 -> 173 bytes .../gb.form.stock/gambas/32/security-high.png | Bin 0 -> 808 bytes .../gb.form.stock/gambas/32/security-low.png | Bin 0 -> 682 bytes .../gambas/32/security-medium.png | Bin 0 -> 780 bytes comp/src/gb.form.stock/gambas/32/security.png | Bin 0 -> 665 bytes .../gb.form.stock/gambas/32/select-all.png | Bin 0 -> 217 bytes comp/src/gb.form.stock/gambas/32/select.png | Bin 0 -> 198 bytes comp/src/gb.form.stock/gambas/32/server.png | Bin 0 -> 165 bytes comp/src/gb.form.stock/gambas/32/share.png | Bin 0 -> 288 bytes comp/src/gb.form.stock/gambas/32/shopping.png | Bin 0 -> 352 bytes comp/src/gb.form.stock/gambas/32/shortcut.png | Bin 0 -> 576 bytes comp/src/gb.form.stock/gambas/32/shuffle.png | Bin 0 -> 485 bytes comp/src/gb.form.stock/gambas/32/shutdown.png | Bin 0 -> 493 bytes .../gb.form.stock/gambas/32/smartphone.png | Bin 0 -> 299 bytes comp/src/gb.form.stock/gambas/32/snow.png | Bin 0 -> 377 bytes .../gb.form.stock/gambas/32/sort-ascent.png | Bin 0 -> 249 bytes .../gb.form.stock/gambas/32/sort-descent.png | Bin 0 -> 256 bytes comp/src/gb.form.stock/gambas/32/speaker.png | Bin 0 -> 429 bytes .../gb.form.stock/gambas/32/spell-check.png | Bin 0 -> 794 bytes comp/src/gb.form.stock/gambas/32/sport.png | Bin 0 -> 984 bytes comp/src/gb.form.stock/gambas/32/star.png | Bin 0 -> 592 bytes comp/src/gb.form.stock/gambas/32/start.png | Bin 0 -> 185 bytes .../gb.form.stock/gambas/32/statistics.png | Bin 0 -> 324 bytes comp/src/gb.form.stock/gambas/32/stop.png | Bin 0 -> 137 bytes comp/src/gb.form.stock/gambas/32/storm.png | Bin 0 -> 479 bytes comp/src/gb.form.stock/gambas/32/subtitle.png | Bin 0 -> 166 bytes comp/src/gb.form.stock/gambas/32/sum.png | Bin 0 -> 549 bytes .../src/gb.form.stock/gambas/32/sun-cloud.png | Bin 0 -> 523 bytes comp/src/gb.form.stock/gambas/32/sun.png | Bin 0 -> 331 bytes comp/src/gb.form.stock/gambas/32/suspend.png | Bin 0 -> 392 bytes .../gb.form.stock/gambas/32/switch-user.png | Bin 0 -> 468 bytes comp/src/gb.form.stock/gambas/32/system.png | Bin 0 -> 283 bytes comp/src/gb.form.stock/gambas/32/tab.png | Bin 0 -> 206 bytes comp/src/gb.form.stock/gambas/32/table.png | Bin 0 -> 162 bytes comp/src/gb.form.stock/gambas/32/tablet.png | Bin 0 -> 295 bytes comp/src/gb.form.stock/gambas/32/tag.png | Bin 0 -> 265 bytes comp/src/gb.form.stock/gambas/32/taxi.png | Bin 0 -> 338 bytes comp/src/gb.form.stock/gambas/32/template.png | Bin 0 -> 255 bytes comp/src/gb.form.stock/gambas/32/terminal.png | Bin 0 -> 208 bytes .../gb.form.stock/gambas/32/text-baseline.png | Bin 0 -> 173 bytes .../gb.form.stock/gambas/32/text-bigger.png | Bin 0 -> 818 bytes .../src/gb.form.stock/gambas/32/text-bold.png | Bin 0 -> 727 bytes .../gb.form.stock/gambas/32/text-bottom.png | Bin 0 -> 173 bytes .../gb.form.stock/gambas/32/text-center.png | Bin 0 -> 136 bytes .../src/gb.form.stock/gambas/32/text-fill.png | Bin 0 -> 130 bytes .../gb.form.stock/gambas/32/text-italic.png | Bin 0 -> 734 bytes .../src/gb.form.stock/gambas/32/text-left.png | Bin 0 -> 134 bytes .../gambas/32/text-line-spacing.png | Bin 0 -> 229 bytes .../gambas/32/text-list-order-rtl.png | Bin 0 -> 365 bytes .../gambas/32/text-list-order.png | Bin 0 -> 367 bytes .../src/gb.form.stock/gambas/32/text-list.png | Bin 0 -> 172 bytes .../gb.form.stock/gambas/32/text-lower.png | Bin 0 -> 908 bytes .../gb.form.stock/gambas/32/text-middle.png | Bin 0 -> 186 bytes .../gb.form.stock/gambas/32/text-outline.png | Bin 0 -> 1035 bytes .../gb.form.stock/gambas/32/text-right.png | Bin 0 -> 136 bytes .../gb.form.stock/gambas/32/text-shadow.png | Bin 0 -> 1185 bytes .../gb.form.stock/gambas/32/text-smaller.png | Bin 0 -> 817 bytes .../gb.form.stock/gambas/32/text-strike.png | Bin 0 -> 693 bytes comp/src/gb.form.stock/gambas/32/text-sub.png | Bin 0 -> 823 bytes .../gb.form.stock/gambas/32/text-super.png | Bin 0 -> 817 bytes comp/src/gb.form.stock/gambas/32/text-top.png | Bin 0 -> 174 bytes .../gambas/32/text-underline.png | Bin 0 -> 741 bytes .../gb.form.stock/gambas/32/text-upper.png | Bin 0 -> 777 bytes comp/src/gb.form.stock/gambas/32/text.png | Bin 0 -> 177 bytes comp/src/gb.form.stock/gambas/32/theme.png | Bin 0 -> 180 bytes comp/src/gb.form.stock/gambas/32/today.png | Bin 0 -> 284 bytes comp/src/gb.form.stock/gambas/32/toilet.png | Bin 0 -> 697 bytes comp/src/gb.form.stock/gambas/32/tools.png | Bin 0 -> 341 bytes comp/src/gb.form.stock/gambas/32/top.png | Bin 0 -> 232 bytes comp/src/gb.form.stock/gambas/32/town.png | Bin 0 -> 234 bytes comp/src/gb.form.stock/gambas/32/traffic.png | Bin 0 -> 350 bytes comp/src/gb.form.stock/gambas/32/train.png | Bin 0 -> 404 bytes .../gb.form.stock/gambas/32/transparency.png | Bin 0 -> 447 bytes .../gb.form.stock/gambas/32/trash-full.png | Bin 0 -> 285 bytes comp/src/gb.form.stock/gambas/32/trash.png | Bin 0 -> 197 bytes comp/src/gb.form.stock/gambas/32/truck.png | Bin 0 -> 272 bytes .../gb.form.stock/gambas/32/uncompress.png | Bin 0 -> 319 bytes comp/src/gb.form.stock/gambas/32/undo.png | Bin 0 -> 306 bytes comp/src/gb.form.stock/gambas/32/ungroup.png | Bin 0 -> 321 bytes comp/src/gb.form.stock/gambas/32/unindent.png | Bin 0 -> 192 bytes comp/src/gb.form.stock/gambas/32/union.png | Bin 0 -> 164 bytes comp/src/gb.form.stock/gambas/32/unlock.png | Bin 0 -> 280 bytes comp/src/gb.form.stock/gambas/32/unselect.png | Bin 0 -> 357 bytes comp/src/gb.form.stock/gambas/32/up.png | Bin 0 -> 219 bytes comp/src/gb.form.stock/gambas/32/update.png | Bin 0 -> 359 bytes comp/src/gb.form.stock/gambas/32/upload.png | Bin 0 -> 612 bytes comp/src/gb.form.stock/gambas/32/usb.png | Bin 0 -> 244 bytes .../gb.form.stock/gambas/32/user-group.png | Bin 0 -> 1264 bytes comp/src/gb.form.stock/gambas/32/user.png | Bin 0 -> 530 bytes comp/src/gb.form.stock/gambas/32/vector.png | Bin 0 -> 309 bytes .../gambas/32/version-control.png | Bin 0 -> 377 bytes comp/src/gb.form.stock/gambas/32/video.png | Bin 0 -> 199 bytes .../gb.form.stock/gambas/32/view-compact.png | Bin 0 -> 140 bytes .../gb.form.stock/gambas/32/view-detail.png | Bin 0 -> 130 bytes .../src/gb.form.stock/gambas/32/view-icon.png | Bin 0 -> 131 bytes .../gb.form.stock/gambas/32/view-normal.png | Bin 0 -> 302 bytes .../gb.form.stock/gambas/32/view-preview.png | Bin 0 -> 242 bytes .../gb.form.stock/gambas/32/view-split-h.png | Bin 0 -> 136 bytes .../gb.form.stock/gambas/32/view-split-v.png | Bin 0 -> 136 bytes .../src/gb.form.stock/gambas/32/view-tree.png | Bin 0 -> 150 bytes .../gb.form.stock/gambas/32/volume-high.png | Bin 0 -> 595 bytes .../gb.form.stock/gambas/32/volume-low.png | Bin 0 -> 617 bytes .../gb.form.stock/gambas/32/volume-medium.png | Bin 0 -> 627 bytes comp/src/gb.form.stock/gambas/32/volume.png | Bin 0 -> 258 bytes comp/src/gb.form.stock/gambas/32/vpn.png | Bin 0 -> 324 bytes comp/src/gb.form.stock/gambas/32/walk.png | Bin 0 -> 878 bytes comp/src/gb.form.stock/gambas/32/warning.png | Bin 0 -> 299 bytes comp/src/gb.form.stock/gambas/32/watch.png | Bin 0 -> 543 bytes comp/src/gb.form.stock/gambas/32/webcam.png | Bin 0 -> 539 bytes .../src/gb.form.stock/gambas/32/wifi-high.png | Bin 0 -> 605 bytes comp/src/gb.form.stock/gambas/32/wifi-low.png | Bin 0 -> 632 bytes .../gb.form.stock/gambas/32/wifi-medium.png | Bin 0 -> 640 bytes comp/src/gb.form.stock/gambas/32/wifi.png | Bin 0 -> 605 bytes comp/src/gb.form.stock/gambas/32/window.png | Bin 0 -> 161 bytes comp/src/gb.form.stock/gambas/32/windows.png | Bin 0 -> 1641 bytes comp/src/gb.form.stock/gambas/32/wizard.png | Bin 0 -> 278 bytes comp/src/gb.form.stock/gambas/32/worship.png | Bin 0 -> 242 bytes comp/src/gb.form.stock/gambas/32/wrap.png | Bin 0 -> 273 bytes comp/src/gb.form.stock/gambas/32/xml.png | Bin 0 -> 451 bytes comp/src/gb.form.stock/gambas/32/zoom-fit.png | Bin 0 -> 554 bytes comp/src/gb.form.stock/gambas/32/zoom-in.png | Bin 0 -> 453 bytes .../gambas/32/zoom-normal-rtl.png | Bin 0 -> 494 bytes .../gb.form.stock/gambas/32/zoom-normal.png | Bin 0 -> 503 bytes comp/src/gb.form.stock/gambas/32/zoom-out.png | Bin 0 -> 450 bytes .../gb.form.stock/gambas/32/zoom-width.png | Bin 0 -> 603 bytes comp/src/gb.form.stock/gambas/app/gambas3.png | Bin 0 -> 6834 bytes comp/src/gb.form.stock/icon.map | 1 + comp/src/gb.form.stock/links | 171 + comp/src/gb.form.stock/reverse | 116 + comp/src/gb.form.terminal/.component | 6 + comp/src/gb.form.terminal/.directory | 2 + .../.hidden/Konsole keys README.txt | 73 + .../gb.form.terminal/.hidden/Konsole keys.txt | 175 + .../.hidden/XTerm control sequences.txt | 1849 + .../.hidden/XtermTests/16colors.sh | 119 + .../.hidden/XtermTests/256colors.pl | 51 + .../.hidden/XtermTests/256colors2.pl | 180 + .../.hidden/XtermTests/88colors.pl | 49 + .../.hidden/XtermTests/88colors2.pl | 182 + .../.hidden/XtermTests/8colors.sh | 107 + .../.hidden/XtermTests/acolors.sh | 93 + .../.hidden/XtermTests/doublechars.sh | 116 + .../.hidden/XtermTests/dynamic.pl | 132 + .../.hidden/XtermTests/dynamic.sh | 89 + .../.hidden/XtermTests/dynamic2.sh | 114 + .../.hidden/XtermTests/fonts.sh | 88 + .../.hidden/XtermTests/paste64.pl | 190 + .../.hidden/XtermTests/query-color.pl | 169 + .../.hidden/XtermTests/query-fonts.pl | 167 + .../.hidden/XtermTests/resize.pl | 141 + .../.hidden/XtermTests/resize.sh | 111 + .../.hidden/XtermTests/tcapquery.pl | 325 + .../.hidden/XtermTests/title.sh | 84 + comp/src/gb.form.terminal/.hidden/XtermVT100 | 457 + .../.hidden/control/terminalview.png | Bin 0 -> 398 bytes comp/src/gb.form.terminal/.icon.png | Bin 0 -> 5233 bytes comp/src/gb.form.terminal/.lang/fr.po | 119 + comp/src/gb.form.terminal/.lang/it.po | 40 + comp/src/gb.form.terminal/.lang/pt_BR.po | 40 + comp/src/gb.form.terminal/.lang/ru.po | 39 + comp/src/gb.form.terminal/.lang/zh.po | 39 + comp/src/gb.form.terminal/.project | 18 + .../.src/TerminalView/CTerminalLine.class | 194 + .../.src/TerminalView/TerminalAttr.class | 115 + .../.src/TerminalView/TerminalFilter.class | 25 + .../TerminalView/TerminalFilter_VT100.class | 1010 + .../.src/TerminalView/TerminalLink.class | 59 + .../.src/TerminalView/TerminalScreen.class | 2480 + .../.src/TerminalView/TerminalView.class | 1873 + .../.src/TerminalView/test/FOtherTest.class | 11 + .../.src/TerminalView/test/FOtherTest.form | 8 + .../TerminalView/test/FTestTerminalView.class | 145 + .../TerminalView/test/FTestTerminalView.form | 57 + .../.src/TerminalView/test/Form1.class | 44 + .../.src/TerminalView/test/Form1.form | 9 + .../.src/TerminalView/test/MTest.module | 8 + .../.src/TerminalView/test/PipeTest.class | 224 + .../.src/TerminalView/test/PipeTest.form | 75 + .../.src/TerminalView/test/PipedTask.class | 73 + .../TerminalView/test/TelNetProtocol.class | 139 + .../.src/TerminalView/test/VT100/Attr.class | 220 + .../TerminalView/test/VT100/Console.class | 63 + .../.src/TerminalView/test/VT100/Main.module | 38 + comp/src/gb.form.terminal/brush_dark.png | Bin 0 -> 85 bytes comp/src/gb.form.terminal/brush_light.png | Bin 0 -> 85 bytes comp/src/gb.form.terminal/brush_medium.png | Bin 0 -> 85 bytes comp/src/gb.form/.component | 5 + comp/src/gb.form/.directory | 2 + comp/src/gb.form/.hidden/CHANGELOG | 9 + .../gb.form/.hidden/FailedNewMaskBox.class | 829 + .../src/gb.form/.hidden/control/buttonbox.png | Bin 0 -> 258 bytes .../gb.form/.hidden/control/colorbutton.png | Bin 0 -> 404 bytes .../gb.form/.hidden/control/colorchooser.png | Bin 0 -> 845 bytes .../gb.form/.hidden/control/colorpalette.png | Bin 0 -> 592 bytes comp/src/gb.form/.hidden/control/datebox.png | Bin 0 -> 331 bytes .../gb.form/.hidden/control/datechooser.png | Bin 0 -> 309 bytes comp/src/gb.form/.hidden/control/dirbox.png | Bin 0 -> 248 bytes .../gb.form/.hidden/control/dirbrowser.png | Bin 0 -> 244 bytes .../gb.form/.hidden/control/dirchooser.png | Bin 0 -> 252 bytes comp/src/gb.form/.hidden/control/dirview.png | Bin 0 -> 151 bytes .../gb.form/.hidden/control/documentview.png | Bin 0 -> 721 bytes comp/src/gb.form/.hidden/control/expander.png | Bin 0 -> 233 bytes comp/src/gb.form/.hidden/control/filebox.png | Bin 0 -> 276 bytes .../gb.form/.hidden/control/filechooser.png | Bin 0 -> 318 bytes .../.hidden/control/fileproperties.png | Bin 0 -> 265 bytes comp/src/gb.form/.hidden/control/fileview.png | Bin 0 -> 225 bytes comp/src/gb.form/.hidden/control/fontbox.png | Bin 0 -> 738 bytes .../gb.form/.hidden/control/fontchooser.png | Bin 0 -> 879 bytes .../src/gb.form/.hidden/control/iconpanel.png | Bin 0 -> 182 bytes .../src/gb.form/.hidden/control/imageview.png | Bin 0 -> 624 bytes comp/src/gb.form/.hidden/control/lcdlabel.png | Bin 0 -> 212 bytes .../gb.form/.hidden/control/listcontainer.png | Bin 0 -> 148 bytes .../gb.form/.hidden/control/listeditor.png | Bin 0 -> 884 bytes comp/src/gb.form/.hidden/control/maskbox.png | Bin 0 -> 615 bytes .../gb.form/.hidden/control/menubutton.png | Bin 0 -> 1070 bytes .../gb.form/.hidden/control/messageview.png | Bin 0 -> 219 bytes .../src/gb.form/.hidden/control/sidepanel.png | Bin 0 -> 228 bytes .../src/gb.form/.hidden/control/sliderbox.png | Bin 0 -> 651 bytes comp/src/gb.form/.hidden/control/spinbar.png | Bin 0 -> 328 bytes comp/src/gb.form/.hidden/control/spinner.png | Bin 0 -> 1130 bytes .../gb.form/.hidden/control/switchbutton.png | Bin 0 -> 644 bytes .../src/gb.form/.hidden/control/tableview.png | Bin 0 -> 902 bytes comp/src/gb.form/.hidden/control/tabpanel.png | Bin 0 -> 175 bytes comp/src/gb.form/.hidden/control/timebox.png | Bin 0 -> 588 bytes .../src/gb.form/.hidden/control/toolpanel.png | Bin 0 -> 184 bytes comp/src/gb.form/.hidden/control/urllabel.png | Bin 0 -> 713 bytes comp/src/gb.form/.hidden/control/valuebox.png | Bin 0 -> 894 bytes comp/src/gb.form/.hidden/control/wizard.png | Bin 0 -> 290 bytes comp/src/gb.form/.hidden/icon.png | Bin 0 -> 180 bytes comp/src/gb.form/.icon.png | Bin 0 -> 5355 bytes comp/src/gb.form/.lang/ar.po | 483 + comp/src/gb.form/.lang/ca.po | 484 + comp/src/gb.form/.lang/cs.po | 489 + comp/src/gb.form/.lang/de.po | 491 + comp/src/gb.form/.lang/es.po | 490 + comp/src/gb.form/.lang/es_ES.po | 490 + comp/src/gb.form/.lang/fa.po | 483 + comp/src/gb.form/.lang/fr.po | 821 + comp/src/gb.form/.lang/it.po | 488 + comp/src/gb.form/.lang/ja.po | 484 + comp/src/gb.form/.lang/nl.po | 490 + comp/src/gb.form/.lang/pt_BR.po | 488 + comp/src/gb.form/.lang/ru.po | 483 + comp/src/gb.form/.lang/sv.po | 483 + comp/src/gb.form/.lang/zh.po | 488 + comp/src/gb.form/.lang/zh_TW.po | 483 + comp/src/gb.form/.project | 31 + comp/src/gb.form/.src/Balloon/Balloon.class | 89 + comp/src/gb.form/.src/Balloon/FBalloon.class | 415 + comp/src/gb.form/.src/Balloon/FBalloon.form | 25 + comp/src/gb.form/.src/Button/ButtonBox.class | 430 + comp/src/gb.form/.src/Button/MenuButton.class | 586 + .../gb.form/.src/Button/SwitchButton.class | 257 + comp/src/gb.form/.src/Color/ColorButton.class | 151 + .../src/gb.form/.src/Color/ColorChooser.class | 113 + .../src/gb.form/.src/Color/ColorPalette.class | 394 + .../gb.form/.src/Color/FColorChooser.class | 622 + .../src/gb.form/.src/Color/FColorChooser.form | 199 + comp/src/gb.form/.src/Completion.class | 342 + comp/src/gb.form/.src/Date/DateBox.class | 304 + comp/src/gb.form/.src/Date/DateChooser.class | 278 + comp/src/gb.form/.src/Date/FCalendar.class | 1025 + comp/src/gb.form/.src/Date/FCalendar.form | 118 + comp/src/gb.form/.src/Date/TimeBox.class | 218 + .../.src/Date/_DateChooser_Colors.class | 26 + .../gb.form/.src/Date/_DateChooser_Data.class | 27 + .../gb.form/.src/Date/_DateChooser_Date.class | 68 + .../.src/DocumentView/DocumentView.class | 1082 + .../.src/DocumentView/_DocumentItem.class | 50 + .../.src/DocumentView/_DocumentLayout.class | 14 + comp/src/gb.form/.src/Expander/Expander.class | 100 + .../src/gb.form/.src/Expander/FExpander.class | 218 + comp/src/gb.form/.src/Expander/FExpander.form | 22 + comp/src/gb.form/.src/FInputBox.class | 56 + comp/src/gb.form/.src/FInputBox.form | 39 + comp/src/gb.form/.src/File/Bookmark.class | 11 + .../.src/File/Bookmark/CBookmark.class | 54 + .../.src/File/Bookmark/CBookmarkList.class | 201 + .../.src/File/Bookmark/FEditBookmark.class | 140 + .../.src/File/Bookmark/FEditBookmark.form | 50 + comp/src/gb.form/.src/File/Bookmarks.class | 108 + comp/src/gb.form/.src/File/CTaskPreview.class | 532 + .../gb.form/.src/File/Chooser/DirButton.class | 167 + .../.src/File/Chooser/DirChooser.class | 313 + .../.src/File/Chooser/FDirChooser.class | 1839 + .../.src/File/Chooser/FDirChooser.form | 215 + .../.src/File/Chooser/FileChooser.class | 471 + comp/src/gb.form/.src/File/DirBox.class | 94 + comp/src/gb.form/.src/File/DirBrowser.class | 143 + comp/src/gb.form/.src/File/DirCache.class | 163 + comp/src/gb.form/.src/File/DirView.class | 798 + comp/src/gb.form/.src/File/FileBox.class | 167 + comp/src/gb.form/.src/File/FileView.class | 1680 + .../.src/File/Properties/CTaskDirSize.class | 71 + .../File/Properties/FFileProperties.class | 471 + .../.src/File/Properties/FFileProperties.form | 213 + .../.src/File/Properties/FileProperties.class | 98 + .../File/Properties/_FilePropertiesData.class | 6 + comp/src/gb.form/.src/FileCompletion.class | 42 + comp/src/gb.form/.src/Font/FFontChooser.class | 919 + comp/src/gb.form/.src/Font/FFontChooser.form | 136 + comp/src/gb.form/.src/Font/FontBox.class | 114 + .../src/gb.form/.src/Font/FontCacheTask.class | 111 + comp/src/gb.form/.src/Font/FontChooser.class | 170 + comp/src/gb.form/.src/Help.module | 74 + .../gb.form/.src/IconPanel/IconPanel.class | 408 + .../.src/IconPanel/_IconPanelContainer.class | 105 + .../gb.form/.src/ImageView/ImageView.class | 414 + comp/src/gb.form/.src/InputBox.class | 9 + comp/src/gb.form/.src/LCDLabel.class | 455 + comp/src/gb.form/.src/ListContainer.class | 413 + .../gb.form/.src/ListEditor/FListEditor.class | 391 + .../gb.form/.src/ListEditor/FListEditor.form | 55 + .../gb.form/.src/ListEditor/ListEditor.class | 220 + comp/src/gb.form/.src/Main.module | 523 + comp/src/gb.form/.src/MaskBox.class | 933 + comp/src/gb.form/.src/MaskBox2.class | 62 + comp/src/gb.form/.src/Message/FMessage.class | 87 + comp/src/gb.form/.src/Message/FMessage.form | 43 + comp/src/gb.form/.src/Message/Message.module | 9 + .../gb.form/.src/Message/MessageView.class | 242 + comp/src/gb.form/.src/MessageLabel.class | 151 + .../.src/MultiContainer/_MultiContainer.class | 236 + .../MultiContainer/_MultiContainerTab.class | 66 + .../gb.form/.src/SidePanel/FSidePanel.class | 1262 + .../gb.form/.src/SidePanel/FSidePanel.form | 25 + .../gb.form/.src/SidePanel/SidePanel.class | 249 + comp/src/gb.form/.src/SliderBox.class | 217 + comp/src/gb.form/.src/SpinBar/SpinBar.class | 433 + comp/src/gb.form/.src/Spinner.class | 301 + comp/src/gb.form/.src/Stock.class | 882 + comp/src/gb.form/.src/TabPanel/TabPanel.class | 1120 + .../.src/TabPanel/_TabPanelButton.class | 581 + .../.src/TabPanel/_TabPanelContainer.class | 108 + comp/src/gb.form/.src/TableView.class | 562 + comp/src/gb.form/.src/Test/FBugFileView.class | 22 + comp/src/gb.form/.src/Test/FBugFileView.form | 27 + .../src/gb.form/.src/Test/FDocumentView.class | 137 + comp/src/gb.form/.src/Test/FDocumentView.form | 91 + comp/src/gb.form/.src/Test/FIconPanel.class | 9 + comp/src/gb.form/.src/Test/FIconPanel.form | 32 + comp/src/gb.form/.src/Test/FIconView.class | 30 + comp/src/gb.form/.src/Test/FIconView.form | 20 + comp/src/gb.form/.src/Test/FLCDLabel.class | 17 + comp/src/gb.form/.src/Test/FLCDLabel.form | 19 + comp/src/gb.form/.src/Test/FMain.class | 30 + comp/src/gb.form/.src/Test/FMain.form | 79 + comp/src/gb.form/.src/Test/FSpinBar.class | 1 + comp/src/gb.form/.src/Test/FSpinBar.form | 27 + .../gb.form/.src/Test/FTestArrangement.class | 14 + .../gb.form/.src/Test/FTestArrangement.form | 18 + comp/src/gb.form/.src/Test/FTestBalloon.class | 19 + comp/src/gb.form/.src/Test/FTestBalloon.form | 14 + .../gb.form/.src/Test/FTestColorChooser.class | 26 + .../gb.form/.src/Test/FTestColorChooser.form | 16 + .../gb.form/.src/Test/FTestCompletion.class | 24 + .../gb.form/.src/Test/FTestCompletion.form | 21 + .../gb.form/.src/Test/FTestDateChooser.class | 28 + .../gb.form/.src/Test/FTestDateChooser.form | 39 + .../gb.form/.src/Test/FTestDirBrowser.class | 8 + .../gb.form/.src/Test/FTestDirBrowser.form | 11 + .../src/gb.form/.src/Test/FTestExpander.class | 2 + comp/src/gb.form/.src/Test/FTestExpander.form | 22 + comp/src/gb.form/.src/Test/FTestFileBox.class | 2 + comp/src/gb.form/.src/Test/FTestFileBox.form | 27 + .../gb.form/.src/Test/FTestFileChooser.class | 53 + .../gb.form/.src/Test/FTestFileChooser.form | 77 + .../src/gb.form/.src/Test/FTestFileView.class | 21 + comp/src/gb.form/.src/Test/FTestFileView.form | 18 + comp/src/gb.form/.src/Test/FTestFontBox.class | 2 + comp/src/gb.form/.src/Test/FTestFontBox.form | 11 + .../gb.form/.src/Test/FTestFontChooser.class | 8 + .../gb.form/.src/Test/FTestFontChooser.form | 10 + .../gb.form/.src/Test/FTestImageView.class | 52 + .../src/gb.form/.src/Test/FTestImageView.form | 5 + .../gb.form/.src/Test/FTestListEditor.class | 14 + .../gb.form/.src/Test/FTestListEditor.form | 10 + comp/src/gb.form/.src/Test/FTestMaskBox.class | 56 + comp/src/gb.form/.src/Test/FTestMaskBox.form | 9 + .../gb.form/.src/Test/FTestMenuButton.class | 14 + .../gb.form/.src/Test/FTestMenuButton.form | 104 + .../gb.form/.src/Test/FTestMessageView.class | 14 + .../gb.form/.src/Test/FTestMessageView.form | 29 + .../gb.form/.src/Test/FTestSidePanel.class | 27 + .../src/gb.form/.src/Test/FTestSidePanel.form | 49 + comp/src/gb.form/.src/Test/FTestSpinner.class | 15 + comp/src/gb.form/.src/Test/FTestSpinner.form | 20 + .../gb.form/.src/Test/FTestSwitchButton.class | 13 + .../gb.form/.src/Test/FTestSwitchButton.form | 50 + .../src/gb.form/.src/Test/FTestTabPanel.class | 92 + comp/src/gb.form/.src/Test/FTestTabPanel.form | 60 + .../gb.form/.src/Test/FTestTableView.class | 51 + .../src/gb.form/.src/Test/FTestTableView.form | 23 + comp/src/gb.form/.src/Test/FTestTimeBox.class | 2 + comp/src/gb.form/.src/Test/FTestTimeBox.form | 12 + .../gb.form/.src/Test/FTestToolPanel.class | 8 + .../src/gb.form/.src/Test/FTestToolPanel.form | 22 + .../src/gb.form/.src/Test/FTestValueBox.class | 14 + comp/src/gb.form/.src/Test/FTestValueBox.form | 25 + comp/src/gb.form/.src/Test/FTestWizard.class | 8 + comp/src/gb.form/.src/Test/FTestWizard.form | 30 + comp/src/gb.form/.src/Test/FWiki.class | 10 + comp/src/gb.form/.src/Test/FWiki.form | 27 + comp/src/gb.form/.src/Test/Form1.class | 33 + comp/src/gb.form/.src/Test/Form1.form | 32 + comp/src/gb.form/.src/Test/Form2.class | 87 + comp/src/gb.form/.src/Test/Form2.form | 100 + comp/src/gb.form/.src/Test/Form3.class | 24 + comp/src/gb.form/.src/Test/Form3.form | 19 + comp/src/gb.form/.src/Test/Form4.class | 10 + comp/src/gb.form/.src/Test/Form4.form | 15 + comp/src/gb.form/.src/TestControl.class | 11 + .../src/gb.form/.src/ToolPanel/FToolBar.class | 73 + comp/src/gb.form/.src/ToolPanel/FToolBar.form | 15 + .../gb.form/.src/ToolPanel/ToolPanel.class | 327 + .../.src/ToolPanel/_ToolPanelContainer.class | 110 + comp/src/gb.form/.src/URLLabel.class | 131 + comp/src/gb.form/.src/ValueBox.class | 404 + comp/src/gb.form/.src/Wizard/FWizard.class | 150 + comp/src/gb.form/.src/Wizard/FWizard.form | 50 + comp/src/gb.form/.src/Wizard/Wizard.class | 465 + .../.src/Wizard/_WizardContainer.class | 56 + comp/src/gb.form/img/16/cross.png | Bin 0 -> 115 bytes comp/src/gb.form/img/32/filter-menu.png | Bin 0 -> 533 bytes comp/src/gb.form/img/32/filter.png | Bin 0 -> 518 bytes comp/src/gb.form/img/32/warning.png | Bin 0 -> 1932 bytes .../gb.form/img/8/new/side-bottom-void.png | Bin 0 -> 117 bytes comp/src/gb.form/img/8/new/side-bottom.png | Bin 0 -> 111 bytes comp/src/gb.form/img/8/new/side-left.png | Bin 0 -> 112 bytes .../src/gb.form/img/8/new/side-right-void.png | Bin 0 -> 115 bytes comp/src/gb.form/img/8/new/side-right.png | Bin 0 -> 112 bytes comp/src/gb.form/img/8/new/side-top.png | Bin 0 -> 112 bytes comp/src/gb.form/img/8/side-bottom-void.png | Bin 0 -> 112 bytes comp/src/gb.form/img/8/side-bottom.png | Bin 0 -> 112 bytes comp/src/gb.form/img/8/side-left.png | Bin 0 -> 113 bytes comp/src/gb.form/img/8/side-right-void.png | Bin 0 -> 112 bytes comp/src/gb.form/img/8/side-right.png | Bin 0 -> 109 bytes comp/src/gb.form/img/8/side-top.png | Bin 0 -> 115 bytes comp/src/gb.form/img/colormap-snap.png | Bin 0 -> 1292 bytes comp/src/gb.form/img/colormap.png | Bin 0 -> 8985 bytes comp/src/gb.form/img/cross.png | Bin 0 -> 299 bytes comp/src/gb.form/img/emblem/lock.png | 1 + comp/src/gb.form/img/handle-h.png | Bin 0 -> 102 bytes comp/src/gb.form/img/handle-v.png | Bin 0 -> 97 bytes comp/src/gb.form/img/line.png | Bin 0 -> 110 bytes comp/src/gb.form/img/lock.png | Bin 0 -> 724 bytes comp/src/gb.form/img/page.png | Bin 0 -> 137 bytes comp/src/gb.form/img/round.png | Bin 0 -> 124 bytes comp/src/gb.form/img/select-dark.png | Bin 0 -> 112 bytes comp/src/gb.form/img/select.png | Bin 0 -> 114 bytes comp/src/gb.form/img/unknown.svg | 72 + comp/src/gb.form/img/valuemap-snap.png | Bin 0 -> 149 bytes comp/src/gb.form/img/valuemap.png | Bin 0 -> 897 bytes comp/src/gb.form/map/icon.map | 471 + comp/src/gb.form/stock/16/gambas.png | Bin 0 -> 489 bytes comp/src/gb.form/stock/16/gnu.png | Bin 0 -> 360 bytes comp/src/gb.form/stock/16/linux.png | Bin 0 -> 638 bytes comp/src/gb.form/stock/32/gambas.png | Bin 0 -> 925 bytes comp/src/gb.form/stock/32/gnu.png | Bin 0 -> 1022 bytes comp/src/gb.form/stock/32/linux.png | Bin 0 -> 1446 bytes comp/src/gb.form/stock/scalable/gambas.svg | 91 + comp/src/gb.form/stock/scalable/gnu.svg | 94 + comp/src/gb.form/stock/scalable/linux.svg | 1 + comp/src/gb.gui.base/.component | 5 + comp/src/gb.gui.base/.directory | 2 + comp/src/gb.gui.base/.hidden/window.png | Bin 0 -> 205 bytes comp/src/gb.gui.base/.icon.png | Bin 0 -> 5013 bytes comp/src/gb.gui.base/.lang/de.po | 52 + comp/src/gb.gui.base/.lang/es.po | 53 + comp/src/gb.gui.base/.lang/fr.po | 396 + comp/src/gb.gui.base/.lang/it.po | 56 + comp/src/gb.gui.base/.lang/zh.po | 51 + comp/src/gb.gui.base/.project | 16 + comp/src/gb.gui.base/.src/Action.class | 576 + comp/src/gb.gui.base/.src/Border.class | 861 + comp/src/gb.gui.base/.src/Clipboard.class | 32 + .../gb.gui.base/.src/ComboBox/ComboBox.class | 703 + .../.src/ComboBox/FComboBoxPopup.class | 134 + .../.src/ComboBox/FComboBoxPopup.form | 12 + .../.src/ComboBox/_ComboBox_Item.class | 33 + .../.src/ComboBox/_ComboBox_Selection.class | 56 + comp/src/gb.gui.base/.src/Desktop.class | 84 + comp/src/gb.gui.base/.src/Drag.class | 35 + comp/src/gb.gui.base/.src/Draw.module | 674 + comp/src/gb.gui.base/.src/Fill.class | 5 + comp/src/gb.gui.base/.src/Frame.class | 274 + .../gb.gui.base/.src/GridView/GridView.class | 2554 ++ .../.src/GridView/GridViewSelection.class | 197 + .../.src/GridView/_GridView_Cell.class | 272 + .../.src/GridView/_GridView_Column.class | 175 + .../.src/GridView/_GridView_Columns.class | 274 + .../.src/GridView/_GridView_Data.class | 45 + .../.src/GridView/_GridView_Row.class | 115 + .../.src/GridView/_GridView_Rows.class | 589 + .../gb.gui.base/.src/IconView/IconView.class | 1856 + .../.src/IconView/_IconView_Item.class | 797 + comp/src/gb.gui.base/.src/Label.class | 422 + comp/src/gb.gui.base/.src/Line.class | 5 + .../gb.gui.base/.src/ListBox/ListBox.class | 526 + .../.src/ListBox/_ListBox_Item.class | 47 + comp/src/gb.gui.base/.src/Main.module | 295 + .../gb.gui.base/.src/Message/FMessage.class | 241 + .../gb.gui.base/.src/Message/FMessage.form | 71 + .../gb.gui.base/.src/Message/Message.class | 65 + comp/src/gb.gui.base/.src/MovieBox.class | 381 + comp/src/gb.gui.base/.src/Paint.class | 547 + comp/src/gb.gui.base/.src/Picture.class | 299 + comp/src/gb.gui.base/.src/PictureBox.class | 333 + comp/src/gb.gui.base/.src/ProgressBar.class | 209 + comp/src/gb.gui.base/.src/ScrollArea.class | 1087 + comp/src/gb.gui.base/.src/ScrollView.class | 154 + comp/src/gb.gui.base/.src/Separator.class | 38 + comp/src/gb.gui.base/.src/Shortcut.class | 60 + comp/src/gb.gui.base/.src/SpinBox.class | 763 + comp/src/gb.gui.base/.src/Split/HSplit.class | 11 + .../src/gb.gui.base/.src/Split/Splitter.class | 556 + comp/src/gb.gui.base/.src/Split/VSplit.class | 11 + comp/src/gb.gui.base/.src/Spring.class | 15 + comp/src/gb.gui.base/.src/Test/FBorder.class | 28 + comp/src/gb.gui.base/.src/Test/FBorder.form | 16 + comp/src/gb.gui.base/.src/Test/FListBox.class | 46 + comp/src/gb.gui.base/.src/Test/FListBox.form | 39 + comp/src/gb.gui.base/.src/Test/FMain.class | 35 + comp/src/gb.gui.base/.src/Test/FMain.form | 24 + comp/src/gb.gui.base/.src/Test/FPaint.class | 30 + comp/src/gb.gui.base/.src/Test/FPaint.form | 10 + .../gb.gui.base/.src/Test/FPictureBox.class | 2 + .../gb.gui.base/.src/Test/FPictureBox.form | 9 + .../gb.gui.base/.src/Test/FRightToLeft.class | 34 + .../gb.gui.base/.src/Test/FRightToLeft.form | 61 + .../gb.gui.base/.src/Test/FScrollArea.class | 45 + .../gb.gui.base/.src/Test/FScrollArea.form | 220 + .../gb.gui.base/.src/Test/FTestClipping.class | 36 + .../gb.gui.base/.src/Test/FTestClipping.form | 10 + .../gb.gui.base/.src/Test/FTestCombo.class | 54 + .../src/gb.gui.base/.src/Test/FTestCombo.form | 98 + .../gb.gui.base/.src/Test/FTestFrame.class | 20 + .../src/gb.gui.base/.src/Test/FTestFrame.form | 22 + .../gb.gui.base/.src/Test/FTestGridView.class | 211 + .../gb.gui.base/.src/Test/FTestGridView.form | 57 + .../.src/Test/FTestGridViewRtl.class | 48 + .../.src/Test/FTestGridViewRtl.form | 19 + .../gb.gui.base/.src/Test/FTestIconView.class | 55 + .../gb.gui.base/.src/Test/FTestIconView.form | 31 + .../gb.gui.base/.src/Test/FTestLabel.class | 14 + .../src/gb.gui.base/.src/Test/FTestLabel.form | 74 + .../gb.gui.base/.src/Test/FTestListView.class | 61 + .../gb.gui.base/.src/Test/FTestListView.form | 21 + .../.src/Test/FTestMouseWheel.class | 20 + .../.src/Test/FTestMouseWheel.form | 33 + .../gb.gui.base/.src/Test/FTestMyCombo.class | 38 + .../gb.gui.base/.src/Test/FTestMyCombo.form | 27 + .../.src/Test/FTestProgressBar.class | 21 + .../.src/Test/FTestProgressBar.form | 24 + .../gb.gui.base/.src/Test/FTestSpinBox.class | 14 + .../gb.gui.base/.src/Test/FTestSpinBox.form | 39 + .../gb.gui.base/.src/Test/FTestSplit.class | 22 + .../src/gb.gui.base/.src/Test/FTestSplit.form | 43 + .../gb.gui.base/.src/Test/FTestTreeView.class | 185 + .../gb.gui.base/.src/Test/FTestTreeView.form | 79 + .../.src/Test/FTestTreeViewRtl.class | 25 + .../.src/Test/FTestTreeViewRtl.form | 25 + .../.src/Test/FileView/CTaskPreview.class | 98 + .../.src/Test/FileView/DirCache.class | 159 + .../.src/Test/FileView/FTestFileView.class | 14 + .../.src/Test/FileView/FTestFileView.form | 17 + .../.src/Test/FileView/FileView.class | 1126 + .../.src/Test/FileView/Help.module | 74 + .../gb.gui.base/.src/Test/TestMessage.module | 21 + comp/src/gb.gui.base/.src/TestCursor.class | 82 + comp/src/gb.gui.base/.src/TextLabel.class | 39 + .../.src/TreeView/ColumnView.class | 232 + .../gb.gui.base/.src/TreeView/ListView.class | 17 + .../gb.gui.base/.src/TreeView/RenameBox.class | 83 + .../gb.gui.base/.src/TreeView/TreeView.class | 50 + .../.src/TreeView/TreeViewSelection.class | 133 + .../.src/TreeView/_ColumnView_Columns.class | 79 + .../gb.gui.base/.src/TreeView/_TreeView.class | 1949 + .../.src/TreeView/_TreeView_Item.class | 693 + comp/src/gb.gui.base/.src/_Draw_Clip.class | 76 + comp/src/gb.gui.base/.src/_Draw_Style.class | 55 + comp/src/gb.gui.base/.src/_Gui.class | 417 + comp/src/gb.gui.base/broken.svg | 122 + comp/src/gb.gui.base/message/delete.png | 1 + comp/src/gb.gui.base/message/error.png | 1 + comp/src/gb.gui.base/message/info.png | 1 + comp/src/gb.gui.base/message/question.png | 1 + comp/src/gb.gui.base/message/warning.png | 1 + comp/src/gb.gui.base/moviebox.png | 1 + comp/src/gb.gui.base/pattern/10.png | Bin 0 -> 69 bytes comp/src/gb.gui.base/pattern/11.png | Bin 0 -> 70 bytes comp/src/gb.gui.base/pattern/12.png | Bin 0 -> 82 bytes comp/src/gb.gui.base/pattern/13.png | Bin 0 -> 82 bytes comp/src/gb.gui.base/pattern/14.png | Bin 0 -> 78 bytes comp/src/gb.gui.base/pattern/2.png | Bin 0 -> 71 bytes comp/src/gb.gui.base/pattern/3.png | Bin 0 -> 74 bytes comp/src/gb.gui.base/pattern/4.png | Bin 0 -> 74 bytes comp/src/gb.gui.base/pattern/5.png | Bin 0 -> 71 bytes comp/src/gb.gui.base/pattern/6.png | Bin 0 -> 76 bytes comp/src/gb.gui.base/pattern/7.png | Bin 0 -> 76 bytes comp/src/gb.gui.base/pattern/8.png | Bin 0 -> 73 bytes comp/src/gb.gui.base/pattern/9.png | Bin 0 -> 70 bytes comp/src/gb.gui.base/picturebox.png | 1 + comp/src/gb.gui.base/spinbox/minus.png | Bin 0 -> 129 bytes comp/src/gb.gui.base/spinbox/plus.png | Bin 0 -> 135 bytes comp/src/gb.logging/.component | 4 + comp/src/gb.logging/.directory | 2 + comp/src/gb.logging/.icon.png | Bin 0 -> 10569 bytes comp/src/gb.logging/.project | 11 + comp/src/gb.logging/.src/ComplexLogger.class | 118 + comp/src/gb.logging/.src/ConsoleHandler.class | 50 + comp/src/gb.logging/.src/FileHandler.class | 91 + comp/src/gb.logging/.src/Formatter.module | 167 + comp/src/gb.logging/.src/LogHandler.class | 64 + comp/src/gb.logging/.src/LogLevel.module | 11 + comp/src/gb.logging/.src/LogRotator.module | 65 + comp/src/gb.logging/.src/Logger.class | 108 + comp/src/gb.logging/.src/MTest.module | 36 + comp/src/gb.map/.component | 7 + .../gb.map/.connection/Connection1.connection | 11 + comp/src/gb.map/.directory | 2 + comp/src/gb.map/.hidden/control/mapview.png | Bin 0 -> 2045 bytes comp/src/gb.map/.icon.png | Bin 0 -> 18789 bytes comp/src/gb.map/.project | 20 + comp/src/gb.map/.src/FCarto.class | 133 + comp/src/gb.map/.src/FCarto.form | 13 + comp/src/gb.map/.src/Map.class | 477 + comp/src/gb.map/.src/MapView.class | 426 + .../gb.map/.src/Shapes/_MapShapeItem.class | 109 + comp/src/gb.map/.src/Shapes/_ShapeItem.class | 3 + comp/src/gb.map/.src/Sprite.class | 119 + comp/src/gb.map/.src/Tests/FMain.class | 193 + comp/src/gb.map/.src/Tests/FMain.form | 35 + comp/src/gb.map/.src/Tests/FTestWmts.class | 24 + comp/src/gb.map/.src/Tests/FTestWmts.form | 8 + comp/src/gb.map/.src/Tests/Form1.class | 23 + comp/src/gb.map/.src/Tests/Form1.form | 21 + comp/src/gb.map/.src/Tests/Form2.class | 96 + comp/src/gb.map/.src/Tests/Form2.form | 17 + comp/src/gb.map/.src/Tests/Form3.class | 42 + comp/src/gb.map/.src/Tests/Form3.form | 8 + comp/src/gb.map/.src/Tests/Form4.class | 75 + comp/src/gb.map/.src/Tests/Form4.form | 10 + comp/src/gb.map/.src/Tests/Form5.class | 28 + comp/src/gb.map/.src/Tests/Form5.form | 8 + comp/src/gb.map/.src/Tests/Form6.class | 40 + comp/src/gb.map/.src/Tests/Form6.form | 10 + comp/src/gb.map/.src/Tests/Form7.class | 9 + comp/src/gb.map/.src/Tests/Form7.form | 8 + comp/src/gb.map/.src/Tests/MMain.module | 11 + .../src/gb.map/.src/Tests/_BalloonLayer.class | 12 + comp/src/gb.map/.src/Tools/Geo.module | 131 + comp/src/gb.map/.src/Tools/MyPaint.class | 18 + comp/src/gb.map/.src/Tools/Proj.class | 84 + comp/src/gb.map/.src/Tools/_MapProxy.class | 20 + comp/src/gb.map/.src/Types/MapBounds.class | 143 + comp/src/gb.map/.src/Types/MapPoint.class | 211 + comp/src/gb.map/.src/Types/TileSource.module | 13 + comp/src/gb.map/.src/Types/_Tile.class | 16 + comp/src/gb.map/.src/_MapLayer.class | 97 + comp/src/gb.map/.src/_MapShape.class | 610 + comp/src/gb.map/.src/_MapTile.class | 770 + comp/src/gb.map/.src/_ViewLayer.class | 125 + comp/src/gb.map/Text1 | 10 + comp/src/gb.map/bar.png | Bin 0 -> 96 bytes comp/src/gb.map/cursor.png | Bin 0 -> 349 bytes comp/src/gb.map/minus.png | Bin 0 -> 283 bytes comp/src/gb.map/plus.png | Bin 0 -> 304 bytes comp/src/gb.map/point.png | Bin 0 -> 1010 bytes comp/src/gb.map/pointsparcelle | 0 comp/src/gb.markdown/.component | 4 + comp/src/gb.markdown/.directory | 2 + comp/src/gb.markdown/.icon.png | Bin 0 -> 10933 bytes comp/src/gb.markdown/.project | 10 + comp/src/gb.markdown/.src/MTest.module | 7 + comp/src/gb.markdown/.src/Markdown.class | 67 + comp/src/gb.markdown/.src/MarkdownLink.class | 10 + comp/src/gb.markdown/.src/Markup.module | 1096 + comp/src/gb.markdown/.src/TMarkdown.test | 424 + comp/src/gb.markdown/.test | 9 + comp/src/gb.markdown/test.txt | 43 + comp/src/gb.markdown/test2.txt | 44 + comp/src/gb.markdown/test3.txt | 45 + comp/src/gb.media.form/.component | 5 + comp/src/gb.media.form/.directory | 2 + .../.hidden/control/mediaview.png | Bin 0 -> 307 bytes comp/src/gb.media.form/.icon.png | Bin 0 -> 6679 bytes comp/src/gb.media.form/.project | 14 + .../src/gb.media.form/.src/FMediaPlayer.class | 485 + comp/src/gb.media.form/.src/FMediaPlayer.form | 72 + comp/src/gb.media.form/.src/FTest.class | 20 + comp/src/gb.media.form/.src/FTest.form | 25 + comp/src/gb.media.form/.src/MediaView.class | 182 + comp/src/gb.memcached/.component | 6 + comp/src/gb.memcached/.directory | 2 + comp/src/gb.memcached/.icon.png | Bin 0 -> 10569 bytes comp/src/gb.memcached/.project | 14 + comp/src/gb.memcached/.src/FMain.class | 51 + comp/src/gb.memcached/.src/FMain.form | 76 + comp/src/gb.memcached/.src/Main.module | 57 + comp/src/gb.memcached/.src/Memcached.class | 414 + .../gb.memcached/.src/_Memcached_Key.class | 130 + comp/src/gb.mysql/.component | 6 + comp/src/gb.mysql/.directory | 2 + comp/src/gb.mysql/.icon.png | Bin 0 -> 10724 bytes comp/src/gb.mysql/.lang/es.po | 34 + comp/src/gb.mysql/.project | 18 + comp/src/gb.mysql/.src/Connection.class | 12 + comp/src/gb.mysql/.src/DB.class | 12 + comp/src/gb.mysql/.src/_DataBase.class | 153 + comp/src/gb.mysql/.src/_DataTypes.class | 241 + comp/src/gb.mysql/.src/_Event.class | 51 + comp/src/gb.mysql/.src/_Field.class | 94 + .../gb.mysql/.src/_FieldEspecifications.class | 62 + comp/src/gb.mysql/.src/_Index.class | 50 + comp/src/gb.mysql/.src/_MySQL.class | 324 + comp/src/gb.mysql/.src/_Result.class | 124 + comp/src/gb.mysql/.src/_Routines.class | 83 + comp/src/gb.mysql/.src/_Table.class | 161 + .../src/gb.mysql/.src/_TableMaintenance.class | 71 + comp/src/gb.mysql/.src/_Trigger.class | 53 + comp/src/gb.mysql/.src/_User.class | 79 + comp/src/gb.mysql/.src/_Version.class | 34 + comp/src/gb.mysql/.src/_View.class | 43 + comp/src/gb.mysql/.src/modMain.module | 67 + comp/src/gb.mysql/logo.png | Bin 0 -> 6577 bytes comp/src/gb.net.pop3/.component | 5 + comp/src/gb.net.pop3/.directory | 2 + .../.hidden/control/pop3client.png | Bin 0 -> 937 bytes comp/src/gb.net.pop3/.icon.png | Bin 0 -> 8203 bytes comp/src/gb.net.pop3/.lang/cs.po | 44 + comp/src/gb.net.pop3/.lang/es.po | 19 + comp/src/gb.net.pop3/.lang/es_ES.po | 19 + comp/src/gb.net.pop3/.lang/it.po | 19 + comp/src/gb.net.pop3/.lang/nl.po | 20 + comp/src/gb.net.pop3/.lang/ru.po | 34 + comp/src/gb.net.pop3/.lang/zh.po | 20 + comp/src/gb.net.pop3/.project | 15 + comp/src/gb.net.pop3/.src/MTest.module | 54 + comp/src/gb.net.pop3/.src/Net.class | 18 + comp/src/gb.net.pop3/.src/POPClient.class | 72 + comp/src/gb.net.pop3/.src/Pop3Client.class | 530 + comp/src/gb.net.pop3/.src/SSLClient.class | 76 + comp/src/gb.net.pop3/.src/TCPClient.class | 102 + .../.src/_Pop3Client_Message.class | 144 + comp/src/gb.net.smtp/.component | 4 + comp/src/gb.net.smtp/.directory | 2 + .../.hidden/control/smtpclient.png | Bin 0 -> 895 bytes comp/src/gb.net.smtp/.icon.png | Bin 0 -> 8090 bytes comp/src/gb.net.smtp/.project | 12 + comp/src/gb.net.smtp/.src/Encode.module | 210 + comp/src/gb.net.smtp/.src/Main.module | 68 + comp/src/gb.net.smtp/.src/Net.class | 7 + comp/src/gb.net.smtp/.src/SmtpClient.class | 601 + comp/src/gb.net.smtp/.src/SmtpPart.class | 126 + comp/src/gb.net.smtp/.src/SmtpSession.class | 147 + comp/src/gb.net.smtp/.src/SslSession.class | 76 + comp/src/gb.net.smtp/.src/TcpSession.class | 89 + comp/src/gb.net.smtp/.src/TlsSession.class | 77 + comp/src/gb.report/.component | 7 + .../.connection/Connection1.connection | 10 + .../.connection/Connection2.connection | 10 + .../gb.report/.connection/MainConn.connection | 9 + comp/src/gb.report/.dir_icon.png | Bin 0 -> 1571 bytes comp/src/gb.report/.directory | 2 + .../.hidden/control/reportdrawingarea.png | Bin 0 -> 621 bytes .../.hidden/control/reportgridview.png | Bin 0 -> 139 bytes .../gb.report/.hidden/control/reporthbox.png | Bin 0 -> 153 bytes .../gb.report/.hidden/control/reportimage.png | Bin 0 -> 1531 bytes .../gb.report/.hidden/control/reportlabel.png | Bin 0 -> 449 bytes .../gb.report/.hidden/control/reportline.png | Bin 0 -> 113 bytes .../.hidden/control/reportpagebreak.png | Bin 0 -> 158 bytes .../gb.report/.hidden/control/reportpanel.png | Bin 0 -> 154 bytes .../.hidden/control/reportsvgimage.png | Bin 0 -> 2284 bytes .../.hidden/control/reporttextlabel.png | Bin 0 -> 686 bytes .../gb.report/.hidden/control/reportvbox.png | Bin 0 -> 241 bytes .../gb.report/.hidden/control/reportview.png | Bin 0 -> 732 bytes .../.hidden/control/reportvpanel.png | Bin 0 -> 200 bytes comp/src/gb.report/.icon.png | Bin 0 -> 16142 bytes comp/src/gb.report/.lang/ca.po | 224 + comp/src/gb.report/.lang/cs.po | 233 + comp/src/gb.report/.lang/es.po | 423 + comp/src/gb.report/.lang/es_ES.po | 436 + comp/src/gb.report/.lang/fr.po | 454 + comp/src/gb.report/.lang/nl.po | 436 + comp/src/gb.report/.lang/ru.po | 450 + comp/src/gb.report/.lang/zh.po | 423 + comp/src/gb.report/.project | 25 + .../gb.report/.src/Borders/ReportBorder.class | 209 + .../.src/Borders/_ReportBorderSide.class | 16 + .../.src/Borders/_ReportRoundCorner.class | 136 + .../.src/BoxShadow/FReportBoxEditor.class | 26 + .../.src/BoxShadow/FReportBoxEditor.form | 11 + .../.src/BoxShadow/ReportBoxShadow.class | 222 + .../.src/BoxShadow/_ReportBoxShadow.class | 13 + .../gb.report/.src/Brush/ReportBrush.class | 222 + .../.src/Controls/ReportControl.class | 596 + .../gb.report/.src/MainTools/MReport.module | 26 + .../.src/MainTools/ReportUnits.module | 92 + .../.src/MainTools/Types/TControl.class | 76 + .../.src/MainTools/Types/TPageColumn.class | 8 + .../.src/MainTools/Types/TSizeHint.class | 5 + .../.src/MainTools/Types/TSizeParse.class | 70 + comp/src/gb.report/.src/Optional/Align.class | 10 + .../src/gb.report/.src/Optional/Arrange.class | 9 + comp/src/gb.report/.src/Optional/Line.class | 13 + .../.src/Padding/ReportPadding.class | 63 + comp/src/gb.report/.src/Preview/CPrint.class | 54 + .../src/gb.report/.src/Preview/FOptions.class | 9 + comp/src/gb.report/.src/Preview/FOptions.form | 52 + .../src/gb.report/.src/Preview/FPreview.class | 400 + comp/src/gb.report/.src/Preview/FPreview.form | 275 + comp/src/gb.report/.src/Preview/FPrint.class | 37 + comp/src/gb.report/.src/Preview/FPrint.form | 132 + comp/src/gb.report/.src/Preview/Form1.class | 30 + comp/src/gb.report/.src/Preview/Form1.form | 59 + .../gb.report/.src/Preview/ReportView.class | 709 + .../.src/Preview/ReportViewTask.class | 33 + comp/src/gb.report/.src/Report.class | 794 + comp/src/gb.report/.src/ReportContainer.class | 945 + .../gb.report/.src/ReportDrawingArea.class | 63 + comp/src/gb.report/.src/ReportFrame.class | 354 + comp/src/gb.report/.src/ReportGridView.class | 188 + .../ReportGridView/_ReportGridViewCell.class | 1 + .../_ReportGridViewColumn.class | 18 + .../_ReportGridViewColumns.class | 117 + .../ReportGridView/_ReportGridViewRow.class | 51 + .../ReportGridView/_ReportGridViewRows.class | 160 + comp/src/gb.report/.src/ReportHBox.class | 21 + comp/src/gb.report/.src/ReportImage.class | 186 + comp/src/gb.report/.src/ReportLabel.class | 226 + comp/src/gb.report/.src/ReportLine.class | 127 + comp/src/gb.report/.src/ReportPageBreak.class | 6 + comp/src/gb.report/.src/ReportPanel.class | 25 + comp/src/gb.report/.src/ReportSection.class | 23 + comp/src/gb.report/.src/ReportSvgImage.class | 185 + comp/src/gb.report/.src/ReportTextLabel.class | 97 + comp/src/gb.report/.src/ReportVBox.class | 33 + comp/src/gb.report/.src/ReportVPanel.class | 336 + .../gb.report/.src/Tests/Old/Report1.class | 8 + .../gb.report/.src/Tests/Old/Report1.report | 55 + .../gb.report/.src/Tests/Old/Report10.class | 8 + .../gb.report/.src/Tests/Old/Report10.report | 64 + .../gb.report/.src/Tests/Old/Report12.class | 16 + .../gb.report/.src/Tests/Old/Report12.report | 17 + .../gb.report/.src/Tests/Old/Report13.class | 38 + .../gb.report/.src/Tests/Old/Report13.report | 21 + .../gb.report/.src/Tests/Old/Report14.class | 32 + .../gb.report/.src/Tests/Old/Report14.report | 90 + .../gb.report/.src/Tests/Old/Report2.class | 20 + .../gb.report/.src/Tests/Old/Report2.report | 19 + .../gb.report/.src/Tests/Old/Report3.class | 20 + .../gb.report/.src/Tests/Old/Report3.report | 42 + .../gb.report/.src/Tests/Old/Report4.class | 46 + .../gb.report/.src/Tests/Old/Report4.report | 96 + .../gb.report/.src/Tests/Old/Report5.class | 1 + .../gb.report/.src/Tests/Old/Report5.report | 85 + .../gb.report/.src/Tests/Old/Report6.class | 2 + .../gb.report/.src/Tests/Old/Report6.report | 17 + .../gb.report/.src/Tests/Old/Report7.class | 29 + .../gb.report/.src/Tests/Old/Report7.report | 59 + .../gb.report/.src/Tests/Old/Report8.class | 56 + .../gb.report/.src/Tests/Old/Report8.report | 79 + .../gb.report/.src/Tests/Old/myReport1.class | 43 + .../gb.report/.src/Tests/Old/myReport1.report | 142 + .../gb.report/.src/Tests/Old/myReport2.class | 85 + .../gb.report/.src/Tests/Old/myReport2.report | 228 + .../gb.report/.src/Tests/Old/myReport5.class | 22 + .../gb.report/.src/Tests/Old/myReport5.report | 91 + .../gb.report/.src/Tests/OutputReport.class | 146 + .../gb.report/.src/Tests/OutputReport.report | 306 + .../gb.report/.src/Tests/OutputReport2.class | 166 + .../gb.report/.src/Tests/OutputReport2.report | 308 + comp/src/gb.report/.src/Tests/Paints.class | 33 + comp/src/gb.report/.src/Tests/Report11.class | 29 + comp/src/gb.report/.src/Tests/Report11.report | 29 + comp/src/gb.report/.src/Tests/Report41.class | 36 + comp/src/gb.report/.src/Tests/Report41.report | 34 + comp/src/gb.report/.src/Tests/Report51.class | 69 + comp/src/gb.report/.src/Tests/Report51.report | 15 + comp/src/gb.report/.src/Tests/Report52.class | 69 + comp/src/gb.report/.src/Tests/Report52.report | 15 + comp/src/gb.report/.src/Tests/Report9.class | 17 + comp/src/gb.report/.src/Tests/Report9.report | 22 + comp/src/gb.report/.src/Tests/Test.module | 9 + .../.src/Tests/rpTestShadowGrid.class | 23 + .../.src/Tests/rpTestShadowGrid.report | 25 + comp/src/gb.report/ChangeLog | 6 + comp/src/gb.report/gambas.svg | 540 + comp/src/gb.report/img/16/red-arrow-h.png | Bin 0 -> 117 bytes comp/src/gb.report/img/16/red-arrow-v.png | Bin 0 -> 120 bytes comp/src/gb.report/img/22/FullWidth.png | Bin 0 -> 139 bytes comp/src/gb.report/img/22/OnePage.png | Bin 0 -> 117 bytes comp/src/gb.report/img/22/RealSize.png | Bin 0 -> 204 bytes comp/src/gb.report/img/22/TwoPage.png | Bin 0 -> 121 bytes comp/src/gb.report/img/32/Collatecopie.png | Bin 0 -> 449 bytes comp/src/gb.report/img/32/Empty.png | Bin 0 -> 719 bytes comp/src/gb.report/img/32/grayscale.png | Bin 0 -> 1564 bytes comp/src/gb.report/img/32/reverse.png | Bin 0 -> 820 bytes comp/src/gb.report/img/control/hbox.png | Bin 0 -> 158 bytes comp/src/gb.report/img/control/label.png | Bin 0 -> 466 bytes comp/src/gb.report/img/control/picturebox.png | Bin 0 -> 2381 bytes comp/src/gb.report/img/control/vbox.png | Bin 0 -> 250 bytes comp/src/gb.report/img/control/vpanel.png | Bin 0 -> 200 bytes comp/src/gb.report/img/logo.svg | 540 + comp/src/gb.report/printer1.png | Bin 0 -> 1630 bytes comp/src/gb.report2/.component | 5 + .../.connection/Connection1.connection | 11 + .../.connection/Connection2.connection | 10 + .../.connection/Connection2.template | 398 + comp/src/gb.report2/.directory | 2 + .../.hidden/control/reportdrawingarea.png | 1 + .../.hidden/control/reportgridview.png | 1 + .../gb.report2/.hidden/control/reporthbox.png | 1 + .../.hidden/control/reportimage.png | 1 + .../.hidden/control/reportlabel.png | 1 + .../gb.report2/.hidden/control/reportline.png | Bin 0 -> 186 bytes .../.hidden/control/reportpagebreak.png | Bin 0 -> 391 bytes .../.hidden/control/reportpanel.png | 1 + .../.hidden/control/reportsvgimage.png | Bin 0 -> 383 bytes .../.hidden/control/reporttextlabel.png | 1 + .../gb.report2/.hidden/control/reportvbox.png | 1 + .../gb.report2/.hidden/control/reportview.png | 1 + .../.hidden/control/reportvpanel.png | 1 + comp/src/gb.report2/.icon.png | Bin 0 -> 6238 bytes comp/src/gb.report2/.lang/de.po | 222 + comp/src/gb.report2/.lang/es.po | 343 + comp/src/gb.report2/.lang/es_ES.po | 343 + comp/src/gb.report2/.lang/fr.po | 389 + comp/src/gb.report2/.lang/it.po | 211 + comp/src/gb.report2/.lang/nl.po | 212 + comp/src/gb.report2/.lang/pt_BR.po | 221 + comp/src/gb.report2/.lang/ru.po | 396 + comp/src/gb.report2/.lang/zh.po | 381 + comp/src/gb.report2/.project | 18 + .../gb.report2/.src/Evaluator/CResult.class | 55 + .../gb.report2/.src/Evaluator/_RepExp.class | 50 + comp/src/gb.report2/.src/Optional/Align.class | 10 + .../gb.report2/.src/Optional/Arrange.class | 11 + comp/src/gb.report2/.src/Optional/Line.class | 13 + comp/src/gb.report2/.src/Report.class | 802 + .../src/gb.report2/.src/ReportContainer.class | 1088 + comp/src/gb.report2/.src/ReportControl.class | 648 + .../gb.report2/.src/ReportDrawingArea.class | 96 + comp/src/gb.report2/.src/ReportFrame.class | 366 + .../.src/ReportGridView/ReportGridView.class | 52 + .../_ReportGridViewColumn.class | 96 + .../_ReportGridViewColumns.class | 141 + .../ReportGridView/_ReportGridViewData.class | 2 + .../ReportGridView/_ReportGridViewRow.class | 52 + .../ReportGridView/_ReportGridViewRows.class | 120 + comp/src/gb.report2/.src/ReportHBox.class | 21 + comp/src/gb.report2/.src/ReportImage.class | 200 + comp/src/gb.report2/.src/ReportLabel.class | 239 + comp/src/gb.report2/.src/ReportLine.class | 127 + .../src/gb.report2/.src/ReportPageBreak.class | 6 + comp/src/gb.report2/.src/ReportPanel.class | 25 + comp/src/gb.report2/.src/ReportSvgImage.class | 200 + .../src/gb.report2/.src/ReportTextLabel.class | 143 + comp/src/gb.report2/.src/ReportVBox.class | 17 + comp/src/gb.report2/.src/ReportVPanel.class | 26 + comp/src/gb.report2/.src/Tests/Module2.module | 13 + comp/src/gb.report2/.src/Tests/Report10.class | 15 + .../src/gb.report2/.src/Tests/Report10.report | 47 + comp/src/gb.report2/.src/Tests/Report13.class | 8 + .../src/gb.report2/.src/Tests/Report13.report | 41 + comp/src/gb.report2/.src/Tests/Report14.class | 8 + .../src/gb.report2/.src/Tests/Report14.report | 63 + comp/src/gb.report2/.src/Tests/Report15.class | 2 + .../src/gb.report2/.src/Tests/Report15.report | 13 + comp/src/gb.report2/.src/Tests/Report16.class | 14 + .../src/gb.report2/.src/Tests/Report16.report | 24 + comp/src/gb.report2/.src/Tests/Report17.class | 8 + .../src/gb.report2/.src/Tests/Report17.report | 27 + .../src/gb.report2/.src/Tests/old/FMain.class | 16 + comp/src/gb.report2/.src/Tests/old/FMain.form | 10 + .../gb.report2/.src/Tests/old/Module1.module | 19 + .../.src/Tests/old/OutputReport2.class | 166 + .../.src/Tests/old/OutputReport2.report | 305 + .../gb.report2/.src/Tests/old/Report1.class | 43 + .../gb.report2/.src/Tests/old/Report1.report | 47 + .../gb.report2/.src/Tests/old/Report11.class | 32 + .../gb.report2/.src/Tests/old/Report11.report | 98 + .../gb.report2/.src/Tests/old/Report12.class | 20 + .../gb.report2/.src/Tests/old/Report12.report | 44 + .../gb.report2/.src/Tests/old/Report2.class | 22 + .../gb.report2/.src/Tests/old/Report2.report | 26 + .../gb.report2/.src/Tests/old/Report3.class | 26 + .../gb.report2/.src/Tests/old/Report3.report | 24 + .../gb.report2/.src/Tests/old/Report4.class | 18 + .../gb.report2/.src/Tests/old/Report4.report | 20 + .../gb.report2/.src/Tests/old/Report5.class | 8 + .../gb.report2/.src/Tests/old/Report5.report | 31 + .../gb.report2/.src/Tests/old/Report6.class | 2 + .../gb.report2/.src/Tests/old/Report6.report | 11 + .../gb.report2/.src/Tests/old/Report7.class | 30 + .../gb.report2/.src/Tests/old/Report7.report | 10 + .../gb.report2/.src/Tests/old/Report8.class | 2 + .../gb.report2/.src/Tests/old/Report8.report | 19 + .../gb.report2/.src/Tests/old/Report9.class | 9 + .../gb.report2/.src/Tests/old/Report9.report | 9 + comp/src/gb.report2/.src/Tools/CPrint.class | 72 + comp/src/gb.report2/.src/Tools/MUtil.module | 24 + .../.src/Types/Base/ReportBrush.class | 222 + .../.src/Types/Base/ReportMargin.class | 40 + .../.src/Types/Base/ReportPadding.class | 94 + .../.src/Types/Border/ReportBorder.class | 205 + .../.src/Types/Border/_ReportBorderSide.class | 16 + .../Types/Border/_ReportRoundCorner.class | 137 + .../Types/BoxShadow/ReportBoxShadow.class | 225 + .../Types/BoxShadow/_ReportBoxShadow.class | 14 + .../.src/Types/ReportSizeHints.class | 26 + .../.src/Types/ReportSizeParser.class | 83 + comp/src/gb.report2/.src/Types/TControl.class | 3 + .../gb.report2/.src/Types/TSizeParse.class | 5 + .../.src/Types/_ReportVirtualControl.class | 78 + .../src/gb.report2/.src/Viewer/FPreview.class | 550 + comp/src/gb.report2/.src/Viewer/FPreview.form | 363 + .../gb.report2/.src/Viewer/ReportView.class | 410 + comp/src/gb.report2/.src/_ReportSection.class | 23 + comp/src/gb.report2/16/full-width.png | Bin 0 -> 134 bytes comp/src/gb.report2/16/one-page.png | Bin 0 -> 126 bytes comp/src/gb.report2/16/real-size.png | Bin 0 -> 192 bytes comp/src/gb.report2/16/red-arrow-h.png | Bin 0 -> 117 bytes comp/src/gb.report2/16/red-arrow-v.png | Bin 0 -> 120 bytes comp/src/gb.report2/16/two-pages.png | Bin 0 -> 130 bytes comp/src/gb.report2/22/FullWidth.png | Bin 0 -> 139 bytes comp/src/gb.report2/22/OnePage.png | Bin 0 -> 117 bytes comp/src/gb.report2/22/RealSize.png | Bin 0 -> 204 bytes comp/src/gb.report2/22/TwoPage.png | Bin 0 -> 121 bytes comp/src/gb.report2/32/Collatecopie.png | Bin 0 -> 449 bytes comp/src/gb.report2/32/Empty.png | Bin 0 -> 719 bytes comp/src/gb.report2/32/grayscale.png | Bin 0 -> 1564 bytes comp/src/gb.report2/32/reverse.png | Bin 0 -> 820 bytes comp/src/gb.report2/FunctionsList | 52 + comp/src/gb.report2/Structure | 9 + comp/src/gb.report2/gambas.svg | 540 + comp/src/gb.report2/icon.png | Bin 0 -> 2357 bytes comp/src/gb.report2/tmpJournal | 12 + comp/src/gb.report2/tortueface.gif | Bin 0 -> 1019 bytes comp/src/gb.scanner/.component | 4 + comp/src/gb.scanner/.directory | 2 + comp/src/gb.scanner/.hidden/scanner.png | Bin 0 -> 380 bytes comp/src/gb.scanner/.icon.png | Bin 0 -> 8599 bytes comp/src/gb.scanner/.project | 20 + comp/src/gb.scanner/.src/Demo/FScan.class | 397 + comp/src/gb.scanner/.src/Demo/FScan.form | 211 + comp/src/gb.scanner/.src/Demo/Form1.class | 25 + comp/src/gb.scanner/.src/Demo/Form1.form | 11 + comp/src/gb.scanner/.src/Demo/Main.module | 8 + comp/src/gb.scanner/.src/Demo/Main2.module | 31 + comp/src/gb.scanner/.src/MTest.module | 17 + comp/src/gb.scanner/.src/MTest2.module | 21 + comp/src/gb.scanner/.src/Module1.module | 28 + comp/src/gb.scanner/.src/Module2.module | 10 + comp/src/gb.scanner/.src/Scanner.class | 456 + comp/src/gb.scanner/.src/ScannerOption.class | 126 + comp/src/gb.scanner/.src/Scanners.class | 168 + comp/src/gb.scanner/next.png | Bin 0 -> 1304 bytes comp/src/gb.settings/.component | 4 + comp/src/gb.settings/.directory | 2 + comp/src/gb.settings/.icon.png | Bin 0 -> 10569 bytes comp/src/gb.settings/.project | 14 + comp/src/gb.settings/.src/Main.module | 28 + comp/src/gb.settings/.src/Settings.class | 845 + .../src/gb.settings/.src/_Settings_Keys.class | 104 + comp/src/gb.term.form/.component | 8 + comp/src/gb.term.form/.directory | 2 + comp/src/gb.term.form/.hidden/CHANGELOG | 4 + .../.hidden/control/termbutton.png | 1 + .../.hidden/control/termcheckbox.png | 1 + .../.hidden/control/termframe.png | 1 + .../gb.term.form/.hidden/control/termhbox.png | 1 + .../.hidden/control/termlabel.png | 1 + .../.hidden/control/termlistbox.png | 1 + .../.hidden/control/termpanel.png | 1 + .../.hidden/control/termpicturebox.png | 1 + .../.hidden/control/termradiobutton.png | 1 + .../.hidden/control/termscrollbar.png | 1 + .../.hidden/control/termtextbox.png | 1 + .../gb.term.form/.hidden/control/termvbox.png | 1 + comp/src/gb.term.form/.icon.png | Bin 0 -> 11170 bytes comp/src/gb.term.form/.lang/it.po | 15 + comp/src/gb.term.form/.lang/nl.po | 15 + comp/src/gb.term.form/.lang/ru.po | 40 + comp/src/gb.term.form/.lang/zh.po | 29 + comp/src/gb.term.form/.project | 17 + comp/src/gb.term.form/.src/Align.class | 8 + comp/src/gb.term.form/.src/Arrange.class | 4 + comp/src/gb.term.form/.src/Attr.class | 341 + comp/src/gb.term.form/.src/Border.class | 4 + comp/src/gb.term.form/.src/Char.class | 14 + comp/src/gb.term.form/.src/Desktop.class | 45 + .../gb.term.form/.src/Dialog/Message.class | 42 + comp/src/gb.term.form/.src/Key.class | 65 + comp/src/gb.term.form/.src/Mouse.class | 102 + comp/src/gb.term.form/.src/TermButton.class | 150 + comp/src/gb.term.form/.src/TermCheckBox.class | 114 + comp/src/gb.term.form/.src/TermColor.class | 21 + .../src/gb.term.form/.src/TermContainer.class | 243 + comp/src/gb.term.form/.src/TermControl.class | 783 + comp/src/gb.term.form/.src/TermForm.class | 23 + comp/src/gb.term.form/.src/TermFrame.class | 57 + comp/src/gb.term.form/.src/TermHBox.class | 9 + comp/src/gb.term.form/.src/TermLabel.class | 73 + comp/src/gb.term.form/.src/TermListBox.class | 201 + comp/src/gb.term.form/.src/TermPanel.class | 23 + .../gb.term.form/.src/TermPictureBox.class | 222 + .../gb.term.form/.src/TermRadioButton.class | 112 + .../src/gb.term.form/.src/TermScrollBar.class | 173 + comp/src/gb.term.form/.src/TermTextBox.class | 187 + comp/src/gb.term.form/.src/TermVBox.class | 11 + comp/src/gb.term.form/.src/TermWindow.class | 577 + comp/src/gb.term.form/.src/TermWindows.class | 715 + comp/src/gb.term.form/.src/Test/FTest2.class | 61 + comp/src/gb.term.form/.src/Test/Main.module | 136 + comp/src/gb.term.form/.src/Test/Main2.module | 61 + comp/src/gb.term.form/.src/Test/Main3.module | 7 + .../src/gb.term.form/.src/Test/Module1.module | 7 + .../gb.term.form/.src/Test/Termform1.class | 8 + .../gb.term.form/.src/Test/Termform1.termform | 16 + .../gb.term.form/.src/Test/Termform2.class | 9 + .../gb.term.form/.src/Test/Termform2.termform | 5 + comp/src/gb.term.form/.src/Test/trfTest.class | 85 + comp/src/gb.term.form/all.png | Bin 0 -> 1507 bytes comp/src/gb.util.web/.component | 4 + comp/src/gb.util.web/.directory | 2 + .../.hidden/control/ccontainer.png | Bin 0 -> 1606 bytes .../gb.util.web/.hidden/control/ccontrol.png | Bin 0 -> 1606 bytes comp/src/gb.util.web/.icon.png | Bin 0 -> 10933 bytes comp/src/gb.util.web/.project | 9 + comp/src/gb.util.web/.src/JS.class | 68 + comp/src/gb.util.web/.src/JSON.module | 381 + .../src/gb.util.web/.src/JSONCollection.class | 42 + comp/src/gb.util.web/.src/MMain.module | 32 + comp/src/gb.util.web/.src/URL.class | 185 + comp/src/gb.util.web/.src/URLQuery.class | 119 + comp/src/gb.util.web/.src/XML.class | 3 + comp/src/gb.util.web/.src/XMLMarkup.class | 1 + comp/src/gb.util/.component | 4 + comp/src/gb.util/.directory | 2 + comp/src/gb.util/.icon.png | Bin 0 -> 11424 bytes comp/src/gb.util/.lang/ar.po | 335 + comp/src/gb.util/.lang/ca.po | 336 + comp/src/gb.util/.lang/cs.po | 339 + comp/src/gb.util/.lang/cy.po | 335 + comp/src/gb.util/.lang/de.po | 335 + comp/src/gb.util/.lang/el.po | 335 + comp/src/gb.util/.lang/es.po | 335 + comp/src/gb.util/.lang/es_ES.po | 335 + comp/src/gb.util/.lang/fa.po | 335 + comp/src/gb.util/.lang/fr.po | 335 + comp/src/gb.util/.lang/gl_ES.po | 335 + comp/src/gb.util/.lang/hr.po | 335 + comp/src/gb.util/.lang/hu.po | 335 + comp/src/gb.util/.lang/id.po | 336 + comp/src/gb.util/.lang/it.po | 342 + comp/src/gb.util/.lang/ja.po | 335 + comp/src/gb.util/.lang/ko.po | 335 + comp/src/gb.util/.lang/lt.po | 393 + comp/src/gb.util/.lang/nl.po | 335 + comp/src/gb.util/.lang/no.po | 335 + comp/src/gb.util/.lang/pl.po | 335 + comp/src/gb.util/.lang/pt.po | 335 + comp/src/gb.util/.lang/pt_BR.po | 335 + comp/src/gb.util/.lang/ro.po | 335 + comp/src/gb.util/.lang/ru.po | 335 + comp/src/gb.util/.lang/sl.po | 335 + comp/src/gb.util/.lang/sv.po | 335 + comp/src/gb.util/.lang/tr.po | 335 + comp/src/gb.util/.lang/zh.po | 335 + comp/src/gb.util/.lang/zh_TW.po | 335 + comp/src/gb.util/.project | 11 + comp/src/gb.util/.src/Class.class | 127 + comp/src/gb.util/.src/ClassStat.class | 12 + comp/src/gb.util/.src/CsvFile.class | 332 + comp/src/gb.util/.src/Date.module | 215 + comp/src/gb.util/.src/File.class | 42 + comp/src/gb.util/.src/Language.class | 395 + comp/src/gb.util/.src/MMain.module | 69 + .../src/gb.util/.src/MPhonetic_English.module | 876 + comp/src/gb.util/.src/MPhonetic_French.module | 283 + comp/src/gb.util/.src/Process.class | 39 + comp/src/gb.util/.src/ProcessExpect.class | 78 + comp/src/gb.util/.src/ProcessPrompt.class | 5 + comp/src/gb.util/.src/Shell.module | 59 + comp/src/gb.util/.src/String.class | 416 + comp/src/gb.web.feed/.component | 7 + comp/src/gb.web.feed/.directory | 2 + comp/src/gb.web.feed/.hidden/TODO | 10 + comp/src/gb.web.feed/.icon.png | Bin 0 -> 12094 bytes comp/src/gb.web.feed/.lang/it.po | 119 + comp/src/gb.web.feed/.lang/nl.po | 141 + comp/src/gb.web.feed/.lang/ru.po | 106 + comp/src/gb.web.feed/.lang/zh.po | 119 + comp/src/gb.web.feed/.project | 14 + comp/src/gb.web.feed/.src/Main.module | 28 + comp/src/gb.web.feed/.src/Rss.class | 427 + comp/src/gb.web.feed/.src/RssCategory.class | 24 + comp/src/gb.web.feed/.src/RssCloud.class | 64 + comp/src/gb.web.feed/.src/RssDate.class | 38 + comp/src/gb.web.feed/.src/RssEnclosure.class | 29 + comp/src/gb.web.feed/.src/RssGuid.class | 37 + comp/src/gb.web.feed/.src/RssImage.class | 79 + comp/src/gb.web.feed/.src/RssItem.class | 113 + comp/src/gb.web.feed/.src/RssSource.class | 27 + comp/src/gb.web.feed/.src/RssTextInput.class | 51 + comp/src/gb.web.feed/Feed-icon.svg | 18 + comp/src/gb.web.feed/test.xml | 41 + comp/src/gb.web.form/.component | 7 + comp/src/gb.web.form/.directory | 2 + .../.hidden/Uncompressed/gw-style.css | 504 + .../gb.web.form/.hidden/Uncompressed/lib.js | 1321 + .../.hidden/Uncompressed/style.css | 732 + comp/src/gb.web.form/.hidden/calendar.js | 1577 + .../gb.web.form/.hidden/control/webbutton.png | 1 + .../.hidden/control/webcheckbox.png | 1 + .../.hidden/control/webcombobox.png | 1 + .../.hidden/control/webcontainer.png | Bin 0 -> 109 bytes .../.hidden/control/webdatebox.png | 1 + .../.hidden/control/webdatechooser.png | 1 + .../.hidden/control/webexpander.png | 1 + .../gb.web.form/.hidden/control/webhbox.png | 1 + .../gb.web.form/.hidden/control/webhtml.png | Bin 0 -> 403 bytes .../gb.web.form/.hidden/control/webimage.png | 1 + .../gb.web.form/.hidden/control/weblabel.png | 1 + .../.hidden/control/weblistbox.png | 1 + .../gb.web.form/.hidden/control/webmenu.png | Bin 0 -> 637 bytes .../.hidden/control/webmenubar.png | Bin 0 -> 472 bytes .../.hidden/control/webmenuitem.png | Bin 0 -> 1059 bytes .../.hidden/control/webprogressbar.png | 1 + .../.hidden/control/webradiobutton.png | 1 + .../.hidden/control/webscrollview.png | 1 + .../.hidden/control/webseparator.png | 1 + .../gb.web.form/.hidden/control/webslider.png | 1 + .../.hidden/control/webspinbox.png | 1 + .../gb.web.form/.hidden/control/webtable.png | Bin 0 -> 195 bytes .../.hidden/control/webtabpanel.png | 1 + .../.hidden/control/webtextarea.png | 1 + .../.hidden/control/webtextbox.png | 1 + .../gb.web.form/.hidden/control/webtimer.png | 1 + .../.hidden/control/webuploadarea.png | Bin 0 -> 245 bytes .../.hidden/control/webuploadbutton.png | Bin 0 -> 153 bytes .../.hidden/control/webuploader.png | Bin 0 -> 387 bytes .../gb.web.form/.hidden/control/webvbox.png | 1 + comp/src/gb.web.form/.icon.png | Bin 0 -> 11601 bytes comp/src/gb.web.form/.lang/fr.po | 306 + comp/src/gb.web.form/.lang/it.po | 44 + comp/src/gb.web.form/.lang/nl.po | 283 + comp/src/gb.web.form/.lang/pt_BR.po | 44 + comp/src/gb.web.form/.lang/ru.po | 300 + comp/src/gb.web.form/.lang/zh.po | 306 + comp/src/gb.web.form/.project | 18 + comp/src/gb.web.form/.public/favicon.png | Bin 0 -> 16241 bytes .../src/gb.web.form/.public/gw-arrow-down.png | Bin 0 -> 132 bytes .../src/gb.web.form/.public/gw-arrow-left.png | Bin 0 -> 117 bytes .../gb.web.form/.public/gw-arrow-right.png | Bin 0 -> 114 bytes comp/src/gb.web.form/.public/gw-arrow-up.png | Bin 0 -> 130 bytes comp/src/gb.web.form/.public/gw-close.png | Bin 0 -> 478 bytes comp/src/gb.web.form/.public/gw-max.png | Bin 0 -> 233 bytes .../src/gb.web.form/.public/gw-table-more.gif | Bin 0 -> 723 bytes comp/src/gb.web.form/.public/gw-waiting.gif | Bin 0 -> 6968 bytes .../src/gb.web.form/.public/message/close.svg | 148 + .../src/gb.web.form/.public/message/error.png | Bin 0 -> 1173 bytes comp/src/gb.web.form/.public/message/info.png | Bin 0 -> 828 bytes .../gb.web.form/.public/message/question.png | Bin 0 -> 1189 bytes .../gb.web.form/.public/message/warning.png | Bin 0 -> 588 bytes comp/src/gb.web.form/.public/new.png | Bin 0 -> 608 bytes comp/src/gb.web.form/.public/open.png | Bin 0 -> 817 bytes comp/src/gb.web.form/.src/Align.class | 11 + comp/src/gb.web.form/.src/Arrange.class | 16 + .../gb.web.form/.src/Calendar/FCalendar.class | 25 + .../.src/Calendar/FCalendar.webform | 9 + .../.src/Calendar/WebDateBox.class | 121 + .../.src/Calendar/WebDateChooser.class | 244 + comp/src/gb.web.form/.src/Color.class | 44 + comp/src/gb.web.form/.src/Header.class | 36 + comp/src/gb.web.form/.src/Header.webpage | 12 + comp/src/gb.web.form/.src/Main.module | 30 + .../gb.web.form/.src/Message/FMessage.class | 94 + .../gb.web.form/.src/Message/FMessage.webform | 43 + .../gb.web.form/.src/Message/Message.class | 61 + comp/src/gb.web.form/.src/Scroll.class | 14 + comp/src/gb.web.form/.src/Select.class | 12 + comp/src/gb.web.form/.src/Test/FHello.class | 8 + comp/src/gb.web.form/.src/Test/FHello.webform | 31 + .../.src/Test/FTestWebUploader.class | 16 + .../.src/Test/FTestWebUploader.webform | 18 + comp/src/gb.web.form/.src/Test/Webform1.class | 83 + .../gb.web.form/.src/Test/Webform1.webform | 147 + comp/src/gb.web.form/.src/Test/Webform2.class | 146 + .../gb.web.form/.src/Test/Webform2.webform | 275 + comp/src/gb.web.form/.src/Test/Webform3.class | 75 + .../gb.web.form/.src/Test/Webform3.webform | 41 + comp/src/gb.web.form/.src/Test/Webform4.class | 41 + .../gb.web.form/.src/Test/Webform4.webform | 45 + comp/src/gb.web.form/.src/Test/Webform5.class | 16 + .../gb.web.form/.src/Test/Webform5.webform | 25 + comp/src/gb.web.form/.src/Test/Webform6.class | 20 + .../gb.web.form/.src/Test/Webform6.webform | 30 + comp/src/gb.web.form/.src/Test/Webform7.class | 4 + .../gb.web.form/.src/Test/Webform7.webform | 15 + comp/src/gb.web.form/.src/Test/Webform8.class | 13 + .../gb.web.form/.src/Test/Webform8.webform | 12 + comp/src/gb.web.form/.src/WebButton.class | 134 + comp/src/gb.web.form/.src/WebCheckBox.class | 71 + comp/src/gb.web.form/.src/WebComboBox.class | 269 + comp/src/gb.web.form/.src/WebContainer.class | 438 + comp/src/gb.web.form/.src/WebControl.class | 1102 + .../gb.web.form/.src/WebControlStyle.class | 46 + comp/src/gb.web.form/.src/WebExpander.class | 109 + comp/src/gb.web.form/.src/WebForm.class | 1040 + comp/src/gb.web.form/.src/WebHBox.class | 17 + comp/src/gb.web.form/.src/WebHtml.class | 32 + comp/src/gb.web.form/.src/WebImage.class | 61 + comp/src/gb.web.form/.src/WebLabel.class | 83 + comp/src/gb.web.form/.src/WebMenu.class | 133 + comp/src/gb.web.form/.src/WebMenuBar.class | 14 + comp/src/gb.web.form/.src/WebMenuItem.class | 70 + .../src/gb.web.form/.src/WebProgressBar.class | 58 + .../src/gb.web.form/.src/WebRadioButton.class | 81 + comp/src/gb.web.form/.src/WebScrollView.class | 188 + comp/src/gb.web.form/.src/WebSeparator.class | 18 + comp/src/gb.web.form/.src/WebSlider.class | 21 + comp/src/gb.web.form/.src/WebSpinBox.class | 123 + comp/src/gb.web.form/.src/WebTabPanel.class | 193 + .../gb.web.form/.src/WebTable/WebTable.class | 644 + .../.src/WebTable/WebTableData.class | 8 + .../.src/WebTable/WebTableSelection.class | 296 + .../.src/WebTable/_WebTableColumn.class | 136 + .../.src/WebTable/_WebTableColumns.class | 115 + comp/src/gb.web.form/.src/WebTextArea.class | 148 + comp/src/gb.web.form/.src/WebTextBox.class | 187 + comp/src/gb.web.form/.src/WebTimer.class | 93 + comp/src/gb.web.form/.src/WebUploadArea.class | 195 + .../gb.web.form/.src/WebUploadButton.class | 137 + comp/src/gb.web.form/.src/WebUploader.class | 135 + comp/src/gb.web.form/.src/WebVBox.class | 17 + comp/src/gb.web.form/.src/WebWindow.class | 368 + comp/src/gb.web.form/ac.js | 225 + comp/src/gb.web.form/arrow-down.png | Bin 0 -> 91 bytes comp/src/gb.web.form/arrow-right.png | Bin 0 -> 94 bytes comp/src/gb.web.form/clear.png | Bin 0 -> 116 bytes comp/src/gb.web.form/lib.js | 1440 + comp/src/gb.web.form/shadow.png | Bin 0 -> 76 bytes comp/src/gb.web.form/style.css | 878 + comp/src/gb.web.gui/.component | 6 + comp/src/gb.web.gui/.directory | 2 + .../gb.web.gui/.hidden/control/webaudio.png | Bin 0 -> 896 bytes .../gb.web.gui/.hidden/control/webbutton.png | 1 + .../.hidden/control/webcheckbox.png | 1 + .../.hidden/control/webcombobox.png | 1 + .../.hidden/control/webcontainer.png | Bin 0 -> 136 bytes .../gb.web.gui/.hidden/control/webdatebox.png | 1 + .../.hidden/control/webdatechooser.png | 1 + .../.hidden/control/webdrawingarea.png | 1 + .../.hidden/control/webexpander.png | 1 + .../.hidden/control/webfilebutton.png | Bin 0 -> 296 bytes .../gb.web.gui/.hidden/control/webhbox.png | 1 + .../gb.web.gui/.hidden/control/webhtml.png | Bin 0 -> 1249 bytes .../gb.web.gui/.hidden/control/webimage.png | 1 + .../gb.web.gui/.hidden/control/weblabel.png | 1 + .../gb.web.gui/.hidden/control/weblistbox.png | 1 + .../.hidden/control/webprogressbar.png | 1 + .../.hidden/control/webradiobutton.png | 1 + .../.hidden/control/webscrollview.png | 1 + .../.hidden/control/webseparator.png | 1 + .../gb.web.gui/.hidden/control/webslider.png | 1 + .../gb.web.gui/.hidden/control/webspinbox.png | 1 + .../gb.web.gui/.hidden/control/webtable.png | 1 + .../.hidden/control/webtabpanel.png | 1 + .../.hidden/control/webtextarea.png | 1 + .../gb.web.gui/.hidden/control/webtextbox.png | 1 + .../gb.web.gui/.hidden/control/webtimer.png | 1 + .../gb.web.gui/.hidden/control/webtree.png | 1 + .../gb.web.gui/.hidden/control/webvbox.png | 1 + comp/src/gb.web.gui/.hidden/lib.js.copy | 1477 + comp/src/gb.web.gui/.hidden/webform.png | 1 + comp/src/gb.web.gui/.icon.png | Bin 0 -> 12187 bytes comp/src/gb.web.gui/.lang/it.po | 40 + comp/src/gb.web.gui/.lang/pt_BR.po | 41 + comp/src/gb.web.gui/.lang/zh.po | 39 + comp/src/gb.web.gui/.project | 20 + comp/src/gb.web.gui/.public/blip.ogg | Bin 0 -> 75212 bytes comp/src/gb.web.gui/.public/favicon.png | Bin 0 -> 16241 bytes comp/src/gb.web.gui/.public/gw-arrow-down.png | Bin 0 -> 899 bytes comp/src/gb.web.gui/.public/gw-arrow-left.png | Bin 0 -> 863 bytes .../src/gb.web.gui/.public/gw-arrow-right.png | Bin 0 -> 963 bytes comp/src/gb.web.gui/.public/gw-arrow-up.png | Bin 0 -> 885 bytes comp/src/gb.web.gui/.public/gw-close.png | Bin 0 -> 568 bytes comp/src/gb.web.gui/.public/gw-table-more.gif | Bin 0 -> 723 bytes comp/src/gb.web.gui/.public/gw-waiting.gif | Bin 0 -> 6968 bytes comp/src/gb.web.gui/.public/message/error.png | Bin 0 -> 1212 bytes comp/src/gb.web.gui/.public/message/info.png | Bin 0 -> 283 bytes .../gb.web.gui/.public/message/question.png | Bin 0 -> 2316 bytes .../gb.web.gui/.public/message/warning.png | Bin 0 -> 919 bytes comp/src/gb.web.gui/.src/Align.class | 55 + comp/src/gb.web.gui/.src/Application.class | 11 + comp/src/gb.web.gui/.src/Arrange.class | 16 + comp/src/gb.web.gui/.src/CSelection.class | 256 + .../gb.web.gui/.src/Calendar/FCalendar.class | 32 + .../.src/Calendar/FCalendar.webform | 10 + .../gb.web.gui/.src/Calendar/WebDateBox.class | 132 + .../.src/Calendar/WebDateChooser.class | 257 + comp/src/gb.web.gui/.src/Color.class | 92 + comp/src/gb.web.gui/.src/Header.class | 50 + comp/src/gb.web.gui/.src/Header.webpage | 13 + comp/src/gb.web.gui/.src/Key.class | 143 + .../src/gb.web.gui/.src/Menu/FPopupMenu.class | 94 + .../gb.web.gui/.src/Menu/FPopupMenu.webform | 10 + comp/src/gb.web.gui/.src/Menu/WebMenu.class | 101 + .../src/gb.web.gui/.src/Menu/WebMenuBar.class | 4 + .../gb.web.gui/.src/Message/FMessage.class | 90 + .../gb.web.gui/.src/Message/FMessage.webform | 46 + .../src/gb.web.gui/.src/Message/Message.class | 62 + comp/src/gb.web.gui/.src/Mouse.class | 98 + comp/src/gb.web.gui/.src/Paint/Gradient.class | 45 + comp/src/gb.web.gui/.src/Paint/Paint.class | 247 + .../gb.web.gui/.src/Paint/PaintBrush.class | 47 + .../gb.web.gui/.src/Paint/PaintDriver.class | 114 + .../Paint/PaintDriver_WebDrawingArea.class | 320 + comp/src/gb.web.gui/.src/Scroll.class | 14 + comp/src/gb.web.gui/.src/Select.class | 12 + comp/src/gb.web.gui/.src/Session.module | 227 + comp/src/gb.web.gui/.src/StartupError.class | 9 + comp/src/gb.web.gui/.src/StartupError.webpage | 15 + comp/src/gb.web.gui/.src/Table/WebTable.class | 673 + .../gb.web.gui/.src/Table/WebTableData.class | 19 + .../.src/Table/_WebTableColumn.class | 140 + .../.src/Table/_WebTableColumns.class | 124 + comp/src/gb.web.gui/.src/Test/FInputBox.class | 31 + .../gb.web.gui/.src/Test/FInputBox.webform | 47 + .../gb.web.gui/.src/Test/FTestDialog.class | 20 + .../gb.web.gui/.src/Test/FTestDialog.webform | 33 + .../.src/Test/FTestDrawingArea.class | 99 + .../.src/Test/FTestDrawingArea.webform | 22 + .../gb.web.gui/.src/Test/FTestSlider.class | 9 + .../gb.web.gui/.src/Test/FTestSlider.webform | 12 + .../gb.web.gui/.src/Test/FTestWebAudio.class | 92 + .../.src/Test/FTestWebAudio.webform | 48 + comp/src/gb.web.gui/.src/Test/Webform1.class | 390 + .../src/gb.web.gui/.src/Test/Webform1.webform | 306 + comp/src/gb.web.gui/.src/Test/Webform2.class | 24 + .../src/gb.web.gui/.src/Test/Webform2.webform | 42 + comp/src/gb.web.gui/.src/Test/Webform3.class | 58 + .../src/gb.web.gui/.src/Test/Webform3.webform | 39 + comp/src/gb.web.gui/.src/Test/Webform4.class | 20 + .../src/gb.web.gui/.src/Test/Webform4.webform | 70 + comp/src/gb.web.gui/.src/Tree/WebTree.class | 1615 + .../gb.web.gui/.src/Tree/WebTreeData.class | 19 + .../.src/Tree/WebTreeSelection.class | 87 + .../gb.web.gui/.src/Tree/_WebTreeColumn.class | 4 + .../.src/Tree/_WebTreeColumns.class | 108 + .../gb.web.gui/.src/Tree/_WebTreeItem.class | 519 + comp/src/gb.web.gui/.src/Upload.module | 72 + comp/src/gb.web.gui/.src/WebAudio.class | 216 + comp/src/gb.web.gui/.src/WebButton.class | 217 + comp/src/gb.web.gui/.src/WebCheckBox.class | 74 + comp/src/gb.web.gui/.src/WebComboBox.class | 283 + comp/src/gb.web.gui/.src/WebContainer.class | 335 + comp/src/gb.web.gui/.src/WebControl.class | 1304 + .../src/gb.web.gui/.src/WebControlStyle.class | 46 + comp/src/gb.web.gui/.src/WebDrawingArea.class | 78 + comp/src/gb.web.gui/.src/WebFileButton.class | 201 + comp/src/gb.web.gui/.src/WebForm.class | 1740 + comp/src/gb.web.gui/.src/WebHBox.class | 17 + comp/src/gb.web.gui/.src/WebHtml.class | 38 + comp/src/gb.web.gui/.src/WebImage.class | 135 + comp/src/gb.web.gui/.src/WebLabel.class | 95 + comp/src/gb.web.gui/.src/WebListBox.class | 346 + comp/src/gb.web.gui/.src/WebProgressBar.class | 56 + comp/src/gb.web.gui/.src/WebRadioButton.class | 84 + comp/src/gb.web.gui/.src/WebScrollView.class | 179 + comp/src/gb.web.gui/.src/WebSeparator.class | 18 + comp/src/gb.web.gui/.src/WebSlider.class | 21 + comp/src/gb.web.gui/.src/WebSpinBox.class | 125 + comp/src/gb.web.gui/.src/WebTabPanel.class | 240 + comp/src/gb.web.gui/.src/WebTextArea.class | 145 + comp/src/gb.web.gui/.src/WebTextBox.class | 186 + comp/src/gb.web.gui/.src/WebTimer.class | 109 + comp/src/gb.web.gui/.src/WebVBox.class | 17 + comp/src/gb.web.gui/.src/WebWindow.class | 367 + comp/src/gb.web.gui/ac.js | 225 + comp/src/gb.web.gui/lib.js | 2067 + comp/src/gb.web.gui/style.css | 1141 + comp/src/gb.web/.component | 5 + comp/src/gb.web/.directory | 2 + comp/src/gb.web/.hidden/Session_opt | 527 + comp/src/gb.web/.icon.png | Bin 0 -> 11601 bytes comp/src/gb.web/.project | 16 + comp/src/gb.web/.src/Application.module | 85 + comp/src/gb.web/.src/CGI.module | 154 + comp/src/gb.web/.src/FileSessionManager.class | 316 + comp/src/gb.web/.src/Main.module | 348 + comp/src/gb.web/.src/Request.module | 347 + comp/src/gb.web/.src/Response.module | 388 + comp/src/gb.web/.src/Session.module | 308 + comp/src/gb.web/.src/SessionManager.class | 38 + .../gb.web/.src/SqliteSessionManager.class | 384 + comp/src/gb.web/.src/URL.class | 62 + comp/src/gb.web/.src/WebPage.class | 111 + comp/src/gb.web/.src/Webpage1.class | 7 + comp/src/gb.web/.src/Webpage1.webpage | 22 + comp/src/gb.web/.src/Webpage2.class | 2 + comp/src/gb.web/.src/Webpage2.webpage | 1 + comp/src/gb.web/.src/_Request_Get.class | 46 + comp/src/gb.web/.src/_Request_Post.class | 257 + comp/src/gb.web/.src/_ResponseCache.module | 13 + comp/src/gb.web/lang.cache | 1 + comp/src/order | 1 + component.am | 71 + configure.ac | 99 + gb.cairo/AUTHORS | 0 gb.cairo/COPYING | 1 + gb.cairo/ChangeLog | 0 gb.cairo/INSTALL | 1 + gb.cairo/Makefile.am | 3 + gb.cairo/NEWS | 0 gb.cairo/README | 0 gb.cairo/acinclude.m4 | 1 + gb.cairo/component.am | 1 + gb.cairo/configure.ac | 18 + gb.cairo/gambas.h | 1 + gb.cairo/gb.image.h | 1 + gb.cairo/gb_common.h | 1 + gb.cairo/m4 | 1 + gb.cairo/reconf | 1 + gb.cairo/src/Makefile.am | 11 + gb.cairo/src/c_cairo.c | 1199 + gb.cairo/src/c_cairo.h | 85 + gb.cairo/src/c_surface.c | 210 + gb.cairo/src/c_surface.h | 50 + gb.cairo/src/gb.cairo.component | 4 + gb.cairo/src/main.c | 57 + gb.cairo/src/main.h | 37 + gb.compress.bzlib2/AUTHORS | 0 gb.compress.bzlib2/COPYING | 1 + gb.compress.bzlib2/ChangeLog | 0 gb.compress.bzlib2/INSTALL | 1 + gb.compress.bzlib2/Makefile.am | 3 + gb.compress.bzlib2/NEWS | 0 gb.compress.bzlib2/README | 0 gb.compress.bzlib2/acinclude.m4 | 1 + gb.compress.bzlib2/component.am | 1 + gb.compress.bzlib2/configure.ac | 26 + gb.compress.bzlib2/gambas.h | 1 + gb.compress.bzlib2/gb.compress.h | 1 + gb.compress.bzlib2/gb_common.h | 1 + gb.compress.bzlib2/m4 | 1 + gb.compress.bzlib2/reconf | 1 + gb.compress.bzlib2/src/Makefile.am | 10 + .../src/gb.compress.bzlib2.component | 5 + gb.compress.bzlib2/src/main.c | 579 + gb.compress.bzlib2/src/main.h | 49 + gb.compress.zlib/AUTHORS | 0 gb.compress.zlib/COPYING | 1 + gb.compress.zlib/ChangeLog | 0 gb.compress.zlib/INSTALL | 1 + gb.compress.zlib/Makefile.am | 3 + gb.compress.zlib/NEWS | 0 gb.compress.zlib/README | 0 gb.compress.zlib/acinclude.m4 | 1 + gb.compress.zlib/component.am | 1 + gb.compress.zlib/configure.ac | 24 + gb.compress.zlib/gambas.h | 1 + gb.compress.zlib/gb.compress.h | 1 + gb.compress.zlib/gb_common.h | 1 + gb.compress.zlib/m4 | 1 + gb.compress.zlib/reconf | 1 + gb.compress.zlib/src/Makefile.am | 10 + .../src/gb.compress.zlib.component | 5 + gb.compress.zlib/src/main.c | 530 + gb.compress.zlib/src/main.h | 47 + gb.compress.zstd/AUTHORS | 0 gb.compress.zstd/COPYING | 1 + gb.compress.zstd/ChangeLog | 0 gb.compress.zstd/INSTALL | 1 + gb.compress.zstd/Makefile.am | 3 + gb.compress.zstd/NEWS | 0 gb.compress.zstd/README | 0 gb.compress.zstd/acinclude.m4 | 1 + gb.compress.zstd/component.am | 1 + gb.compress.zstd/configure.ac | 24 + gb.compress.zstd/gambas.h | 1 + gb.compress.zstd/gb.compress.h | 1 + gb.compress.zstd/gb_common.h | 1 + gb.compress.zstd/m4 | 1 + gb.compress.zstd/reconf | 1 + gb.compress.zstd/src/Makefile.am | 10 + .../src/gb.compress.zstd.component | 4 + gb.compress.zstd/src/main.c | 470 + gb.compress.zstd/src/main.h | 48 + gb.crypt/AUTHORS | 0 gb.crypt/COPYING | 1 + gb.crypt/ChangeLog | 0 gb.crypt/INSTALL | 1 + gb.crypt/Makefile.am | 3 + gb.crypt/NEWS | 0 gb.crypt/README | 0 gb.crypt/acinclude.m4 | 1 + gb.crypt/component.am | 1 + gb.crypt/configure.ac | 28 + gb.crypt/gambas.h | 1 + gb.crypt/gb_common.h | 1 + gb.crypt/m4 | 1 + gb.crypt/reconf | 1 + gb.crypt/src/Makefile.am | 14 + gb.crypt/src/c_crypt.c | 203 + gb.crypt/src/c_crypt.h | 33 + gb.crypt/src/gb.crypt.component | 7 + gb.crypt/src/main.c | 47 + gb.crypt/src/main.h | 34 + gb.db.mysql/AUTHORS | 0 gb.db.mysql/COPYING | 1 + gb.db.mysql/ChangeLog | 0 gb.db.mysql/INSTALL | 1 + gb.db.mysql/Makefile.am | 3 + gb.db.mysql/NEWS | 0 gb.db.mysql/README | 0 gb.db.mysql/acinclude.m4 | 1 + gb.db.mysql/component.am | 1 + gb.db.mysql/configure.ac | 55 + gb.db.mysql/gambas.h | 1 + gb.db.mysql/gb.db.h | 1 + gb.db.mysql/gb.db.proto.h | 1 + gb.db.mysql/gb_common.h | 1 + gb.db.mysql/m4 | 1 + gb.db.mysql/reconf | 1 + gb.db.mysql/src/Makefile.am | 11 + gb.db.mysql/src/gb.db.mysql.component | 5 + gb.db.mysql/src/main.c | 2903 ++ gb.db.mysql/src/main.h | 46 + gb.db.odbc/AUTHORS | 0 gb.db.odbc/COPYING | 1 + gb.db.odbc/ChangeLog | 37 + gb.db.odbc/INSTALL | 1 + gb.db.odbc/Makefile.am | 3 + gb.db.odbc/NEWS | 0 gb.db.odbc/README | 0 gb.db.odbc/acinclude.m4 | 1 + gb.db.odbc/component.am | 1 + gb.db.odbc/configure.ac | 28 + gb.db.odbc/gambas.h | 1 + gb.db.odbc/gb.db.h | 1 + gb.db.odbc/gb.db.proto.h | 1 + gb.db.odbc/gb_common.h | 1 + gb.db.odbc/m4 | 1 + gb.db.odbc/reconf | 1 + gb.db.odbc/src/Makefile.am | 11 + gb.db.odbc/src/gb.db.odbc.component | 6 + gb.db.odbc/src/main.c | 3311 ++ gb.db.odbc/src/main.h | 38 + gb.db.postgresql/AUTHORS | 0 gb.db.postgresql/COPYING | 26 + gb.db.postgresql/COPYING.GPL | 339 + gb.db.postgresql/ChangeLog | 0 gb.db.postgresql/INSTALL | 1 + gb.db.postgresql/Makefile.am | 3 + gb.db.postgresql/NEWS | 0 gb.db.postgresql/README | 0 gb.db.postgresql/acinclude.m4 | 1 + gb.db.postgresql/component.am | 1 + gb.db.postgresql/configure.ac | 28 + gb.db.postgresql/gambas.h | 1 + gb.db.postgresql/gb.db.h | 1 + gb.db.postgresql/gb.db.proto.h | 1 + gb.db.postgresql/gb_common.h | 1 + gb.db.postgresql/m4 | 1 + gb.db.postgresql/reconf | 1 + gb.db.postgresql/src/Makefile.am | 11 + .../src/gb.db.postgresql.component | 6 + gb.db.postgresql/src/main.c | 3027 ++ gb.db.postgresql/src/main.h | 56 + gb.db.sqlite2/AUTHORS | 0 gb.db.sqlite2/COPYING | 1 + gb.db.sqlite2/ChangeLog | 38 + gb.db.sqlite2/INSTALL | 1 + gb.db.sqlite2/Makefile.am | 3 + gb.db.sqlite2/NEWS | 0 gb.db.sqlite2/README | 56 + gb.db.sqlite2/TODO | 15 + gb.db.sqlite2/acinclude.m4 | 1 + gb.db.sqlite2/component.am | 1 + gb.db.sqlite2/configure.ac | 26 + gb.db.sqlite2/gambas.h | 1 + gb.db.sqlite2/gb.db.h | 1 + gb.db.sqlite2/gb.db.proto.h | 1 + gb.db.sqlite2/gb_common.h | 1 + gb.db.sqlite2/m4 | 1 + gb.db.sqlite2/reconf | 1 + gb.db.sqlite2/src/Makefile.am | 13 + gb.db.sqlite2/src/dataset.cpp | 585 + gb.db.sqlite2/src/dataset.h | 420 + gb.db.sqlite2/src/gb.db.sqlite2.component | 6 + gb.db.sqlite2/src/main.cpp | 2521 + gb.db.sqlite2/src/main.h | 44 + gb.db.sqlite2/src/qry_dat.cpp | 469 + gb.db.sqlite2/src/qry_dat.h | 302 + gb.db.sqlite2/src/sqlitedataset.cpp | 783 + gb.db.sqlite2/src/sqlitedataset.h | 208 + gb.db.sqlite2/src/stringhelper.cpp | 95 + gb.db.sqlite2/src/stringhelper.h | 72 + gb.db.sqlite3/AUTHORS | 0 gb.db.sqlite3/COPYING | 1 + gb.db.sqlite3/ChangeLog | 55 + gb.db.sqlite3/INSTALL | 1 + gb.db.sqlite3/Makefile.am | 3 + gb.db.sqlite3/NEWS | 0 gb.db.sqlite3/README | 60 + gb.db.sqlite3/acinclude.m4 | 1 + gb.db.sqlite3/component.am | 1 + gb.db.sqlite3/configure.ac | 20 + gb.db.sqlite3/gambas.h | 1 + gb.db.sqlite3/gb.db.h | 1 + gb.db.sqlite3/gb.db.proto.h | 1 + gb.db.sqlite3/gb_common.h | 1 + gb.db.sqlite3/m4 | 1 + gb.db.sqlite3/reconf | 1 + gb.db.sqlite3/src/Makefile.am | 14 + gb.db.sqlite3/src/README | 56 + gb.db.sqlite3/src/gb.db.sqlite3.component | 6 + gb.db.sqlite3/src/gb_buffer.c | 104 + gb.db.sqlite3/src/gb_buffer.h | 47 + gb.db.sqlite3/src/helper.c | 533 + gb.db.sqlite3/src/helper.h | 68 + gb.db.sqlite3/src/main.c | 2539 + gb.db.sqlite3/src/main.h | 39 + gb.dbus/AUTHORS | 0 gb.dbus/COPYING | 1 + gb.dbus/ChangeLog | 0 gb.dbus/INSTALL | 1 + gb.dbus/Makefile.am | 3 + gb.dbus/NEWS | 0 gb.dbus/README | 0 gb.dbus/acinclude.m4 | 1 + gb.dbus/component.am | 1 + gb.dbus/configure.ac | 16 + gb.dbus/gambas.h | 1 + gb.dbus/gb_common.h | 1 + gb.dbus/m4 | 1 + gb.dbus/reconf | 1 + gb.dbus/src/Makefile.am | 17 + gb.dbus/src/c_dbus.c | 60 + gb.dbus/src/c_dbus.h | 35 + gb.dbus/src/c_dbusconnection.c | 268 + gb.dbus/src/c_dbusconnection.h | 47 + gb.dbus/src/c_dbusobserver.c | 322 + gb.dbus/src/c_dbusobserver.h | 63 + gb.dbus/src/c_dbusvariant.c | 72 + gb.dbus/src/c_dbusvariant.h | 48 + gb.dbus/src/dbus_print_message.c | 435 + gb.dbus/src/dbus_print_message.h | 55 + gb.dbus/src/gb.dbus.component | 4 + gb.dbus/src/gb.dbus/.directory | 2 + gb.dbus/src/gb.dbus/.hidden/icon.png | Bin 0 -> 1649 bytes gb.dbus/src/gb.dbus/.icon.png | Bin 0 -> 12759 bytes gb.dbus/src/gb.dbus/.project | 10 + gb.dbus/src/gb.dbus/.src/CIntrospection.class | 195 + gb.dbus/src/gb.dbus/.src/DBus.class | 178 + .../src/gb.dbus/.src/DBusApplication.class | 135 + gb.dbus/src/gb.dbus/.src/DBusConnection.class | 60 + gb.dbus/src/gb.dbus/.src/DBusObject.class | 704 + gb.dbus/src/gb.dbus/.src/DBusProxy.class | 412 + gb.dbus/src/gb.dbus/.src/DBusSignal.class | 33 + gb.dbus/src/gb.dbus/.src/DBusValues.class | 4 + gb.dbus/src/gb.dbus/.src/MMain.module | 177 + gb.dbus/src/gb.dbus/.src/Test/CTest.class | 65 + gb.dbus/src/gb.dbus/.src/Test/CTest2.class | 9 + gb.dbus/src/gb.dbus/.src/Test/CTest3.class | 15 + gb.dbus/src/gb.dbus/.src/Test/MyObject.class | 32 + gb.dbus/src/gb.dbus/.src/Test/MyValue.class | 5 + gb.dbus/src/gb.dbus/.src/Test/mpris.class | 205 + gb.dbus/src/gb.dbus/.src/_DBusNull.class | 5 + gb.dbus/src/helper.c | 1565 + gb.dbus/src/helper.h | 57 + gb.dbus/src/main.c | 60 + gb.dbus/src/main.h | 39 + gb.desktop.gnome.keyring/AUTHORS | 0 gb.desktop.gnome.keyring/COPYING | 1 + gb.desktop.gnome.keyring/ChangeLog | 0 gb.desktop.gnome.keyring/INSTALL | 1 + gb.desktop.gnome.keyring/Makefile.am | 3 + gb.desktop.gnome.keyring/NEWS | 0 gb.desktop.gnome.keyring/README | 0 gb.desktop.gnome.keyring/acinclude.m4 | 1 + gb.desktop.gnome.keyring/component.am | 1 + gb.desktop.gnome.keyring/configure.ac | 19 + gb.desktop.gnome.keyring/gambas.h | 1 + gb.desktop.gnome.keyring/gb_common.h | 1 + gb.desktop.gnome.keyring/m4 | 1 + gb.desktop.gnome.keyring/reconf | 1 + gb.desktop.gnome.keyring/src/Makefile.am | 11 + .../src/gb.desktop.gnome.keyring.component | 3 + gb.desktop.gnome.keyring/src/keyring.c | 161 + gb.desktop.gnome.keyring/src/keyring.h | 34 + gb.desktop.gnome.keyring/src/main.c | 49 + gb.desktop.gnome.keyring/src/main.h | 33 + gb.desktop.x11/AUTHORS | 0 gb.desktop.x11/COPYING | 1 + gb.desktop.x11/ChangeLog | 0 gb.desktop.x11/INSTALL | 1 + gb.desktop.x11/Makefile.am | 3 + gb.desktop.x11/NEWS | 0 gb.desktop.x11/README | 0 gb.desktop.x11/acinclude.m4 | 1 + gb.desktop.x11/component.am | 1 + gb.desktop.x11/configure.ac | 24 + gb.desktop.x11/gambas.h | 1 + gb.desktop.x11/gb.image.h | 1 + gb.desktop.x11/gb_common.h | 1 + gb.desktop.x11/gb_list.h | 1 + gb.desktop.x11/gb_list_temp.h | 1 + gb.desktop.x11/m4 | 1 + gb.desktop.x11/reconf | 1 + gb.desktop.x11/src/Makefile.am | 38 + gb.desktop.x11/src/c_x11.c | 759 + gb.desktop.x11/src/c_x11.h | 48 + gb.desktop.x11/src/c_x11systray.c | 214 + gb.desktop.x11/src/c_x11systray.h | 38 + gb.desktop.x11/src/gb.desktop.x11.component | 4 + gb.desktop.x11/src/gb.desktop.x11/.directory | 2 + .../src/gb.desktop.x11/.hidden/icon.png | Bin 0 -> 979 bytes gb.desktop.x11/src/gb.desktop.x11/.icon.png | Bin 0 -> 11079 bytes gb.desktop.x11/src/gb.desktop.x11/.project | 10 + .../src/gb.desktop.x11/.src/Atom.class | 19 + .../gb.desktop.x11/.src/DesktopWatcher.class | 97 + .../gb.desktop.x11/.src/DesktopWindow.class | 329 + .../src/gb.desktop.x11/.src/Main.module | 5 + .../src/gb.desktop.x11/.src/X11.class | 131 + .../gb.desktop.x11/.src/_DesktopVirtual.class | 100 + .../.src/_Desktop_Windows.class | 83 + gb.desktop.x11/src/gb_list.c | 24 + gb.desktop.x11/src/main.c | 53 + gb.desktop.x11/src/main.h | 35 + gb.desktop.x11/src/systray/common.h | 82 + gb.desktop.x11/src/systray/debug.c | 150 + gb.desktop.x11/src/systray/debug.h | 88 + gb.desktop.x11/src/systray/embed.c | 358 + gb.desktop.x11/src/systray/embed.h | 43 + gb.desktop.x11/src/systray/icons.c | 242 + gb.desktop.x11/src/systray/icons.h | 117 + gb.desktop.x11/src/systray/kde_tray.c | 161 + gb.desktop.x11/src/systray/kde_tray.h | 34 + gb.desktop.x11/src/systray/list.h | 76 + gb.desktop.x11/src/systray/settings.c | 949 + gb.desktop.x11/src/systray/settings.h | 94 + gb.desktop.x11/src/systray/systray.c | 992 + gb.desktop.x11/src/systray/systray.h | 47 + gb.desktop.x11/src/systray/tray.c | 747 + gb.desktop.x11/src/systray/tray.h | 146 + gb.desktop.x11/src/systray/wmh.c | 232 + gb.desktop.x11/src/systray/wmh.h | 102 + gb.desktop.x11/src/systray/xembed.c | 537 + gb.desktop.x11/src/systray/xembed.h | 49 + gb.desktop.x11/src/systray/xutils.c | 442 + gb.desktop.x11/src/systray/xutils.h | 116 + gb.desktop.x11/src/x11.c | 835 + gb.desktop.x11/src/x11.h | 116 + gb.form.htmlview/AUTHORS | 0 gb.form.htmlview/COPYING | 1 + gb.form.htmlview/ChangeLog | 0 gb.form.htmlview/INSTALL | 1 + gb.form.htmlview/Makefile.am | 3 + gb.form.htmlview/NEWS | 0 gb.form.htmlview/README | 0 gb.form.htmlview/acinclude.m4 | 1 + gb.form.htmlview/component.am | 1 + gb.form.htmlview/configure.ac | 18 + gb.form.htmlview/gambas.h | 1 + gb.form.htmlview/gb.draw.h | 1 + gb.form.htmlview/gb.geom.h | 1 + gb.form.htmlview/gb.image.h | 1 + gb.form.htmlview/gb.paint.h | 1 + gb.form.htmlview/gb_common.h | 1 + gb.form.htmlview/m4 | 1 + gb.form.htmlview/reconf | 1 + gb.form.htmlview/src/Makefile.am | 146 + gb.form.htmlview/src/c_htmldocument.cpp | 1222 + gb.form.htmlview/src/c_htmldocument.h | 67 + .../src/gb.form.htmlview.component | 1 + .../src/gb.form.htmlview/.component | 5 + .../src/gb.form.htmlview/.directory | 2 + .../.hidden/control/htmlview.png | Bin 0 -> 897 bytes .../gb.form.htmlview/.hidden/test/desert.jpg | Bin 0 -> 16590 bytes .../gb.form.htmlview/.hidden/test/test.html | 77 + .../gb.form.htmlview/.hidden/test/test2.html | 1095 + .../gb.form.htmlview/.hidden/test/test3.html | 19 + .../gb.form.htmlview/.hidden/test/test4.html | 86 + .../gb.form.htmlview/.hidden/test/test5.html | 154 + .../gb.form.htmlview/.hidden/test/test6.html | 1640 + .../src/gb.form.htmlview/.icon.png | Bin 0 -> 8507 bytes .../src/gb.form.htmlview/.project | 14 + .../src/gb.form.htmlview/.src/FTest.class | 73 + .../src/gb.form.htmlview/.src/FTest.form | 41 + .../src/gb.form.htmlview/.src/HtmlView.class | 480 + .../.src/HtmlViewDocument.class | 36 + .../src/gb.form.htmlview/.src/Main.module | 7 + .../src/gb.form.htmlview/fail.png | Bin 0 -> 720 bytes .../src/gb.form.htmlview/master.css | 331 + gb.form.htmlview/src/gumbo/LICENSE | 202 + gb.form.htmlview/src/gumbo/attribute.c | 44 + gb.form.htmlview/src/gumbo/attribute.h | 37 + gb.form.htmlview/src/gumbo/char_ref.c | 23069 ++++++++++ gb.form.htmlview/src/gumbo/char_ref.h | 60 + gb.form.htmlview/src/gumbo/char_ref.rl | 2554 ++ gb.form.htmlview/src/gumbo/error.c | 279 + gb.form.htmlview/src/gumbo/error.h | 225 + gb.form.htmlview/src/gumbo/gumbo.h | 671 + gb.form.htmlview/src/gumbo/insertion_mode.h | 57 + gb.form.htmlview/src/gumbo/parser.c | 4188 ++ gb.form.htmlview/src/gumbo/parser.h | 57 + gb.form.htmlview/src/gumbo/string_buffer.c | 110 + gb.form.htmlview/src/gumbo/string_buffer.h | 84 + gb.form.htmlview/src/gumbo/string_piece.c | 48 + gb.form.htmlview/src/gumbo/string_piece.h | 38 + gb.form.htmlview/src/gumbo/tag.c | 95 + gb.form.htmlview/src/gumbo/tag_enum.h | 153 + gb.form.htmlview/src/gumbo/tag_gperf.h | 105 + gb.form.htmlview/src/gumbo/tag_sizes.h | 4 + gb.form.htmlview/src/gumbo/tag_strings.h | 153 + gb.form.htmlview/src/gumbo/token_type.h | 41 + gb.form.htmlview/src/gumbo/tokenizer.c | 2897 ++ gb.form.htmlview/src/gumbo/tokenizer.h | 123 + gb.form.htmlview/src/gumbo/tokenizer_states.h | 103 + gb.form.htmlview/src/gumbo/utf8.c | 270 + gb.form.htmlview/src/gumbo/utf8.h | 132 + gb.form.htmlview/src/gumbo/util.c | 58 + gb.form.htmlview/src/gumbo/util.h | 60 + gb.form.htmlview/src/gumbo/vector.c | 123 + gb.form.htmlview/src/gumbo/vector.h | 67 + gb.form.htmlview/src/litehtml/LICENSE | 24 + gb.form.htmlview/src/litehtml/README.md | 38 + gb.form.htmlview/src/litehtml/attributes.h | 35 + gb.form.htmlview/src/litehtml/background.cpp | 76 + gb.form.htmlview/src/litehtml/background.h | 58 + gb.form.htmlview/src/litehtml/borders.h | 305 + gb.form.htmlview/src/litehtml/box.cpp | 432 + gb.form.htmlview/src/litehtml/box.h | 120 + gb.form.htmlview/src/litehtml/codepoint.cpp | 82 + gb.form.htmlview/src/litehtml/codepoint.h | 51 + gb.form.htmlview/src/litehtml/context.cpp | 12 + gb.form.htmlview/src/litehtml/context.h | 20 + gb.form.htmlview/src/litehtml/css_length.cpp | 54 + gb.form.htmlview/src/litehtml/css_length.h | 135 + gb.form.htmlview/src/litehtml/css_margins.h | 36 + gb.form.htmlview/src/litehtml/css_offsets.h | 36 + gb.form.htmlview/src/litehtml/css_position.h | 36 + .../src/litehtml/css_selector.cpp | 263 + gb.form.htmlview/src/litehtml/css_selector.h | 278 + gb.form.htmlview/src/litehtml/document.cpp | 974 + gb.form.htmlview/src/litehtml/document.h | 117 + gb.form.htmlview/src/litehtml/el_anchor.cpp | 26 + gb.form.htmlview/src/litehtml/el_anchor.h | 18 + gb.form.htmlview/src/litehtml/el_base.cpp | 13 + gb.form.htmlview/src/litehtml/el_base.h | 17 + .../src/litehtml/el_before_after.cpp | 207 + .../src/litehtml/el_before_after.h | 40 + gb.form.htmlview/src/litehtml/el_body.cpp | 12 + gb.form.htmlview/src/litehtml/el_body.h | 17 + gb.form.htmlview/src/litehtml/el_break.cpp | 13 + gb.form.htmlview/src/litehtml/el_break.h | 17 + gb.form.htmlview/src/litehtml/el_cdata.cpp | 20 + gb.form.htmlview/src/litehtml/el_cdata.h | 19 + gb.form.htmlview/src/litehtml/el_comment.cpp | 25 + gb.form.htmlview/src/litehtml/el_comment.h | 20 + gb.form.htmlview/src/litehtml/el_div.cpp | 18 + gb.form.htmlview/src/litehtml/el_div.h | 17 + gb.form.htmlview/src/litehtml/el_font.cpp | 55 + gb.form.htmlview/src/litehtml/el_font.h | 17 + gb.form.htmlview/src/litehtml/el_image.cpp | 273 + gb.form.htmlview/src/litehtml/el_image.h | 28 + gb.form.htmlview/src/litehtml/el_li.cpp | 35 + gb.form.htmlview/src/litehtml/el_li.h | 20 + gb.form.htmlview/src/litehtml/el_link.cpp | 39 + gb.form.htmlview/src/litehtml/el_link.h | 18 + gb.form.htmlview/src/litehtml/el_para.cpp | 18 + gb.form.htmlview/src/litehtml/el_para.h | 18 + gb.form.htmlview/src/litehtml/el_script.cpp | 25 + gb.form.htmlview/src/litehtml/el_script.h | 20 + gb.form.htmlview/src/litehtml/el_space.cpp | 40 + gb.form.htmlview/src/litehtml/el_space.h | 20 + gb.form.htmlview/src/litehtml/el_style.cpp | 31 + gb.form.htmlview/src/litehtml/el_style.h | 20 + gb.form.htmlview/src/litehtml/el_table.cpp | 105 + gb.form.htmlview/src/litehtml/el_table.h | 26 + gb.form.htmlview/src/litehtml/el_td.cpp | 44 + gb.form.htmlview/src/litehtml/el_td.h | 17 + gb.form.htmlview/src/litehtml/el_text.cpp | 183 + gb.form.htmlview/src/litehtml/el_text.h | 37 + gb.form.htmlview/src/litehtml/el_title.cpp | 15 + gb.form.htmlview/src/litehtml/el_title.h | 18 + gb.form.htmlview/src/litehtml/el_tr.cpp | 46 + gb.form.htmlview/src/litehtml/el_tr.h | 18 + gb.form.htmlview/src/litehtml/element.cpp | 411 + gb.form.htmlview/src/litehtml/element.h | 408 + gb.form.htmlview/src/litehtml/html.cpp | 245 + gb.form.htmlview/src/litehtml/html.h | 117 + gb.form.htmlview/src/litehtml/html_tag.cpp | 4808 ++ gb.form.htmlview/src/litehtml/html_tag.h | 248 + gb.form.htmlview/src/litehtml/iterators.cpp | 93 + gb.form.htmlview/src/litehtml/iterators.h | 89 + gb.form.htmlview/src/litehtml/media_query.cpp | 431 + gb.form.htmlview/src/litehtml/media_query.h | 77 + gb.form.htmlview/src/litehtml/num_cvt.cpp | 108 + gb.form.htmlview/src/litehtml/num_cvt.h | 19 + gb.form.htmlview/src/litehtml/os_types.h | 85 + gb.form.htmlview/src/litehtml/strtod.cpp | 276 + gb.form.htmlview/src/litehtml/style.cpp | 658 + gb.form.htmlview/src/litehtml/style.h | 96 + gb.form.htmlview/src/litehtml/stylesheet.cpp | 218 + gb.form.htmlview/src/litehtml/stylesheet.h | 47 + gb.form.htmlview/src/litehtml/table.cpp | 594 + gb.form.htmlview/src/litehtml/table.h | 251 + .../src/litehtml/tstring_view.cpp | 46 + gb.form.htmlview/src/litehtml/tstring_view.h | 136 + gb.form.htmlview/src/litehtml/types.h | 750 + gb.form.htmlview/src/litehtml/url.cpp | 163 + gb.form.htmlview/src/litehtml/url.h | 139 + gb.form.htmlview/src/litehtml/url_path.cpp | 86 + gb.form.htmlview/src/litehtml/url_path.h | 51 + .../src/litehtml/utf8_strings.cpp | 97 + gb.form.htmlview/src/litehtml/utf8_strings.h | 59 + gb.form.htmlview/src/litehtml/web_color.cpp | 256 + gb.form.htmlview/src/litehtml/web_color.h | 61 + gb.form.htmlview/src/main.cpp | 59 + gb.form.htmlview/src/main.h | 46 + gb.gmp/AUTHORS | 0 gb.gmp/COPYING | 1 + gb.gmp/ChangeLog | 0 gb.gmp/INSTALL | 1 + gb.gmp/Makefile.am | 3 + gb.gmp/NEWS | 0 gb.gmp/README | 0 gb.gmp/acinclude.m4 | 1 + gb.gmp/component.am | 1 + gb.gmp/configure.ac | 21 + gb.gmp/gambas.h | 1 + gb.gmp/gb_common.h | 1 + gb.gmp/m4 | 1 + gb.gmp/reconf | 1 + gb.gmp/src/Makefile.am | 13 + gb.gmp/src/c_bigint.c | 682 + gb.gmp/src/c_bigint.h | 44 + gb.gmp/src/c_rational.c | 730 + gb.gmp/src/c_rational.h | 42 + gb.gmp/src/gb.gmp.component | 3 + gb.gmp/src/main.c | 84 + gb.gmp/src/main.h | 39 + gb.gsl/AUTHORS | 0 gb.gsl/COPYING | 1 + gb.gsl/ChangeLog | 0 gb.gsl/INSTALL | 1 + gb.gsl/Makefile.am | 3 + gb.gsl/NEWS | 0 gb.gsl/README | 0 gb.gsl/Test/test/.directory | 2 + gb.gsl/Test/test/.icon.png | Bin 0 -> 3682 bytes gb.gsl/Test/test/.project | 9 + gb.gsl/Test/test/.src/MMain.module | 247 + gb.gsl/Test/test/.src/Test.class | 199 + gb.gsl/Test/test/.src/TestComplex.class | 94 + gb.gsl/Test/test/.src/TestSuite.class | 141 + gb.gsl/acinclude.m4 | 1 + gb.gsl/component.am | 1 + gb.gsl/configure.ac | 19 + gb.gsl/gambas.h | 1 + gb.gsl/gb_common.h | 1 + gb.gsl/m4 | 1 + gb.gsl/reconf | 1 + gb.gsl/src/Makefile.am | 17 + gb.gsl/src/c_complex.c | 668 + gb.gsl/src/c_complex.h | 70 + gb.gsl/src/c_float_array.c | 421 + gb.gsl/src/c_float_array.h | 43 + gb.gsl/src/c_gsl.c | 327 + gb.gsl/src/c_gsl.h | 37 + gb.gsl/src/c_matrix.c | 1300 + gb.gsl/src/c_matrix.h | 44 + gb.gsl/src/c_newtonpolynomial.c | 53 + gb.gsl/src/c_newtonpolynomial.h | 48 + gb.gsl/src/c_polynomial.c | 914 + gb.gsl/src/c_polynomial.h | 48 + gb.gsl/src/c_vector.c | 817 + gb.gsl/src/c_vector.h | 52 + gb.gsl/src/gb.gsl.component | 5 + gb.gsl/src/main.c | 90 + gb.gsl/src/main.h | 50 + gb.gtk/AUTHORS | 0 gb.gtk/COPYING | 1 + gb.gtk/ChangeLog | 118 + gb.gtk/INSTALL | 1 + gb.gtk/Makefile.am | 3 + gb.gtk/NEWS | 0 gb.gtk/README | 0 gb.gtk/TODO | 16 + gb.gtk/acinclude.m4 | 1 + gb.gtk/component.am | 1 + gb.gtk/configure.ac | 29 + gb.gtk/gambas.h | 1 + gb.gtk/gb.draw.h | 1 + gb.gtk/gb.geom.h | 1 + gb.gtk/gb.gl.h | 1 + gb.gtk/gb.image.h | 1 + gb.gtk/gb.paint.h | 1 + gb.gtk/gb_common.h | 1 + gb.gtk/m4 | 1 + gb.gtk/reconf | 1 + gb.gtk/share | 1 + gb.gtk/src/CButton.cpp | 312 + gb.gtk/src/CButton.h | 53 + gb.gtk/src/CClipboard.cpp | 609 + gb.gtk/src/CClipboard.h | 36 + gb.gtk/src/CColor.cpp | 154 + gb.gtk/src/CColor.h | 33 + gb.gtk/src/CConst.cpp | 154 + gb.gtk/src/CConst.h | 41 + gb.gtk/src/CContainer.cpp | 762 + gb.gtk/src/CContainer.h | 128 + gb.gtk/src/CDialog.cpp | 228 + gb.gtk/src/CDialog.h | 34 + gb.gtk/src/CDraw.cpp | 39 + gb.gtk/src/CDraw.h | 39 + gb.gtk/src/CDrawingArea.cpp | 280 + gb.gtk/src/CDrawingArea.h | 53 + gb.gtk/src/CFont.cpp | 447 + gb.gtk/src/CFont.h | 57 + gb.gtk/src/CImage.cpp | 291 + gb.gtk/src/CImage.h | 55 + gb.gtk/src/CKey.cpp | 229 + gb.gtk/src/CKey.h | 35 + gb.gtk/src/CMenu.cpp | 566 + gb.gtk/src/CMenu.h | 58 + gb.gtk/src/CMouse.cpp | 472 + gb.gtk/src/CMouse.h | 54 + gb.gtk/src/CPanel.cpp | 153 + gb.gtk/src/CPanel.h | 54 + gb.gtk/src/CPicture.cpp | 276 + gb.gtk/src/CPicture.h | 57 + gb.gtk/src/CScreen.cpp | 558 + gb.gtk/src/CScreen.h | 55 + gb.gtk/src/CSlider.cpp | 173 + gb.gtk/src/CSlider.h | 59 + gb.gtk/src/CStyle.cpp | 1031 + gb.gtk/src/CStyle.h | 43 + gb.gtk/src/CTabStrip.cpp | 388 + gb.gtk/src/CTabStrip.h | 53 + gb.gtk/src/CTextArea.cpp | 499 + gb.gtk/src/CTextArea.h | 52 + gb.gtk/src/CTextBox.cpp | 287 + gb.gtk/src/CTextBox.h | 49 + gb.gtk/src/CTrayIcon.cpp | 331 + gb.gtk/src/CTrayIcon.h | 52 + gb.gtk/src/CWatcher.cpp | 179 + gb.gtk/src/CWatcher.h | 45 + gb.gtk/src/CWidget.cpp | 1108 + gb.gtk/src/CWidget.h | 94 + gb.gtk/src/CWindow.cpp | 983 + gb.gtk/src/CWindow.h | 68 + gb.gtk/src/Makefile.am | 92 + gb.gtk/src/canimation.cpp | 226 + gb.gtk/src/canimation.h | 49 + gb.gtk/src/cpaint_impl.cpp | 1750 + gb.gtk/src/cpaint_impl.h | 50 + gb.gtk/src/cprinter.cpp | 390 + gb.gtk/src/cprinter.h | 52 + gb.gtk/src/csvgimage.cpp | 387 + gb.gtk/src/csvgimage.h | 61 + gb.gtk/src/font-parser.cpp | 175 + gb.gtk/src/font-parser.h | 32 + gb.gtk/src/gapplication.cpp | 1830 + gb.gtk/src/gapplication.h | 153 + gb.gtk/src/gb.gtk.component | 6 + gb.gtk/src/gb.gtk.h | 74 + gb.gtk/src/gbutton.cpp | 754 + gb.gtk/src/gbutton.h | 103 + gb.gtk/src/gclipboard.h | 55 + gb.gtk/src/gcolor.h | 32 + gb.gtk/src/gcontainer.cpp | 1013 + gb.gtk/src/gcontainer.h | 185 + gb.gtk/src/gcontrol.cpp | 3042 ++ gb.gtk/src/gcontrol.h | 396 + gb.gtk/src/gcursor.cpp | 80 + gb.gtk/src/gcursor.h | 49 + gb.gtk/src/gdesktop.cpp | 267 + gb.gtk/src/gdesktop.h | 88 + gb.gtk/src/gdialog.cpp | 598 + gb.gtk/src/gdialog.h | 58 + gb.gtk/src/gdrag.cpp | 815 + gb.gtk/src/gdrag.h | 122 + gb.gtk/src/gdrawingarea.cpp | 411 + gb.gtk/src/gdrawingarea.h | 88 + gb.gtk/src/gfont.cpp | 818 + gb.gtk/src/gfont.h | 126 + gb.gtk/src/ggambastag.h | 38 + gb.gtk/src/gglarea.cpp | 36 + gb.gtk/src/gglarea.h | 33 + gb.gtk/src/gkey.cpp | 621 + gb.gtk/src/gkey.h | 72 + gb.gtk/src/gmainwindow.cpp | 2136 + gb.gtk/src/gmainwindow.h | 230 + gb.gtk/src/gmenu.cpp | 1384 + gb.gtk/src/gmenu.h | 185 + gb.gtk/src/gmouse.cpp | 387 + gb.gtk/src/gmouse.h | 109 + gb.gtk/src/gpanel.cpp | 143 + gb.gtk/src/gpanel.h | 46 + gb.gtk/src/gpicture.cpp | 1223 + gb.gtk/src/gpicture.h | 133 + gb.gtk/src/gplugin.h | 45 + gb.gtk/src/gprinter.cpp | 728 + gb.gtk/src/gprinter.h | 114 + gb.gtk/src/gscrollbar.h | 35 + gb.gtk/src/gshare.h | 92 + gb.gtk/src/gsignals.cpp | 399 + gb.gtk/src/gslider.cpp | 309 + gb.gtk/src/gslider.h | 83 + gb.gtk/src/gtabstrip.cpp | 901 + gb.gtk/src/gtabstrip.h | 98 + gb.gtk/src/gtag.h | 42 + gb.gtk/src/gtextarea.cpp | 1166 + gb.gtk/src/gtextarea.h | 131 + gb.gtk/src/gtextbox.cpp | 565 + gb.gtk/src/gtextbox.h | 106 + gb.gtk/src/gtools.cpp | 2583 ++ gb.gtk/src/gtools.h | 249 + gb.gtk/src/gtrayicon.cpp | 283 + gb.gtk/src/gtrayicon.h | 84 + gb.gtk/src/gtree.cpp | 1287 + gb.gtk/src/gtree.h | 190 + gb.gtk/src/kentities.h | 860 + gb.gtk/src/main.cpp | 698 + gb.gtk/src/main.h | 63 + gb.gtk/src/opengl/Makefile.am | 13 + gb.gtk/src/opengl/c_glarea.c | 185 + gb.gtk/src/opengl/c_glarea.h | 48 + gb.gtk/src/opengl/gb.gtk.opengl.component | 6 + gb.gtk/src/opengl/main.c | 61 + gb.gtk/src/opengl/main.h | 39 + gb.gtk/src/sm/bonobo-macros.h | 100 + gb.gtk/src/sm/gnome-client.c | 3094 ++ gb.gtk/src/sm/gnome-client.h | 489 + gb.gtk/src/sm/gnome-ice.c | 153 + gb.gtk/src/sm/gnome-ice.h | 44 + gb.gtk/src/sm/gnome-macros.h | 64 + gb.gtk/src/sm/gnome-marshal.c | 369 + gb.gtk/src/sm/gnome-marshal.h | 79 + gb.gtk/src/sm/gnome-uidefs.h | 122 + gb.gtk/src/sm/gnometypebuiltins.c | 459 + gb.gtk/src/sm/gnometypebuiltins.h | 76 + gb.gtk/src/sm/libgnomeui.h | 88 + gb.gtk/src/sm/libgnomeuiP.h | 56 + gb.gtk/src/sm/sm.h | 38 + gb.gtk/src/watcher.cpp | 164 + gb.gtk/src/watcher.h | 58 + gb.gtk/src/widgets.h | 149 + gb.gtk/src/x11.c | 1 + gb.gtk/src/x11.h | 1 + gb.gtk3/AUTHORS | 0 gb.gtk3/COPYING | 1 + gb.gtk3/ChangeLog | 0 gb.gtk3/INSTALL | 1 + gb.gtk3/Makefile.am | 3 + gb.gtk3/NEWS | 0 gb.gtk3/README | 0 gb.gtk3/TODO | 0 gb.gtk3/acinclude.m4 | 1 + gb.gtk3/component.am | 1 + gb.gtk3/configure.ac | 52 + gb.gtk3/gambas.h | 1 + gb.gtk3/gb.draw.h | 1 + gb.gtk3/gb.geom.h | 1 + gb.gtk3/gb.gl.h | 1 + gb.gtk3/gb.image.h | 1 + gb.gtk3/gb.paint.h | 1 + gb.gtk3/gb_common.h | 1 + gb.gtk3/m4 | 1 + gb.gtk3/reconf | 1 + gb.gtk3/share | 1 + gb.gtk3/src/CButton.cpp | 1 + gb.gtk3/src/CButton.h | 1 + gb.gtk3/src/CClipboard.cpp | 1 + gb.gtk3/src/CClipboard.h | 1 + gb.gtk3/src/CColor.cpp | 1 + gb.gtk3/src/CColor.h | 1 + gb.gtk3/src/CConst.cpp | 1 + gb.gtk3/src/CConst.h | 1 + gb.gtk3/src/CContainer.cpp | 1 + gb.gtk3/src/CContainer.h | 1 + gb.gtk3/src/CDialog.cpp | 1 + gb.gtk3/src/CDialog.h | 1 + gb.gtk3/src/CDraw.cpp | 1 + gb.gtk3/src/CDraw.h | 1 + gb.gtk3/src/CDrawingArea.cpp | 1 + gb.gtk3/src/CDrawingArea.h | 1 + gb.gtk3/src/CFont.cpp | 1 + gb.gtk3/src/CFont.h | 1 + gb.gtk3/src/CImage.cpp | 1 + gb.gtk3/src/CImage.h | 1 + gb.gtk3/src/CKey.cpp | 1 + gb.gtk3/src/CKey.h | 1 + gb.gtk3/src/CMenu.cpp | 1 + gb.gtk3/src/CMenu.h | 1 + gb.gtk3/src/CMouse.cpp | 1 + gb.gtk3/src/CMouse.h | 1 + gb.gtk3/src/CPanel.cpp | 1 + gb.gtk3/src/CPanel.h | 1 + gb.gtk3/src/CPicture.cpp | 1 + gb.gtk3/src/CPicture.h | 1 + gb.gtk3/src/CScreen.cpp | 1 + gb.gtk3/src/CScreen.h | 1 + gb.gtk3/src/CSlider.cpp | 1 + gb.gtk3/src/CSlider.h | 1 + gb.gtk3/src/CStyle.cpp | 1 + gb.gtk3/src/CStyle.h | 1 + gb.gtk3/src/CTabStrip.cpp | 1 + gb.gtk3/src/CTabStrip.h | 1 + gb.gtk3/src/CTextArea.cpp | 1 + gb.gtk3/src/CTextArea.h | 1 + gb.gtk3/src/CTextBox.cpp | 1 + gb.gtk3/src/CTextBox.h | 1 + gb.gtk3/src/CTrayIcon.cpp | 1 + gb.gtk3/src/CTrayIcon.h | 1 + gb.gtk3/src/CWatcher.cpp | 1 + gb.gtk3/src/CWatcher.h | 1 + gb.gtk3/src/CWidget.cpp | 1 + gb.gtk3/src/CWidget.h | 1 + gb.gtk3/src/CWindow.cpp | 1 + gb.gtk3/src/CWindow.h | 1 + gb.gtk3/src/Makefile.am | 75 + gb.gtk3/src/canimation.cpp | 1 + gb.gtk3/src/canimation.h | 1 + gb.gtk3/src/cpaint_impl.cpp | 1 + gb.gtk3/src/cpaint_impl.h | 1 + gb.gtk3/src/cprinter.cpp | 1 + gb.gtk3/src/cprinter.h | 1 + gb.gtk3/src/csvgimage.cpp | 1 + gb.gtk3/src/csvgimage.h | 1 + gb.gtk3/src/font-parser.cpp | 1 + gb.gtk3/src/font-parser.h | 1 + gb.gtk3/src/gapplication.cpp | 1 + gb.gtk3/src/gapplication.h | 1 + gb.gtk3/src/gb.gtk.h | 1 + gb.gtk3/src/gb.gtk.patch.h | 211 + gb.gtk3/src/gb.gtk.platform.h | 74 + gb.gtk3/src/gb.gtk3.component | 7 + gb.gtk3/src/gbutton.cpp | 1 + gb.gtk3/src/gbutton.h | 1 + gb.gtk3/src/gclipboard.h | 1 + gb.gtk3/src/gcolor.h | 1 + gb.gtk3/src/gcontainer.cpp | 1 + gb.gtk3/src/gcontainer.h | 1 + gb.gtk3/src/gcontrol.cpp | 1 + gb.gtk3/src/gcontrol.h | 1 + gb.gtk3/src/gcursor.cpp | 1 + gb.gtk3/src/gcursor.h | 1 + gb.gtk3/src/gdesktop.cpp | 1 + gb.gtk3/src/gdesktop.h | 1 + gb.gtk3/src/gdialog.cpp | 1 + gb.gtk3/src/gdialog.h | 1 + gb.gtk3/src/gdrag.cpp | 1 + gb.gtk3/src/gdrag.h | 1 + gb.gtk3/src/gdrawingarea.cpp | 1 + gb.gtk3/src/gdrawingarea.h | 1 + gb.gtk3/src/gfont.cpp | 1 + gb.gtk3/src/gfont.h | 1 + gb.gtk3/src/ggambastag.h | 1 + gb.gtk3/src/gkey.cpp | 1 + gb.gtk3/src/gkey.h | 1 + gb.gtk3/src/gmainwindow.cpp | 1 + gb.gtk3/src/gmainwindow.h | 1 + gb.gtk3/src/gmenu.cpp | 1 + gb.gtk3/src/gmenu.h | 1 + gb.gtk3/src/gmouse.cpp | 1 + gb.gtk3/src/gmouse.h | 1 + gb.gtk3/src/gpanel.cpp | 1 + gb.gtk3/src/gpanel.h | 1 + gb.gtk3/src/gpicture.cpp | 1 + gb.gtk3/src/gpicture.h | 1 + gb.gtk3/src/gprinter.cpp | 1 + gb.gtk3/src/gprinter.h | 1 + gb.gtk3/src/gscrollbar.h | 1 + gb.gtk3/src/gshare.h | 1 + gb.gtk3/src/gsignals.cpp | 1 + gb.gtk3/src/gslider.cpp | 1 + gb.gtk3/src/gslider.h | 1 + gb.gtk3/src/gtabstrip.cpp | 1 + gb.gtk3/src/gtabstrip.h | 1 + gb.gtk3/src/gtag.h | 1 + gb.gtk3/src/gtextarea.cpp | 1 + gb.gtk3/src/gtextarea.h | 1 + gb.gtk3/src/gtextbox.cpp | 1 + gb.gtk3/src/gtextbox.h | 1 + gb.gtk3/src/gtools.cpp | 1 + gb.gtk3/src/gtools.h | 1 + gb.gtk3/src/gtrayicon.cpp | 1 + gb.gtk3/src/gtrayicon.h | 1 + gb.gtk3/src/gtree.cpp | 1 + gb.gtk3/src/gtree.h | 1 + gb.gtk3/src/kentities.h | 1 + gb.gtk3/src/main.cpp | 712 + gb.gtk3/src/main.h | 67 + gb.gtk3/src/opengl/Makefile.am | 13 + gb.gtk3/src/opengl/c_glarea.c | 101 + gb.gtk3/src/opengl/c_glarea.h | 48 + gb.gtk3/src/opengl/gb.gtk3.opengl.component | 5 + gb.gtk3/src/opengl/main.c | 54 + gb.gtk3/src/opengl/main.h | 38 + gb.gtk3/src/watcher.cpp | 1 + gb.gtk3/src/watcher.h | 1 + gb.gtk3/src/wayland/Makefile.am | 11 + gb.gtk3/src/wayland/gb.gtk3.wayland.component | 6 + gb.gtk3/src/wayland/main.c | 126 + gb.gtk3/src/wayland/main.h | 36 + gb.gtk3/src/webview/Makefile.am | 14 + gb.gtk3/src/webview/c_websettings.c | 403 + gb.gtk3/src/webview/c_websettings.h | 50 + gb.gtk3/src/webview/c_webview.c | 679 + gb.gtk3/src/webview/c_webview.h | 63 + gb.gtk3/src/webview/gb.gtk3.webview.component | 5 + gb.gtk3/src/webview/main.c | 54 + gb.gtk3/src/webview/main.h | 36 + gb.gtk3/src/widgets.h | 1 + gb.gtk3/src/x11/Makefile.am | 12 + gb.gtk3/src/x11/gb.gtk3.x11.component | 6 + gb.gtk3/src/x11/main.c | 168 + gb.gtk3/src/x11/main.h | 41 + gb.gtk3/src/x11/x11.c | 1 + gb.gtk3/src/x11/x11.h | 1 + gb.httpd/AUTHORS | 0 gb.httpd/COPYING | 1 + gb.httpd/ChangeLog | 0 gb.httpd/INSTALL | 1 + gb.httpd/Makefile.am | 3 + gb.httpd/NEWS | 0 gb.httpd/README | 0 gb.httpd/acinclude.m4 | 1 + gb.httpd/component.am | 1 + gb.httpd/configure.ac | 150 + gb.httpd/gambas.h | 1 + gb.httpd/gb_common.h | 1 + gb.httpd/m4 | 1 + gb.httpd/reconf | 1 + gb.httpd/src/Makefile.am | 20 + gb.httpd/src/fdwatch.c | 840 + gb.httpd/src/fdwatch.h | 85 + gb.httpd/src/gb.httpd.component | 3 + gb.httpd/src/libhttpd.c | 4376 ++ gb.httpd/src/libhttpd.h | 298 + gb.httpd/src/main.c | 90 + gb.httpd/src/main.h | 52 + gb.httpd/src/match.c | 86 + gb.httpd/src/match.h | 36 + gb.httpd/src/mime_encodings.h | 8 + gb.httpd/src/mime_types.h | 569 + gb.httpd/src/strerror.c | 37 + gb.httpd/src/tdate_parse.c | 312 + gb.httpd/src/tdate_parse.h | 33 + gb.httpd/src/thttpd.c | 2281 + gb.httpd/src/thttpd.h | 405 + gb.httpd/src/timers.c | 334 + gb.httpd/src/timers.h | 110 + gb.httpd/src/version.h | 9 + gb.image.imlib/AUTHORS | 0 gb.image.imlib/COPYING | 1 + gb.image.imlib/ChangeLog | 0 gb.image.imlib/INSTALL | 1 + gb.image.imlib/Makefile.am | 3 + gb.image.imlib/NEWS | 0 gb.image.imlib/README | 0 gb.image.imlib/acinclude.m4 | 1 + gb.image.imlib/component.am | 1 + gb.image.imlib/configure.ac | 18 + gb.image.imlib/gambas.h | 1 + gb.image.imlib/gb.draw.h | 1 + gb.image.imlib/gb.image.h | 1 + gb.image.imlib/gb_common.h | 1 + gb.image.imlib/m4 | 1 + gb.image.imlib/reconf | 1 + gb.image.imlib/src/Makefile.am | 10 + gb.image.imlib/src/c_image.c | 281 + gb.image.imlib/src/c_image.h | 47 + gb.image.imlib/src/c_imlib.c | 129 + gb.image.imlib/src/c_imlib.h | 33 + gb.image.imlib/src/gb.image.imlib.component | 5 + gb.image.imlib/src/main.c | 49 + gb.image.imlib/src/main.h | 38 + gb.image.io/AUTHORS | 0 gb.image.io/COPYING | 1 + gb.image.io/ChangeLog | 0 gb.image.io/INSTALL | 1 + gb.image.io/Makefile.am | 3 + gb.image.io/NEWS | 0 gb.image.io/README | 0 gb.image.io/acinclude.m4 | 1 + gb.image.io/component.am | 1 + gb.image.io/configure.ac | 18 + gb.image.io/gambas.h | 1 + gb.image.io/gb.image.h | 1 + gb.image.io/gb_common.h | 1 + gb.image.io/m4 | 1 + gb.image.io/reconf | 1 + gb.image.io/src/Makefile.am | 10 + gb.image.io/src/c_image.c | 311 + gb.image.io/src/c_image.h | 44 + gb.image.io/src/gb.image.io.component | 6 + gb.image.io/src/main.c | 51 + gb.image.io/src/main.h | 38 + gb.jit.llvm/AUTHORS | 1 + gb.jit.llvm/COPYING | 1 + gb.jit.llvm/ChangeLog | 0 gb.jit.llvm/INSTALL | 1 + gb.jit.llvm/Makefile.am | 3 + gb.jit.llvm/NEWS | 0 gb.jit.llvm/README | 17 + gb.jit.llvm/acinclude.m4 | 1 + gb.jit.llvm/component.am | 1 + gb.jit.llvm/configure.ac | 54 + gb.jit.llvm/gambas.h | 1 + gb.jit.llvm/gb_common.h | 1 + gb.jit.llvm/m4 | 1 + gb.jit.llvm/reconf | 1 + gb.jit.llvm/src/Makefile.am | 34 + gb.jit.llvm/src/gb.jit.h | 218 + gb.jit.llvm/src/gb.jit.llvm.component | 5 + gb.jit.llvm/src/jit.h | 1309 + gb.jit.llvm/src/jit_api.cpp | 79 + gb.jit.llvm/src/jit_codegen.cpp | 7001 +++ gb.jit.llvm/src/jit_codegen_conv.h | 786 + gb.jit.llvm/src/jit_compile.cpp | 139 + gb.jit.llvm/src/jit_conv.cpp | 280 + gb.jit.llvm/src/jit_expressions.cpp | 1872 + gb.jit.llvm/src/jit_gambas_pass.cpp | 139 + gb.jit.llvm/src/jit_gambas_pass.h | 31 + gb.jit.llvm/src/jit_read.cpp | 1100 + gb.jit.llvm/src/jit_runtime.c | 1090 + gb.jit.llvm/src/jit_runtime.h | 64 + gb.jit.llvm/src/main.cpp | 78 + gb.jit.llvm/src/main.h | 257 + gb.libxml/AUTHORS | 0 gb.libxml/COPYING | 1 + gb.libxml/ChangeLog | 0 gb.libxml/INSTALL | 1 + gb.libxml/Makefile.am | 3 + gb.libxml/NEWS | 0 gb.libxml/README | 0 gb.libxml/acinclude.m4 | 1 + gb.libxml/component.am | 1 + gb.libxml/configure.ac | 20 + gb.libxml/gambas.h | 1 + gb.libxml/m4 | 1 + gb.libxml/reconf | 1 + gb.libxml/src/CXMLDocument.c | 174 + gb.libxml/src/CXMLDocument.h | 54 + gb.libxml/src/CXMLNode.c | 300 + gb.libxml/src/CXMLNode.h | 52 + gb.libxml/src/CXMLReader.c | 517 + gb.libxml/src/CXMLReader.h | 54 + gb.libxml/src/CXMLWriter.c | 429 + gb.libxml/src/CXMLWriter.h | 52 + gb.libxml/src/Makefile.am | 15 + gb.libxml/src/gb.libxml.component | 7 + gb.libxml/src/libxml.kateproject | 7 + gb.libxml/src/main.c | 73 + gb.libxml/src/main.h | 35 + gb.media/AUTHORS | 0 gb.media/COPYING | 1 + gb.media/ChangeLog | 0 gb.media/INSTALL | 1 + gb.media/Makefile.am | 3 + gb.media/NEWS | 0 gb.media/README | 0 gb.media/acinclude.m4 | 1 + gb.media/component.am | 1 + gb.media/configure.ac | 17 + gb.media/gambas.h | 1 + gb.media/gb.image.h | 1 + gb.media/gb_common.h | 1 + gb.media/m4 | 1 + gb.media/reconf | 1 + gb.media/src/Makefile.am | 13 + gb.media/src/c_media.c | 2318 + gb.media/src/c_media.h | 139 + gb.media/src/c_mediaplayer.c | 658 + gb.media/src/c_mediaplayer.h | 62 + gb.media/src/c_mediavideo.c | 73 + gb.media/src/c_mediavideo.h | 50 + gb.media/src/gb.media.component | 4 + gb.media/src/main.c | 92 + gb.media/src/main.h | 46 + gb.mime/AUTHORS | 0 gb.mime/COPYING | 1 + gb.mime/ChangeLog | 0 gb.mime/INSTALL | 1 + gb.mime/Makefile.am | 3 + gb.mime/NEWS | 0 gb.mime/README | 0 gb.mime/acinclude.m4 | 1 + gb.mime/component.am | 1 + gb.mime/configure.ac | 58 + gb.mime/gambas.h | 1 + gb.mime/gb_common.h | 1 + gb.mime/m4 | 1 + gb.mime/reconf | 1 + gb.mime/src/Makefile.am | 13 + gb.mime/src/c_mime.c | 108 + gb.mime/src/c_mime.h | 35 + gb.mime/src/c_mimemessage.c | 307 + gb.mime/src/c_mimemessage.h | 48 + gb.mime/src/c_mimepart.c | 459 + gb.mime/src/c_mimepart.h | 45 + gb.mime/src/gb.mime.component | 3 + gb.mime/src/main.c | 61 + gb.mime/src/main.h | 46 + gb.ncurses/AUTHORS | 0 gb.ncurses/COPYING | 1 + gb.ncurses/ChangeLog | 0 gb.ncurses/INSTALL | 1 + gb.ncurses/Makefile.am | 3 + gb.ncurses/NEWS | 0 gb.ncurses/README | 0 gb.ncurses/acinclude.m4 | 1 + gb.ncurses/component.am | 1 + gb.ncurses/configure.ac | 33 + gb.ncurses/gambas.h | 1 + gb.ncurses/gb_common.h | 1 + gb.ncurses/m4 | 1 + gb.ncurses/reconf | 1 + gb.ncurses/src/Makefile.am | 17 + gb.ncurses/src/c_color.c | 279 + gb.ncurses/src/c_color.h | 13 + gb.ncurses/src/c_input.c | 632 + gb.ncurses/src/c_input.h | 63 + gb.ncurses/src/c_key.c | 76 + gb.ncurses/src/c_key.h | 29 + gb.ncurses/src/c_screen.c | 293 + gb.ncurses/src/c_screen.h | 50 + gb.ncurses/src/c_window.c | 944 + gb.ncurses/src/c_window.h | 63 + gb.ncurses/src/gb.ncurses.component | 3 + gb.ncurses/src/main.c | 106 + gb.ncurses/src/main.h | 37 + gb.net.curl/AUTHORS | 0 gb.net.curl/COPYING | 1 + gb.net.curl/ChangeLog | 0 gb.net.curl/INSTALL | 1 + gb.net.curl/Makefile.am | 3 + gb.net.curl/NEWS | 0 gb.net.curl/README | 0 gb.net.curl/acinclude.m4 | 1 + gb.net.curl/component.am | 1 + gb.net.curl/configure.ac | 21 + gb.net.curl/gambas.h | 1 + gb.net.curl/gb_common.h | 1 + gb.net.curl/m4 | 1 + gb.net.curl/reconf | 1 + gb.net.curl/src/CCurl.c | 777 + gb.net.curl/src/CCurl.h | 121 + gb.net.curl/src/CFtpClient.c | 333 + gb.net.curl/src/CFtpClient.h | 56 + gb.net.curl/src/CHttpClient.c | 701 + gb.net.curl/src/CHttpClient.h | 77 + gb.net.curl/src/CNet.c | 201 + gb.net.curl/src/CNet.h | 47 + gb.net.curl/src/CProxy.c | 147 + gb.net.curl/src/CProxy.h | 38 + gb.net.curl/src/Makefile.am | 21 + gb.net.curl/src/gb.net.curl.component | 12 + gb.net.curl/src/gb.net.curl/.directory | 2 + gb.net.curl/src/gb.net.curl/.icon.png | Bin 0 -> 10569 bytes gb.net.curl/src/gb.net.curl/.project | 10 + .../src/gb.net.curl/.src/Download.class | 99 + .../gb.net.curl/.src/DownloadManager.class | 361 + .../src/gb.net.curl/.src/HttpForm.class | 124 + gb.net.curl/src/gb.net.curl/.src/MMain.module | 42 + gb.net.curl/src/gbcurl.c | 379 + gb.net.curl/src/gbcurl.h | 79 + gb.net.curl/src/main.c | 60 + gb.net.curl/src/main.h | 34 + gb.net/AUTHORS | 0 gb.net/COPYING | 1 + gb.net/ChangeLog | 241 + gb.net/INSTALL | 1 + gb.net/Makefile.am | 3 + gb.net/NEWS | 0 gb.net/README | 0 gb.net/acinclude.m4 | 1 + gb.net/component.am | 1 + gb.net/configure.ac | 20 + gb.net/gambas.h | 1 + gb.net/gb_common.h | 1 + gb.net/m4 | 1 + gb.net/reconf | 1 + gb.net/src/CDnsClient.c | 720 + gb.net/src/CDnsClient.h | 68 + gb.net/src/CNet.c | 161 + gb.net/src/CNet.h | 86 + gb.net/src/CSerialPort.c | 762 + gb.net/src/CSerialPort.h | 82 + gb.net/src/CServerSocket.c | 644 + gb.net/src/CServerSocket.h | 70 + gb.net/src/CSocket.c | 949 + gb.net/src/CSocket.h | 112 + gb.net/src/CUdpSocket.c | 792 + gb.net/src/CUdpSocket.h | 76 + gb.net/src/Makefile.am | 25 + gb.net/src/doc/README | 146 + gb.net/src/doc/changes.txt | 87 + gb.net/src/doc/threading.sxw | Bin 0 -> 8432 bytes gb.net/src/gb.net.component | 12 + gb.net/src/gb_network.h | 37 + gb.net/src/main.c | 68 + gb.net/src/main.h | 34 + gb.net/src/speed.c | 66 + gb.net/src/speed.h | 29 + gb.net/src/tools.c | 464 + gb.net/src/tools.h | 70 + gb.openal/AUTHORS | 0 gb.openal/COPYING | 1 + gb.openal/ChangeLog | 0 gb.openal/INSTALL | 1 + gb.openal/Makefile.am | 3 + gb.openal/NEWS | 0 gb.openal/README | 0 gb.openal/acinclude.m4 | 1 + gb.openal/component.am | 1 + gb.openal/configure.ac | 18 + gb.openal/gambas.h | 1 + gb.openal/gb_common.h | 1 + gb.openal/m4 | 1 + gb.openal/reconf | 1 + gb.openal/src/Makefile.am | 10 + gb.openal/src/c_al.c | 673 + gb.openal/src/c_al.h | 33 + gb.openal/src/c_alc.c | 509 + gb.openal/src/c_alc.h | 52 + gb.openal/src/c_alure.c | 411 + gb.openal/src/c_alure.h | 45 + gb.openal/src/gb.openal.component | 3 + gb.openal/src/main.c | 55 + gb.openal/src/main.h | 45 + gb.opengl/AUTHORS | 0 gb.opengl/COPYING | 1 + gb.opengl/ChangeLog | 0 gb.opengl/INSTALL | 1 + gb.opengl/Makefile.am | 3 + gb.opengl/NEWS | 0 gb.opengl/README | 7 + gb.opengl/acinclude.m4 | 1 + gb.opengl/component.am | 1 + gb.opengl/configure.ac | 35 + gb.opengl/gambas.h | 1 + gb.opengl/gb.image.h | 1 + gb.opengl/gb_common.h | 1 + gb.opengl/m4 | 1 + gb.opengl/reconf | 1 + gb.opengl/src/GL.c | 1069 + gb.opengl/src/GL.h | 35 + gb.opengl/src/GLclipping.c | 58 + gb.opengl/src/GLclipping.h | 32 + gb.opengl/src/GLcolorLighting.c | 421 + gb.opengl/src/GLcolorLighting.h | 61 + gb.opengl/src/GLcoordTransf.c | 122 + gb.opengl/src/GLcoordTransf.h | 43 + gb.opengl/src/GLdisplayList.c | 81 + gb.opengl/src/GLdisplayList.h | 38 + gb.opengl/src/GLeval.c | 115 + gb.opengl/src/GLeval.h | 45 + gb.opengl/src/GLfog.c | 68 + gb.opengl/src/GLfog.h | 34 + gb.opengl/src/GLframeBufferOps.c | 142 + gb.opengl/src/GLframeBufferOps.h | 49 + gb.opengl/src/GLinfo.c | 501 + gb.opengl/src/GLinfo.h | 34 + gb.opengl/src/GLmodesExec.c | 64 + gb.opengl/src/GLmodesExec.h | 36 + gb.opengl/src/GLpixelOperations.c | 75 + gb.opengl/src/GLpixelOperations.h | 37 + gb.opengl/src/GLprimitives.c | 178 + gb.opengl/src/GLprimitives.h | 43 + gb.opengl/src/GLrasterization.c | 214 + gb.opengl/src/GLrasterization.h | 49 + gb.opengl/src/GLselectFeedback.c | 150 + gb.opengl/src/GLselectFeedback.h | 38 + gb.opengl/src/GLtextureMapping.c | 334 + gb.opengl/src/GLtextureMapping.h | 59 + gb.opengl/src/Makefile.am | 29 + gb.opengl/src/framebufferobject.c | 194 + gb.opengl/src/framebufferobject.h | 46 + gb.opengl/src/gb.gl.h | 42 + gb.opengl/src/gb.opengl.component | 6 + gb.opengl/src/glsl/GL.c | 114 + gb.opengl/src/glsl/GL.h | 35 + gb.opengl/src/glsl/GLattributes.c | 175 + gb.opengl/src/glsl/GLattributes.h | 38 + gb.opengl/src/glsl/GLinfo.h | 31 + gb.opengl/src/glsl/GLprogram.c | 98 + gb.opengl/src/glsl/GLprogram.h | 38 + gb.opengl/src/glsl/GLshader.c | 154 + gb.opengl/src/glsl/GLshader.h | 41 + gb.opengl/src/glsl/GLuniform.c | 519 + gb.opengl/src/glsl/GLuniform.h | 56 + gb.opengl/src/glsl/Makefile.am | 17 + gb.opengl/src/glsl/gb.opengl.glsl.component | 6 + gb.opengl/src/glsl/main.c | 48 + gb.opengl/src/glsl/main.h | 39 + gb.opengl/src/glu/GLU.c | 151 + gb.opengl/src/glu/GLU.h | 33 + gb.opengl/src/glu/GLUcoordTransf.c | 61 + gb.opengl/src/glu/GLUcoordTransf.h | 34 + gb.opengl/src/glu/GLUnurb.c | 153 + gb.opengl/src/glu/GLUnurb.h | 47 + gb.opengl/src/glu/GLUproject.c | 138 + gb.opengl/src/glu/GLUproject.h | 34 + gb.opengl/src/glu/GLUquadratic.c | 112 + gb.opengl/src/glu/GLUquadratic.h | 40 + gb.opengl/src/glu/GLUtextureImage.c | 53 + gb.opengl/src/glu/GLUtextureImage.h | 33 + gb.opengl/src/glu/Makefile.am | 20 + gb.opengl/src/glu/cglunurb.c | 74 + gb.opengl/src/glu/cglunurb.h | 50 + gb.opengl/src/glu/cgluquadric.c | 64 + gb.opengl/src/glu/cgluquadric.h | 63 + gb.opengl/src/glu/gb.opengl.glu.component | 6 + gb.opengl/src/glu/main.c | 84 + gb.opengl/src/glu/main.h | 45 + gb.opengl/src/main.c | 111 + gb.opengl/src/main.h | 47 + gb.opengl/src/sge/Makefile.am | 13 + gb.opengl/src/sge/cmd2model.c | 589 + gb.opengl/src/sge/cmd2model.h | 167 + gb.opengl/src/sge/cmd2object.c | 175 + gb.opengl/src/sge/cmd2object.h | 48 + gb.opengl/src/sge/gb.opengl.sge.component | 4 + gb.opengl/src/sge/main.c | 49 + gb.opengl/src/sge/main.h | 36 + gb.openssl/AUTHORS | 0 gb.openssl/COPYING | 28 + gb.openssl/COPYING.GPL | 339 + gb.openssl/ChangeLog | 0 gb.openssl/INSTALL | 1 + gb.openssl/Makefile.am | 3 + gb.openssl/NEWS | 0 gb.openssl/README | 0 gb.openssl/acinclude.m4 | 1 + gb.openssl/component.am | 1 + gb.openssl/configure.ac | 21 + gb.openssl/gambas.h | 1 + gb.openssl/gb_common.h | 1 + gb.openssl/m4 | 1 + gb.openssl/openssl-test/.directory | 2 + gb.openssl/openssl-test/.icon.png | Bin 0 -> 11170 bytes gb.openssl/openssl-test/.project | 8 + gb.openssl/openssl-test/.src/Main.module | 36 + gb.openssl/reconf | 1 + gb.openssl/src/Makefile.am | 17 + gb.openssl/src/c_cipher.c | 500 + gb.openssl/src/c_cipher.h | 42 + gb.openssl/src/c_digest.c | 289 + gb.openssl/src/c_digest.h | 43 + gb.openssl/src/c_hmac.c | 115 + gb.openssl/src/c_hmac.h | 43 + gb.openssl/src/c_openssl.c | 201 + gb.openssl/src/c_openssl.h | 43 + gb.openssl/src/gb.openssl.component | 3 + gb.openssl/src/main.c | 114 + gb.openssl/src/main.h | 47 + gb.pcre/AUTHORS | 0 gb.pcre/COPYING | 1 + gb.pcre/ChangeLog | 0 gb.pcre/INSTALL | 1 + gb.pcre/Makefile.am | 3 + gb.pcre/NEWS | 0 gb.pcre/README | 0 gb.pcre/acinclude.m4 | 1 + gb.pcre/component.am | 1 + gb.pcre/configure.ac | 38 + gb.pcre/gambas.h | 1 + gb.pcre/gb_common.h | 1 + gb.pcre/m4 | 1 + gb.pcre/reconf | 1 + gb.pcre/src/Makefile.am | 24 + gb.pcre/src/README | 62 + gb.pcre/src/gb.pcre.component | 7 + gb.pcre/src/gb.pcre.h | 40 + gb.pcre/src/main.c | 68 + gb.pcre/src/main.h | 37 + gb.pcre/src/regexp.c | 532 + gb.pcre/src/regexp.h | 63 + gb.pcre/src/regexp2.c | 497 + gb.pcre/src/regexp2.h | 64 + gb.pdf/AUTHORS | 0 gb.pdf/COPYING | 1 + gb.pdf/ChangeLog | 15 + gb.pdf/INSTALL | 1 + gb.pdf/Makefile.am | 3 + gb.pdf/NEWS | 0 gb.pdf/README | 0 gb.pdf/acinclude.m4 | 1 + gb.pdf/component.am | 1 + gb.pdf/configure.ac | 45 + gb.pdf/gambas.h | 1 + gb.pdf/gb.gtk.h | 1 + gb.pdf/gb.image.h | 1 + gb.pdf/gb_common.h | 1 + gb.pdf/m4 | 1 + gb.pdf/reconf | 1 + gb.pdf/src/CPdfDocument.cpp | 1542 + gb.pdf/src/CPdfDocument.h | 142 + gb.pdf/src/Makefile.am | 17 + gb.pdf/src/gb.pdf.component | 5 + gb.pdf/src/main.cpp | 78 + gb.pdf/src/main.h | 36 + gb.poppler/AUTHORS | 0 gb.poppler/COPYING | 1 + gb.poppler/ChangeLog | 0 gb.poppler/INSTALL | 1 + gb.poppler/Makefile.am | 3 + gb.poppler/NEWS | 0 gb.poppler/README | 0 gb.poppler/acinclude.m4 | 1 + gb.poppler/component.am | 1 + gb.poppler/configure.ac | 15 + gb.poppler/gambas.h | 1 + gb.poppler/gb.geom.h | 1 + gb.poppler/gb.image.h | 1 + gb.poppler/gb_common.h | 1 + gb.poppler/m4 | 1 + gb.poppler/reconf | 1 + gb.poppler/src/Makefile.am | 12 + gb.poppler/src/c_pdf_document.cpp | 874 + gb.poppler/src/c_pdf_document.h | 89 + gb.poppler/src/gb.poppler.component | 4 + gb.poppler/src/main.cpp | 67 + gb.poppler/src/main.h | 40 + gb.qt4/AUTHORS | 0 gb.qt4/COPYING | 1 + gb.qt4/ChangeLog | 0 gb.qt4/INSTALL | 1 + gb.qt4/Makefile.am | 3 + gb.qt4/NEWS | 0 gb.qt4/README | 0 gb.qt4/acinclude.m4 | 1 + gb.qt4/component.am | 1 + gb.qt4/configure.ac | 63 + gb.qt4/gambas.h | 1 + gb.qt4/gb.draw.h | 1 + gb.qt4/gb.eval.h | 1 + gb.qt4/gb.geom.h | 1 + gb.qt4/gb.gl.h | 1 + gb.qt4/gb.image.h | 1 + gb.qt4/gb.paint.h | 1 + gb.qt4/gb.qt.am | 6 + gb.qt4/gb_common.h | 1 + gb.qt4/gbc_read_common.h | 1 + gb.qt4/m4 | 1 + gb.qt4/reconf | 1 + gb.qt4/share/gb.form.action.h | 93 + gb.qt4/share/gb.form.arrangement.h | 738 + gb.qt4/share/gb.form.const.h | 171 + gb.qt4/share/gb.form.font.h | 37 + gb.qt4/share/gb.form.print.h | 55 + gb.qt4/share/gb.form.properties.h | 188 + gb.qt4/share/gb.form.trayicon.h | 615 + gb.qt4/share/gb.form.trayicon.large.h | 263 + gb.qt4/src/CButton.cpp | 685 + gb.qt4/src/CButton.h | 114 + gb.qt4/src/CCheckBox.cpp | 197 + gb.qt4/src/CCheckBox.h | 83 + gb.qt4/src/CClipboard.cpp | 922 + gb.qt4/src/CClipboard.h | 60 + gb.qt4/src/CColor.cpp | 204 + gb.qt4/src/CColor.h | 37 + gb.qt4/src/CConst.cpp | 229 + gb.qt4/src/CConst.h | 45 + gb.qt4/src/CContainer.cpp | 1663 + gb.qt4/src/CContainer.h | 200 + gb.qt4/src/CDialog.cpp | 477 + gb.qt4/src/CDialog.h | 34 + gb.qt4/src/CDraw.cpp | 300 + gb.qt4/src/CDraw.h | 50 + gb.qt4/src/CDrawingArea.cpp | 740 + gb.qt4/src/CDrawingArea.h | 144 + gb.qt4/src/CEmbedder.cpp | 143 + gb.qt4/src/CEmbedder.h | 67 + gb.qt4/src/CFont.cpp | 729 + gb.qt4/src/CFont.h | 85 + gb.qt4/src/CImage.cpp | 348 + gb.qt4/src/CImage.h | 56 + gb.qt4/src/CKey.cpp | 241 + gb.qt4/src/CKey.h | 51 + gb.qt4/src/CMenu.cpp | 1275 + gb.qt4/src/CMenu.h | 137 + gb.qt4/src/CMouse.cpp | 678 + gb.qt4/src/CMouse.h | 101 + gb.qt4/src/CPanel.cpp | 169 + gb.qt4/src/CPanel.h | 67 + gb.qt4/src/CPicture.cpp | 389 + gb.qt4/src/CPicture.h | 78 + gb.qt4/src/CRadioButton.cpp | 199 + gb.qt4/src/CRadioButton.h | 83 + gb.qt4/src/CScreen.cpp | 597 + gb.qt4/src/CScreen.h | 53 + gb.qt4/src/CScrollBar.cpp | 246 + gb.qt4/src/CScrollBar.h | 81 + gb.qt4/src/CSlider.cpp | 290 + gb.qt4/src/CSlider.h | 84 + gb.qt4/src/CStyle.cpp | 566 + gb.qt4/src/CStyle.h | 35 + gb.qt4/src/CTabStrip.cpp | 911 + gb.qt4/src/CTabStrip.h | 106 + gb.qt4/src/CTextArea.cpp | 692 + gb.qt4/src/CTextArea.h | 70 + gb.qt4/src/CTextBox.cpp | 405 + gb.qt4/src/CTextBox.h | 76 + gb.qt4/src/CWatch.cpp | 153 + gb.qt4/src/CWatch.h | 62 + gb.qt4/src/CWatcher.cpp | 179 + gb.qt4/src/CWatcher.h | 74 + gb.qt4/src/CWidget.cpp | 3490 ++ gb.qt4/src/CWidget.h | 336 + gb.qt4/src/CWindow.cpp | 3193 ++ gb.qt4/src/CWindow.h | 291 + gb.qt4/src/Makefile.am | 57 + gb.qt4/src/canimation.cpp | 189 + gb.qt4/src/canimation.h | 65 + gb.qt4/src/cpaint_impl.cpp | 1671 + gb.qt4/src/cpaint_impl.h | 92 + gb.qt4/src/cprinter.cpp | 576 + gb.qt4/src/cprinter.h | 57 + gb.qt4/src/csvgimage.cpp | 274 + gb.qt4/src/csvgimage.h | 57 + gb.qt4/src/ctrayicon.cpp | 462 + gb.qt4/src/ctrayicon.h | 71 + gb.qt4/src/desktop.c | 119 + gb.qt4/src/desktop.h | 40 + gb.qt4/src/ext/CDial.cpp | 198 + gb.qt4/src/ext/CDial.h | 63 + gb.qt4/src/ext/CEditor.cpp | 1865 + gb.qt4/src/ext/CEditor.h | 80 + gb.qt4/src/ext/CLCDNumber.cpp | 178 + gb.qt4/src/ext/CLCDNumber.h | 43 + gb.qt4/src/ext/CTextEdit.cpp | 735 + gb.qt4/src/ext/CTextEdit.h | 86 + gb.qt4/src/ext/Makefile.am | 20 + gb.qt4/src/ext/garray.cpp | 71 + gb.qt4/src/ext/garray.h | 112 + gb.qt4/src/ext/gb.qt4.ext.component | 4 + gb.qt4/src/ext/gdocument.cpp | 1786 + gb.qt4/src/ext/gdocument.h | 238 + gb.qt4/src/ext/gstring.cpp | 70 + gb.qt4/src/ext/gstring.h | 275 + gb.qt4/src/ext/gview.cpp | 3447 ++ gb.qt4/src/ext/gview.h | 317 + gb.qt4/src/ext/main.cpp | 93 + gb.qt4/src/ext/main.h | 41 + gb.qt4/src/fix_style.cpp | 237 + gb.qt4/src/fix_style.h | 62 + gb.qt4/src/gb.qt.h | 177 + gb.qt4/src/gb.qt4.component | 6 + gb.qt4/src/main.cpp | 1599 + gb.qt4/src/main.h | 170 + gb.qt4/src/opengl/CGLarea.cpp | 202 + gb.qt4/src/opengl/CGLarea.h | 60 + gb.qt4/src/opengl/Makefile.am | 14 + gb.qt4/src/opengl/gb.qt4.opengl.component | 6 + gb.qt4/src/opengl/main.cpp | 53 + gb.qt4/src/opengl/main.h | 37 + gb.qt4/src/trayicon.xpm | 163 + gb.qt4/src/webkit/Makefile.am | 19 + gb.qt4/src/webkit/ccookiejar.cpp | 188 + gb.qt4/src/webkit/ccookiejar.h | 77 + gb.qt4/src/webkit/control/webview.png | Bin 0 -> 1160 bytes gb.qt4/src/webkit/cwebdownload.cpp | 369 + gb.qt4/src/webkit/cwebdownload.h | 89 + gb.qt4/src/webkit/cwebelement.cpp | 399 + gb.qt4/src/webkit/cwebelement.h | 52 + gb.qt4/src/webkit/cwebframe.cpp | 177 + gb.qt4/src/webkit/cwebframe.h | 56 + gb.qt4/src/webkit/cwebhittest.cpp | 121 + gb.qt4/src/webkit/cwebhittest.h | 54 + gb.qt4/src/webkit/cwebsettings.cpp | 489 + gb.qt4/src/webkit/cwebsettings.h | 50 + gb.qt4/src/webkit/cwebview.cpp | 943 + gb.qt4/src/webkit/cwebview.h | 122 + gb.qt4/src/webkit/gb.qt4.webkit.component | 10 + gb.qt4/src/webkit/main.cpp | 143 + gb.qt4/src/webkit/main.h | 41 + gb.qt4/src/webview/Makefile.am | 16 + gb.qt4/src/webview/c_websettings.cpp | 500 + gb.qt4/src/webview/c_websettings.h | 56 + gb.qt4/src/webview/c_webview.cpp | 751 + gb.qt4/src/webview/c_webview.h | 121 + gb.qt4/src/webview/gb.qt4.webview.component | 10 + gb.qt4/src/webview/jsonwriter.cpp | 162 + gb.qt4/src/webview/jsonwriter.h | 29 + gb.qt4/src/webview/main.cpp | 142 + gb.qt4/src/webview/main.h | 41 + gb.qt4/src/x11.c | 801 + gb.qt4/src/x11.h | 135 + gb.qt5/AUTHORS | 0 gb.qt5/COPYING | 1 + gb.qt5/ChangeLog | 0 gb.qt5/INSTALL | 1 + gb.qt5/Makefile.am | 3 + gb.qt5/NEWS | 0 gb.qt5/README | 0 gb.qt5/acinclude.m4 | 1 + gb.qt5/component.am | 1 + gb.qt5/configure.ac | 73 + gb.qt5/gambas.h | 1 + gb.qt5/gb.draw.h | 1 + gb.qt5/gb.eval.h | 1 + gb.qt5/gb.geom.h | 1 + gb.qt5/gb.gl.h | 1 + gb.qt5/gb.image.h | 1 + gb.qt5/gb.paint.h | 1 + gb.qt5/gb.qt.am | 6 + gb.qt5/gb_common.h | 1 + gb.qt5/m4 | 1 + gb.qt5/reconf | 1 + gb.qt5/share | 1 + gb.qt5/src/CButton.cpp | 1 + gb.qt5/src/CButton.h | 1 + gb.qt5/src/CCheckBox.cpp | 1 + gb.qt5/src/CCheckBox.h | 1 + gb.qt5/src/CClipboard.cpp | 1 + gb.qt5/src/CClipboard.h | 1 + gb.qt5/src/CColor.cpp | 1 + gb.qt5/src/CColor.h | 1 + gb.qt5/src/CConst.cpp | 1 + gb.qt5/src/CConst.h | 1 + gb.qt5/src/CContainer.cpp | 1 + gb.qt5/src/CContainer.h | 1 + gb.qt5/src/CDialog.cpp | 1 + gb.qt5/src/CDialog.h | 1 + gb.qt5/src/CDraw.cpp | 1 + gb.qt5/src/CDraw.h | 1 + gb.qt5/src/CDrawingArea.cpp | 1 + gb.qt5/src/CDrawingArea.h | 1 + gb.qt5/src/CFont.cpp | 1 + gb.qt5/src/CFont.h | 1 + gb.qt5/src/CImage.cpp | 1 + gb.qt5/src/CImage.h | 1 + gb.qt5/src/CKey.cpp | 1 + gb.qt5/src/CKey.h | 1 + gb.qt5/src/CMenu.cpp | 1 + gb.qt5/src/CMenu.h | 1 + gb.qt5/src/CMouse.cpp | 1 + gb.qt5/src/CMouse.h | 1 + gb.qt5/src/CPanel.cpp | 1 + gb.qt5/src/CPanel.h | 1 + gb.qt5/src/CPicture.cpp | 1 + gb.qt5/src/CPicture.h | 1 + gb.qt5/src/CRadioButton.cpp | 1 + gb.qt5/src/CRadioButton.h | 1 + gb.qt5/src/CScreen.cpp | 1 + gb.qt5/src/CScreen.h | 1 + gb.qt5/src/CScrollBar.cpp | 1 + gb.qt5/src/CScrollBar.h | 1 + gb.qt5/src/CSlider.cpp | 1 + gb.qt5/src/CSlider.h | 1 + gb.qt5/src/CStyle.cpp | 1 + gb.qt5/src/CStyle.h | 1 + gb.qt5/src/CTabStrip.cpp | 1 + gb.qt5/src/CTabStrip.h | 1 + gb.qt5/src/CTextArea.cpp | 1 + gb.qt5/src/CTextArea.h | 1 + gb.qt5/src/CTextBox.cpp | 1 + gb.qt5/src/CTextBox.h | 1 + gb.qt5/src/CWatch.cpp | 1 + gb.qt5/src/CWatch.h | 1 + gb.qt5/src/CWatcher.cpp | 1 + gb.qt5/src/CWatcher.h | 1 + gb.qt5/src/CWidget.cpp | 1 + gb.qt5/src/CWidget.h | 1 + gb.qt5/src/CWindow.cpp | 1 + gb.qt5/src/CWindow.h | 1 + gb.qt5/src/Makefile.am | 50 + gb.qt5/src/canimation.cpp | 1 + gb.qt5/src/canimation.h | 1 + gb.qt5/src/cpaint_impl.cpp | 1 + gb.qt5/src/cpaint_impl.h | 1 + gb.qt5/src/cprinter.cpp | 1 + gb.qt5/src/cprinter.h | 1 + gb.qt5/src/csvgimage.cpp | 1 + gb.qt5/src/csvgimage.h | 1 + gb.qt5/src/ctrayicon.cpp | 1 + gb.qt5/src/ctrayicon.h | 1 + gb.qt5/src/ext/CDial.cpp | 1 + gb.qt5/src/ext/CDial.h | 1 + gb.qt5/src/ext/CLCDNumber.cpp | 1 + gb.qt5/src/ext/CLCDNumber.h | 1 + gb.qt5/src/ext/CTextEdit.cpp | 1 + gb.qt5/src/ext/CTextEdit.h | 1 + gb.qt5/src/ext/Makefile.am | 16 + gb.qt5/src/ext/gb.qt5.ext.component | 4 + gb.qt5/src/ext/main.cpp | 67 + gb.qt5/src/ext/main.h | 36 + gb.qt5/src/fix_style.cpp | 1 + gb.qt5/src/fix_style.h | 1 + gb.qt5/src/gb.qt.h | 1 + gb.qt5/src/gb.qt.platform.h | 80 + gb.qt5/src/gb.qt5.component | 6 + gb.qt5/src/main.cpp | 1332 + gb.qt5/src/main.h | 165 + gb.qt5/src/opengl/CGLarea.cpp | 158 + gb.qt5/src/opengl/CGLarea.h | 60 + gb.qt5/src/opengl/COldGLarea.cpp | 204 + gb.qt5/src/opengl/COldGLarea.h | 60 + gb.qt5/src/opengl/Makefile.am | 23 + gb.qt5/src/opengl/gb.qt5.opengl.component | 6 + gb.qt5/src/opengl/main.cpp | 58 + gb.qt5/src/opengl/main.h | 37 + gb.qt5/src/trayicon.xpm | 1 + gb.qt5/src/wayland/Makefile.am | 13 + gb.qt5/src/wayland/gb.qt5.wayland.component | 6 + gb.qt5/src/wayland/main.cpp | 243 + gb.qt5/src/wayland/main.h | 41 + gb.qt5/src/webkit/Makefile.am | 20 + gb.qt5/src/webkit/ccookiejar.cpp | 1 + gb.qt5/src/webkit/ccookiejar.h | 1 + gb.qt5/src/webkit/control/webview.png | Bin 0 -> 1572 bytes gb.qt5/src/webkit/cwebdownload.cpp | 1 + gb.qt5/src/webkit/cwebdownload.h | 1 + gb.qt5/src/webkit/cwebelement.cpp | 1 + gb.qt5/src/webkit/cwebelement.h | 1 + gb.qt5/src/webkit/cwebframe.cpp | 1 + gb.qt5/src/webkit/cwebframe.h | 1 + gb.qt5/src/webkit/cwebhittest.cpp | 1 + gb.qt5/src/webkit/cwebhittest.h | 1 + gb.qt5/src/webkit/cwebsettings.cpp | 1 + gb.qt5/src/webkit/cwebsettings.h | 1 + gb.qt5/src/webkit/cwebview.cpp | 1 + gb.qt5/src/webkit/cwebview.h | 1 + gb.qt5/src/webkit/gb.qt5.webkit.component | 10 + gb.qt5/src/webkit/main.cpp | 1 + gb.qt5/src/webkit/main.h | 1 + gb.qt5/src/webview/Makefile.am | 14 + gb.qt5/src/webview/c_websettings.cpp | 557 + gb.qt5/src/webview/c_websettings.h | 56 + gb.qt5/src/webview/c_webview.cpp | 1268 + gb.qt5/src/webview/c_webview.h | 129 + gb.qt5/src/webview/gb.qt5.webview.component | 5 + gb.qt5/src/webview/main.cpp | 142 + gb.qt5/src/webview/main.h | 41 + gb.qt5/src/x11/Makefile.am | 14 + gb.qt5/src/x11/gb.qt5.x11.component | 6 + gb.qt5/src/x11/main.cpp | 441 + gb.qt5/src/x11/main.h | 42 + gb.qt5/src/x11/x11.c | 1 + gb.qt5/src/x11/x11.h | 1 + gb.sdl.sound/AUTHORS | 5 + gb.sdl.sound/COPYING | 1 + gb.sdl.sound/ChangeLog | 0 gb.sdl.sound/INSTALL | 1 + gb.sdl.sound/Makefile.am | 3 + gb.sdl.sound/NEWS | 0 gb.sdl.sound/README | 10 + gb.sdl.sound/acinclude.m4 | 1 + gb.sdl.sound/component.am | 1 + gb.sdl.sound/configure.ac | 24 + gb.sdl.sound/gambas.h | 1 + gb.sdl.sound/gb_common.h | 1 + gb.sdl.sound/m4 | 1 + gb.sdl.sound/reconf | 1 + gb.sdl.sound/src/Makefile.am | 13 + gb.sdl.sound/src/cdrom.c | 491 + gb.sdl.sound/src/cdrom.h | 52 + gb.sdl.sound/src/gb.sdl.sound.component | 9 + gb.sdl.sound/src/main.c | 97 + gb.sdl.sound/src/main.h | 33 + gb.sdl.sound/src/sound.c | 604 + gb.sdl.sound/src/sound.h | 72 + gb.sdl/AUTHORS | 6 + gb.sdl/COPYING | 1 + gb.sdl/ChangeLog | 0 gb.sdl/INSTALL | 1 + gb.sdl/Makefile.am | 3 + gb.sdl/NEWS | 0 gb.sdl/README | 12 + gb.sdl/acinclude.m4 | 1 + gb.sdl/component.am | 1 + gb.sdl/configure.ac | 49 + gb.sdl/gambas.h | 1 + gb.sdl/gb.image.h | 1 + gb.sdl/gb_common.h | 1 + gb.sdl/m4 | 1 + gb.sdl/reconf | 1 + gb.sdl/src/Cconst.cpp | 69 + gb.sdl/src/Cconst.h | 34 + gb.sdl/src/Cdesktop.cpp | 51 + gb.sdl/src/Cdesktop.h | 34 + gb.sdl/src/Cdraw.cpp | 367 + gb.sdl/src/Cdraw.h | 49 + gb.sdl/src/Cfont.cpp | 243 + gb.sdl/src/Cfont.h | 47 + gb.sdl/src/Cimage.cpp | 160 + gb.sdl/src/Cimage.h | 58 + gb.sdl/src/Cjoystick.cpp | 296 + gb.sdl/src/Cjoystick.h | 52 + gb.sdl/src/Ckey.cpp | 235 + gb.sdl/src/Ckey.h | 50 + gb.sdl/src/Cmouse.cpp | 319 + gb.sdl/src/Cmouse.h | 65 + gb.sdl/src/Cwindow.cpp | 548 + gb.sdl/src/Cwindow.h | 78 + gb.sdl/src/Makefile.am | 34 + gb.sdl/src/SDL_h.h | 84 + gb.sdl/src/SDLapp.cpp | 266 + gb.sdl/src/SDLapp.h | 61 + gb.sdl/src/SDLcore.cpp | 52 + gb.sdl/src/SDLcore.h | 50 + gb.sdl/src/SDLcursor.cpp | 126 + gb.sdl/src/SDLcursor.h | 52 + gb.sdl/src/SDLdebug.cpp | 98 + gb.sdl/src/SDLdebug.h | 34 + gb.sdl/src/SDLerror.cpp | 30 + gb.sdl/src/SDLerror.h | 41 + gb.sdl/src/SDLfont.cpp | 586 + gb.sdl/src/SDLfont.h | 95 + gb.sdl/src/SDLgfx.cpp | 533 + gb.sdl/src/SDLgfx.h | 76 + gb.sdl/src/SDLosrender.cpp | 79 + gb.sdl/src/SDLosrender.h | 45 + gb.sdl/src/SDLsurface.cpp | 284 + gb.sdl/src/SDLsurface.h | 74 + gb.sdl/src/SDLtexture.cpp | 177 + gb.sdl/src/SDLtexture.h | 73 + gb.sdl/src/SDLwindow.cpp | 276 + gb.sdl/src/SDLwindow.h | 105 + gb.sdl/src/default_font.h | 632 + gb.sdl/src/gb.sdl.component | 6 + gb.sdl/src/main.cpp | 155 + gb.sdl/src/main.h | 42 + gb.sdl2/AUTHORS | 0 gb.sdl2/COPYING | 1 + gb.sdl2/ChangeLog | 0 gb.sdl2/INSTALL | 1 + gb.sdl2/Makefile.am | 3 + gb.sdl2/NEWS | 0 gb.sdl2/README | 0 gb.sdl2/acinclude.m4 | 1 + gb.sdl2/component.am | 1 + gb.sdl2/configure.ac | 27 + gb.sdl2/gambas.h | 1 + gb.sdl2/gb.geom.h | 1 + gb.sdl2/gb.image.h | 1 + gb.sdl2/gb_common.h | 1 + gb.sdl2/gb_list.h | 1 + gb.sdl2/gb_list_temp.h | 1 + gb.sdl2/m4 | 1 + gb.sdl2/reconf | 1 + gb.sdl2/src/Makefile.am | 29 + gb.sdl2/src/audio/Makefile.am | 15 + gb.sdl2/src/audio/c_channel.c | 411 + gb.sdl2/src/audio/c_channel.h | 55 + gb.sdl2/src/audio/c_music.c | 241 + gb.sdl2/src/audio/c_music.h | 36 + gb.sdl2/src/audio/c_sound.c | 141 + gb.sdl2/src/audio/c_sound.h | 41 + gb.sdl2/src/audio/gb.sdl2.audio.component | 2 + gb.sdl2/src/audio/main.c | 159 + gb.sdl2/src/audio/main.h | 52 + gb.sdl2/src/c_draw.c | 423 + gb.sdl2/src/c_draw.h | 49 + gb.sdl2/src/c_font.c | 527 + gb.sdl2/src/c_font.h | 52 + gb.sdl2/src/c_image.c | 214 + gb.sdl2/src/c_image.h | 57 + gb.sdl2/src/c_key.c | 344 + gb.sdl2/src/c_key.h | 37 + gb.sdl2/src/c_mouse.c | 276 + gb.sdl2/src/c_mouse.h | 50 + gb.sdl2/src/c_window.c | 670 + gb.sdl2/src/c_window.h | 72 + gb.sdl2/src/default_font.c | 202 + gb.sdl2/src/default_font.h | 38 + gb.sdl2/src/default_font_data.h | 1075 + gb.sdl2/src/gb.sdl2.component | 5 + gb.sdl2/src/main.c | 251 + gb.sdl2/src/main.h | 78 + gb.v4l/AUTHORS | 0 gb.v4l/COPYING | 1 + gb.v4l/ChangeLog | 241 + gb.v4l/INSTALL | 1 + gb.v4l/Makefile.am | 3 + gb.v4l/NEWS | 0 gb.v4l/README | 4 + gb.v4l/acinclude.m4 | 1 + gb.v4l/component.am | 1 + gb.v4l/configure.ac | 26 + gb.v4l/gambas.h | 1 + gb.v4l/gb.image.h | 1 + gb.v4l/gb_common.h | 1 + gb.v4l/m4 | 1 + gb.v4l/orig/video-capture-0.2.tar.gz | Bin 0 -> 10049 bytes gb.v4l/reconf | 1 + gb.v4l/src/CConverters.c | 255 + gb.v4l/src/CWebcam.c | 1906 + gb.v4l/src/CWebcam.h | 197 + gb.v4l/src/Makefile.am | 14 + gb.v4l/src/gb.v4l.component | 10 + gb.v4l/src/gv4l2.c | 803 + gb.v4l/src/main.c | 50 + gb.v4l/src/main.h | 36 + gb.v4l/src/videodev.h | 343 + gb.xml/AUTHORS | 0 gb.xml/COPYING | 1 + gb.xml/ChangeLog | 0 gb.xml/INSTALL | 1 + gb.xml/Makefile.am | 4 + gb.xml/NEWS | 0 gb.xml/README | 7 + gb.xml/TODO | 8 + gb.xml/acinclude.m4 | 1 + gb.xml/component.am | 1 + gb.xml/configure.ac | 38 + gb.xml/gambas.h | 1 + gb.xml/gb_common.h | 1 + gb.xml/m4 | 1 + gb.xml/reconf | 1 + gb.xml/src/.directory | 6 + gb.xml/src/CDocument.cpp | 238 + gb.xml/src/CDocument.h | 29 + gb.xml/src/CElement.cpp | 411 + gb.xml/src/CElement.h | 29 + gb.xml/src/CExplorer.cpp | 154 + gb.xml/src/CExplorer.h | 37 + gb.xml/src/CNode.cpp | 438 + gb.xml/src/CNode.h | 31 + gb.xml/src/CReader.cpp | 435 + gb.xml/src/CReader.h | 42 + gb.xml/src/CTextNode.cpp | 94 + gb.xml/src/CTextNode.h | 31 + gb.xml/src/Makefile.am | 18 + gb.xml/src/document.cpp | 214 + gb.xml/src/document.h | 38 + gb.xml/src/element.cpp | 335 + gb.xml/src/element.h | 63 + gb.xml/src/explorer.cpp | 138 + gb.xml/src/explorer.h | 65 + gb.xml/src/gb.xml.component | 5 + gb.xml/src/gb.xml.h | 204 + gb.xml/src/gb.xml/.component | 4 + gb.xml/src/gb.xml/.directory | 2 + gb.xml/src/gb.xml/.icon.png | Bin 0 -> 10933 bytes gb.xml/src/gb.xml/.project | 10 + gb.xml/src/gb.xml/.src/MTest.module | 34 + gb.xml/src/gb.xml/.src/MTest2.module | 32 + gb.xml/src/gb.xml/.src/XmlReader.class | 104 + gb.xml/src/gb.xml/.src/XmlWriter.class | 241 + gb.xml/src/gb.xml/.src/_XmlWriterDTD.class | 8 + gb.xml/src/gb.xml/text.xml | 2 + gb.xml/src/gbinterface.h | 27 + gb.xml/src/html/CHTMLDocument.cpp | 236 + gb.xml/src/html/CHTMLDocument.h | 34 + gb.xml/src/html/CHTMLElement.cpp | 121 + gb.xml/src/html/CHTMLElement.h | 32 + gb.xml/src/html/Makefile.am | 19 + gb.xml/src/html/cssfilter.cpp | 195 + gb.xml/src/html/cssfilter.h | 8 + gb.xml/src/html/gb.xml.html.component | 5 + gb.xml/src/html/gb.xml.html.h | 26 + gb.xml/src/html/htmldocument.cpp | 317 + gb.xml/src/html/htmldocument.h | 61 + gb.xml/src/html/htmlelement.cpp | 104 + gb.xml/src/html/htmlelement.h | 42 + gb.xml/src/html/htmlmain.cpp | 63 + gb.xml/src/html/htmlmain.h | 35 + gb.xml/src/html/htmlparser.cpp | 342 + gb.xml/src/html/htmlparser.h | 9 + gb.xml/src/html/htmlserializer.cpp | 239 + gb.xml/src/html/htmlserializer.h | 10 + gb.xml/src/main.cpp | 139 + gb.xml/src/main.h | 32 + gb.xml/src/node.cpp | 646 + gb.xml/src/node.h | 98 + gb.xml/src/parser.cpp | 341 + gb.xml/src/parser.h | 14 + gb.xml/src/reader.cpp | 499 + gb.xml/src/reader.h | 114 + gb.xml/src/rpc/Makefile.am | 2 + gb.xml/src/rpc/gb.xml.rpc.component | 1 + gb.xml/src/rpc/gb.xml.rpc/.component | 4 + gb.xml/src/rpc/gb.xml.rpc/.directory | 2 + gb.xml/src/rpc/gb.xml.rpc/.icon.png | Bin 0 -> 10569 bytes gb.xml/src/rpc/gb.xml.rpc/.project | 14 + gb.xml/src/rpc/gb.xml.rpc/.src/RpcArray.class | 250 + gb.xml/src/rpc/gb.xml.rpc/.src/RpcAtom.class | 29 + .../src/rpc/gb.xml.rpc/.src/RpcClient.class | 372 + .../src/rpc/gb.xml.rpc/.src/RpcFunction.class | 125 + .../src/rpc/gb.xml.rpc/.src/RpcServer.class | 357 + .../src/rpc/gb.xml.rpc/.src/RpcStruct.class | 151 + gb.xml/src/rpc/gb.xml.rpc/.src/RpcType.class | 101 + .../rpc/gb.xml.rpc/.src/Test/CXMLRPC.class | 94 + .../src/rpc/gb.xml.rpc/.src/Test/MMain.module | 63 + .../src/rpc/gb.xml.rpc/.src/Test/MTest.module | 61 + gb.xml/src/rpc/gb.xml.rpc/.src/Tools.module | 338 + gb.xml/src/rpc/gb.xml.rpc/.src/XmlRpc.class | 101 + gb.xml/src/rpc/gb.xml.rpc/.src/hPost.class | 94 + .../src/rpc/gb.xml.rpc/.src/miniServer.class | 465 + gb.xml/src/serializer.cpp | 351 + gb.xml/src/serializer.h | 18 + gb.xml/src/textnode.cpp | 336 + gb.xml/src/textnode.h | 51 + gb.xml/src/utils.cpp | 372 + gb.xml/src/utils.h | 62 + gb.xml/src/xslt/CXSLT.cpp | 181 + gb.xml/src/xslt/CXSLT.h | 44 + gb.xml/src/xslt/Makefile.am | 11 + gb.xml/src/xslt/gb.xml.xslt.component | 6 + gb.xml/src/xslt/main.cpp | 48 + gb.xml/src/xslt/main.h | 38 + gb.xml/src/xslt/xslt.pro | 14 + logo/gambas-ide.svg | 166 + logo/gambas.svg | 91 + m4/ax_compare_version.m4 | 176 + m4/gb_cflags_gcc_option.m4 | 222 + m4/gb_httpd.m4 | 176 + m4/gb_sdl.m4 | 183 + main/AUTHORS | 0 main/COPYING | 1 + main/ChangeLog | 1 + main/INSTALL | 231 + main/Makefile.am | 76 + main/NEWS | 0 main/README | 0 main/TODO | 0 main/acinclude.m4 | 1 + main/component.am | 1 + main/configure.ac | 155 + main/gb.pcre.h | 1 + main/gbc/Makefile.am | 72 + main/gbc/gb_alloc.c | 24 + main/gbc/gb_array.c | 25 + main/gbc/gb_buffer.c | 25 + main/gbc/gb_common.c | 32 + main/gbc/gb_error.c | 289 + main/gbc/gb_error.h | 129 + main/gbc/gb_file.c | 29 + main/gbc/gb_file.h | 24 + main/gbc/gb_str.c | 199 + main/gbc/gb_str.h | 42 + main/gbc/gb_table.c | 26 + main/gbc/gba.c | 504 + main/gbc/gbc.c | 864 + main/gbc/gbc_arch.c | 43 + main/gbc/gbc_archive.c | 444 + main/gbc/gbc_archive.h | 49 + main/gbc/gbc_chown.c | 52 + main/gbc/gbc_chown.h | 29 + main/gbc/gbc_class.c | 1063 + main/gbc/gbc_class.h | 283 + main/gbc/gbc_code.c | 37 + main/gbc/gbc_compile.c | 828 + main/gbc/gbc_compile.h | 150 + main/gbc/gbc_dump.c | 900 + main/gbc/gbc_form.c | 597 + main/gbc/gbc_form.h | 59 + main/gbc/gbc_form_webpage.c | 526 + main/gbc/gbc_header.c | 1219 + main/gbc/gbc_header.h | 69 + main/gbc/gbc_help.c | 182 + main/gbc/gbc_help.h | 40 + main/gbc/gbc_output.c | 1424 + main/gbc/gbc_output.h | 52 + main/gbc/gbc_pcode.c | 28 + main/gbc/gbc_preprocess.c | 316 + main/gbc/gbc_preprocess.h | 37 + main/gbc/gbc_read.c | 901 + main/gbc/gbc_read.h | 43 + main/gbc/gbc_reserved.c | 27 + main/gbc/gbc_reserved_make.c | 469 + main/gbc/gbc_trans.c | 861 + main/gbc/gbc_trans.h | 285 + main/gbc/gbc_trans_code.c | 781 + main/gbc/gbc_trans_const.c | 494 + main/gbc/gbc_trans_ctrl.c | 1379 + main/gbc/gbc_trans_expr.c | 1196 + main/gbc/gbc_trans_subr.c | 1061 + main/gbc/gbc_trans_tree.c | 882 + main/gbc/gbc_type.c | 221 + main/gbc/gbc_type.h | 115 + main/gbc/gbi.c | 938 + main/gbx/Makefile.am | 98 + main/gbx/gb.jit.h | 119 + main/gbx/gb_alloc.c | 27 + main/gbx/gb_array.c | 25 + main/gbx/gb_buffer.c | 25 + main/gbx/gb_common.c | 111 + main/gbx/gb_common_check.h | 40 + main/gbx/gb_error.c | 819 + main/gbx/gb_error.h | 196 + main/gbx/gb_file.c | 38 + main/gbx/gb_file.h | 26 + main/gbx/gb_hash.c | 24 + main/gbx/gb_list.c | 24 + main/gbx/gb_table.c | 28 + main/gbx/gbx.c | 546 + main/gbx/gbx.h | 31 + main/gbx/gbx_api.c | 2615 ++ main/gbx/gbx_api.h | 242 + main/gbx/gbx_archive.c | 798 + main/gbx/gbx_archive.h | 103 + main/gbx/gbx_c_application.c | 404 + main/gbx/gbx_c_application.h | 35 + main/gbx/gbx_c_array.c | 2604 ++ main/gbx/gbx_c_array.h | 134 + main/gbx/gbx_c_class.c | 1029 + main/gbx/gbx_c_class.h | 38 + main/gbx/gbx_c_collection.c | 459 + main/gbx/gbx_c_collection.h | 70 + main/gbx/gbx_c_enum.c | 210 + main/gbx/gbx_c_enum.h | 54 + main/gbx/gbx_c_error.c | 169 + main/gbx/gbx_c_error.h | 33 + main/gbx/gbx_c_file.c | 1212 + main/gbx/gbx_c_file.h | 86 + main/gbx/gbx_c_gambas.c | 272 + main/gbx/gbx_c_gambas.h | 35 + main/gbx/gbx_c_observer.c | 164 + main/gbx/gbx_c_observer.h | 57 + main/gbx/gbx_c_process.c | 1276 + main/gbx/gbx_c_process.h | 83 + main/gbx/gbx_c_string.c | 1042 + main/gbx/gbx_c_string.h | 50 + main/gbx/gbx_c_system.c | 460 + main/gbx/gbx_c_system.h | 35 + main/gbx/gbx_c_task.c | 770 + main/gbx/gbx_c_task.h | 62 + main/gbx/gbx_c_timer.c | 262 + main/gbx/gbx_c_timer.h | 56 + main/gbx/gbx_class.c | 1648 + main/gbx/gbx_class.h | 570 + main/gbx/gbx_class_desc.h | 209 + main/gbx/gbx_class_info.c | 448 + main/gbx/gbx_class_init.c | 187 + main/gbx/gbx_class_load.c | 1368 + main/gbx/gbx_class_load.h | 208 + main/gbx/gbx_class_native.c | 358 + main/gbx/gbx_compare.c | 690 + main/gbx/gbx_compare.h | 63 + main/gbx/gbx_component.c | 449 + main/gbx/gbx_component.h | 91 + main/gbx/gbx_date.c | 1028 + main/gbx/gbx_date.h | 109 + main/gbx/gbx_debug.c | 767 + main/gbx/gbx_debug.h | 90 + main/gbx/gbx_eval.c | 162 + main/gbx/gbx_eval.h | 41 + main/gbx/gbx_event.c | 274 + main/gbx/gbx_event.h | 59 + main/gbx/gbx_exec.c | 2060 + main/gbx/gbx_exec.h | 444 + main/gbx/gbx_exec_enum.c | 97 + main/gbx/gbx_exec_loop.c | 4781 ++ main/gbx/gbx_exec_operator.c | 368 + main/gbx/gbx_exec_pop.c | 304 + main/gbx/gbx_exec_push.c | 590 + main/gbx/gbx_expression.h | 75 + main/gbx/gbx_extern.c | 761 + main/gbx/gbx_extern.h | 49 + main/gbx/gbx_info.h | 70 + main/gbx/gbx_jit.c | 500 + main/gbx/gbx_jit.h | 63 + main/gbx/gbx_library.c | 375 + main/gbx/gbx_library.h | 79 + main/gbx/gbx_local.c | 2226 + main/gbx/gbx_local.h | 129 + main/gbx/gbx_math.c | 242 + main/gbx/gbx_math.h | 72 + main/gbx/gbx_number.c | 601 + main/gbx/gbx_number.h | 45 + main/gbx/gbx_object.c | 549 + main/gbx/gbx_object.h | 253 + main/gbx/gbx_project.c | 401 + main/gbx/gbx_project.h | 64 + main/gbx/gbx_regexp.c | 304 + main/gbx/gbx_regexp.h | 37 + main/gbx/gbx_replace.c | 25 + main/gbx/gbx_signal.c | 501 + main/gbx/gbx_signal.h | 69 + main/gbx/gbx_split.c | 243 + main/gbx/gbx_split.h | 31 + main/gbx/gbx_stack.c | 187 + main/gbx/gbx_stack.h | 145 + main/gbx/gbx_stream.c | 2236 + main/gbx/gbx_stream.h | 288 + main/gbx/gbx_stream_arch.c | 165 + main/gbx/gbx_stream_buffer.c | 217 + main/gbx/gbx_stream_direct.c | 230 + main/gbx/gbx_stream_lock.c | 109 + main/gbx/gbx_stream_memory.c | 187 + main/gbx/gbx_stream_null.c | 117 + main/gbx/gbx_stream_pipe.c | 137 + main/gbx/gbx_stream_process.c | 119 + main/gbx/gbx_stream_string.c | 140 + main/gbx/gbx_string.c | 1416 + main/gbx/gbx_string.h | 236 + main/gbx/gbx_struct.c | 59 + main/gbx/gbx_struct.h | 51 + main/gbx/gbx_subr.c | 250 + main/gbx/gbx_subr.h | 263 + main/gbx/gbx_subr_conv.c | 291 + main/gbx/gbx_subr_extern.c | 365 + main/gbx/gbx_subr_file.c | 1153 + main/gbx/gbx_subr_math.c | 963 + main/gbx/gbx_subr_math_temp.h | 463 + main/gbx/gbx_subr_misc.c | 448 + main/gbx/gbx_subr_string.c | 1315 + main/gbx/gbx_subr_test.c | 588 + main/gbx/gbx_subr_test_temp.h | 333 + main/gbx/gbx_subr_time.c | 287 + main/gbx/gbx_test.c | 93 + main/gbx/gbx_test.h | 32 + main/gbx/gbx_type.c | 351 + main/gbx/gbx_type.h | 99 + main/gbx/gbx_value.c | 2197 + main/gbx/gbx_value.h | 661 + main/gbx/gbx_variant.h | 99 + main/gbx/gbx_watch.c | 766 + main/gbx/gbx_watch.h | 75 + main/lib/Makefile.am | 2 + main/lib/clipper/LICENSE | 26 + main/lib/clipper/Makefile.am | 19 + main/lib/clipper/c_clipper.cpp | 485 + main/lib/clipper/c_clipper.h | 48 + main/lib/clipper/clipper.cpp | 4630 ++ main/lib/clipper/clipper.hpp | 406 + main/lib/clipper/gb.clipper.component | 4 + main/lib/clipper/gb.geom.h | 1 + main/lib/clipper/main.cpp | 62 + main/lib/clipper/main.h | 36 + main/lib/complex/Makefile.am | 14 + main/lib/complex/ccomplex.c | 543 + main/lib/complex/ccomplex.h | 44 + main/lib/complex/gb.complex.component | 4 + main/lib/complex/main.c | 58 + main/lib/complex/main.h | 34 + main/lib/compress/CCompress.c | 187 + main/lib/compress/CCompress.h | 51 + main/lib/compress/CUncompress.c | 149 + main/lib/compress/CUncompress.h | 49 + main/lib/compress/Makefile.am | 12 + main/lib/compress/gb.compress.component | 3 + main/lib/compress/gb.compress.h | 68 + main/lib/compress/main.c | 111 + main/lib/compress/main.h | 39 + main/lib/data/Makefile.am | 21 + main/lib/data/TODO | 55 + main/lib/data/c_avltree.c | 764 + main/lib/data/c_avltree.h | 33 + main/lib/data/c_circular.c | 307 + main/lib/data/c_circular.h | 33 + main/lib/data/c_deque.c | 391 + main/lib/data/c_deque.h | 36 + main/lib/data/c_graph.c | 485 + main/lib/data/c_graph.h | 66 + main/lib/data/c_graphmatrix.c | 699 + main/lib/data/c_graphmatrix.h | 34 + main/lib/data/c_heap.c | 406 + main/lib/data/c_heap.h | 33 + main/lib/data/c_list.c | 1363 + main/lib/data/c_list.h | 36 + main/lib/data/c_trie.c | 590 + main/lib/data/c_trie.h | 33 + main/lib/data/gb.data.component | 3 + main/lib/data/gb.data/.component | 3 + main/lib/data/gb.data/.directory | 2 + main/lib/data/gb.data/.icon.png | Bin 0 -> 10569 bytes main/lib/data/gb.data/.project | 10 + main/lib/data/gb.data/.src/MMain.module | 4 + main/lib/data/gb.data/.src/PrioSet.class | 63 + .../data/gb.data/.src/_PrioSet_Entry.class | 17 + main/lib/data/list.h | 99 + main/lib/data/lookup3.h | 142 + main/lib/data/main.c | 81 + main/lib/data/main.h | 32 + main/lib/data/string_compare.h | 43 + main/lib/data/trie.c | 756 + main/lib/data/trie.h | 82 + main/lib/db/CConnection.c | 854 + main/lib/db/CConnection.h | 56 + main/lib/db/CDatabase.c | 206 + main/lib/db/CDatabase.h | 55 + main/lib/db/CField.c | 329 + main/lib/db/CField.h | 58 + main/lib/db/CIndex.c | 274 + main/lib/db/CIndex.h | 56 + main/lib/db/CResult.c | 1011 + main/lib/db/CResult.h | 78 + main/lib/db/CResultField.c | 258 + main/lib/db/CResultField.h | 57 + main/lib/db/CTable.c | 450 + main/lib/db/CTable.h | 63 + main/lib/db/CUser.c | 229 + main/lib/db/CUser.h | 56 + main/lib/db/Makefile.am | 25 + main/lib/db/c_subcollection.c | 280 + main/lib/db/c_subcollection.h | 68 + main/lib/db/deletemap.c | 183 + main/lib/db/deletemap.h | 35 + main/lib/db/gb.db.component | 4 + main/lib/db/gb.db.h | 273 + main/lib/db/gb.db.proto.h | 148 + main/lib/db/gb.db/.component | 3 + main/lib/db/gb.db/.directory | 2 + main/lib/db/gb.db/.icon.png | Bin 0 -> 10933 bytes main/lib/db/gb.db/.project | 11 + main/lib/db/gb.db/.src/Connection.class | 592 + main/lib/db/gb.db/.src/Connections.class | 215 + main/lib/db/gb.db/.src/Main.module | 15 + main/lib/db/gb.db/.src/SQLRequest.class | 176 + main/lib/db/gb_barray.h | 57 + main/lib/db/main.c | 767 + main/lib/db/main.h | 65 + main/lib/db/sqlite.c | 213 + main/lib/db/sqlite.h | 35 + main/lib/debug/CDebug.c | 345 + main/lib/debug/CDebug.h | 39 + main/lib/debug/Makefile.am | 18 + main/lib/debug/debug.c | 1532 + main/lib/debug/debug.h | 74 + main/lib/debug/gb.debug.component | 2 + main/lib/debug/gb.debug.h | 128 + main/lib/debug/main.c | 73 + main/lib/debug/main.h | 36 + main/lib/debug/print.c | 496 + main/lib/debug/print.h | 39 + main/lib/debug/profile.c | 246 + main/lib/debug/profile.h | 34 + main/lib/draw/Makefile.am | 15 + main/lib/draw/cdraw.c | 1309 + main/lib/draw/cdraw.h | 45 + main/lib/draw/cpaint.c | 1855 + main/lib/draw/cpaint.h | 52 + main/lib/draw/gb.draw.h | 101 + main/lib/draw/gb.geom.h | 1 + main/lib/draw/gb.image.h | 1 + main/lib/draw/gb.paint.h | 244 + main/lib/draw/gb_list.c | 24 + main/lib/draw/main.c | 78 + main/lib/draw/main.h | 39 + main/lib/draw/matrix.c | 221 + main/lib/draw/matrix.h | 49 + main/lib/eval/Makefile.am | 29 + main/lib/eval/c_expression.c | 196 + main/lib/eval/c_expression.h | 49 + main/lib/eval/c_highlight.c | 317 + main/lib/eval/c_highlight.h | 36 + main/lib/eval/c_system.c | 131 + main/lib/eval/c_system.h | 35 + main/lib/eval/eval.c | 291 + main/lib/eval/eval.h | 62 + main/lib/eval/eval_analyze.c | 771 + main/lib/eval/eval_analyze.h | 32 + main/lib/eval/eval_code.c | 40 + main/lib/eval/eval_code.h | 109 + main/lib/eval/eval_read.c | 759 + main/lib/eval/eval_read.h | 36 + main/lib/eval/eval_reserved.c | 26 + main/lib/eval/eval_trans.c | 458 + main/lib/eval/eval_trans.h | 73 + main/lib/eval/eval_trans_expr.c | 626 + main/lib/eval/eval_trans_tree.c | 713 + main/lib/eval/gb.eval.component | 20 + main/lib/eval/gb.eval.h | 111 + main/lib/eval/gb_alloc_override.h | 34 + main/lib/eval/gb_array.c | 26 + main/lib/eval/gb_error.c | 116 + main/lib/eval/gb_error.h | 59 + main/lib/eval/gb_table.c | 28 + main/lib/eval/main.c | 78 + main/lib/eval/main.h | 35 + main/lib/gb.component | 4 + main/lib/geom/Makefile.am | 13 + main/lib/geom/cpoint.c | 33 + main/lib/geom/cpoint.h | 54 + main/lib/geom/cpoint_temp.h | 262 + main/lib/geom/crect.c | 32 + main/lib/geom/crect.h | 60 + main/lib/geom/crect_temp.h | 427 + main/lib/geom/gb.geom.component | 3 + main/lib/geom/gb.geom.h | 105 + main/lib/geom/main.c | 67 + main/lib/geom/main.h | 37 + main/lib/gui.opengl/Makefile.am | 11 + main/lib/gui.opengl/gb.gui.opengl.component | 6 + main/lib/gui.opengl/main.c | 75 + main/lib/gui.opengl/main.h | 34 + main/lib/gui.qt.opengl/Makefile.am | 12 + .../gui.qt.opengl/gb.gui.qt.opengl.component | 4 + main/lib/gui.qt.opengl/main.c | 71 + main/lib/gui.qt.opengl/main.h | 34 + main/lib/gui.qt.webkit/Makefile.am | 12 + .../gui.qt.webkit/gb.gui.qt.webkit.component | 4 + main/lib/gui.qt.webkit/main.c | 71 + main/lib/gui.qt.webkit/main.h | 34 + main/lib/gui.qt/Makefile.am | 12 + main/lib/gui.qt/gb.gui.qt.component | 6 + main/lib/gui.qt/gb_gui_test_temp.h | 1 + main/lib/gui.qt/main.c | 132 + main/lib/gui.qt/main.h | 36 + main/lib/gui.trayicon/Makefile.am | 13 + main/lib/gui.trayicon/cfaketrayicon.c | 83 + main/lib/gui.trayicon/cfaketrayicon.h | 35 + .../gui.trayicon/gb.gui.trayicon.component | 5 + main/lib/gui.trayicon/main.c | 81 + main/lib/gui.trayicon/main.h | 34 + main/lib/gui.webview/Makefile.am | 11 + main/lib/gui.webview/gb.gui.webview.component | 5 + main/lib/gui.webview/main.c | 73 + main/lib/gui.webview/main.h | 34 + main/lib/gui/Makefile.am | 12 + main/lib/gui/gb.gui.component | 6 + main/lib/gui/gb_gui_test_temp.h | 85 + main/lib/gui/main.c | 152 + main/lib/gui/main.h | 34 + main/lib/hash/Makefile.am | 14 + main/lib/hash/c_hash.c | 75 + main/lib/hash/c_hash.h | 33 + main/lib/hash/gb.hash.component | 4 + main/lib/hash/gb.hash.h | 51 + main/lib/hash/hash.c | 1506 + main/lib/hash/hash.h | 76 + main/lib/hash/main.c | 150 + main/lib/hash/main.h | 41 + main/lib/hash/platform.h | 639 + main/lib/image.effect/CImage.cpp | 478 + main/lib/image.effect/CImage.h | 48 + main/lib/image.effect/Makefile.am | 29 + main/lib/image.effect/effect.cpp | 153 + main/lib/image.effect/effect.h | 44 + .../image.effect/gb.image.effect.component | 5 + main/lib/image.effect/kcpuinfo.cpp | 212 + main/lib/image.effect/kcpuinfo.h | 92 + main/lib/image.effect/kimageeffect.cpp | 5043 ++ main/lib/image.effect/kimageeffect.h | 811 + main/lib/image.effect/main.cpp | 51 + main/lib/image.effect/main.h | 36 + main/lib/image.effect/qcolor.cpp | 1021 + main/lib/image.effect/qcolor.h | 255 + main/lib/image.effect/qimage.cpp | 147 + main/lib/image.effect/qimage.h | 493 + main/lib/image.effect/qpoint.cpp | 463 + main/lib/image.effect/qpoint.h | 235 + main/lib/image.effect/qrect.cpp | 981 + main/lib/image.effect/qrect.h | 294 + main/lib/image.effect/qsize.cpp | 452 + main/lib/image.effect/qsize.h | 256 + main/lib/image.effect/qt.h | 57 + main/lib/image/CImage.c | 598 + main/lib/image/CImage.h | 48 + main/lib/image/CImageStat.c | 140 + main/lib/image/CImageStat.h | 51 + main/lib/image/Makefile.am | 24 + main/lib/image/c_color.c | 753 + main/lib/image/c_color.h | 53 + main/lib/image/gb.image.component | 5 + main/lib/image/gb.image.h | 175 + main/lib/image/image.c | 2452 + main/lib/image/image.h | 89 + main/lib/image/image_stat.c | 624 + main/lib/image/image_stat.h | 66 + main/lib/image/main.c | 84 + main/lib/image/main.h | 35 + main/lib/inotify/Makefile.am | 13 + main/lib/inotify/TODO | 5 + main/lib/inotify/c_watch.c | 709 + main/lib/inotify/c_watch.h | 46 + main/lib/inotify/gb.inotify.component | 3 + main/lib/inotify/gb_list.c | 24 + main/lib/inotify/main.c | 43 + main/lib/inotify/main.h | 32 + main/lib/jit/Makefile.am | 16 + main/lib/jit/gb.jit.component | 6 + main/lib/jit/gb.jit/.component | 4 + main/lib/jit/gb.jit/.directory | 2 + main/lib/jit/gb.jit/.hidden/icon.png | Bin 0 -> 693 bytes main/lib/jit/gb.jit/.icon.png | Bin 0 -> 10448 bytes main/lib/jit/gb.jit/.project | 14 + main/lib/jit/gb.jit/.src/CCompilation.class | 165 + main/lib/jit/gb.jit/.src/Jit.module | 202 + main/lib/jit/gb.jit/.src/Main.module | 7 + main/lib/jit/gb.jit/.src/_ClassStat.class | 100 + main/lib/jit/gb.jit/gambas.h | 1 + main/lib/jit/gb.jit/gb.jit.h | 1 + main/lib/jit/gb.jit/gb_error_common.h | 1 + main/lib/jit/gb.jit/gb_overflow.h | 1 + main/lib/jit/gb.jit/jit.h | 694 + main/lib/jit/gb.jit/jit_after.h | 21 + main/lib/jit/gb_str.c | 227 + main/lib/jit/gb_str.h | 42 + main/lib/jit/gbc_reserved.c | 30 + main/lib/jit/jit.c | 567 + main/lib/jit/jit.h | 94 + main/lib/jit/jit_body.c | 3814 ++ main/lib/jit/main.c | 66 + main/lib/jit/main.h | 39 + main/lib/option/Makefile.am | 14 + main/lib/option/gb.option.component | 4 + main/lib/option/getoptions.c | 396 + main/lib/option/getoptions.h | 56 + main/lib/option/main.c | 90 + main/lib/option/main.h | 35 + main/lib/signal/Makefile.am | 14 + main/lib/signal/csignal.c | 269 + main/lib/signal/csignal.h | 34 + main/lib/signal/gb.signal.component | 3 + main/lib/signal/main.c | 48 + main/lib/signal/main.h | 34 + main/lib/term/Makefile.am | 14 + main/lib/term/cterm.c | 478 + main/lib/term/cterm.h | 44 + main/lib/term/gb.term.component | 3 + main/lib/term/main.c | 49 + main/lib/term/main.h | 36 + main/lib/test/Makefile.am | 14 + main/lib/test/gb.test.component | 5 + main/lib/test/gb.test/.component | 5 + main/lib/test/gb.test/.directory | 2 + main/lib/test/gb.test/.hidden/CHANGELOG | 177 + main/lib/test/gb.test/.hidden/flowchart.fodg | 617 + main/lib/test/gb.test/.hidden/flowchart.svg | 352 + main/lib/test/gb.test/.hidden/gb.test.png | Bin 0 -> 240 bytes .../test/gb.test/.hidden/summary-example.txt | 14 + main/lib/test/gb.test/.icon.png | Bin 0 -> 8205 bytes main/lib/test/gb.test/.lang/de.po | 135 + main/lib/test/gb.test/.lang/it.po | 20 + main/lib/test/gb.test/.lang/pt_BR.po | 157 + main/lib/test/gb.test/.project | 25 + main/lib/test/gb.test/.src/Helper.module | 141 + .../test/gb.test/.src/Tap/TapContext.class | 16 + .../lib/test/gb.test/.src/Tap/TapParser.class | 189 + .../test/gb.test/.src/Tap/TapPrinter.class | 204 + .../lib/test/gb.test/.src/TestAssertion.class | 54 + .../gb.test/.src/TestMyself/MustFail.test | 30 + .../gb.test/.src/TestMyself/TAllAsserts.test | 368 + .../gb.test/.src/TestMyself/TBailout.test | 8 + .../gb.test/.src/TestMyself/TCrashes.test | 22 + .../test/gb.test/.src/TestMyself/TElse.test | 31 + .../test/gb.test/.src/TestMyself/TEmpty.test | 3 + .../.src/TestMyself/TIntendedFailures.test | 66 + .../gb.test/.src/TestMyself/TInternals.test | 141 + .../test/gb.test/.src/TestMyself/TParser.test | 123 + .../test/gb.test/.src/TestMyself/TSetup.test | 52 + .../gb.test/.src/TestMyself/TSkipAll.test | 7 + .../gb.test/.src/TestMyself/TSummary.test | 62 + .../gb.test/.src/TestMyself/TWrongPlan.test | 10 + main/lib/test/gb.test/.src/TestRunner.module | 179 + main/lib/test/gb.test/.src/TestStats.class | 47 + .../test/gb.test/.src/TestSuite/Assert.module | 335 + .../test/gb.test/.src/TestSuite/Test.module | 494 + .../gb.test/.src/TestSuite/TestCase.class | 79 + .../gb.test/.src/TestSuite/TestCommand.class | 127 + .../gb.test/.src/TestSuite/TestSuite.class | 137 + main/lib/test/gb.test/.src/ZzzDoSth.module | 23 + main/lib/test/gb.test/.test | 36 + main/lib/test/gb.test/LICENSE | 340 + main/lib/test/gb.test/README.md | 151 + main/lib/test/gb.test/taskell.md | 54 + main/lib/test/gb.test/test.sh | 5 + .../gb.test/unittesthelloworld-1.0.0.tar.gz | Bin 0 -> 12298 bytes main/lib/test/main.c | 64 + main/lib/test/main.h | 36 + main/lib/vb/Makefile.am | 14 + main/lib/vb/gb.vb.component | 6 + main/lib/vb/main.c | 50 + main/lib/vb/main.h | 35 + main/lib/vb/vb.c | 312 + main/lib/vb/vb.h | 33 + main/lib/vb/vbdate.c | 215 + main/lib/vb/vbdate.h | 32 + main/m4 | 1 + main/man/Makefile.am | 1 + main/man/gba3.1 | 54 + main/man/gbc3.1 | 72 + main/man/gbh3.1 | 49 + main/man/gbi3.1 | 45 + main/man/gbr3.1 | 66 + main/man/gbx3.1 | 72 + main/mime/application-x-gambas3-48.png | Bin 0 -> 1437 bytes main/mime/application-x-gambas3.png | Bin 0 -> 7788 bytes main/mime/application-x-gambas3.xml | 12 + main/reconf | 1 + main/share/Makefile.am | 1 + main/share/gambas.h | 1320 + main/share/gb_alloc.h | 117 + main/share/gb_alloc_temp.h | 495 + main/share/gb_arch.h | 90 + main/share/gb_arch_temp.h | 362 + main/share/gb_array.h | 121 + main/share/gb_array_temp.h | 217 + main/share/gb_buffer.h | 49 + main/share/gb_buffer_temp.h | 163 + main/share/gb_class_desc_common.h | 40 + main/share/gb_code.h | 171 + main/share/gb_code_temp.h | 1511 + main/share/gb_common.h | 209 + main/share/gb_common_buffer.h | 64 + main/share/gb_common_buffer_temp.h | 65 + main/share/gb_common_case.h | 60 + main/share/gb_common_case_temp.h | 104 + main/share/gb_common_string.h | 37 + main/share/gb_common_string_temp.h | 197 + main/share/gb_common_swap.h | 42 + main/share/gb_common_swap_temp.h | 71 + main/share/gb_component.h | 72 + main/share/gb_error_common.h | 213 + main/share/gb_file_share.h | 143 + main/share/gb_file_temp.h | 1308 + main/share/gb_hash.h | 106 + main/share/gb_hash_temp.h | 534 + main/share/gb_limit.h | 106 + main/share/gb_list.h | 43 + main/share/gb_list_temp.h | 90 + main/share/gb_magic.h | 35 + main/share/gb_overflow.h | 46 + main/share/gb_pcode.h | 209 + main/share/gb_pcode_temp.h | 602 + main/share/gb_replace.h | 51 + main/share/gb_replace_temp.h | 135 + main/share/gb_reserved.h | 411 + main/share/gb_reserved_keyword.h | 600 + main/share/gb_reserved_temp.h | 982 + main/share/gb_system.h | 29 + main/share/gb_system_temp.h | 64 + main/share/gb_table.h | 106 + main/share/gb_table_temp.h | 605 + main/share/gb_type_common.h | 92 + main/share/gbc_read_common.h | 108 + main/share/gbc_read_temp.h | 504 + main/share/gbc_trans_common.h | 173 + main/share/gbx_subr_common.h | 680 + main/tools/gbh3/.directory | 2 + main/tools/gbh3/.icon.png | Bin 0 -> 3398 bytes main/tools/gbh3/.project | 11 + main/tools/gbh3/.src/MMain.module | 447 + main/tools/gbh3/.src/MOldMain.module | 256 + main/tools/gbh3/README | 112 + main/tools/gbh3/icon.png | Bin 0 -> 3211 bytes main/tools/gbh3/license | 6 + main/tools/gbh3/usage | 18 + reconf | 7 + reconf-all | 9 + test-fast | 9 + version.m4 | 13 + 8121 files changed, 1344277 insertions(+) create mode 100644 .gitignore create mode 100644 .gitlab-ci.yml create mode 100644 AUTHORS create mode 100644 CONTRIBUTING.md create mode 100644 COPYING create mode 100644 ChangeLog create mode 100644 INSTALL create mode 100644 Makefile.am create mode 100644 NEWS create mode 100644 README create mode 100644 README.commit create mode 100644 README.md create mode 100644 TEMPLATE/README create mode 100644 TEMPLATE/TEMPLATE.c create mode 100644 TEMPLATE/TEMPLATE.conf create mode 100644 TEMPLATE/TEMPLATE.cpp create mode 100644 TEMPLATE/TEMPLATE.h create mode 100644 TEMPLATE/conf/gb.cairo.conf create mode 100644 TEMPLATE/conf/gb.dbus.conf create mode 100644 TEMPLATE/conf/gb.desktop.conf create mode 100644 TEMPLATE/conf/gb.form.htmlview.conf create mode 100644 TEMPLATE/conf/gb.gmp.conf create mode 100644 TEMPLATE/conf/gb.gsl.conf create mode 100644 TEMPLATE/conf/gb.image.io.conf create mode 100644 TEMPLATE/conf/gb.media.conf create mode 100644 TEMPLATE/conf/gb.mime.conf create mode 100644 TEMPLATE/conf/gb.net.pop3.conf create mode 100644 TEMPLATE/conf/gb.net.smtp.conf create mode 100644 TEMPLATE/conf/gb.openal.conf create mode 100644 TEMPLATE/conf/gb.poppler.conf create mode 100755 TEMPLATE/make-component create mode 100644 TEMPLATE/template/AUTHORS create mode 100644 TEMPLATE/template/ChangeLog create mode 100644 TEMPLATE/template/Makefile.am create mode 100644 TEMPLATE/template/NEWS create mode 100644 TEMPLATE/template/README create mode 100644 TEMPLATE/template/SOURCES create mode 100644 TEMPLATE/template/configure.ac create mode 100755 TEMPLATE/template/make-component create mode 100644 TEMPLATE/template/src/.component create mode 100644 TEMPLATE/template/src/Makefile.am create mode 100644 TODO create mode 100644 VERSION create mode 100644 acinclude.m4 create mode 100644 app/AUTHORS create mode 120000 app/COPYING create mode 100644 app/ChangeLog create mode 100644 app/INSTALL create mode 100644 app/Makefile.am create mode 100644 app/NEWS create mode 100644 app/README create mode 100644 app/TODO create mode 120000 app/acinclude.m4 create mode 100644 app/configure.ac create mode 100644 app/desktop/gambas3-48.png create mode 100644 app/desktop/gambas3.appdata.xml create mode 100644 app/desktop/gambas3.desktop create mode 100644 app/desktop/gambas3.png create mode 100644 app/desktop/gambas3.svg create mode 100644 app/examples/Basic/Blights/.directory create mode 100644 app/examples/Basic/Blights/.icon.png create mode 100644 app/examples/Basic/Blights/.lang/ca.po create mode 100644 app/examples/Basic/Blights/.lang/cs.po create mode 100644 app/examples/Basic/Blights/.lang/de.po create mode 100644 app/examples/Basic/Blights/.lang/es.po create mode 100644 app/examples/Basic/Blights/.lang/fr.po create mode 100644 app/examples/Basic/Blights/.lang/nl.po create mode 100644 app/examples/Basic/Blights/.lang/ru.po create mode 100644 app/examples/Basic/Blights/.lang/sv.po create mode 100644 app/examples/Basic/Blights/.project create mode 100644 app/examples/Basic/Blights/.src/win1.class create mode 100644 app/examples/Basic/Blights/.src/win1.form create mode 100644 app/examples/Basic/Blights/ampoule.png create mode 100644 app/examples/Basic/Blights/bloff.xpm create mode 100644 app/examples/Basic/Blights/blon.xpm create mode 100644 app/examples/Basic/Collection/.directory create mode 100644 app/examples/Basic/Collection/.icon.png create mode 100644 app/examples/Basic/Collection/.lang/ca.po create mode 100644 app/examples/Basic/Collection/.lang/cs.po create mode 100644 app/examples/Basic/Collection/.lang/de.po create mode 100644 app/examples/Basic/Collection/.lang/es.po create mode 100644 app/examples/Basic/Collection/.lang/nl.po create mode 100644 app/examples/Basic/Collection/.lang/ru.po create mode 100644 app/examples/Basic/Collection/.project create mode 100644 app/examples/Basic/Collection/.src/CThing.class create mode 100644 app/examples/Basic/Collection/.src/FStart.class create mode 100644 app/examples/Basic/Collection/.src/FStart.form create mode 100644 app/examples/Basic/Collection/collection.png create mode 100644 app/examples/Basic/DragNDrop/.directory create mode 100644 app/examples/Basic/DragNDrop/.icon.png create mode 100644 app/examples/Basic/DragNDrop/.lang/ru.po create mode 100644 app/examples/Basic/DragNDrop/.project create mode 100644 app/examples/Basic/DragNDrop/.src/FDragNDrop.class create mode 100644 app/examples/Basic/DragNDrop/.src/FDragNDrop.form create mode 100644 app/examples/Basic/DragNDrop/drop.png create mode 100644 app/examples/Basic/Object/.directory create mode 100644 app/examples/Basic/Object/.icon.png create mode 100644 app/examples/Basic/Object/.lang/ca.po create mode 100644 app/examples/Basic/Object/.lang/cs.po create mode 100644 app/examples/Basic/Object/.lang/de.po create mode 100644 app/examples/Basic/Object/.lang/es.po create mode 100644 app/examples/Basic/Object/.lang/nl.po create mode 100644 app/examples/Basic/Object/.lang/ru.po create mode 100644 app/examples/Basic/Object/.project create mode 100644 app/examples/Basic/Object/.src/CThing.class create mode 100644 app/examples/Basic/Object/.src/FStart.class create mode 100644 app/examples/Basic/Object/.src/FStart.form create mode 100644 app/examples/Basic/Object/object.png create mode 100644 app/examples/Basic/Timer/.directory create mode 100644 app/examples/Basic/Timer/.icon.png create mode 100644 app/examples/Basic/Timer/.lang/ca.po create mode 100644 app/examples/Basic/Timer/.lang/cs.po create mode 100644 app/examples/Basic/Timer/.lang/de.po create mode 100644 app/examples/Basic/Timer/.lang/es.po create mode 100644 app/examples/Basic/Timer/.lang/nl.po create mode 100644 app/examples/Basic/Timer/.lang/ru.po create mode 100644 app/examples/Basic/Timer/.project create mode 100644 app/examples/Basic/Timer/.src/FOtherTimer.class create mode 100644 app/examples/Basic/Timer/.src/FOtherTimer.form create mode 100644 app/examples/Basic/Timer/.src/FTimer.class create mode 100644 app/examples/Basic/Timer/.src/FTimer.form create mode 100644 app/examples/Basic/Timer/timer.png create mode 100644 app/examples/Control/ArrayOfControls/.directory create mode 100644 app/examples/Control/ArrayOfControls/.icon.png create mode 100644 app/examples/Control/ArrayOfControls/.lang/ca.po create mode 100644 app/examples/Control/ArrayOfControls/.lang/cs.po create mode 100644 app/examples/Control/ArrayOfControls/.lang/de.po create mode 100644 app/examples/Control/ArrayOfControls/.lang/nl.po create mode 100644 app/examples/Control/ArrayOfControls/.lang/ru.po create mode 100644 app/examples/Control/ArrayOfControls/.project create mode 100644 app/examples/Control/ArrayOfControls/.src/FMain.class create mode 100644 app/examples/Control/ArrayOfControls/.src/FMain.form create mode 100644 app/examples/Control/ArrayOfControls/green.png create mode 100644 app/examples/Control/ArrayOfControls/green1.png create mode 100644 app/examples/Control/ArrayOfControls/phone.png create mode 100644 app/examples/Control/ArrayOfControls/red.png create mode 100644 app/examples/Control/ArrayOfControls/red1.png create mode 100644 app/examples/Control/Embedder/.directory create mode 100644 app/examples/Control/Embedder/.icon.png create mode 100644 app/examples/Control/Embedder/.lang/ca.po create mode 100644 app/examples/Control/Embedder/.lang/cs.po create mode 100644 app/examples/Control/Embedder/.lang/de.po create mode 100644 app/examples/Control/Embedder/.lang/es.po create mode 100644 app/examples/Control/Embedder/.lang/nl.po create mode 100644 app/examples/Control/Embedder/.lang/ru.po create mode 100644 app/examples/Control/Embedder/.project create mode 100644 app/examples/Control/Embedder/.src/FMain.class create mode 100644 app/examples/Control/Embedder/.src/FMain.form create mode 100644 app/examples/Control/Embedder/embedder.png create mode 100644 app/examples/Control/HighlightEditor/.directory create mode 100644 app/examples/Control/HighlightEditor/.hidden/screenshots/2014-12-17.png create mode 100644 app/examples/Control/HighlightEditor/.icon.png create mode 100644 app/examples/Control/HighlightEditor/.lang/ca.po create mode 100644 app/examples/Control/HighlightEditor/.lang/cs.po create mode 100644 app/examples/Control/HighlightEditor/.lang/de.po create mode 100644 app/examples/Control/HighlightEditor/.lang/es.po create mode 100644 app/examples/Control/HighlightEditor/.lang/nl.po create mode 100644 app/examples/Control/HighlightEditor/.lang/ru.po create mode 100644 app/examples/Control/HighlightEditor/.project create mode 100644 app/examples/Control/HighlightEditor/.src/FEditor.class create mode 100644 app/examples/Control/HighlightEditor/.src/FEditor.form create mode 100644 app/examples/Control/HighlightEditor/download.html create mode 100644 app/examples/Control/HighlightEditor/editor.png create mode 100644 app/examples/Control/LCDLabel/.directory create mode 100644 app/examples/Control/LCDLabel/.icon.png create mode 100644 app/examples/Control/LCDLabel/.lang/ru.po create mode 100644 app/examples/Control/LCDLabel/.project create mode 100644 app/examples/Control/LCDLabel/.src/FMain.class create mode 100644 app/examples/Control/LCDLabel/.src/FMain.form create mode 100644 app/examples/Control/LCDLabel/.src/TimeBoxDemo.class create mode 100644 app/examples/Control/LCDLabel/alarm.ogg create mode 100644 app/examples/Control/LCDLabel/lcdlabel.png create mode 100644 app/examples/Control/MapView/.directory create mode 100644 app/examples/Control/MapView/.hidden/mapview.png create mode 100644 app/examples/Control/MapView/.icon.png create mode 100644 app/examples/Control/MapView/.lang/ru.po create mode 100644 app/examples/Control/MapView/.project create mode 100644 app/examples/Control/MapView/.src/FMain.class create mode 100644 app/examples/Control/MapView/.src/FMain.form create mode 100644 app/examples/Control/TextEdit/.directory create mode 100644 app/examples/Control/TextEdit/.icon.png create mode 100644 app/examples/Control/TextEdit/.lang/ca.po create mode 100644 app/examples/Control/TextEdit/.lang/cs.po create mode 100644 app/examples/Control/TextEdit/.lang/de.po create mode 100644 app/examples/Control/TextEdit/.lang/es.po create mode 100644 app/examples/Control/TextEdit/.lang/fr.po create mode 100644 app/examples/Control/TextEdit/.lang/nl.po create mode 100644 app/examples/Control/TextEdit/.lang/ru.po create mode 100644 app/examples/Control/TextEdit/.lang/sv.po create mode 100644 app/examples/Control/TextEdit/.project create mode 100644 app/examples/Control/TextEdit/.src/FMain.class create mode 100644 app/examples/Control/TextEdit/.src/FMain.form create mode 100644 app/examples/Control/TextEdit/.src/frmShowHtml.class create mode 100644 app/examples/Control/TextEdit/.src/frmShowHtml.form create mode 100644 app/examples/Control/TextEdit/edit.png create mode 100644 app/examples/Control/TextEdit/text.html create mode 100644 app/examples/Control/TreeView/.directory create mode 100644 app/examples/Control/TreeView/.icon.png create mode 100644 app/examples/Control/TreeView/.lang/ca.po create mode 100644 app/examples/Control/TreeView/.lang/cs.po create mode 100644 app/examples/Control/TreeView/.lang/de.po create mode 100644 app/examples/Control/TreeView/.lang/es.po create mode 100644 app/examples/Control/TreeView/.lang/nl.po create mode 100644 app/examples/Control/TreeView/.lang/ru.po create mode 100644 app/examples/Control/TreeView/.project create mode 100644 app/examples/Control/TreeView/.src/TreeViewExample.class create mode 100644 app/examples/Control/TreeView/.src/TreeViewExample.form create mode 100644 app/examples/Control/TreeView/Female.png create mode 100644 app/examples/Control/TreeView/Male.png create mode 100644 app/examples/Control/TreeView/treeview.png create mode 100644 app/examples/Control/Wizard/.directory create mode 100644 app/examples/Control/Wizard/.icon.png create mode 100644 app/examples/Control/Wizard/.lang/ca.po create mode 100644 app/examples/Control/Wizard/.lang/cs.po create mode 100644 app/examples/Control/Wizard/.lang/de.po create mode 100644 app/examples/Control/Wizard/.lang/nl.po create mode 100644 app/examples/Control/Wizard/.lang/ru.po create mode 100644 app/examples/Control/Wizard/.project create mode 100644 app/examples/Control/Wizard/.src/FMain.class create mode 100644 app/examples/Control/Wizard/.src/FMain.form create mode 100644 app/examples/Control/Wizard/wizard.png create mode 100644 app/examples/Database/Database/.component create mode 100644 app/examples/Database/Database/.directory create mode 100644 app/examples/Database/Database/.icon.png create mode 100644 app/examples/Database/Database/.lang/ca.po create mode 100644 app/examples/Database/Database/.lang/cs.po create mode 100644 app/examples/Database/Database/.lang/de.po create mode 100644 app/examples/Database/Database/.lang/es.po create mode 100644 app/examples/Database/Database/.lang/nl.po create mode 100644 app/examples/Database/Database/.lang/ru.po create mode 100644 app/examples/Database/Database/.project create mode 100644 app/examples/Database/Database/.src/FMain.class create mode 100644 app/examples/Database/Database/.src/FMain.form create mode 100644 app/examples/Database/Database/.src/FRequest.class create mode 100644 app/examples/Database/Database/.src/FRequest.form create mode 100644 app/examples/Database/Database/.src/FTest.class create mode 100644 app/examples/Database/Database/.src/FTest.form create mode 100644 app/examples/Database/Database/.src/Form1.class create mode 100644 app/examples/Database/Database/.src/Form1.form create mode 100644 app/examples/Database/Database/database.png create mode 100644 app/examples/Database/MySQLExample/.directory create mode 100644 app/examples/Database/MySQLExample/.icon.png create mode 100644 app/examples/Database/MySQLExample/.lang/ca.po create mode 100644 app/examples/Database/MySQLExample/.lang/cs.po create mode 100644 app/examples/Database/MySQLExample/.lang/de.po create mode 100644 app/examples/Database/MySQLExample/.lang/es.po create mode 100644 app/examples/Database/MySQLExample/.lang/fr.po create mode 100644 app/examples/Database/MySQLExample/.lang/nl.po create mode 100644 app/examples/Database/MySQLExample/.lang/ru.po create mode 100644 app/examples/Database/MySQLExample/.project create mode 100644 app/examples/Database/MySQLExample/.src/CreateObjects/FNewDatabase.class create mode 100644 app/examples/Database/MySQLExample/.src/CreateObjects/FNewDatabase.form create mode 100644 app/examples/Database/MySQLExample/.src/CreateObjects/FNewEvent.class create mode 100644 app/examples/Database/MySQLExample/.src/CreateObjects/FNewEvent.form create mode 100644 app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.class create mode 100644 app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.form create mode 100644 app/examples/Database/MySQLExample/.src/CreateObjects/FNewIndex.class create mode 100644 app/examples/Database/MySQLExample/.src/CreateObjects/FNewIndex.form create mode 100644 app/examples/Database/MySQLExample/.src/CreateObjects/FNewRoutine.class create mode 100644 app/examples/Database/MySQLExample/.src/CreateObjects/FNewRoutine.form create mode 100644 app/examples/Database/MySQLExample/.src/CreateObjects/FNewTable.class create mode 100644 app/examples/Database/MySQLExample/.src/CreateObjects/FNewTable.form create mode 100644 app/examples/Database/MySQLExample/.src/CreateObjects/FNewTrigger.class create mode 100644 app/examples/Database/MySQLExample/.src/CreateObjects/FNewTrigger.form create mode 100644 app/examples/Database/MySQLExample/.src/CreateObjects/FNewView.class create mode 100644 app/examples/Database/MySQLExample/.src/CreateObjects/FNewView.form create mode 100644 app/examples/Database/MySQLExample/.src/FConnect.class create mode 100644 app/examples/Database/MySQLExample/.src/FConnect.form create mode 100644 app/examples/Database/MySQLExample/.src/FMessage.class create mode 100644 app/examples/Database/MySQLExample/.src/FMessage.form create mode 100644 app/examples/Database/MySQLExample/.src/FTables.class create mode 100644 app/examples/Database/MySQLExample/.src/FTables.form create mode 100644 app/examples/Database/MySQLExample/.src/modMain.module create mode 100644 app/examples/Database/MySQLExample/icons/16/Admin.png create mode 100644 app/examples/Database/MySQLExample/icons/16/Blob.png create mode 100644 app/examples/Database/MySQLExample/icons/16/Column_FK.png create mode 100644 app/examples/Database/MySQLExample/icons/16/Database.png create mode 100644 app/examples/Database/MySQLExample/icons/16/Datetime.png create mode 100644 app/examples/Database/MySQLExample/icons/16/Field.png create mode 100644 app/examples/Database/MySQLExample/icons/16/Function.png create mode 100644 app/examples/Database/MySQLExample/icons/16/Index.png create mode 100644 app/examples/Database/MySQLExample/icons/16/Lock.png create mode 100644 app/examples/Database/MySQLExample/icons/16/New.png create mode 100644 app/examples/Database/MySQLExample/icons/16/Numeric.png create mode 100644 app/examples/Database/MySQLExample/icons/16/Primarykey.png create mode 100644 app/examples/Database/MySQLExample/icons/16/Refresh.png create mode 100644 app/examples/Database/MySQLExample/icons/16/Routine.png create mode 100644 app/examples/Database/MySQLExample/icons/16/String.png create mode 100644 app/examples/Database/MySQLExample/icons/16/Table.png create mode 100644 app/examples/Database/MySQLExample/icons/16/Trigger.png create mode 100644 app/examples/Database/MySQLExample/icons/16/View.png create mode 100644 app/examples/Database/MySQLExample/icons/16/Warning.png create mode 100644 app/examples/Database/MySQLExample/icons/24/Null.png create mode 100644 app/examples/Database/PictureDatabase/.directory create mode 100644 app/examples/Database/PictureDatabase/.icon.png create mode 100644 app/examples/Database/PictureDatabase/.lang/ca.po create mode 100644 app/examples/Database/PictureDatabase/.lang/cs.po create mode 100644 app/examples/Database/PictureDatabase/.lang/de.po create mode 100644 app/examples/Database/PictureDatabase/.lang/es.po create mode 100644 app/examples/Database/PictureDatabase/.lang/nl.po create mode 100644 app/examples/Database/PictureDatabase/.lang/ru.po create mode 100644 app/examples/Database/PictureDatabase/.project create mode 100644 app/examples/Database/PictureDatabase/.src/FormPictureDatabase.class create mode 100644 app/examples/Database/PictureDatabase/.src/FormPictureDatabase.form create mode 100644 app/examples/Database/PictureDatabase/.src/ModuleDatabase.module create mode 100644 app/examples/Database/PictureDatabase/Images/document-save-as.png create mode 100644 app/examples/Database/PictureDatabase/Images/document-save.png create mode 100644 app/examples/Database/PictureDatabase/Images/image-x-generic.png create mode 100644 app/examples/Database/PictureDatabase/Images/list-add.png create mode 100644 app/examples/Database/PictureDatabase/Images/list-remove.png create mode 100644 app/examples/Drawing/AnalogWatch/.directory create mode 100644 app/examples/Drawing/AnalogWatch/.hidden/screenshots/2014-12-14.png create mode 100644 app/examples/Drawing/AnalogWatch/.icon.png create mode 100644 app/examples/Drawing/AnalogWatch/.lang/ru.po create mode 100644 app/examples/Drawing/AnalogWatch/.project create mode 100644 app/examples/Drawing/AnalogWatch/.src/FrmClock.class create mode 100644 app/examples/Drawing/AnalogWatch/.src/FrmClock.form create mode 100644 app/examples/Drawing/AnalogWatch/timer.png create mode 100644 app/examples/Drawing/Barcode/.directory create mode 100644 app/examples/Drawing/Barcode/.icon.png create mode 100644 app/examples/Drawing/Barcode/.lang/ca.po create mode 100644 app/examples/Drawing/Barcode/.lang/cs.po create mode 100644 app/examples/Drawing/Barcode/.lang/de.po create mode 100644 app/examples/Drawing/Barcode/.lang/ru.po create mode 100644 app/examples/Drawing/Barcode/.project create mode 100644 app/examples/Drawing/Barcode/.src/FMain.class create mode 100644 app/examples/Drawing/Barcode/.src/FMain.form create mode 100644 app/examples/Drawing/Barcode/.src/modCrBcode.module create mode 100644 app/examples/Drawing/Barcode/barcode.png create mode 100644 app/examples/Drawing/Chart/.directory create mode 100644 app/examples/Drawing/Chart/.icon.png create mode 100644 app/examples/Drawing/Chart/.lang/ca.po create mode 100644 app/examples/Drawing/Chart/.lang/cs.po create mode 100644 app/examples/Drawing/Chart/.lang/de.po create mode 100644 app/examples/Drawing/Chart/.lang/es.po create mode 100644 app/examples/Drawing/Chart/.lang/ru.po create mode 100644 app/examples/Drawing/Chart/.project create mode 100644 app/examples/Drawing/Chart/.src/FormChart.class create mode 100644 app/examples/Drawing/Chart/.src/FormChart.form create mode 100644 app/examples/Drawing/Chart/.src/FormData.class create mode 100644 app/examples/Drawing/Chart/.src/FormData.form create mode 100644 app/examples/Drawing/Chart/graph.png create mode 100644 app/examples/Drawing/Clock/.directory create mode 100644 app/examples/Drawing/Clock/.icon.png create mode 100644 app/examples/Drawing/Clock/.icon/16.png create mode 100644 app/examples/Drawing/Clock/.icon/32.png create mode 100644 app/examples/Drawing/Clock/.icon/48.png create mode 100644 app/examples/Drawing/Clock/.lang/ca.po create mode 100644 app/examples/Drawing/Clock/.lang/cs.po create mode 100644 app/examples/Drawing/Clock/.lang/de.po create mode 100644 app/examples/Drawing/Clock/.lang/es.po create mode 100644 app/examples/Drawing/Clock/.lang/ru.po create mode 100644 app/examples/Drawing/Clock/.project create mode 100644 app/examples/Drawing/Clock/.src/FClock.class create mode 100644 app/examples/Drawing/Clock/.src/FClock.form create mode 100644 app/examples/Drawing/Clock/img/arrow_hour.png create mode 100644 app/examples/Drawing/Clock/img/arrow_min.png create mode 100644 app/examples/Drawing/Clock/img/arrow_sec.png create mode 100644 app/examples/Drawing/Clock/img/clock_bg_big1.png create mode 100644 app/examples/Drawing/Clock/img/clock_bg_big2.png create mode 100644 app/examples/Drawing/Clock/img/clock_bg_big3.png create mode 100644 app/examples/Drawing/Clock/img/clock_bg_big4.png create mode 100644 app/examples/Drawing/Fractal/.directory create mode 100644 app/examples/Drawing/Fractal/.hidden/screenshots/2014-12-14.png create mode 100644 app/examples/Drawing/Fractal/.icon.png create mode 100644 app/examples/Drawing/Fractal/.lang/cs.po create mode 100644 app/examples/Drawing/Fractal/.lang/fr.po create mode 100644 app/examples/Drawing/Fractal/.lang/ru.po create mode 100644 app/examples/Drawing/Fractal/.project create mode 100644 app/examples/Drawing/Fractal/.src/FFractal.class create mode 100644 app/examples/Drawing/Fractal/.src/FFractal.form create mode 100644 app/examples/Drawing/Fractal/.src/FractalTask.class create mode 100644 app/examples/Drawing/Fractal/icon.png create mode 100644 app/examples/Drawing/Fractal/rose.jpg create mode 100644 app/examples/Drawing/GSLSpline/.directory create mode 100644 app/examples/Drawing/GSLSpline/.icon.png create mode 100644 app/examples/Drawing/GSLSpline/.lang/ru.po create mode 100644 app/examples/Drawing/GSLSpline/.project create mode 100644 app/examples/Drawing/GSLSpline/.src/FMain.class create mode 100644 app/examples/Drawing/GSLSpline/.src/FMain.form create mode 100644 app/examples/Drawing/GSLSpline/spline.png create mode 100644 app/examples/Drawing/Gravity/.directory create mode 100644 app/examples/Drawing/Gravity/.icon.png create mode 100644 app/examples/Drawing/Gravity/.lang/ca.po create mode 100644 app/examples/Drawing/Gravity/.lang/cs.po create mode 100644 app/examples/Drawing/Gravity/.lang/de.po create mode 100644 app/examples/Drawing/Gravity/.lang/es.po create mode 100644 app/examples/Drawing/Gravity/.lang/ru.po create mode 100644 app/examples/Drawing/Gravity/.project create mode 100644 app/examples/Drawing/Gravity/.src/FAbout.class create mode 100644 app/examples/Drawing/Gravity/.src/FAbout.form create mode 100644 app/examples/Drawing/Gravity/.src/FMain.class create mode 100644 app/examples/Drawing/Gravity/.src/FMain.form create mode 100644 app/examples/Drawing/Gravity/.src/cBall.class create mode 100644 app/examples/Drawing/Gravity/gravity.png create mode 100644 app/examples/Drawing/OnScreenDisplay/.directory create mode 100644 app/examples/Drawing/OnScreenDisplay/.icon.png create mode 100644 app/examples/Drawing/OnScreenDisplay/.lang/ca.po create mode 100644 app/examples/Drawing/OnScreenDisplay/.lang/cs.po create mode 100644 app/examples/Drawing/OnScreenDisplay/.lang/de.po create mode 100644 app/examples/Drawing/OnScreenDisplay/.lang/es.po create mode 100644 app/examples/Drawing/OnScreenDisplay/.lang/ru.po create mode 100644 app/examples/Drawing/OnScreenDisplay/.project create mode 100644 app/examples/Drawing/OnScreenDisplay/.src/FOnScreenDisplay.class create mode 100644 app/examples/Drawing/OnScreenDisplay/.src/FOnScreenDisplay.form create mode 100644 app/examples/Drawing/OnScreenDisplay/icon.png create mode 100644 app/examples/Drawing/Painting/.directory create mode 100644 app/examples/Drawing/Painting/.hidden/screenshots/2014-12-14.png create mode 100644 app/examples/Drawing/Painting/.icon.png create mode 100644 app/examples/Drawing/Painting/.lang/ca.po create mode 100644 app/examples/Drawing/Painting/.lang/cs.po create mode 100644 app/examples/Drawing/Painting/.lang/de.po create mode 100644 app/examples/Drawing/Painting/.lang/ru.po create mode 100644 app/examples/Drawing/Painting/.project create mode 100644 app/examples/Drawing/Painting/.src/FMain.class create mode 100644 app/examples/Drawing/Painting/.src/FMain.form create mode 100644 app/examples/Drawing/Painting/.src/MMakeSourceFile.module create mode 100644 app/examples/Drawing/Painting/Example1 create mode 100644 app/examples/Drawing/Painting/Example10 create mode 100644 app/examples/Drawing/Painting/Example11 create mode 100644 app/examples/Drawing/Painting/Example12 create mode 100644 app/examples/Drawing/Painting/Example13 create mode 100644 app/examples/Drawing/Painting/Example14 create mode 100644 app/examples/Drawing/Painting/Example15 create mode 100644 app/examples/Drawing/Painting/Example16 create mode 100644 app/examples/Drawing/Painting/Example17 create mode 100644 app/examples/Drawing/Painting/Example18 create mode 100644 app/examples/Drawing/Painting/Example2 create mode 100644 app/examples/Drawing/Painting/Example20 create mode 100644 app/examples/Drawing/Painting/Example21 create mode 100644 app/examples/Drawing/Painting/Example22 create mode 100644 app/examples/Drawing/Painting/Example3 create mode 100644 app/examples/Drawing/Painting/Example4 create mode 100644 app/examples/Drawing/Painting/Example5 create mode 100644 app/examples/Drawing/Painting/Example6 create mode 100644 app/examples/Drawing/Painting/Example7 create mode 100644 app/examples/Drawing/Painting/Example8 create mode 100644 app/examples/Drawing/Painting/Example9 create mode 100644 app/examples/Drawing/Painting/clovis.jpg create mode 100644 app/examples/Drawing/Painting/gambas.svg create mode 100644 app/examples/Drawing/Painting/icon.png create mode 100644 app/examples/Drawing/Painting/image.jpg create mode 100644 app/examples/Drawing/QuasiRegular/.directory create mode 100644 app/examples/Drawing/QuasiRegular/.hidden/screenshots/2014-12-14.png create mode 100644 app/examples/Drawing/QuasiRegular/.icon.png create mode 100644 app/examples/Drawing/QuasiRegular/.project create mode 100644 app/examples/Drawing/QuasiRegular/.src/FMain.class create mode 100644 app/examples/Drawing/QuasiRegular/.src/FMain.form create mode 100644 app/examples/Drawing/QuasiRegular/icon.png create mode 100644 app/examples/Drawing/RandomColorSort/.directory create mode 100644 app/examples/Drawing/RandomColorSort/.hidden/screenshots/2014-12-14.png create mode 100644 app/examples/Drawing/RandomColorSort/.icon.png create mode 100644 app/examples/Drawing/RandomColorSort/.lang/ru.po create mode 100644 app/examples/Drawing/RandomColorSort/.project create mode 100644 app/examples/Drawing/RandomColorSort/.src/FMain.class create mode 100644 app/examples/Drawing/RandomColorSort/.src/FMain.form create mode 100644 app/examples/Drawing/RandomColorSort/RandomColorSort.png create mode 100644 app/examples/Drawing/Tablet/.directory create mode 100644 app/examples/Drawing/Tablet/.hidden/screenshots/2014-12-14.png create mode 100644 app/examples/Drawing/Tablet/.icon.png create mode 100644 app/examples/Drawing/Tablet/.lang/ru.po create mode 100644 app/examples/Drawing/Tablet/.project create mode 100644 app/examples/Drawing/Tablet/.src/FMain.class create mode 100644 app/examples/Drawing/Tablet/.src/FMain.form create mode 100644 app/examples/Drawing/Tablet/Icon.png create mode 100644 app/examples/Games/BeastScroll/.dir_icon.png create mode 100644 app/examples/Games/BeastScroll/.directory create mode 100644 app/examples/Games/BeastScroll/.icon.png create mode 100644 app/examples/Games/BeastScroll/.lang/ru.po create mode 100644 app/examples/Games/BeastScroll/.project create mode 100644 app/examples/Games/BeastScroll/.src/MMain.module create mode 100644 app/examples/Games/BeastScroll/b-title.mod create mode 100644 app/examples/Games/BeastScroll/bgd1_ciel.png create mode 100644 app/examples/Games/BeastScroll/bgd2_montagnes.png create mode 100644 app/examples/Games/BeastScroll/bgd3_sol1.png create mode 100644 app/examples/Games/BeastScroll/bgd4_sol2.png create mode 100644 app/examples/Games/BeastScroll/bgd5_sol3.png create mode 100644 app/examples/Games/BeastScroll/fireworks.png create mode 100644 app/examples/Games/BeastScroll/logo.png create mode 100644 app/examples/Games/BeastScroll/scrolltext.png create mode 100644 app/examples/Games/BeastScroll/sprite_arbre.png create mode 100644 app/examples/Games/BeastScroll/sprite_barriere.png create mode 100644 app/examples/Games/BeastScroll/sprite_nuages1.png create mode 100644 app/examples/Games/BeastScroll/sprite_nuages2.png create mode 100644 app/examples/Games/BeastScroll/sprite_nuages3.png create mode 100644 app/examples/Games/BeastScroll/sprite_nuages4.png create mode 100644 app/examples/Games/Concent/.directory create mode 100644 app/examples/Games/Concent/.icon.png create mode 100644 app/examples/Games/Concent/.icon/16.png create mode 100644 app/examples/Games/Concent/.icon/32.png create mode 100644 app/examples/Games/Concent/.icon/48.png create mode 100644 app/examples/Games/Concent/.lang/ca.po create mode 100644 app/examples/Games/Concent/.lang/cs.po create mode 100644 app/examples/Games/Concent/.lang/de.po create mode 100644 app/examples/Games/Concent/.lang/en.po create mode 100644 app/examples/Games/Concent/.lang/es.po create mode 100644 app/examples/Games/Concent/.lang/fr.po create mode 100644 app/examples/Games/Concent/.lang/ru.po create mode 100644 app/examples/Games/Concent/.project create mode 100644 app/examples/Games/Concent/.src/fotos.class create mode 100644 app/examples/Games/Concent/.src/fotos.form create mode 100644 app/examples/Games/Concent/.src/frmAcerca.class create mode 100644 app/examples/Games/Concent/.src/frmAcerca.form create mode 100644 app/examples/Games/Concent/.src/frmInstrucciones.class create mode 100644 app/examples/Games/Concent/.src/frmInstrucciones.form create mode 100644 app/examples/Games/Concent/.src/funciones.module create mode 100644 app/examples/Games/Concent/.src/principal.class create mode 100644 app/examples/Games/Concent/.src/principal.form create mode 100644 app/examples/Games/Concent/Blockhit.wav create mode 100644 app/examples/Games/Concent/CHANGELOG create mode 100644 app/examples/Games/Concent/Missed.wav create mode 100644 app/examples/Games/Concent/Newlevel.wav create mode 100644 app/examples/Games/Concent/Paddle.wav create mode 100644 app/examples/Games/Concent/Setup.wav create mode 100644 app/examples/Games/Concent/Wallhit.wav create mode 100644 app/examples/Games/Concent/applause.wav create mode 100644 app/examples/Games/Concent/imagenes/an1.gif create mode 100644 app/examples/Games/Concent/imagenes/an10.gif create mode 100644 app/examples/Games/Concent/imagenes/an11.gif create mode 100644 app/examples/Games/Concent/imagenes/an12.gif create mode 100644 app/examples/Games/Concent/imagenes/an13.gif create mode 100644 app/examples/Games/Concent/imagenes/an14.gif create mode 100644 app/examples/Games/Concent/imagenes/an15.gif create mode 100644 app/examples/Games/Concent/imagenes/an16.gif create mode 100644 app/examples/Games/Concent/imagenes/an17.gif create mode 100644 app/examples/Games/Concent/imagenes/an18.gif create mode 100644 app/examples/Games/Concent/imagenes/an19.gif create mode 100644 app/examples/Games/Concent/imagenes/an2.gif create mode 100644 app/examples/Games/Concent/imagenes/an20.gif create mode 100644 app/examples/Games/Concent/imagenes/an21.gif create mode 100644 app/examples/Games/Concent/imagenes/an22.gif create mode 100644 app/examples/Games/Concent/imagenes/an23.gif create mode 100644 app/examples/Games/Concent/imagenes/an24.gif create mode 100644 app/examples/Games/Concent/imagenes/an25.gif create mode 100644 app/examples/Games/Concent/imagenes/an26.gif create mode 100644 app/examples/Games/Concent/imagenes/an27.gif create mode 100644 app/examples/Games/Concent/imagenes/an28.gif create mode 100644 app/examples/Games/Concent/imagenes/an29.gif create mode 100644 app/examples/Games/Concent/imagenes/an3.gif create mode 100644 app/examples/Games/Concent/imagenes/an30.gif create mode 100644 app/examples/Games/Concent/imagenes/an31.gif create mode 100644 app/examples/Games/Concent/imagenes/an32.gif create mode 100644 app/examples/Games/Concent/imagenes/an33.gif create mode 100644 app/examples/Games/Concent/imagenes/an34.gif create mode 100644 app/examples/Games/Concent/imagenes/an35.gif create mode 100644 app/examples/Games/Concent/imagenes/an36.gif create mode 100644 app/examples/Games/Concent/imagenes/an37.gif create mode 100644 app/examples/Games/Concent/imagenes/an38.gif create mode 100644 app/examples/Games/Concent/imagenes/an39.gif create mode 100644 app/examples/Games/Concent/imagenes/an4.gif create mode 100644 app/examples/Games/Concent/imagenes/an40.gif create mode 100644 app/examples/Games/Concent/imagenes/an5.gif create mode 100644 app/examples/Games/Concent/imagenes/an6.gif create mode 100644 app/examples/Games/Concent/imagenes/an7.gif create mode 100644 app/examples/Games/Concent/imagenes/an8.gif create mode 100644 app/examples/Games/Concent/imagenes/an9.gif create mode 100644 app/examples/Games/Concent/imagenes/colombia.gif create mode 100644 app/examples/Games/Concent/imagenes/inter.gif create mode 100644 app/examples/Games/Concent/imagenes/inter.jpg create mode 100644 app/examples/Games/Concent/imagenes/logo.gif create mode 100644 app/examples/Games/Concent/imagenes/logo.png create mode 100644 app/examples/Games/Concent/imagenes/ok.gif create mode 100644 app/examples/Games/Concent/imagenes/tierra.gif create mode 100644 app/examples/Games/Concent/imagenes/tierra3.jpg create mode 100644 app/examples/Games/Concent/move.wav create mode 100644 app/examples/Games/Concent/shuffle.wav create mode 100644 app/examples/Games/DeepSpace/.directory create mode 100644 app/examples/Games/DeepSpace/.icon.png create mode 100644 app/examples/Games/DeepSpace/.lang/ca.po create mode 100644 app/examples/Games/DeepSpace/.lang/cs.po create mode 100644 app/examples/Games/DeepSpace/.lang/de.po create mode 100644 app/examples/Games/DeepSpace/.lang/es.po create mode 100644 app/examples/Games/DeepSpace/.lang/ru.po create mode 100644 app/examples/Games/DeepSpace/.project create mode 100644 app/examples/Games/DeepSpace/.src/CBullet.class create mode 100644 app/examples/Games/DeepSpace/.src/CObject.class create mode 100644 app/examples/Games/DeepSpace/.src/FAbout.class create mode 100644 app/examples/Games/DeepSpace/.src/FAbout.form create mode 100644 app/examples/Games/DeepSpace/.src/FMain.class create mode 100644 app/examples/Games/DeepSpace/.src/FMain.form create mode 100644 app/examples/Games/DeepSpace/.src/MMain.module create mode 100644 app/examples/Games/DeepSpace/.src/MMath.module create mode 100644 app/examples/Games/DeepSpace/doc/.html_files/eg3.gif create mode 100644 app/examples/Games/DeepSpace/doc/.html_files/eg3b.gif create mode 100644 app/examples/Games/DeepSpace/doc/coordinates.html create mode 100644 app/examples/Games/DeepSpace/doc/howto.txt create mode 100644 app/examples/Games/DeepSpace/doc/todo.txt create mode 100644 app/examples/Games/DeepSpace/images/deepspace.png create mode 100644 app/examples/Games/DeepSpace/object.data/kite.2do create mode 100644 app/examples/Games/DeepSpace/object.data/main.lst create mode 100644 app/examples/Games/DeepSpace/object.data/ship.2do create mode 100644 app/examples/Games/DeepSpace/object.data/triangle.2do create mode 100644 app/examples/Games/DeepSpace/object.data/x-wing.2do create mode 100644 app/examples/Games/GNUBoxWorld/.directory create mode 100644 app/examples/Games/GNUBoxWorld/.hidden/screenshots/2014-12-14.png create mode 100644 app/examples/Games/GNUBoxWorld/.icon.png create mode 100644 app/examples/Games/GNUBoxWorld/.lang/ca.po create mode 100644 app/examples/Games/GNUBoxWorld/.lang/cs.po create mode 100644 app/examples/Games/GNUBoxWorld/.lang/de.po create mode 100644 app/examples/Games/GNUBoxWorld/.lang/es_AR.po create mode 100644 app/examples/Games/GNUBoxWorld/.lang/ru.po create mode 100644 app/examples/Games/GNUBoxWorld/.project create mode 100644 app/examples/Games/GNUBoxWorld/.src/Cell.class create mode 100644 app/examples/Games/GNUBoxWorld/.src/FMain.class create mode 100644 app/examples/Games/GNUBoxWorld/.src/FMain.form create mode 100644 app/examples/Games/GNUBoxWorld/.src/FrmAbout.class create mode 100644 app/examples/Games/GNUBoxWorld/.src/FrmAbout.form create mode 100644 app/examples/Games/GNUBoxWorld/.src/GameBoard.class create mode 100644 app/examples/Games/GNUBoxWorld/License create mode 100644 app/examples/Games/GNUBoxWorld/abajo.png create mode 100644 app/examples/Games/GNUBoxWorld/arriba.png create mode 100644 app/examples/Games/GNUBoxWorld/derecha.png create mode 100644 app/examples/Games/GNUBoxWorld/destino.png create mode 100644 app/examples/Games/GNUBoxWorld/ganador.png create mode 100644 app/examples/Games/GNUBoxWorld/icon.png create mode 100644 app/examples/Games/GNUBoxWorld/izquierda.png create mode 100644 app/examples/Games/GNUBoxWorld/logo.png create mode 100644 app/examples/Games/GNUBoxWorld/movible.png create mode 100644 app/examples/Games/GNUBoxWorld/movibleendestino.png create mode 100644 app/examples/Games/GNUBoxWorld/obstaculo-l.png create mode 100644 app/examples/Games/GNUBoxWorld/obstaculo-lr.png create mode 100644 app/examples/Games/GNUBoxWorld/obstaculo-r.png create mode 100644 app/examples/Games/GNUBoxWorld/obstaculo.png create mode 100644 app/examples/Games/GNUBoxWorld/piso.png create mode 100644 app/examples/Games/GameOfLife/.debug create mode 100644 app/examples/Games/GameOfLife/.directory create mode 100644 app/examples/Games/GameOfLife/.icon.png create mode 100644 app/examples/Games/GameOfLife/.lang/ca.po create mode 100644 app/examples/Games/GameOfLife/.lang/cs.po create mode 100644 app/examples/Games/GameOfLife/.lang/de.po create mode 100644 app/examples/Games/GameOfLife/.lang/ru.po create mode 100644 app/examples/Games/GameOfLife/.project create mode 100644 app/examples/Games/GameOfLife/.src/CGameField.class create mode 100644 app/examples/Games/GameOfLife/.src/FMain.class create mode 100644 app/examples/Games/GameOfLife/.src/FMain.form create mode 100644 app/examples/Games/GameOfLife/glob2-icon-48x48.png create mode 100644 app/examples/Games/Invaders/.directory create mode 100644 app/examples/Games/Invaders/.icon.png create mode 100644 app/examples/Games/Invaders/.project create mode 100644 app/examples/Games/Invaders/.src/Enemies.class create mode 100644 app/examples/Games/Invaders/.src/Enemy.class create mode 100644 app/examples/Games/Invaders/.src/MMain.module create mode 100644 app/examples/Games/Invaders/.src/Missile.class create mode 100644 app/examples/Games/Invaders/.src/Missiles.class create mode 100644 app/examples/Games/Invaders/invaders.png create mode 100644 app/examples/Games/MineSweeper/.directory create mode 100644 app/examples/Games/MineSweeper/.hidden/screenshots/2014-12-14.png create mode 100644 app/examples/Games/MineSweeper/.icon.png create mode 100644 app/examples/Games/MineSweeper/.lang/cs.po create mode 100644 app/examples/Games/MineSweeper/.lang/ja.po create mode 100644 app/examples/Games/MineSweeper/.lang/ru.po create mode 100644 app/examples/Games/MineSweeper/.lang/zh.po create mode 100644 app/examples/Games/MineSweeper/.lang/zh_TW.po create mode 100644 app/examples/Games/MineSweeper/.project create mode 100644 app/examples/Games/MineSweeper/.src/FMain.class create mode 100644 app/examples/Games/MineSweeper/.src/FMain.form create mode 100644 app/examples/Games/MineSweeper/.src/FSettings.class create mode 100644 app/examples/Games/MineSweeper/.src/FSettings.form create mode 100644 app/examples/Games/MineSweeper/.src/MineSweeperGame.class create mode 100644 app/examples/Games/MineSweeper/image/bigflag.png create mode 100644 app/examples/Games/MineSweeper/image/cover.png create mode 100644 app/examples/Games/MineSweeper/image/coveron.png create mode 100644 app/examples/Games/MineSweeper/image/empty.png create mode 100644 app/examples/Games/MineSweeper/image/expr_lose.png create mode 100644 app/examples/Games/MineSweeper/image/expr_normal.png create mode 100644 app/examples/Games/MineSweeper/image/expr_o.png create mode 100644 app/examples/Games/MineSweeper/image/expr_win.png create mode 100644 app/examples/Games/MineSweeper/image/false.png create mode 100644 app/examples/Games/MineSweeper/image/flag.png create mode 100644 app/examples/Games/MineSweeper/image/mine.png create mode 100644 app/examples/Games/MineSweeper/image/number_1.png create mode 100644 app/examples/Games/MineSweeper/image/number_2.png create mode 100644 app/examples/Games/MineSweeper/image/number_3.png create mode 100644 app/examples/Games/MineSweeper/image/number_4.png create mode 100644 app/examples/Games/MineSweeper/image/number_5.png create mode 100644 app/examples/Games/MineSweeper/image/number_6.png create mode 100644 app/examples/Games/MineSweeper/image/number_7.png create mode 100644 app/examples/Games/MineSweeper/image/number_8.png create mode 100644 app/examples/Games/Pong/.directory create mode 100644 app/examples/Games/Pong/.icon.png create mode 100644 app/examples/Games/Pong/.project create mode 100644 app/examples/Games/Pong/.src/Ball.class create mode 100644 app/examples/Games/Pong/.src/MMain.module create mode 100644 app/examples/Games/Pong/.src/NPC.class create mode 100644 app/examples/Games/Pong/.src/Paddle.class create mode 100644 app/examples/Games/Pong/SPEED create mode 100644 app/examples/Games/Pong/pong.png create mode 100644 app/examples/Games/Puzzle1To8/.directory create mode 100644 app/examples/Games/Puzzle1To8/.icon.png create mode 100644 app/examples/Games/Puzzle1To8/.lang/ca.po create mode 100644 app/examples/Games/Puzzle1To8/.lang/cs.po create mode 100644 app/examples/Games/Puzzle1To8/.lang/de.po create mode 100644 app/examples/Games/Puzzle1To8/.lang/es_AR.po create mode 100644 app/examples/Games/Puzzle1To8/.lang/fr.po create mode 100644 app/examples/Games/Puzzle1To8/.lang/ru.po create mode 100644 app/examples/Games/Puzzle1To8/.project create mode 100644 app/examples/Games/Puzzle1To8/.src/Casillero.class create mode 100644 app/examples/Games/Puzzle1To8/.src/Esquema.class create mode 100644 app/examples/Games/Puzzle1To8/.src/FMain.class create mode 100644 app/examples/Games/Puzzle1To8/.src/FMain.form create mode 100644 app/examples/Games/Puzzle1To8/.src/FrmAbout.class create mode 100644 app/examples/Games/Puzzle1To8/.src/FrmAbout.form create mode 100644 app/examples/Games/Puzzle1To8/.src/FrmAyuda.class create mode 100644 app/examples/Games/Puzzle1To8/.src/FrmAyuda.form create mode 100644 app/examples/Games/Puzzle1To8/Licence create mode 100644 app/examples/Games/Puzzle1To8/ejemplo1.png create mode 100644 app/examples/Games/Puzzle1To8/ejemplo2.png create mode 100644 app/examples/Games/Puzzle1To8/logo.png create mode 100644 app/examples/Games/RobotFindsKitten/.directory create mode 100644 app/examples/Games/RobotFindsKitten/.icon.png create mode 100644 app/examples/Games/RobotFindsKitten/.lang/ca.po create mode 100644 app/examples/Games/RobotFindsKitten/.lang/cs.po create mode 100644 app/examples/Games/RobotFindsKitten/.lang/de.po create mode 100644 app/examples/Games/RobotFindsKitten/.lang/es.po create mode 100644 app/examples/Games/RobotFindsKitten/.lang/ru.po create mode 100644 app/examples/Games/RobotFindsKitten/.project create mode 100644 app/examples/Games/RobotFindsKitten/.src/Frfk.class create mode 100644 app/examples/Games/RobotFindsKitten/.src/Frfk.form create mode 100644 app/examples/Games/RobotFindsKitten/COPYING create mode 100644 app/examples/Games/RobotFindsKitten/heart.png create mode 100644 app/examples/Games/RobotFindsKitten/nkis.txt create mode 100644 app/examples/Games/RobotFindsKitten/nkis_ru.txt create mode 100644 app/examples/Games/RobotFindsKitten/readme.txt create mode 100644 app/examples/Games/Snake/.directory create mode 100644 app/examples/Games/Snake/.icon.png create mode 100644 app/examples/Games/Snake/.lang/ca.po create mode 100644 app/examples/Games/Snake/.lang/cs.po create mode 100644 app/examples/Games/Snake/.lang/de.po create mode 100644 app/examples/Games/Snake/.lang/ru.po create mode 100644 app/examples/Games/Snake/.project create mode 100644 app/examples/Games/Snake/.src/FrmMain.class create mode 100644 app/examples/Games/Snake/.src/FrmMain.form create mode 100644 app/examples/Games/Snake/apple.png create mode 100644 app/examples/Games/Snake/body.png create mode 100644 app/examples/Games/Snake/dead.wav create mode 100644 app/examples/Games/Snake/eat.wav create mode 100644 app/examples/Games/Snake/head.png create mode 100644 app/examples/Games/Snake/start.wav create mode 100644 app/examples/Games/Solitaire/.directory create mode 100644 app/examples/Games/Solitaire/.icon.png create mode 100644 app/examples/Games/Solitaire/.lang/ca.po create mode 100644 app/examples/Games/Solitaire/.lang/cs.po create mode 100644 app/examples/Games/Solitaire/.lang/de.po create mode 100644 app/examples/Games/Solitaire/.lang/es.po create mode 100644 app/examples/Games/Solitaire/.lang/ru.po create mode 100644 app/examples/Games/Solitaire/.project create mode 100644 app/examples/Games/Solitaire/.src/CBoardDesign.class create mode 100644 app/examples/Games/Solitaire/.src/CMove.class create mode 100644 app/examples/Games/Solitaire/.src/FBoardSelect.class create mode 100644 app/examples/Games/Solitaire/.src/FBoardSelect.form create mode 100644 app/examples/Games/Solitaire/.src/FGameArea.class create mode 100644 app/examples/Games/Solitaire/.src/FGameArea.form create mode 100644 app/examples/Games/Solitaire/.src/Global.class create mode 100644 app/examples/Games/Solitaire/.src/MBoards.module create mode 100644 app/examples/Games/Solitaire/ball.png create mode 100644 app/examples/Games/Solitaire/new.png create mode 100644 app/examples/Games/Solitaire/quit.png create mode 100644 app/examples/Games/Solitaire/redo.png create mode 100644 app/examples/Games/Solitaire/undo.png create mode 100644 app/examples/Games/StarField/.directory create mode 100644 app/examples/Games/StarField/.icon.png create mode 100644 app/examples/Games/StarField/.project create mode 100644 app/examples/Games/StarField/.src/MMain.module create mode 100644 app/examples/Games/StarField/enterprise.png create mode 100644 app/examples/Games/StarField/logo.png create mode 100644 app/examples/Image/ImageViewer/.directory create mode 100644 app/examples/Image/ImageViewer/.icon.png create mode 100644 app/examples/Image/ImageViewer/.lang/ca.po create mode 100644 app/examples/Image/ImageViewer/.lang/cs.po create mode 100644 app/examples/Image/ImageViewer/.lang/de.po create mode 100644 app/examples/Image/ImageViewer/.lang/es.po create mode 100644 app/examples/Image/ImageViewer/.lang/nl.po create mode 100644 app/examples/Image/ImageViewer/.lang/ru.po create mode 100644 app/examples/Image/ImageViewer/.project create mode 100644 app/examples/Image/ImageViewer/.src/FViewer.class create mode 100644 app/examples/Image/ImageViewer/.src/FViewer.form create mode 100644 app/examples/Image/ImageViewer/image.png create mode 100644 app/examples/Image/ImageViewer/test.png create mode 100644 app/examples/Image/Lighttable/.directory create mode 100644 app/examples/Image/Lighttable/.icon.png create mode 100644 app/examples/Image/Lighttable/.lang/ca.po create mode 100644 app/examples/Image/Lighttable/.lang/cs.po create mode 100644 app/examples/Image/Lighttable/.lang/de.po create mode 100644 app/examples/Image/Lighttable/.lang/en.po create mode 100644 app/examples/Image/Lighttable/.lang/nl.po create mode 100644 app/examples/Image/Lighttable/.lang/ru.po create mode 100644 app/examples/Image/Lighttable/.project create mode 100644 app/examples/Image/Lighttable/.src/FHelp.class create mode 100644 app/examples/Image/Lighttable/.src/FHelp.form create mode 100644 app/examples/Image/Lighttable/.src/FInfo.class create mode 100644 app/examples/Image/Lighttable/.src/FInfo.form create mode 100644 app/examples/Image/Lighttable/.src/FMain.class create mode 100644 app/examples/Image/Lighttable/.src/FMain.form create mode 100644 app/examples/Image/Lighttable/.src/FRename.class create mode 100644 app/examples/Image/Lighttable/.src/FRename.form create mode 100644 app/examples/Image/Lighttable/.src/FRenameAll.class create mode 100644 app/examples/Image/Lighttable/.src/FRenameAll.form create mode 100644 app/examples/Image/Lighttable/.src/FRenameAllWarning.class create mode 100644 app/examples/Image/Lighttable/.src/FRenameAllWarning.form create mode 100644 app/examples/Image/Lighttable/.src/FSlideshow.class create mode 100644 app/examples/Image/Lighttable/.src/FSlideshow.form create mode 100644 app/examples/Image/Lighttable/.src/FStart.class create mode 100644 app/examples/Image/Lighttable/.src/FStart.form create mode 100644 app/examples/Image/Lighttable/.src/FTime.class create mode 100644 app/examples/Image/Lighttable/.src/FTime.form create mode 100644 app/examples/Image/Lighttable/.src/MMain.module create mode 100644 app/examples/Image/Lighttable/CHANGELOG create mode 100644 app/examples/Image/Lighttable/FStart.class create mode 100644 app/examples/Image/Lighttable/FStart.form create mode 100644 app/examples/Image/Lighttable/Help_ca.html create mode 100644 app/examples/Image/Lighttable/Help_de.html create mode 100644 app/examples/Image/Lighttable/Help_en.html create mode 100644 app/examples/Image/Lighttable/Help_ru.html create mode 100644 app/examples/Image/Lighttable/LTicon.png create mode 100644 app/examples/Image/Lighttable/Liesmich.txt create mode 100644 app/examples/Image/Lighttable/Readme.txt create mode 100644 app/examples/Image/Lighttable/close.png create mode 100644 app/examples/Image/Lighttable/hand1.png create mode 100644 app/examples/Image/Lighttable/help-contents.png create mode 100644 app/examples/Image/Lighttable/lighttable.png create mode 100644 app/examples/Image/Lighttable/move.png create mode 100644 app/examples/Image/Lighttable/zoom-in.png create mode 100644 app/examples/Image/PhotoTouch/.directory create mode 100644 app/examples/Image/PhotoTouch/.hidden/screenshots/phototouch.jpg create mode 100644 app/examples/Image/PhotoTouch/.icon.png create mode 100644 app/examples/Image/PhotoTouch/.lang/fr.po create mode 100644 app/examples/Image/PhotoTouch/.lang/nl.po create mode 100644 app/examples/Image/PhotoTouch/.lang/ru.po create mode 100644 app/examples/Image/PhotoTouch/.project create mode 100644 app/examples/Image/PhotoTouch/.src/CAnimation.class create mode 100644 app/examples/Image/PhotoTouch/.src/CButton.class create mode 100644 app/examples/Image/PhotoTouch/.src/FBrightness.class create mode 100644 app/examples/Image/PhotoTouch/.src/FBrightness.form create mode 100644 app/examples/Image/PhotoTouch/.src/FMain.class create mode 100644 app/examples/Image/PhotoTouch/.src/FMain.form create mode 100644 app/examples/Image/PhotoTouch/.src/FResize.class create mode 100644 app/examples/Image/PhotoTouch/.src/FResize.form create mode 100644 app/examples/Image/PhotoTouch/.src/FScissors.class create mode 100644 app/examples/Image/PhotoTouch/.src/FScissors.form create mode 100644 app/examples/Image/PhotoTouch/balance.png create mode 100644 app/examples/Image/PhotoTouch/blur.png create mode 100644 app/examples/Image/PhotoTouch/brightness.png create mode 100644 app/examples/Image/PhotoTouch/contrast.png create mode 100644 app/examples/Image/PhotoTouch/delete.png create mode 100644 app/examples/Image/PhotoTouch/despeckle.png create mode 100644 app/examples/Image/PhotoTouch/film.png create mode 100644 app/examples/Image/PhotoTouch/gamma.png create mode 100644 app/examples/Image/PhotoTouch/hflip.png create mode 100644 app/examples/Image/PhotoTouch/icon.png create mode 100644 app/examples/Image/PhotoTouch/invert.png create mode 100644 app/examples/Image/PhotoTouch/magic.png create mode 100644 app/examples/Image/PhotoTouch/next.png create mode 100644 app/examples/Image/PhotoTouch/normalize.png create mode 100644 app/examples/Image/PhotoTouch/oil.png create mode 100644 app/examples/Image/PhotoTouch/ok.png create mode 100644 app/examples/Image/PhotoTouch/photo.png create mode 100644 app/examples/Image/PhotoTouch/previous.png create mode 100644 app/examples/Image/PhotoTouch/quit.png create mode 100644 app/examples/Image/PhotoTouch/redo.png create mode 100644 app/examples/Image/PhotoTouch/resize.png create mode 100644 app/examples/Image/PhotoTouch/rotate-left.png create mode 100644 app/examples/Image/PhotoTouch/rotate-right.png create mode 100644 app/examples/Image/PhotoTouch/save-all.png create mode 100644 app/examples/Image/PhotoTouch/save.png create mode 100644 app/examples/Image/PhotoTouch/scissors.png create mode 100644 app/examples/Image/PhotoTouch/sharpen.png create mode 100644 app/examples/Image/PhotoTouch/undo.png create mode 100644 app/examples/Image/PhotoTouch/usb.png create mode 100644 app/examples/Image/PhotoTouch/vflip.png create mode 100644 app/examples/Image/PhotoTouch/zoom-fit.png create mode 100644 app/examples/Image/PhotoTouch/zoom-in.png create mode 100644 app/examples/Image/PhotoTouch/zoom-original.png create mode 100644 app/examples/Image/PhotoTouch/zoom-out.png create mode 100644 app/examples/Misc/Console/.directory create mode 100644 app/examples/Misc/Console/.icon.png create mode 100644 app/examples/Misc/Console/.lang/fr.po create mode 100644 app/examples/Misc/Console/.lang/ru.po create mode 100644 app/examples/Misc/Console/.project create mode 100644 app/examples/Misc/Console/.src/FConsole.class create mode 100644 app/examples/Misc/Console/.src/FConsole.form create mode 100644 app/examples/Misc/Console/terminal.png create mode 100644 app/examples/Misc/DBusExplorer/.directory create mode 100644 app/examples/Misc/DBusExplorer/.hidden/screenshots/2014-12-14.png create mode 100644 app/examples/Misc/DBusExplorer/.icon.png create mode 100644 app/examples/Misc/DBusExplorer/.lang/ru.po create mode 100644 app/examples/Misc/DBusExplorer/.project create mode 100644 app/examples/Misc/DBusExplorer/.src/FVersiongbXML.class create mode 100644 app/examples/Misc/DBusExplorer/.src/FVersiongbXML.form create mode 100644 app/examples/Misc/DBusExplorer/dbus22.png create mode 100644 app/examples/Misc/DBusExplorer/dbus64.png create mode 100644 app/examples/Misc/DBusExplorer/method.png create mode 100644 app/examples/Misc/DBusExplorer/property.png create mode 100644 app/examples/Misc/DBusExplorer/signal.png create mode 100644 app/examples/Misc/Evaluator/.directory create mode 100644 app/examples/Misc/Evaluator/.icon.png create mode 100644 app/examples/Misc/Evaluator/.lang/ca.po create mode 100644 app/examples/Misc/Evaluator/.lang/cs.po create mode 100644 app/examples/Misc/Evaluator/.lang/de.po create mode 100644 app/examples/Misc/Evaluator/.lang/es.po create mode 100644 app/examples/Misc/Evaluator/.lang/ru.po create mode 100644 app/examples/Misc/Evaluator/.project create mode 100644 app/examples/Misc/Evaluator/.src/FEval.class create mode 100644 app/examples/Misc/Evaluator/.src/FEval.form create mode 100644 app/examples/Misc/Evaluator/calculator.png create mode 100644 app/examples/Misc/Explorer/.directory create mode 100644 app/examples/Misc/Explorer/.icon.png create mode 100644 app/examples/Misc/Explorer/.lang/ca.po create mode 100644 app/examples/Misc/Explorer/.lang/cs.po create mode 100644 app/examples/Misc/Explorer/.lang/de.po create mode 100644 app/examples/Misc/Explorer/.lang/es.po create mode 100644 app/examples/Misc/Explorer/.lang/ru.po create mode 100644 app/examples/Misc/Explorer/.project create mode 100644 app/examples/Misc/Explorer/.src/FExplorer.class create mode 100644 app/examples/Misc/Explorer/.src/FExplorer.form create mode 100644 app/examples/Misc/Explorer/folder.png create mode 100644 app/examples/Misc/Notepad/.directory create mode 100644 app/examples/Misc/Notepad/.icon.png create mode 100644 app/examples/Misc/Notepad/.lang/ca.po create mode 100644 app/examples/Misc/Notepad/.lang/cs.po create mode 100644 app/examples/Misc/Notepad/.lang/de.po create mode 100644 app/examples/Misc/Notepad/.lang/es.po create mode 100644 app/examples/Misc/Notepad/.lang/ru.po create mode 100644 app/examples/Misc/Notepad/.project create mode 100644 app/examples/Misc/Notepad/.src/FAbout.class create mode 100644 app/examples/Misc/Notepad/.src/FAbout.form create mode 100644 app/examples/Misc/Notepad/.src/FNotepad.class create mode 100644 app/examples/Misc/Notepad/.src/FNotepad.form create mode 100644 app/examples/Misc/Notepad/notepad.png create mode 100644 app/examples/Misc/PDFViewer/.directory create mode 100644 app/examples/Misc/PDFViewer/.icon.png create mode 100644 app/examples/Misc/PDFViewer/.lang/ca.po create mode 100644 app/examples/Misc/PDFViewer/.lang/cs.po create mode 100644 app/examples/Misc/PDFViewer/.lang/de.po create mode 100644 app/examples/Misc/PDFViewer/.lang/es.po create mode 100644 app/examples/Misc/PDFViewer/.lang/ru.po create mode 100644 app/examples/Misc/PDFViewer/.project create mode 100644 app/examples/Misc/PDFViewer/.src/FMain.class create mode 100644 app/examples/Misc/PDFViewer/.src/FMain.form create mode 100644 app/examples/Misc/PDFViewer/.src/Fabout.class create mode 100644 app/examples/Misc/PDFViewer/.src/Fabout.form create mode 100644 app/examples/Misc/PDFViewer/pdf.png create mode 100644 app/examples/Misc/SystemTray/.directory create mode 100644 app/examples/Misc/SystemTray/.icon.png create mode 100644 app/examples/Misc/SystemTray/.lang/ru.po create mode 100644 app/examples/Misc/SystemTray/.project create mode 100644 app/examples/Misc/SystemTray/.src/FMain.class create mode 100644 app/examples/Misc/SystemTray/.src/FMain.form create mode 100644 app/examples/Misc/SystemTray/bg.png create mode 100644 app/examples/Misc/SystemTray/icon.png create mode 100644 app/examples/Misc/WatchGambasDirectory/.directory create mode 100644 app/examples/Misc/WatchGambasDirectory/.icon.png create mode 100644 app/examples/Misc/WatchGambasDirectory/.lang/ru.po create mode 100644 app/examples/Misc/WatchGambasDirectory/.project create mode 100644 app/examples/Misc/WatchGambasDirectory/.src/MMain.module create mode 100644 app/examples/Misc/WatchGambasDirectory/watch.svg create mode 100644 app/examples/Multimedia/CDPlayer/.directory create mode 100644 app/examples/Multimedia/CDPlayer/.icon.png create mode 100644 app/examples/Multimedia/CDPlayer/.lang/ca.po create mode 100644 app/examples/Multimedia/CDPlayer/.lang/cs.po create mode 100644 app/examples/Multimedia/CDPlayer/.lang/es.po create mode 100644 app/examples/Multimedia/CDPlayer/.lang/ru.po create mode 100644 app/examples/Multimedia/CDPlayer/.project create mode 100644 app/examples/Multimedia/CDPlayer/.src/Fcdplayer.class create mode 100644 app/examples/Multimedia/CDPlayer/.src/Fcdplayer.form create mode 100644 app/examples/Multimedia/CDPlayer/cdrom.png create mode 100644 app/examples/Multimedia/MediaPlayer/.directory create mode 100644 app/examples/Multimedia/MediaPlayer/.hidden/screenshots/MediaPlayer.jpg create mode 100644 app/examples/Multimedia/MediaPlayer/.icon.png create mode 100644 app/examples/Multimedia/MediaPlayer/.lang/fr.po create mode 100644 app/examples/Multimedia/MediaPlayer/.lang/ru.po create mode 100644 app/examples/Multimedia/MediaPlayer/.project create mode 100644 app/examples/Multimedia/MediaPlayer/.src/CAnimation.class create mode 100644 app/examples/Multimedia/MediaPlayer/.src/CButton.class create mode 100644 app/examples/Multimedia/MediaPlayer/.src/FControl.class create mode 100644 app/examples/Multimedia/MediaPlayer/.src/FControl.form create mode 100644 app/examples/Multimedia/MediaPlayer/.src/FMain.class create mode 100644 app/examples/Multimedia/MediaPlayer/.src/FMain.form create mode 100644 app/examples/Multimedia/MediaPlayer/.src/FTags.class create mode 100644 app/examples/Multimedia/MediaPlayer/.src/FTags.form create mode 100644 app/examples/Multimedia/MediaPlayer/.src/MTest.module create mode 100644 app/examples/Multimedia/MediaPlayer/brightness.png create mode 100644 app/examples/Multimedia/MediaPlayer/config.png create mode 100644 app/examples/Multimedia/MediaPlayer/contrast.png create mode 100644 app/examples/Multimedia/MediaPlayer/eject.png create mode 100644 app/examples/Multimedia/MediaPlayer/film.png create mode 100644 app/examples/Multimedia/MediaPlayer/fullscreen.png create mode 100644 app/examples/Multimedia/MediaPlayer/gamma.png create mode 100644 app/examples/Multimedia/MediaPlayer/icon.png create mode 100644 app/examples/Multimedia/MediaPlayer/info.png create mode 100644 app/examples/Multimedia/MediaPlayer/mute.png create mode 100644 app/examples/Multimedia/MediaPlayer/pause.png create mode 100644 app/examples/Multimedia/MediaPlayer/play.png create mode 100644 app/examples/Multimedia/MediaPlayer/quit.png create mode 100644 app/examples/Multimedia/MediaPlayer/screenshot.png create mode 100644 app/examples/Multimedia/MediaPlayer/seek-backward.png create mode 100644 app/examples/Multimedia/MediaPlayer/seek-forward.png create mode 100644 app/examples/Multimedia/MediaPlayer/skip-backward.png create mode 100644 app/examples/Multimedia/MediaPlayer/skip-forward.png create mode 100644 app/examples/Multimedia/MediaPlayer/stop.png create mode 100644 app/examples/Multimedia/MediaPlayer/subtitle.png create mode 100644 app/examples/Multimedia/MediaPlayer/undo.png create mode 100644 app/examples/Multimedia/MediaPlayer/video.png create mode 100644 app/examples/Multimedia/MediaPlayer/visualisation.png create mode 100644 app/examples/Multimedia/MediaPlayer/volume-0.png create mode 100644 app/examples/Multimedia/MediaPlayer/volume-1.png create mode 100644 app/examples/Multimedia/MediaPlayer/volume-2.png create mode 100644 app/examples/Multimedia/MediaPlayer/volume-3.png create mode 100644 app/examples/Multimedia/MediaPlayer/volume.png create mode 100644 app/examples/Multimedia/MediaPlayer/zoom-in.png create mode 100644 app/examples/Multimedia/MoviePlayer/.directory create mode 100644 app/examples/Multimedia/MoviePlayer/.icon.png create mode 100644 app/examples/Multimedia/MoviePlayer/.lang/ca.po create mode 100644 app/examples/Multimedia/MoviePlayer/.lang/cs.po create mode 100644 app/examples/Multimedia/MoviePlayer/.lang/es.po create mode 100644 app/examples/Multimedia/MoviePlayer/.lang/ru.po create mode 100644 app/examples/Multimedia/MoviePlayer/.project create mode 100644 app/examples/Multimedia/MoviePlayer/.src/FMoviePlayer.class create mode 100644 app/examples/Multimedia/MoviePlayer/.src/FMoviePlayer.form create mode 100644 app/examples/Multimedia/MoviePlayer/video.png create mode 100644 app/examples/Multimedia/MusicPlayer/.directory create mode 100644 app/examples/Multimedia/MusicPlayer/.icon.png create mode 100644 app/examples/Multimedia/MusicPlayer/.icon/16.png create mode 100644 app/examples/Multimedia/MusicPlayer/.icon/32.png create mode 100644 app/examples/Multimedia/MusicPlayer/.icon/48.png create mode 100644 app/examples/Multimedia/MusicPlayer/.lang/ca.po create mode 100644 app/examples/Multimedia/MusicPlayer/.lang/cs.po create mode 100644 app/examples/Multimedia/MusicPlayer/.lang/es.po create mode 100644 app/examples/Multimedia/MusicPlayer/.lang/fr.po create mode 100644 app/examples/Multimedia/MusicPlayer/.lang/ru.po create mode 100644 app/examples/Multimedia/MusicPlayer/.project create mode 100644 app/examples/Multimedia/MusicPlayer/.src/FSoundPlayer.class create mode 100644 app/examples/Multimedia/MusicPlayer/.src/FSoundPlayer.form create mode 100644 app/examples/Multimedia/MusicPlayer/sound.png create mode 100644 app/examples/Multimedia/MyWebCam/.directory create mode 100644 app/examples/Multimedia/MyWebCam/.icon.png create mode 100644 app/examples/Multimedia/MyWebCam/.lang/ca.po create mode 100644 app/examples/Multimedia/MyWebCam/.lang/cs.po create mode 100644 app/examples/Multimedia/MyWebCam/.lang/es.po create mode 100644 app/examples/Multimedia/MyWebCam/.lang/ru.po create mode 100644 app/examples/Multimedia/MyWebCam/.project create mode 100644 app/examples/Multimedia/MyWebCam/.src/Form1.class create mode 100644 app/examples/Multimedia/MyWebCam/.src/Form1.form create mode 100644 app/examples/Multimedia/MyWebCam/camera.png create mode 100644 app/examples/Multimedia/WaveGenerator/.directory create mode 100644 app/examples/Multimedia/WaveGenerator/.icon.png create mode 100644 app/examples/Multimedia/WaveGenerator/.lang/ru.po create mode 100644 app/examples/Multimedia/WaveGenerator/.project create mode 100644 app/examples/Multimedia/WaveGenerator/.src/FMain.class create mode 100644 app/examples/Multimedia/WaveGenerator/.src/FMain.form create mode 100644 app/examples/Multimedia/WaveGenerator/audio-headphones.png create mode 100644 app/examples/Multimedia/WebCam/.directory create mode 100644 app/examples/Multimedia/WebCam/.icon.png create mode 100644 app/examples/Multimedia/WebCam/.lang/ru.po create mode 100644 app/examples/Multimedia/WebCam/.project create mode 100644 app/examples/Multimedia/WebCam/.src/FDevice.class create mode 100644 app/examples/Multimedia/WebCam/.src/FDevice.form create mode 100644 app/examples/Multimedia/WebCam/.src/FMain.class create mode 100644 app/examples/Multimedia/WebCam/.src/FMain.form create mode 100644 app/examples/Multimedia/WebCam/camera.png create mode 100644 app/examples/Multimedia/WebCam/settings.png create mode 100644 app/examples/Networking/ClientSocket/.directory create mode 100644 app/examples/Networking/ClientSocket/.icon.png create mode 100644 app/examples/Networking/ClientSocket/.lang/ca.po create mode 100644 app/examples/Networking/ClientSocket/.lang/cs.po create mode 100644 app/examples/Networking/ClientSocket/.lang/de.po create mode 100644 app/examples/Networking/ClientSocket/.lang/es.po create mode 100644 app/examples/Networking/ClientSocket/.lang/nl.po create mode 100644 app/examples/Networking/ClientSocket/.lang/ru.po create mode 100644 app/examples/Networking/ClientSocket/.project create mode 100644 app/examples/Networking/ClientSocket/.src/FrmMain.class create mode 100644 app/examples/Networking/ClientSocket/.src/FrmMain.form create mode 100644 app/examples/Networking/ClientSocket/socket.png create mode 100644 app/examples/Networking/DnsClient/.directory create mode 100644 app/examples/Networking/DnsClient/.icon.png create mode 100644 app/examples/Networking/DnsClient/.lang/ca.po create mode 100644 app/examples/Networking/DnsClient/.lang/cs.po create mode 100644 app/examples/Networking/DnsClient/.lang/de.po create mode 100644 app/examples/Networking/DnsClient/.lang/es.po create mode 100644 app/examples/Networking/DnsClient/.lang/nl.po create mode 100644 app/examples/Networking/DnsClient/.lang/ru.po create mode 100644 app/examples/Networking/DnsClient/.project create mode 100644 app/examples/Networking/DnsClient/.src/FMain.class create mode 100644 app/examples/Networking/DnsClient/.src/FMain.form create mode 100644 app/examples/Networking/DnsClient/dnsclient.png create mode 100644 app/examples/Networking/HTTPGet/.directory create mode 100644 app/examples/Networking/HTTPGet/.icon.png create mode 100644 app/examples/Networking/HTTPGet/.lang/ca.po create mode 100644 app/examples/Networking/HTTPGet/.lang/cs.po create mode 100644 app/examples/Networking/HTTPGet/.lang/de.po create mode 100644 app/examples/Networking/HTTPGet/.lang/en_GB.po create mode 100644 app/examples/Networking/HTTPGet/.lang/es.po create mode 100644 app/examples/Networking/HTTPGet/.lang/nl.po create mode 100644 app/examples/Networking/HTTPGet/.lang/ru.po create mode 100644 app/examples/Networking/HTTPGet/.project create mode 100644 app/examples/Networking/HTTPGet/.src/ClsParams.class create mode 100644 app/examples/Networking/HTTPGet/.src/FConfig.class create mode 100644 app/examples/Networking/HTTPGet/.src/FConfig.form create mode 100644 app/examples/Networking/HTTPGet/.src/FHttpGet.class create mode 100644 app/examples/Networking/HTTPGet/.src/FHttpGet.form create mode 100644 app/examples/Networking/HTTPGet/httpclient.png create mode 100644 app/examples/Networking/HTTPPost/.directory create mode 100644 app/examples/Networking/HTTPPost/.icon.png create mode 100644 app/examples/Networking/HTTPPost/.lang/ca.po create mode 100644 app/examples/Networking/HTTPPost/.lang/cs.po create mode 100644 app/examples/Networking/HTTPPost/.lang/de.po create mode 100644 app/examples/Networking/HTTPPost/.lang/es.po create mode 100644 app/examples/Networking/HTTPPost/.lang/nl.po create mode 100644 app/examples/Networking/HTTPPost/.lang/ru.po create mode 100644 app/examples/Networking/HTTPPost/.project create mode 100644 app/examples/Networking/HTTPPost/.src/FHttpPost.class create mode 100644 app/examples/Networking/HTTPPost/.src/FHttpPost.form create mode 100644 app/examples/Networking/HTTPPost/httpclient.png create mode 100644 app/examples/Networking/POPMailbox/.directory create mode 100644 app/examples/Networking/POPMailbox/.icon.png create mode 100644 app/examples/Networking/POPMailbox/.lang/ru.po create mode 100644 app/examples/Networking/POPMailbox/.project create mode 100644 app/examples/Networking/POPMailbox/.src/FMain.class create mode 100644 app/examples/Networking/POPMailbox/.src/FMain.form create mode 100644 app/examples/Networking/POPMailbox/.src/FSettings.class create mode 100644 app/examples/Networking/POPMailbox/.src/FSettings.form create mode 100644 app/examples/Networking/POPMailbox/pop3client.png create mode 100644 app/examples/Networking/SerialPort/.directory create mode 100644 app/examples/Networking/SerialPort/.icon.png create mode 100644 app/examples/Networking/SerialPort/.lang/ru.po create mode 100644 app/examples/Networking/SerialPort/.project create mode 100644 app/examples/Networking/SerialPort/.src/FAbout.class create mode 100644 app/examples/Networking/SerialPort/.src/FAbout.form create mode 100644 app/examples/Networking/SerialPort/.src/FMain.class create mode 100644 app/examples/Networking/SerialPort/.src/FMain.form create mode 100644 app/examples/Networking/SerialPort/.src/Module_Config.module create mode 100644 app/examples/Networking/SerialPort/.src/Module_RS232.module create mode 100644 app/examples/Networking/SerialPort/serialport.png create mode 100644 app/examples/Networking/ServerSocket/.directory create mode 100644 app/examples/Networking/ServerSocket/.icon.png create mode 100644 app/examples/Networking/ServerSocket/.lang/ca.po create mode 100644 app/examples/Networking/ServerSocket/.lang/cs.po create mode 100644 app/examples/Networking/ServerSocket/.lang/es.po create mode 100644 app/examples/Networking/ServerSocket/.lang/nl.po create mode 100644 app/examples/Networking/ServerSocket/.lang/ru.po create mode 100644 app/examples/Networking/ServerSocket/.project create mode 100644 app/examples/Networking/ServerSocket/.src/FrmMain.class create mode 100644 app/examples/Networking/ServerSocket/.src/FrmMain.form create mode 100644 app/examples/Networking/ServerSocket/serversocket.png create mode 100644 app/examples/Networking/UDPServerClient/.directory create mode 100644 app/examples/Networking/UDPServerClient/.icon.png create mode 100644 app/examples/Networking/UDPServerClient/.lang/ca.po create mode 100644 app/examples/Networking/UDPServerClient/.lang/cs.po create mode 100644 app/examples/Networking/UDPServerClient/.lang/es.po create mode 100644 app/examples/Networking/UDPServerClient/.lang/nl.po create mode 100644 app/examples/Networking/UDPServerClient/.lang/ru.po create mode 100644 app/examples/Networking/UDPServerClient/.project create mode 100644 app/examples/Networking/UDPServerClient/.src/FrmClient.class create mode 100644 app/examples/Networking/UDPServerClient/.src/FrmClient.form create mode 100644 app/examples/Networking/UDPServerClient/.src/FrmServer.class create mode 100644 app/examples/Networking/UDPServerClient/.src/FrmServer.form create mode 100644 app/examples/Networking/UDPServerClient/udpsocket.png create mode 100644 app/examples/Networking/WebBrowser/.directory create mode 100644 app/examples/Networking/WebBrowser/.icon.png create mode 100644 app/examples/Networking/WebBrowser/.lang/ca.po create mode 100644 app/examples/Networking/WebBrowser/.lang/cs.po create mode 100644 app/examples/Networking/WebBrowser/.lang/de.po create mode 100644 app/examples/Networking/WebBrowser/.lang/es.po create mode 100644 app/examples/Networking/WebBrowser/.lang/nl.po create mode 100644 app/examples/Networking/WebBrowser/.lang/ru.po create mode 100644 app/examples/Networking/WebBrowser/.project create mode 100644 app/examples/Networking/WebBrowser/.src/FAuth.class create mode 100644 app/examples/Networking/WebBrowser/.src/FAuth.form create mode 100644 app/examples/Networking/WebBrowser/.src/FBrowser.class create mode 100644 app/examples/Networking/WebBrowser/.src/FBrowser.form create mode 100644 app/examples/Networking/WebBrowser/.src/FDownload.class create mode 100644 app/examples/Networking/WebBrowser/.src/FDownload.form create mode 100644 app/examples/Networking/WebBrowser/.src/FDownloadList.class create mode 100644 app/examples/Networking/WebBrowser/.src/FDownloadList.form create mode 100644 app/examples/Networking/WebBrowser/.src/FEditable.class create mode 100644 app/examples/Networking/WebBrowser/.src/FEditable.form create mode 100644 app/examples/Networking/WebBrowser/.src/FOption.class create mode 100644 app/examples/Networking/WebBrowser/.src/FOption.form create mode 100644 app/examples/Networking/WebBrowser/icon.png create mode 100644 app/examples/Networking/WebBrowser/list-ordered.png create mode 100644 app/examples/Networking/WebBrowser/list-unordered.png create mode 100644 app/examples/OpenGL/3DWebCam/.directory create mode 100644 app/examples/OpenGL/3DWebCam/.icon.png create mode 100644 app/examples/OpenGL/3DWebCam/.lang/ru.po create mode 100644 app/examples/OpenGL/3DWebCam/.project create mode 100644 app/examples/OpenGL/3DWebCam/.src/Mmain.module create mode 100644 app/examples/OpenGL/3DWebCam/webcam.png create mode 100644 app/examples/OpenGL/GambasGears/.directory create mode 100644 app/examples/OpenGL/GambasGears/.icon.png create mode 100644 app/examples/OpenGL/GambasGears/.lang/ru.po create mode 100644 app/examples/OpenGL/GambasGears/.project create mode 100644 app/examples/OpenGL/GambasGears/.src/Module1.module create mode 100644 app/examples/OpenGL/GambasGears/gears.png create mode 100644 app/examples/OpenGL/Md2Model/.directory create mode 100644 app/examples/OpenGL/Md2Model/.icon.png create mode 100644 app/examples/OpenGL/Md2Model/.lang/ru.po create mode 100644 app/examples/OpenGL/Md2Model/.project create mode 100644 app/examples/OpenGL/Md2Model/.src/FMain.class create mode 100644 app/examples/OpenGL/Md2Model/.src/FMain.form create mode 100644 app/examples/OpenGL/Md2Model/Weapon.md2 create mode 100644 app/examples/OpenGL/Md2Model/Weapon.png create mode 100644 app/examples/OpenGL/Md2Model/bauul.jpg create mode 100644 app/examples/OpenGL/Md2Model/bauul.md2 create mode 100644 app/examples/OpenGL/Md2Model/goblin.jpg create mode 100644 app/examples/OpenGL/Md2Model/goblin.md2 create mode 100644 app/examples/OpenGL/Md2Model/icon.png create mode 100644 app/examples/OpenGL/Md2Model/igdosh.png create mode 100644 app/examples/OpenGL/Md2Model/knight.jpg create mode 100644 app/examples/OpenGL/Md2Model/knight.md2 create mode 100644 app/examples/OpenGL/Md2Model/ogro.jpg create mode 100644 app/examples/OpenGL/Md2Model/ogro.md2 create mode 100644 app/examples/OpenGL/Md2Model/rat.jpg create mode 100644 app/examples/OpenGL/Md2Model/rat.md2 create mode 100644 app/examples/OpenGL/Md2Model/rhino.jpg create mode 100644 app/examples/OpenGL/Md2Model/rhino.md2 create mode 100644 app/examples/OpenGL/NeHeTutorial/.directory create mode 100644 app/examples/OpenGL/NeHeTutorial/.icon.png create mode 100644 app/examples/OpenGL/NeHeTutorial/.lang/ru.po create mode 100644 app/examples/OpenGL/NeHeTutorial/.project create mode 100644 app/examples/OpenGL/NeHeTutorial/.src/Example1.module create mode 100644 app/examples/OpenGL/NeHeTutorial/.src/Example10.module create mode 100644 app/examples/OpenGL/NeHeTutorial/.src/Example11.module create mode 100644 app/examples/OpenGL/NeHeTutorial/.src/Example16.module create mode 100644 app/examples/OpenGL/NeHeTutorial/.src/Example19.module create mode 100644 app/examples/OpenGL/NeHeTutorial/.src/Example2.module create mode 100644 app/examples/OpenGL/NeHeTutorial/.src/Example25.module create mode 100644 app/examples/OpenGL/NeHeTutorial/.src/Example3.module create mode 100644 app/examples/OpenGL/NeHeTutorial/.src/Example4.module create mode 100644 app/examples/OpenGL/NeHeTutorial/.src/Example42.module create mode 100644 app/examples/OpenGL/NeHeTutorial/.src/Example5.module create mode 100644 app/examples/OpenGL/NeHeTutorial/.src/Example6.module create mode 100644 app/examples/OpenGL/NeHeTutorial/.src/Example7.module create mode 100644 app/examples/OpenGL/NeHeTutorial/.src/Example8.module create mode 100644 app/examples/OpenGL/NeHeTutorial/.src/Example9.module create mode 100644 app/examples/OpenGL/NeHeTutorial/.src/MMain.module create mode 100644 app/examples/OpenGL/NeHeTutorial/NeHe.png create mode 100644 app/examples/OpenGL/NeHeTutorial/Sphere.txt create mode 100644 app/examples/OpenGL/NeHeTutorial/Star.png create mode 100644 app/examples/OpenGL/NeHeTutorial/Torus.txt create mode 100644 app/examples/OpenGL/NeHeTutorial/Tube.txt create mode 100644 app/examples/OpenGL/NeHeTutorial/barrel.png create mode 100644 app/examples/OpenGL/NeHeTutorial/ceiling.png create mode 100644 app/examples/OpenGL/NeHeTutorial/crate.jpeg create mode 100644 app/examples/OpenGL/NeHeTutorial/floor.png create mode 100644 app/examples/OpenGL/NeHeTutorial/glass.png create mode 100644 app/examples/OpenGL/NeHeTutorial/icon.png create mode 100644 app/examples/OpenGL/NeHeTutorial/rainbow.txt create mode 100644 app/examples/OpenGL/NeHeTutorial/wall.jpeg create mode 100644 app/examples/OpenGL/NeHeTutorial/world.txt create mode 100644 app/examples/OpenGL/NeHeTutorialShell/.directory create mode 100644 app/examples/OpenGL/NeHeTutorialShell/.icon.png create mode 100644 app/examples/OpenGL/NeHeTutorialShell/.lang/ru.po create mode 100644 app/examples/OpenGL/NeHeTutorialShell/.project create mode 100644 app/examples/OpenGL/NeHeTutorialShell/.src/FMain.class create mode 100644 app/examples/OpenGL/NeHeTutorialShell/.src/FMain.form create mode 100644 app/examples/OpenGL/NeHeTutorialShell/icon.png create mode 100644 app/examples/OpenGL/NeHeTutorialShell/nehe.png create mode 100644 app/examples/OpenGL/PDFPresentation/.directory create mode 100644 app/examples/OpenGL/PDFPresentation/.icon.png create mode 100644 app/examples/OpenGL/PDFPresentation/.lang/ru.po create mode 100644 app/examples/OpenGL/PDFPresentation/.project create mode 100644 app/examples/OpenGL/PDFPresentation/.src/CLogo.class create mode 100644 app/examples/OpenGL/PDFPresentation/.src/CPdfPresentation.class create mode 100644 app/examples/OpenGL/PDFPresentation/.src/FMain.class create mode 100644 app/examples/OpenGL/PDFPresentation/.src/FMain.form create mode 100644 app/examples/OpenGL/PDFPresentation/.src/MMain.module create mode 100644 app/examples/OpenGL/PDFPresentation/icon.png create mode 100644 app/examples/OpenGL/PDFPresentation/logo.png create mode 100644 app/examples/OpenGL/PDFPresentation/music.xm create mode 100644 app/examples/OpenGL/TunnelSDL/.dir_icon.png create mode 100644 app/examples/OpenGL/TunnelSDL/.directory create mode 100644 app/examples/OpenGL/TunnelSDL/.icon.png create mode 100644 app/examples/OpenGL/TunnelSDL/.lang/ru.po create mode 100644 app/examples/OpenGL/TunnelSDL/.project create mode 100644 app/examples/OpenGL/TunnelSDL/.src/CTunnel.class create mode 100644 app/examples/OpenGL/TunnelSDL/.src/MMain.module create mode 100644 app/examples/OpenGL/TunnelSDL/texture.png create mode 100644 app/examples/OpenGL/TunnelSDL/tunnelsdl.png create mode 100644 app/examples/Printing/Printing/.directory create mode 100644 app/examples/Printing/Printing/.hidden/screenshots/2014-12-14.png create mode 100644 app/examples/Printing/Printing/.icon.png create mode 100644 app/examples/Printing/Printing/.lang/ru.po create mode 100644 app/examples/Printing/Printing/.project create mode 100644 app/examples/Printing/Printing/.src/FMain.class create mode 100644 app/examples/Printing/Printing/.src/FMain.form create mode 100644 app/examples/Printing/Printing/molly-malone.txt create mode 100644 app/examples/Printing/Printing/printer-laser.png create mode 100644 app/examples/Printing/ReportExample/.connection/Connection1.connection create mode 100644 app/examples/Printing/ReportExample/.connection/Connection1.template create mode 100644 app/examples/Printing/ReportExample/.directory create mode 100644 app/examples/Printing/ReportExample/.hidden/report.png create mode 100644 app/examples/Printing/ReportExample/.icon.png create mode 100644 app/examples/Printing/ReportExample/.lang/ru.po create mode 100644 app/examples/Printing/ReportExample/.project create mode 100644 app/examples/Printing/ReportExample/.src/FMain.class create mode 100644 app/examples/Printing/ReportExample/.src/FMain.form create mode 100644 app/examples/Printing/ReportExample/.src/Report1.class create mode 100644 app/examples/Printing/ReportExample/.src/Report1.report create mode 100644 app/examples/Printing/ReportExample/.src/Report2.class create mode 100644 app/examples/Printing/ReportExample/.src/Report2.report create mode 100644 app/examples/Printing/ReportExample/.src/Report3.class create mode 100644 app/examples/Printing/ReportExample/.src/Report3.report create mode 100644 app/examples/Printing/ReportExample/gambas.svg create mode 100644 app/examples/Web/SmallWiki/.directory create mode 100644 app/examples/Web/SmallWiki/.icon.png create mode 100644 app/examples/Web/SmallWiki/.lang/ru.po create mode 100644 app/examples/Web/SmallWiki/.project create mode 100644 app/examples/Web/SmallWiki/.public/critical.png create mode 100644 app/examples/Web/SmallWiki/.public/edit.png create mode 100644 app/examples/Web/SmallWiki/.public/info.png create mode 100644 app/examples/Web/SmallWiki/.public/logo.png create mode 100644 app/examples/Web/SmallWiki/.public/style.css create mode 100644 app/examples/Web/SmallWiki/.public/tip.png create mode 100644 app/examples/Web/SmallWiki/.public/up.png create mode 100644 app/examples/Web/SmallWiki/.public/warning.png create mode 100644 app/examples/Web/SmallWiki/.src/Main.module create mode 100644 app/examples/Web/SmallWiki/.src/Markdown.class create mode 100644 app/examples/Web/SmallWiki/.src/MarkdownLink.class create mode 100644 app/examples/Web/SmallWiki/.src/Markup.module create mode 100644 app/examples/Web/SmallWiki/.src/Wiki.class create mode 100644 app/examples/Web/SmallWiki/.src/Wiki.webpage create mode 100644 app/examples/Web/SmallWiki/.src/WikiMarkdown.class create mode 100644 app/examples/Web/SmallWiki/page create mode 100644 app/examples/Web/SmallWiki/passwd create mode 100644 app/man/Makefile.am create mode 100644 app/man/gambas3.1 create mode 100644 app/man/gbs3.1 create mode 100644 app/man/gbw3.1 create mode 100644 app/mime/application-x-gambasscript-48.png create mode 100644 app/mime/application-x-gambasscript.png create mode 100644 app/mime/application-x-gambasscript.xml create mode 100644 app/mime/application-x-gambasserverpage-48.png create mode 100644 app/mime/application-x-gambasserverpage.png create mode 100644 app/mime/application-x-gambasserverpage.xml create mode 120000 app/reconf create mode 100644 app/src/INSTALL create mode 100644 app/src/gambas-farm-server/.connection/Connection1.connection create mode 100644 app/src/gambas-farm-server/.connection/Connection1.template create mode 100644 app/src/gambas-farm-server/.connection/Connection2.connection create mode 100644 app/src/gambas-farm-server/.connection/gambas3_farm.connection create mode 100644 app/src/gambas-farm-server/.connection/gambas3_farm.template create mode 100644 app/src/gambas-farm-server/.directory create mode 100644 app/src/gambas-farm-server/.icon.png create mode 100644 app/src/gambas-farm-server/.project create mode 100644 app/src/gambas-farm-server/.src/MMain.module create mode 100644 app/src/gambas-farm-server/logo.png create mode 100644 app/src/gambas-farm-server/usage.txt create mode 100644 app/src/gambas-wiki/.connection/Connection1.connection create mode 100644 app/src/gambas-wiki/.directory create mode 100644 app/src/gambas-wiki/.hidden/CHANGELOG create mode 100644 app/src/gambas-wiki/.hidden/Uncompressed/.public/hilitor.js create mode 100644 app/src/gambas-wiki/.hidden/Uncompressed/.public/style-rtl.css create mode 100644 app/src/gambas-wiki/.hidden/Uncompressed/.public/style-w.css create mode 100644 app/src/gambas-wiki/.hidden/Uncompressed/.public/style.css create mode 100644 app/src/gambas-wiki/.icon.png create mode 100644 app/src/gambas-wiki/.lang/ar.po create mode 100644 app/src/gambas-wiki/.lang/ca.po create mode 100644 app/src/gambas-wiki/.lang/cs.po create mode 100644 app/src/gambas-wiki/.lang/de.po create mode 100644 app/src/gambas-wiki/.lang/es.po create mode 100644 app/src/gambas-wiki/.lang/es_ES.po create mode 100644 app/src/gambas-wiki/.lang/fa.po create mode 100644 app/src/gambas-wiki/.lang/fr.po create mode 100644 app/src/gambas-wiki/.lang/it.po create mode 100644 app/src/gambas-wiki/.lang/nl.po create mode 100644 app/src/gambas-wiki/.lang/pt_BR.po create mode 100644 app/src/gambas-wiki/.lang/ru.po create mode 100644 app/src/gambas-wiki/.lang/sv.po create mode 100644 app/src/gambas-wiki/.lang/zh.po create mode 100644 app/src/gambas-wiki/.project create mode 120000 app/src/gambas-wiki/.public/critical.png create mode 100644 app/src/gambas-wiki/.public/edit.png create mode 100644 app/src/gambas-wiki/.public/error-bg.png create mode 100644 app/src/gambas-wiki/.public/gambas.png create mode 120000 app/src/gambas-wiki/.public/highlight.js create mode 100644 app/src/gambas-wiki/.public/hilitor.js create mode 100644 app/src/gambas-wiki/.public/home.png create mode 120000 app/src/gambas-wiki/.public/info.png create mode 100644 app/src/gambas-wiki/.public/logo.png create mode 100644 app/src/gambas-wiki/.public/playground.js create mode 100644 app/src/gambas-wiki/.public/style-nh.css create mode 100644 app/src/gambas-wiki/.public/style-rtl.css create mode 100644 app/src/gambas-wiki/.public/style-w.css create mode 100644 app/src/gambas-wiki/.public/style.css create mode 100644 app/src/gambas-wiki/.public/tip.png create mode 100644 app/src/gambas-wiki/.public/up-gray.png create mode 100644 app/src/gambas-wiki/.public/up.png create mode 100644 app/src/gambas-wiki/.public/vb.png create mode 100644 app/src/gambas-wiki/.public/waiting.gif create mode 120000 app/src/gambas-wiki/.public/warning.png create mode 100644 app/src/gambas-wiki/.src/CAuthor.class create mode 100644 app/src/gambas-wiki/.src/CClassInfo.class create mode 100644 app/src/gambas-wiki/.src/CComponent.class create mode 100644 app/src/gambas-wiki/.src/CPropertyInfo.class create mode 100644 app/src/gambas-wiki/.src/CSymbolInfo.class create mode 100644 app/src/gambas-wiki/.src/CUser.class create mode 100644 app/src/gambas-wiki/.src/Confirm.class create mode 100644 app/src/gambas-wiki/.src/Confirm.webpage create mode 100644 app/src/gambas-wiki/.src/FixNews.module create mode 100644 app/src/gambas-wiki/.src/HttpStat.module create mode 100644 app/src/gambas-wiki/.src/Main.module create mode 100644 app/src/gambas-wiki/.src/OldWiki.module create mode 100644 app/src/gambas-wiki/.src/Register.class create mode 100644 app/src/gambas-wiki/.src/Register.webpage create mode 100644 app/src/gambas-wiki/.src/Wiki.class create mode 100644 app/src/gambas-wiki/.src/Wiki.webpage create mode 100644 app/src/gambas-wiki/.src/WikiMarkdown.class create mode 120000 app/src/gambas-wiki/AUTHORS create mode 120000 app/src/gambas-wiki/gambas3-ide.project create mode 120000 app/src/gambas-wiki/gambas3-scripter.project create mode 100644 app/src/gambas-wiki/icon.png create mode 100644 app/src/gambas-wiki/page create mode 100644 app/src/gambas-wiki/passwd create mode 100644 app/src/gambas3-selftest/.directory create mode 100644 app/src/gambas3-selftest/.hidden/logo.png create mode 100644 app/src/gambas3-selftest/.icon.png create mode 100755 app/src/gambas3-selftest/.lang/en_GB.po create mode 100644 app/src/gambas3-selftest/.lang/it.po create mode 100644 app/src/gambas3-selftest/.project create mode 100755 app/src/gambas3-selftest/.settings_old create mode 100644 app/src/gambas3-selftest/.src/TestSources/BaseClass.class create mode 100755 app/src/gambas3-selftest/.src/TestSources/ChildClass.class create mode 100755 app/src/gambas3-selftest/.src/TestSources/Class1.class create mode 100755 app/src/gambas3-selftest/.src/TestSources/Class4.class create mode 100755 app/src/gambas3-selftest/.src/TestSources/Class5.class create mode 100755 app/src/gambas3-selftest/.src/TestSources/Crash.class create mode 100644 app/src/gambas3-selftest/.src/TestSources/Crash2.class create mode 100755 app/src/gambas3-selftest/.src/TestSources/Crash3.class create mode 100644 app/src/gambas3-selftest/.src/TestSources/FileReadWriteSources/mFileReadWrite.module create mode 100755 app/src/gambas3-selftest/.src/TestSources/Module1.module create mode 100755 app/src/gambas3-selftest/.src/TestSources/POINT3D.class create mode 100755 app/src/gambas3-selftest/.src/TestSources/POINTFloat.class create mode 100755 app/src/gambas3-selftest/.src/TestSources/SubCrash.class create mode 100755 app/src/gambas3-selftest/.src/TestSources/TestClass1.class create mode 100755 app/src/gambas3-selftest/.src/TestSources/TestClass2.class create mode 100755 app/src/gambas3-selftest/.src/TestSources/TestClass3.class create mode 100755 app/src/gambas3-selftest/.src/TestSources/YetAnotherClass.class create mode 100644 app/src/gambas3-selftest/.src/TestSources/mTest.module create mode 100644 app/src/gambas3-selftest/.src/Tests/CrashMyTests.test create mode 100644 app/src/gambas3-selftest/.src/Tests/Errorhandling.test create mode 100644 app/src/gambas3-selftest/.src/Tests/FileReadWrite.test create mode 100644 app/src/gambas3-selftest/.src/Tests/GambasSelftests.test create mode 100644 app/src/gambas3-selftest/.src/Tests/LocalStaticFun.test create mode 100644 app/src/gambas3-selftest/.src/Tests/SlowThousandsProcs.test create mode 100644 app/src/gambas3-selftest/.src/Tests/Timers.test create mode 100644 app/src/gambas3-selftest/.test create mode 100644 app/src/gambas3-selftest/COPYING create mode 100755 app/src/gambas3-selftest/Excluded or Unimplemented create mode 100755 app/src/gambas3-selftest/SearchList create mode 100755 app/src/gambas3-selftest/run.sh create mode 100644 app/src/gambas3/.directory create mode 100644 app/src/gambas3/.hidden/font/GambasBold.sfd create mode 100644 app/src/gambas3/.hidden/font/GambasRegular.sfd create mode 100644 app/src/gambas3/.hidden/font/GambasRoundRegular.sfd create mode 100644 app/src/gambas3/.hidden/font/LICENSE create mode 100644 app/src/gambas3/.hidden/font/gambasb12.otb create mode 100644 app/src/gambas3/.hidden/font/gambasb13.otb create mode 100644 app/src/gambas3/.hidden/font/gambasb16.otb create mode 100644 app/src/gambas3/.hidden/font/gambasr12.otb create mode 100644 app/src/gambas3/.hidden/font/gambasr13.otb create mode 100644 app/src/gambas3/.hidden/font/gambasr16.otb create mode 100644 app/src/gambas3/.hidden/font/groundr16.otb create mode 100644 app/src/gambas3/.hidden/make-help-archive create mode 100644 app/src/gambas3/.hidden/report-ng.sh create mode 100644 app/src/gambas3/.icon.png create mode 100644 app/src/gambas3/.lang/ar.po create mode 100644 app/src/gambas3/.lang/ca.po create mode 100644 app/src/gambas3/.lang/cs.po create mode 100644 app/src/gambas3/.lang/cy.po create mode 100644 app/src/gambas3/.lang/de.po create mode 100644 app/src/gambas3/.lang/el.po create mode 100644 app/src/gambas3/.lang/es.po create mode 100644 app/src/gambas3/.lang/es_ES.po create mode 100644 app/src/gambas3/.lang/fa.po create mode 100644 app/src/gambas3/.lang/fr.po create mode 100644 app/src/gambas3/.lang/gl_ES.po create mode 100644 app/src/gambas3/.lang/hr.po create mode 100644 app/src/gambas3/.lang/hu.po create mode 100644 app/src/gambas3/.lang/id.po create mode 100644 app/src/gambas3/.lang/it.po create mode 100644 app/src/gambas3/.lang/ja.po create mode 100644 app/src/gambas3/.lang/ko.po create mode 100644 app/src/gambas3/.lang/lt.po create mode 100644 app/src/gambas3/.lang/nl.po create mode 100644 app/src/gambas3/.lang/no.po create mode 100644 app/src/gambas3/.lang/pl.po create mode 100644 app/src/gambas3/.lang/pt.po create mode 100644 app/src/gambas3/.lang/pt_BR.po create mode 100644 app/src/gambas3/.lang/ro.po create mode 100644 app/src/gambas3/.lang/ru.po create mode 100644 app/src/gambas3/.lang/sl.po create mode 100644 app/src/gambas3/.lang/sv.po create mode 100644 app/src/gambas3/.lang/tr.po create mode 100644 app/src/gambas3/.lang/zh.po create mode 100644 app/src/gambas3/.lang/zh_TW.po create mode 100644 app/src/gambas3/.project create mode 100644 app/src/gambas3/.src/CRecentProject.class create mode 100644 app/src/gambas3/.src/CStyle.class create mode 100644 app/src/gambas3/.src/CWaitingAnimation.class create mode 100644 app/src/gambas3/.src/Component/CClassInfo.class create mode 100644 app/src/gambas3/.src/Component/CComponent.class create mode 100644 app/src/gambas3/.src/Component/CDocumentation.class create mode 100644 app/src/gambas3/.src/Component/CModule.class create mode 100644 app/src/gambas3/.src/Component/CPropertyInfo.class create mode 100644 app/src/gambas3/.src/Component/CSymbolInfo.class create mode 100644 app/src/gambas3/.src/Connection/FExportData.class create mode 100644 app/src/gambas3/.src/Connection/FExportData.form create mode 100644 app/src/gambas3/.src/Connection/FImportTable.class create mode 100644 app/src/gambas3/.src/Connection/FImportTable.form create mode 100644 app/src/gambas3/.src/Connection/FNewConnection.class create mode 100644 app/src/gambas3/.src/Connection/FNewConnection.form create mode 100644 app/src/gambas3/.src/Connection/FPasteTable.class create mode 100644 app/src/gambas3/.src/Connection/FPasteTable.form create mode 100644 app/src/gambas3/.src/Connection/MConnection.module create mode 100644 app/src/gambas3/.src/Debug/Breakpoints.module create mode 100644 app/src/gambas3/.src/Debug/CProfile.class create mode 100644 app/src/gambas3/.src/Debug/CProfileTask.class create mode 100644 app/src/gambas3/.src/Debug/Design.module create mode 100644 app/src/gambas3/.src/Debug/FBrowser.class create mode 100644 app/src/gambas3/.src/Debug/FBrowser.form create mode 100644 app/src/gambas3/.src/Debug/FCrash.class create mode 100644 app/src/gambas3/.src/Debug/FCrash.form create mode 100644 app/src/gambas3/.src/Debug/FDebugButton.class create mode 100644 app/src/gambas3/.src/Debug/FDebugButton.form create mode 100644 app/src/gambas3/.src/Debug/FDebugConfig.class create mode 100644 app/src/gambas3/.src/Debug/FDebugConfig.form create mode 100644 app/src/gambas3/.src/Debug/FDebugExpr.class create mode 100644 app/src/gambas3/.src/Debug/FDebugExpr.form create mode 100644 app/src/gambas3/.src/Debug/FDebugInfo.class create mode 100644 app/src/gambas3/.src/Debug/FDebugInfo.form create mode 100644 app/src/gambas3/.src/Debug/FDebugger.class create mode 100644 app/src/gambas3/.src/Debug/FDebugger.form create mode 100644 app/src/gambas3/.src/Debug/FOutput.class create mode 100644 app/src/gambas3/.src/Debug/FOutput.form create mode 100644 app/src/gambas3/.src/Debug/FProfile.class create mode 100644 app/src/gambas3/.src/Debug/FProfile.form create mode 100644 app/src/gambas3/.src/Debug/FTestSuite.class create mode 100644 app/src/gambas3/.src/Debug/FTestSuite.form create mode 100644 app/src/gambas3/.src/Dialog/Database/FFieldChooser.class create mode 100644 app/src/gambas3/.src/Dialog/Database/FFieldChooser.form create mode 100644 app/src/gambas3/.src/Dialog/Database/FTableChooser.class create mode 100644 app/src/gambas3/.src/Dialog/Database/FTableChooser.form create mode 100644 app/src/gambas3/.src/Dialog/FColorChooser.class create mode 100644 app/src/gambas3/.src/Dialog/FColorChooser.form create mode 100644 app/src/gambas3/.src/Dialog/FFileProperty.class create mode 100644 app/src/gambas3/.src/Dialog/FFileProperty.form create mode 100644 app/src/gambas3/.src/Dialog/FFontChooser.class create mode 100644 app/src/gambas3/.src/Dialog/FFontChooser.form create mode 100644 app/src/gambas3/.src/Dialog/FList.class create mode 100644 app/src/gambas3/.src/Dialog/FList.form create mode 100644 app/src/gambas3/.src/Dialog/FSelectIcon.class create mode 100644 app/src/gambas3/.src/Dialog/FSelectIcon.form create mode 100644 app/src/gambas3/.src/Editor/Browse/FFileOverwrite.class create mode 100644 app/src/gambas3/.src/Editor/Browse/FFileOverwrite.form create mode 100644 app/src/gambas3/.src/Editor/Browse/FProjectBrowser.class create mode 100644 app/src/gambas3/.src/Editor/Browse/FProjectBrowser.form create mode 100644 app/src/gambas3/.src/Editor/CBookmark.class create mode 100644 app/src/gambas3/.src/Editor/CInsertColor.class create mode 100644 app/src/gambas3/.src/Editor/CInsertDate.class create mode 100644 app/src/gambas3/.src/Editor/CPosition.class create mode 100644 app/src/gambas3/.src/Editor/CTask.class create mode 100644 app/src/gambas3/.src/Editor/CUndo.class create mode 100644 app/src/gambas3/.src/Editor/Code/CCompletion.class create mode 100644 app/src/gambas3/.src/Editor/Code/CDatatype.class create mode 100644 app/src/gambas3/.src/Editor/Code/CSampleCode.class create mode 100644 app/src/gambas3/.src/Editor/Code/FCompletion.class create mode 100644 app/src/gambas3/.src/Editor/Code/FCompletion.form create mode 100644 app/src/gambas3/.src/Editor/Code/FConflictEditor.class create mode 100644 app/src/gambas3/.src/Editor/Code/FConflictEditor.form create mode 100644 app/src/gambas3/.src/Editor/Code/FEditor.class create mode 100644 app/src/gambas3/.src/Editor/Code/FEditor.form create mode 100644 app/src/gambas3/.src/Editor/Code/FPasteSpecial.class create mode 100644 app/src/gambas3/.src/Editor/Code/FPasteSpecial.form create mode 100644 app/src/gambas3/.src/Editor/Code/FProcedureList.class create mode 100644 app/src/gambas3/.src/Editor/Code/FProcedureList.form create mode 100644 app/src/gambas3/.src/Editor/Code/FSignature.class create mode 100644 app/src/gambas3/.src/Editor/Code/FSignature.form create mode 100644 app/src/gambas3/.src/Editor/Code/FTextEditor.class create mode 100644 app/src/gambas3/.src/Editor/Code/FTextEditor.form create mode 100644 app/src/gambas3/.src/Editor/Code/MPrettyCode.module create mode 100644 app/src/gambas3/.src/Editor/Connection/CField.class create mode 100644 app/src/gambas3/.src/Editor/Connection/CIndexField.class create mode 100644 app/src/gambas3/.src/Editor/Connection/FConnectionEditor.class create mode 100644 app/src/gambas3/.src/Editor/Connection/FConnectionEditor.form create mode 100644 app/src/gambas3/.src/Editor/Connection/FNewTable.class create mode 100644 app/src/gambas3/.src/Editor/Connection/FNewTable.form create mode 100644 app/src/gambas3/.src/Editor/Csv/FCsvEditor.class create mode 100644 app/src/gambas3/.src/Editor/Csv/FCsvEditor.form create mode 100644 app/src/gambas3/.src/Editor/Csv/FCsvOption.class create mode 100644 app/src/gambas3/.src/Editor/Csv/FCsvOption.form create mode 100644 app/src/gambas3/.src/Editor/FInsertChar.class create mode 100644 app/src/gambas3/.src/Editor/FInsertChar.form create mode 100644 app/src/gambas3/.src/Editor/Form/CControl.class create mode 100644 app/src/gambas3/.src/Editor/Form/CMenu.class create mode 100644 app/src/gambas3/.src/Editor/Form/FDeleteUnknown.class create mode 100644 app/src/gambas3/.src/Editor/Form/FDeleteUnknown.form create mode 100644 app/src/gambas3/.src/Editor/Form/FForm.class create mode 100644 app/src/gambas3/.src/Editor/Form/FForm.form create mode 100644 app/src/gambas3/.src/Editor/Form/FFormStack.class create mode 100644 app/src/gambas3/.src/Editor/Form/FFormStack.form create mode 100644 app/src/gambas3/.src/Editor/Form/FMenu.class create mode 100644 app/src/gambas3/.src/Editor/Form/FMenu.form create mode 100644 app/src/gambas3/.src/Editor/Form/FProperty.class create mode 100644 app/src/gambas3/.src/Editor/Form/FProperty.form create mode 100644 app/src/gambas3/.src/Editor/Form/FText.class create mode 100644 app/src/gambas3/.src/Editor/Form/FText.form create mode 100644 app/src/gambas3/.src/Editor/Form/FToolBox.class create mode 100644 app/src/gambas3/.src/Editor/Form/FToolBox.form create mode 100644 app/src/gambas3/.src/Editor/Form/FToolPanel.class create mode 100644 app/src/gambas3/.src/Editor/Form/FToolPanel.form create mode 100644 app/src/gambas3/.src/Editor/Image/CImageClipboard.class create mode 100644 app/src/gambas3/.src/Editor/Image/CImageSelection.class create mode 100644 app/src/gambas3/.src/Editor/Image/CImageShape.class create mode 100644 app/src/gambas3/.src/Editor/Image/FImageEditor.class create mode 100644 app/src/gambas3/.src/Editor/Image/FImageEditor.form create mode 100644 app/src/gambas3/.src/Editor/Image/FImageOffsetSelection.class create mode 100644 app/src/gambas3/.src/Editor/Image/FImageOffsetSelection.form create mode 100644 app/src/gambas3/.src/Editor/Image/FImageProperty.class create mode 100644 app/src/gambas3/.src/Editor/Image/FImageProperty.form create mode 100644 app/src/gambas3/.src/Editor/Image/FImageQuality.class create mode 100644 app/src/gambas3/.src/Editor/Image/FImageQuality.form create mode 100644 app/src/gambas3/.src/Editor/Image/FImageResize.class create mode 100644 app/src/gambas3/.src/Editor/Image/FImageResize.form create mode 100644 app/src/gambas3/.src/Editor/Image/FImageRotate.class create mode 100644 app/src/gambas3/.src/Editor/Image/FImageRotate.form create mode 100644 app/src/gambas3/.src/Editor/Image/ImageSelectionBox.class create mode 100644 app/src/gambas3/.src/Editor/MCompressFile.module create mode 100644 app/src/gambas3/.src/Editor/MPrint.module create mode 100644 app/src/gambas3/.src/Exported/EnvChooser/EnvChooser.class create mode 100644 app/src/gambas3/.src/Exported/ProjectChooser/FProjectChooser.class create mode 100644 app/src/gambas3/.src/Exported/ProjectChooser/FProjectChooser.form create mode 100644 app/src/gambas3/.src/Exported/ProjectChooser/ProjectChooser.class create mode 100644 app/src/gambas3/.src/Exported/TabPanel.class create mode 100644 app/src/gambas3/.src/Exported/TextEditor.class create mode 100644 app/src/gambas3/.src/FCommandError.class create mode 100644 app/src/gambas3/.src/FCommandError.form create mode 100644 app/src/gambas3/.src/FMain.class create mode 100644 app/src/gambas3/.src/FMain.form create mode 100644 app/src/gambas3/.src/FSave.class create mode 100644 app/src/gambas3/.src/FSave.form create mode 100644 app/src/gambas3/.src/FScreenshot.class create mode 100644 app/src/gambas3/.src/FScreenshot.form create mode 100644 app/src/gambas3/.src/Family/CFamily.class create mode 100644 app/src/gambas3/.src/Family/Form/CFamilyForm.class create mode 100644 app/src/gambas3/.src/Family/Report/AngleBox.class create mode 100644 app/src/gambas3/.src/Family/Report/CFamilyReport.class create mode 100644 app/src/gambas3/.src/Family/Report/CReportBrush.class create mode 100644 app/src/gambas3/.src/Family/Report/CoordBox.class create mode 100644 app/src/gambas3/.src/Family/Report/FReportBorderChooser.class create mode 100644 app/src/gambas3/.src/Family/Report/FReportBorderChooser.form create mode 100644 app/src/gambas3/.src/Family/Report/FReportBoxShadowChooser.class create mode 100644 app/src/gambas3/.src/Family/Report/FReportBoxShadowChooser.form create mode 100644 app/src/gambas3/.src/Family/Report/FReportBrushChooser.class create mode 100644 app/src/gambas3/.src/Family/Report/FReportBrushChooser.form create mode 100644 app/src/gambas3/.src/Family/Report/FReportCoordChooser.class create mode 100644 app/src/gambas3/.src/Family/Report/FReportCoordChooser.form create mode 100644 app/src/gambas3/.src/Family/Report/FReportPaddingChooser.class create mode 100644 app/src/gambas3/.src/Family/Report/FReportPaddingChooser.form create mode 100644 app/src/gambas3/.src/Family/TermForm/CFamilyTermForm.class create mode 100644 app/src/gambas3/.src/Family/WebForm/CFamilyWebForm.class create mode 100644 app/src/gambas3/.src/Family/WebForm/FWebFontChooser.class create mode 100644 app/src/gambas3/.src/Family/WebForm/FWebFontChooser.form create mode 100644 app/src/gambas3/.src/Family/WebForm/WebformWebMenu.class create mode 100644 app/src/gambas3/.src/Help/CHelpSearchTask.class create mode 100644 app/src/gambas3/.src/Help/FHelpBrowser.class create mode 100644 app/src/gambas3/.src/Help/FHelpBrowser.form create mode 100644 app/src/gambas3/.src/Help/FHelpShortcut.class create mode 100644 app/src/gambas3/.src/Help/FHelpShortcut.form create mode 100644 app/src/gambas3/.src/Help/FTips.class create mode 100644 app/src/gambas3/.src/Help/FTips.form create mode 100644 app/src/gambas3/.src/Help/HelpBrowser.class create mode 100644 app/src/gambas3/.src/Help/HelpView.class create mode 100644 app/src/gambas3/.src/Help/MHelp.module create mode 100644 app/src/gambas3/.src/Help/Wiki/URL.class create mode 100644 app/src/gambas3/.src/Help/Wiki/Wiki.module create mode 100644 app/src/gambas3/.src/Help/Wiki/WikiMarkdown.class create mode 100644 app/src/gambas3/.src/MMime.module create mode 100644 app/src/gambas3/.src/MTest.module create mode 100644 app/src/gambas3/.src/MTheme.module create mode 100644 app/src/gambas3/.src/Options/CBackground.class create mode 100644 app/src/gambas3/.src/Options/FLayout.class create mode 100644 app/src/gambas3/.src/Options/FLayout.form create mode 100644 app/src/gambas3/.src/Options/FOption.class create mode 100644 app/src/gambas3/.src/Options/FOption.form create mode 100644 app/src/gambas3/.src/Options/FProxy.class create mode 100644 app/src/gambas3/.src/Options/FProxy.form create mode 100644 app/src/gambas3/.src/Options/FSnippet.class create mode 100644 app/src/gambas3/.src/Options/FSnippet.form create mode 100644 app/src/gambas3/.src/Packager/FMakeInstall.class create mode 100644 app/src/gambas3/.src/Packager/FMakeInstall.form create mode 100644 app/src/gambas3/.src/Packager/FSelectExtraFile.class create mode 100644 app/src/gambas3/.src/Packager/FSelectExtraFile.form create mode 100644 app/src/gambas3/.src/Packager/Package.module create mode 100644 app/src/gambas3/.src/Project.module create mode 100644 app/src/gambas3/.src/Project/CProjectInfo.class create mode 100644 app/src/gambas3/.src/Project/CProjectList.class create mode 100644 app/src/gambas3/.src/Project/CProjectTree.class create mode 100644 app/src/gambas3/.src/Project/Component/ComponentChooser.class create mode 100644 app/src/gambas3/.src/Project/Component/FComponentChooser.class create mode 100644 app/src/gambas3/.src/Project/Component/FComponentChooser.form create mode 100644 app/src/gambas3/.src/Project/Component/FSelectComponent.class create mode 100644 app/src/gambas3/.src/Project/Component/FSelectComponent.form create mode 100644 app/src/gambas3/.src/Project/Conversion/FConvert.class create mode 100644 app/src/gambas3/.src/Project/Conversion/FConvert.form create mode 100644 app/src/gambas3/.src/Project/Conversion/MConvert.module create mode 100644 app/src/gambas3/.src/Project/FCreateFile.class create mode 100644 app/src/gambas3/.src/Project/FCreateFile.form create mode 100644 app/src/gambas3/.src/Project/FCreateProject.class create mode 100644 app/src/gambas3/.src/Project/FCreateProject.form create mode 100644 app/src/gambas3/.src/Project/FImportFile.class create mode 100644 app/src/gambas3/.src/Project/FImportFile.form create mode 100644 app/src/gambas3/.src/Project/FMakeExecutable.class create mode 100644 app/src/gambas3/.src/Project/FMakeExecutable.form create mode 100644 app/src/gambas3/.src/Project/FMakeSourceArchive.class create mode 100644 app/src/gambas3/.src/Project/FMakeSourceArchive.form create mode 100644 app/src/gambas3/.src/Project/FOpenProject.class create mode 100644 app/src/gambas3/.src/Project/FOpenProject.form create mode 100644 app/src/gambas3/.src/Project/FProjectProperty.class create mode 100644 app/src/gambas3/.src/Project/FProjectProperty.form create mode 100644 app/src/gambas3/.src/Project/FSaveProjectAs.class create mode 100644 app/src/gambas3/.src/Project/FSaveProjectAs.form create mode 100644 app/src/gambas3/.src/Project/Farm/CSoftware.class create mode 100644 app/src/gambas3/.src/Project/Farm/CSoftwareGroup.class create mode 100644 app/src/gambas3/.src/Project/Farm/FFarmConfig.class create mode 100644 app/src/gambas3/.src/Project/Farm/FFarmConfig.form create mode 100644 app/src/gambas3/.src/Project/Farm/FFarmLogin.class create mode 100644 app/src/gambas3/.src/Project/Farm/FFarmLogin.form create mode 100644 app/src/gambas3/.src/Project/Farm/FFarmRegister.class create mode 100644 app/src/gambas3/.src/Project/Farm/FFarmRegister.form create mode 100644 app/src/gambas3/.src/Project/Farm/FFarmRequest.class create mode 100644 app/src/gambas3/.src/Project/Farm/FFarmRequest.form create mode 100644 app/src/gambas3/.src/Project/Farm/FPublish.class create mode 100644 app/src/gambas3/.src/Project/Farm/FPublish.form create mode 100644 app/src/gambas3/.src/Project/Farm/FSoftwareFarm.class create mode 100644 app/src/gambas3/.src/Project/Farm/FSoftwareFarm.form create mode 100644 app/src/gambas3/.src/Project/Farm/FarmIdentity.class create mode 100644 app/src/gambas3/.src/Project/Farm/FarmRequest.class create mode 100644 app/src/gambas3/.src/Project/Farm/FarmRequestManager.module create mode 100644 app/src/gambas3/.src/Project/Farm/Publish/CTag.class create mode 100644 app/src/gambas3/.src/Project/Farm/Publish/CTagCompletion.class create mode 100644 app/src/gambas3/.src/Project/Farm/Publish/CTagEditor.class create mode 100644 app/src/gambas3/.src/Project/Farm/SoftwareBox.class create mode 100644 app/src/gambas3/.src/Project/Library/CLibraryInfo.class create mode 100644 app/src/gambas3/.src/Project/Library/FSelectLibrary.class create mode 100644 app/src/gambas3/.src/Project/Library/FSelectLibrary.form create mode 100644 app/src/gambas3/.src/Project/Library/LibraryItem.class create mode 100644 app/src/gambas3/.src/Project/Patch/FMakePatch.class create mode 100644 app/src/gambas3/.src/Project/Patch/FMakePatch.form create mode 100644 app/src/gambas3/.src/Project/Patch/FPatch.class create mode 100644 app/src/gambas3/.src/Project/Patch/FPatch.form create mode 100644 app/src/gambas3/.src/Project/Patch/Patch.class create mode 100644 app/src/gambas3/.src/Project/ProjectBox.class create mode 100644 app/src/gambas3/.src/Save.module create mode 100644 app/src/gambas3/.src/Search/CGrepResult.class create mode 100644 app/src/gambas3/.src/Search/CSearchResult.class create mode 100644 app/src/gambas3/.src/Search/CSearchTask.class create mode 100644 app/src/gambas3/.src/Search/FSearch.class create mode 100644 app/src/gambas3/.src/Search/FSearch.form create mode 100644 app/src/gambas3/.src/Translation/CTranslation.class create mode 100644 app/src/gambas3/.src/Translation/FNewTranslation.class create mode 100644 app/src/gambas3/.src/Translation/FNewTranslation.form create mode 100644 app/src/gambas3/.src/Translation/FTranslate.class create mode 100644 app/src/gambas3/.src/Translation/FTranslate.form create mode 100644 app/src/gambas3/.src/Translation/MyLanguage.module create mode 100644 app/src/gambas3/.src/Util.module create mode 100644 app/src/gambas3/.src/Util/MErrorMessage.module create mode 100644 app/src/gambas3/.src/Util/MRemoveAccents.module create mode 100644 app/src/gambas3/.src/Util/MSdlDefaultFont.module create mode 100644 app/src/gambas3/.src/VersionControl/CVersionControl.class create mode 100644 app/src/gambas3/.src/VersionControl/CVersionControlGit.class create mode 100644 app/src/gambas3/.src/VersionControl/CVersionControlHistoryTask.class create mode 100644 app/src/gambas3/.src/VersionControl/CVersionControlSubversion.class create mode 100644 app/src/gambas3/.src/VersionControl/FConflict.class create mode 100644 app/src/gambas3/.src/VersionControl/FConflict.form create mode 100644 app/src/gambas3/.src/VersionControl/FCreateBranch.class create mode 100644 app/src/gambas3/.src/VersionControl/FCreateBranch.form create mode 100644 app/src/gambas3/.src/VersionControl/FFileInfoVC.class create mode 100644 app/src/gambas3/.src/VersionControl/FFileInfoVC.form create mode 100644 app/src/gambas3/.src/VersionControl/FProjectVersion.class create mode 100644 app/src/gambas3/.src/VersionControl/FProjectVersion.form create mode 100644 app/src/gambas3/.src/VersionControl/FVersionControl.class create mode 100644 app/src/gambas3/.src/VersionControl/FVersionControl.form create mode 100644 app/src/gambas3/.src/VersionControl/VersionControl.module create mode 100644 app/src/gambas3/.src/Welcome/CCoolButton.class create mode 100644 app/src/gambas3/.src/Welcome/CSnowFlake.class create mode 100644 app/src/gambas3/.src/Welcome/CTear.class create mode 100644 app/src/gambas3/.src/Welcome/CUser.class create mode 100644 app/src/gambas3/.src/Welcome/CWelcome.class create mode 100644 app/src/gambas3/.src/Welcome/FAbout.class create mode 100644 app/src/gambas3/.src/Welcome/FAbout.form create mode 100644 app/src/gambas3/.src/Welcome/FSystemInfo.class create mode 100644 app/src/gambas3/.src/Welcome/FSystemInfo.form create mode 100644 app/src/gambas3/.src/Welcome/FWelcome.class create mode 100644 app/src/gambas3/.src/Welcome/FWelcome.form create mode 120000 app/src/gambas3/AUTHORS create mode 100644 app/src/gambas3/_fake_project create mode 100644 app/src/gambas3/debugger/Main.module create mode 100644 app/src/gambas3/debugger/_project create mode 100644 app/src/gambas3/font/font.allow create mode 100644 app/src/gambas3/font/font.conf create mode 120000 app/src/gambas3/font/gambasb12.otb create mode 120000 app/src/gambas3/font/gambasb13.otb create mode 120000 app/src/gambas3/font/gambasb16.otb create mode 120000 app/src/gambas3/font/gambasr12.otb create mode 120000 app/src/gambas3/font/gambasr13.otb create mode 120000 app/src/gambas3/font/gambasr16.otb create mode 120000 app/src/gambas3/font/groundr16.otb create mode 100644 app/src/gambas3/gitignore create mode 100644 app/src/gambas3/help/class-help.html create mode 100644 app/src/gambas3/help/component-help.html create mode 100644 app/src/gambas3/help/property-help.html create mode 100644 app/src/gambas3/help/symbol-help.html create mode 120000 app/src/gambas3/help/wiki/critical.png create mode 100644 app/src/gambas3/help/wiki/error-bg.png create mode 100644 app/src/gambas3/help/wiki/highlight.js create mode 120000 app/src/gambas3/help/wiki/info.png create mode 100644 app/src/gambas3/help/wiki/page.html create mode 100644 app/src/gambas3/help/wiki/style-custom.css create mode 100644 app/src/gambas3/help/wiki/style-offline-htmlview.css create mode 100644 app/src/gambas3/help/wiki/style-offline.css create mode 120000 app/src/gambas3/help/wiki/style.css create mode 120000 app/src/gambas3/help/wiki/tip.png create mode 100644 app/src/gambas3/help/wiki/up.png create mode 120000 app/src/gambas3/help/wiki/vb.png create mode 120000 app/src/gambas3/help/wiki/warning.png create mode 100644 app/src/gambas3/img/16/arrange-h.png create mode 100644 app/src/gambas3/img/16/arrange-hcenter.png create mode 100644 app/src/gambas3/img/16/arrange-lr.png create mode 100644 app/src/gambas3/img/16/arrange-tb.png create mode 100644 app/src/gambas3/img/16/arrange-v.png create mode 100644 app/src/gambas3/img/16/arrange-vcenter.png create mode 100644 app/src/gambas3/img/16/checked-gray.png create mode 100644 app/src/gambas3/img/16/checked-lock.png create mode 100644 app/src/gambas3/img/16/checked.png create mode 100644 app/src/gambas3/img/16/close-window.png create mode 100644 app/src/gambas3/img/16/collapse-container.png create mode 120000 app/src/gambas3/img/16/configure.png create mode 100644 app/src/gambas3/img/16/control.png create mode 100644 app/src/gambas3/img/16/cursive.png create mode 100644 app/src/gambas3/img/16/expand-container.png create mode 100644 app/src/gambas3/img/16/fantasy.png create mode 100644 app/src/gambas3/img/16/max-window.png create mode 100644 app/src/gambas3/img/16/monospace.png create mode 100644 app/src/gambas3/img/16/red-arrow-c.png create mode 100644 app/src/gambas3/img/16/red-arrow-h.png create mode 100644 app/src/gambas3/img/16/red-arrow-r.png create mode 100644 app/src/gambas3/img/16/red-arrow-v.png create mode 100644 app/src/gambas3/img/16/remove-from-container.png create mode 100644 app/src/gambas3/img/16/rename.png create mode 100644 app/src/gambas3/img/16/round-ne.png create mode 100644 app/src/gambas3/img/16/round-nw.png create mode 100644 app/src/gambas3/img/16/round-se.png create mode 100644 app/src/gambas3/img/16/round-sw.png create mode 100644 app/src/gambas3/img/16/sans-serif.png create mode 100644 app/src/gambas3/img/16/select.png create mode 100644 app/src/gambas3/img/16/separator.png create mode 100644 app/src/gambas3/img/16/serif.png create mode 100644 app/src/gambas3/img/16/stack.png create mode 100644 app/src/gambas3/img/16/tabmove.png create mode 100644 app/src/gambas3/img/16/tabstrip.png create mode 100644 app/src/gambas3/img/16/tile.png create mode 100644 app/src/gambas3/img/16/toggle-container.png create mode 100644 app/src/gambas3/img/16/unchecked.png create mode 100644 app/src/gambas3/img/16/white-close.png create mode 100644 app/src/gambas3/img/32/breakpoint.png create mode 100644 app/src/gambas3/img/32/comment.png create mode 100644 app/src/gambas3/img/32/cross.png create mode 100644 app/src/gambas3/img/32/dbus.png create mode 100644 app/src/gambas3/img/32/delete-container.png create mode 100644 app/src/gambas3/img/32/do-not-translate.png create mode 100644 app/src/gambas3/img/32/embed-container.png create mode 100644 app/src/gambas3/img/32/eol.png create mode 100644 app/src/gambas3/img/32/error.png create mode 100644 app/src/gambas3/img/32/exported-namespace.png create mode 100644 app/src/gambas3/img/32/exported.png create mode 100644 app/src/gambas3/img/32/filter-menu.png create mode 100644 app/src/gambas3/img/32/filter.png create mode 100644 app/src/gambas3/img/32/linked.png create mode 100644 app/src/gambas3/img/32/magic.png create mode 100644 app/src/gambas3/img/32/multicontainer.png create mode 100644 app/src/gambas3/img/32/opengl.png create mode 100644 app/src/gambas3/img/32/tab.png create mode 100644 app/src/gambas3/img/32/tile.png create mode 100644 app/src/gambas3/img/32/uncomment.png create mode 100644 app/src/gambas3/img/32/wrap.png create mode 100644 app/src/gambas3/img/48/all.png create mode 100644 app/src/gambas3/img/background/baraka.png create mode 100644 app/src/gambas3/img/background/christ.png create mode 100644 app/src/gambas3/img/background/circle.png create mode 100644 app/src/gambas3/img/background/cross.png create mode 100644 app/src/gambas3/img/background/cubism.png create mode 100644 app/src/gambas3/img/background/dark.png create mode 100644 app/src/gambas3/img/background/gambas.png create mode 100644 app/src/gambas3/img/background/hline.png create mode 100644 app/src/gambas3/img/background/hose.png create mode 100644 app/src/gambas3/img/background/illusion.png create mode 100644 app/src/gambas3/img/background/labyrinth.png create mode 100644 app/src/gambas3/img/background/light.png create mode 100644 app/src/gambas3/img/background/list create mode 100644 app/src/gambas3/img/background/medracim.png create mode 100644 app/src/gambas3/img/background/mosaic.png create mode 100644 app/src/gambas3/img/background/nature.png create mode 100644 app/src/gambas3/img/background/oil.png create mode 100644 app/src/gambas3/img/background/point.png create mode 100644 app/src/gambas3/img/background/quasi.png create mode 100644 app/src/gambas3/img/background/smoke.png create mode 100644 app/src/gambas3/img/background/square.png create mode 100644 app/src/gambas3/img/background/star.png create mode 100644 app/src/gambas3/img/background/tawhid.png create mode 100644 app/src/gambas3/img/background/vline.png create mode 100644 app/src/gambas3/img/background/warda.png create mode 100644 app/src/gambas3/img/background/weave.png create mode 100644 app/src/gambas3/img/broken.svg create mode 100644 app/src/gambas3/img/component/deprecated.png create mode 100644 app/src/gambas3/img/component/experimental.png create mode 100644 app/src/gambas3/img/component/finished.png create mode 100644 app/src/gambas3/img/component/unfinished.png create mode 100644 app/src/gambas3/img/component/unknown.png create mode 100644 app/src/gambas3/img/contrib/Radoslav.gif create mode 100644 app/src/gambas3/img/control/button.png create mode 100644 app/src/gambas3/img/control/checkbox.png create mode 100644 app/src/gambas3/img/control/columnview.png create mode 100644 app/src/gambas3/img/control/combobox.png create mode 100644 app/src/gambas3/img/control/deprecated.png create mode 100644 app/src/gambas3/img/control/dial.png create mode 100644 app/src/gambas3/img/control/dnsclient.png create mode 100644 app/src/gambas3/img/control/drawingarea.png create mode 100644 app/src/gambas3/img/control/embedder.png create mode 100644 app/src/gambas3/img/control/frame.png create mode 100644 app/src/gambas3/img/control/ftpclient.png create mode 100644 app/src/gambas3/img/control/glarea.png create mode 100644 app/src/gambas3/img/control/gridview.png create mode 100644 app/src/gambas3/img/control/hbox.png create mode 100644 app/src/gambas3/img/control/hpanel.png create mode 100644 app/src/gambas3/img/control/hsplit.png create mode 100644 app/src/gambas3/img/control/httpclient.png create mode 100644 app/src/gambas3/img/control/iconview.png create mode 100644 app/src/gambas3/img/control/label.png create mode 100644 app/src/gambas3/img/control/lcdnumber.png create mode 100644 app/src/gambas3/img/control/listbox.png create mode 100644 app/src/gambas3/img/control/listview.png create mode 100644 app/src/gambas3/img/control/moviebox.png create mode 100644 app/src/gambas3/img/control/panel.png create mode 100644 app/src/gambas3/img/control/picturebox.png create mode 100644 app/src/gambas3/img/control/printer.png create mode 100644 app/src/gambas3/img/control/progressbar.png create mode 100644 app/src/gambas3/img/control/radiobutton.png create mode 100644 app/src/gambas3/img/control/scrollarea.png create mode 100644 app/src/gambas3/img/control/scrollbar.png create mode 100644 app/src/gambas3/img/control/scrollview.png create mode 100644 app/src/gambas3/img/control/select.png create mode 100644 app/src/gambas3/img/control/separator.png create mode 100644 app/src/gambas3/img/control/serialport.png create mode 100644 app/src/gambas3/img/control/serversocket.png create mode 100644 app/src/gambas3/img/control/slider.png create mode 100644 app/src/gambas3/img/control/socket.png create mode 100644 app/src/gambas3/img/control/spinbox.png create mode 100644 app/src/gambas3/img/control/splitter.png create mode 100644 app/src/gambas3/img/control/spring.png create mode 100644 app/src/gambas3/img/control/tabstrip.png create mode 100644 app/src/gambas3/img/control/textarea.png create mode 100644 app/src/gambas3/img/control/textbox.png create mode 100644 app/src/gambas3/img/control/textedit.png create mode 100644 app/src/gambas3/img/control/textlabel.png create mode 100644 app/src/gambas3/img/control/timer.png create mode 100644 app/src/gambas3/img/control/togglebutton.png create mode 100644 app/src/gambas3/img/control/toolbutton.png create mode 100644 app/src/gambas3/img/control/trayicon.png create mode 100644 app/src/gambas3/img/control/treeview.png create mode 100644 app/src/gambas3/img/control/udpsocket.png create mode 100644 app/src/gambas3/img/control/unknown.png create mode 100644 app/src/gambas3/img/control/vbox.png create mode 100644 app/src/gambas3/img/control/void.png create mode 100644 app/src/gambas3/img/control/void2.png create mode 100644 app/src/gambas3/img/control/voidbutton.png create mode 100644 app/src/gambas3/img/control/vpanel.png create mode 100644 app/src/gambas3/img/control/vsplit.png create mode 100644 app/src/gambas3/img/control/webview.png create mode 100644 app/src/gambas3/img/crash/atari-dark.png create mode 100644 app/src/gambas3/img/crash/atari.png create mode 100644 app/src/gambas3/img/draw/duplicate.png create mode 100644 app/src/gambas3/img/draw/expand.png create mode 100644 app/src/gambas3/img/draw/invert.png create mode 100644 app/src/gambas3/img/draw/move.png create mode 100644 app/src/gambas3/img/draw/offset.png create mode 100644 app/src/gambas3/img/draw/save-selection.png create mode 100644 app/src/gambas3/img/family/column-i.png create mode 100644 app/src/gambas3/img/family/column.png create mode 100644 app/src/gambas3/img/family/expand.png create mode 100644 app/src/gambas3/img/family/fill-c.png create mode 100644 app/src/gambas3/img/family/fill.png create mode 100644 app/src/gambas3/img/family/horizontal-c.png create mode 100644 app/src/gambas3/img/family/horizontal-i-c.png create mode 100644 app/src/gambas3/img/family/horizontal-i.png create mode 100644 app/src/gambas3/img/family/horizontal.png create mode 100644 app/src/gambas3/img/family/hsplit.png create mode 100644 app/src/gambas3/img/family/row-i.png create mode 100644 app/src/gambas3/img/family/row.png create mode 100644 app/src/gambas3/img/family/vertical-c.png create mode 100644 app/src/gambas3/img/family/vertical-i-c.png create mode 100644 app/src/gambas3/img/family/vertical-i.png create mode 100644 app/src/gambas3/img/family/vertical.png create mode 100644 app/src/gambas3/img/family/vsplit.png create mode 100644 app/src/gambas3/img/logo/archlinux.png create mode 100644 app/src/gambas3/img/logo/autotools.png create mode 100644 app/src/gambas3/img/logo/debian.png create mode 100644 app/src/gambas3/img/logo/fedora.png create mode 100644 app/src/gambas3/img/logo/folder.png create mode 100644 app/src/gambas3/img/logo/gambas.svg create mode 100644 app/src/gambas3/img/logo/head-16.png create mode 100644 app/src/gambas3/img/logo/head-256.png create mode 100644 app/src/gambas3/img/logo/head-32.png create mode 100644 app/src/gambas3/img/logo/logo-ide.png create mode 100644 app/src/gambas3/img/logo/logo.png create mode 100644 app/src/gambas3/img/logo/mageia.png create mode 100644 app/src/gambas3/img/logo/mandriva.png create mode 100644 app/src/gambas3/img/logo/package-gnu.png create mode 100644 app/src/gambas3/img/logo/project.png create mode 100644 app/src/gambas3/img/logo/redhat.png create mode 100644 app/src/gambas3/img/logo/self-extractible.png create mode 100644 app/src/gambas3/img/logo/slackware.png create mode 100644 app/src/gambas3/img/logo/suse.png create mode 100644 app/src/gambas3/img/logo/ubuntu.png create mode 100644 app/src/gambas3/img/module/class.png create mode 100644 app/src/gambas3/img/module/form.png create mode 100644 app/src/gambas3/img/module/module.png create mode 100644 app/src/gambas3/img/module/report.png create mode 100644 app/src/gambas3/img/module/termform.png create mode 100644 app/src/gambas3/img/module/test.png create mode 100644 app/src/gambas3/img/module/webform.png create mode 100644 app/src/gambas3/img/module/webpage.png create mode 100644 app/src/gambas3/img/symbol/constant.png create mode 100644 app/src/gambas3/img/symbol/control.png create mode 100644 app/src/gambas3/img/symbol/event.png create mode 100644 app/src/gambas3/img/symbol/method.png create mode 100644 app/src/gambas3/img/symbol/property-ro.png create mode 100644 app/src/gambas3/img/symbol/property-rw.png create mode 100644 app/src/gambas3/img/symbol/property.png create mode 100644 app/src/gambas3/img/symbol/s-method.png create mode 100644 app/src/gambas3/img/symbol/s-property-ro.png create mode 100644 app/src/gambas3/img/symbol/s-property-rw.png create mode 100644 app/src/gambas3/img/symbol/s-property.png create mode 100644 app/src/gambas3/img/symbol/s-special.png create mode 100644 app/src/gambas3/img/symbol/s-variable.png create mode 100644 app/src/gambas3/img/symbol/special.png create mode 100644 app/src/gambas3/img/symbol/symbol.png create mode 100644 app/src/gambas3/img/symbol/unknown.png create mode 100644 app/src/gambas3/img/symbol/variable.png create mode 100644 app/src/gambas3/img/waiting.gif create mode 100644 app/src/gambas3/install/Makefile.am create mode 100644 app/src/gambas3/install/acinclude.m4 create mode 100644 app/src/gambas3/install/categories create mode 100644 app/src/gambas3/install/group/archlinux create mode 100644 app/src/gambas3/install/group/autotools create mode 100644 app/src/gambas3/install/group/debian create mode 100644 app/src/gambas3/install/group/fedora create mode 100644 app/src/gambas3/install/group/mageia create mode 100644 app/src/gambas3/install/group/mandriva create mode 100644 app/src/gambas3/install/group/self create mode 100644 app/src/gambas3/install/group/slackware create mode 100644 app/src/gambas3/install/group/suse create mode 100644 app/src/gambas3/install/group/ubuntu create mode 100644 app/src/gambas3/install/menu/archlinux create mode 100644 app/src/gambas3/install/menu/autotools create mode 100644 app/src/gambas3/install/menu/debian create mode 100644 app/src/gambas3/install/menu/fedora create mode 100644 app/src/gambas3/install/menu/mageia create mode 100644 app/src/gambas3/install/menu/mandriva create mode 100644 app/src/gambas3/install/menu/self create mode 100644 app/src/gambas3/install/menu/slackware create mode 100644 app/src/gambas3/install/menu/suse create mode 100644 app/src/gambas3/install/menu/ubuntu create mode 100644 app/src/gambas3/install/slack-desc-header create mode 100644 app/src/gambas3/layout/$compact.layout create mode 100644 app/src/gambas3/layout/$default.layout create mode 100644 app/src/gambas3/license create mode 100644 app/src/gambas3/markdown/markdown.css create mode 100644 app/src/gambas3/markdown/markdown.js create mode 100644 app/src/gambas3/po-header.txt create mode 100644 app/src/gambas3/pot-header.txt create mode 100644 app/src/gambas3/shortcut.desktop create mode 100644 app/src/gambas3/snippets create mode 100644 app/src/gambas3/support.txt create mode 100644 app/src/gambas3/tags.txt create mode 100644 app/src/gambas3/template/CClass.class create mode 100644 app/src/gambas3/template/CContainer.class create mode 100644 app/src/gambas3/template/CControl.class create mode 100644 app/src/gambas3/template/FMain.class create mode 100644 app/src/gambas3/template/FMain.form create mode 100644 app/src/gambas3/template/FTest.class create mode 100644 app/src/gambas3/template/FTest.form create mode 100644 app/src/gambas3/template/MMain.module create mode 100644 app/src/gambas3/template/MTest.module create mode 100644 app/src/gambas3/template/_project create mode 100644 app/src/gambas3/template/ccontainer.png create mode 100644 app/src/gambas3/template/ccontrol.png create mode 100644 app/src/gambas3/template/list create mode 100644 app/src/gambas3/theme/amber create mode 100644 app/src/gambas3/theme/amethyst create mode 100644 app/src/gambas3/theme/blues create mode 100644 app/src/gambas3/theme/emerald create mode 100644 app/src/gambas3/theme/gambas create mode 100644 app/src/gambas3/theme/obsidian create mode 100644 app/src/gambas3/theme/pastel create mode 100644 app/src/gambas3/theme/quest create mode 100644 app/src/gambas3/theme/quick create mode 100644 app/src/gambas3/theme/ruby create mode 100644 app/src/gambas3/theme/sapphire create mode 100644 app/src/gambas3/theme/visual create mode 100644 app/src/gambas3/theme/zen create mode 100644 app/src/gambas3/tips/tips.ca.txt create mode 100644 app/src/gambas3/tips/tips.cs.txt create mode 100644 app/src/gambas3/tips/tips.de.txt create mode 100644 app/src/gambas3/tips/tips.en.txt create mode 100644 app/src/gambas3/tips/tips.es.txt create mode 100644 app/src/gambas3/tips/tips.fr.txt create mode 100644 app/src/gambas3/tips/tips.it.txt create mode 100644 app/src/gambas3/tips/tips.nl.txt create mode 100644 app/src/gambas3/tips/tips.pl.txt create mode 100644 app/src/gambas3/tips/tips.ru.txt create mode 100644 app/src/gambas3/tips/tips.sl.txt create mode 100644 app/src/gambas3/tips/tips.sv.txt create mode 100644 app/src/gambas3/tips/tips.tr.txt create mode 100644 app/src/gambas3/tips/tips.zh.txt create mode 100644 app/src/gambas3/tips/tips.zh_TW.txt create mode 100644 app/src/gambas3/usage create mode 100644 app/src/gambas3/welcome/bells.mp3 create mode 100644 app/src/gambas3/welcome/border.png create mode 100644 app/src/gambas3/welcome/corner.png create mode 100644 app/src/gambas3/welcome/fir.png create mode 100644 app/src/gambas3/welcome/spiritus.mp3 create mode 100644 app/src/gb.wiki/.directory create mode 100644 app/src/gb.wiki/.icon.png create mode 100644 app/src/gb.wiki/.lang/it.po create mode 100644 app/src/gb.wiki/.lang/nl.po create mode 100644 app/src/gb.wiki/.lang/pt_BR.po create mode 100644 app/src/gb.wiki/.lang/ru.po create mode 100644 app/src/gb.wiki/.lang/zh.po create mode 100644 app/src/gb.wiki/.project create mode 100644 app/src/gb.wiki/.src/Actions.module create mode 100644 app/src/gb.wiki/.src/Controllers/Admin.module create mode 100644 app/src/gb.wiki/.src/Controllers/Image.module create mode 100644 app/src/gb.wiki/.src/Controllers/UserManage.module create mode 100644 app/src/gb.wiki/.src/Controllers/Wiki.module create mode 100644 app/src/gb.wiki/.src/DBScheme.class create mode 100644 app/src/gb.wiki/.src/Main.module create mode 100644 app/src/gb.wiki/.src/Models/Comments.module create mode 100644 app/src/gb.wiki/.src/Models/Pages.module create mode 100644 app/src/gb.wiki/.src/Models/Users.module create mode 100644 app/src/gb.wiki/.src/Models/_Page.class create mode 100644 app/src/gb.wiki/.src/Models/_User.class create mode 100644 app/src/gb.wiki/.src/Parser.module create mode 100644 app/src/gb.wiki/.src/Path.module create mode 100644 app/src/gb.wiki/.src/Views/Admin/WAdminMain.class create mode 100644 app/src/gb.wiki/.src/Views/Admin/WAdminMain.webpage create mode 100644 app/src/gb.wiki/.src/Views/WAccount.class create mode 100644 app/src/gb.wiki/.src/Views/WAccount.webpage create mode 100644 app/src/gb.wiki/.src/Views/WEdit.class create mode 100644 app/src/gb.wiki/.src/Views/WEdit.webpage create mode 100644 app/src/gb.wiki/.src/Views/WHeader.class create mode 100644 app/src/gb.wiki/.src/Views/WHeader.webpage create mode 100644 app/src/gb.wiki/.src/Views/WLogin.class create mode 100644 app/src/gb.wiki/.src/Views/WLogin.webpage create mode 100644 app/src/gb.wiki/.src/Views/WWiki.class create mode 100644 app/src/gb.wiki/.src/Views/WWiki.webpage create mode 100644 app/src/gb.wiki/help.png create mode 100644 app/src/gbs3/.directory create mode 100644 app/src/gbs3/.hidden/CHANGELOG create mode 100644 app/src/gbs3/.icon.png create mode 100644 app/src/gbs3/.lang/OldTranslation/en_US.po create mode 100644 app/src/gbs3/.lang/OldTranslation/fr.po create mode 100644 app/src/gbs3/.lang/de.po create mode 100644 app/src/gbs3/.lang/en_US.po create mode 100644 app/src/gbs3/.lang/fr.po create mode 100644 app/src/gbs3/.lang/it.po create mode 100644 app/src/gbs3/.project create mode 100644 app/src/gbs3/.src/CComponent.class create mode 100644 app/src/gbs3/.src/ClassDef.class create mode 100644 app/src/gbs3/.src/Compile.module create mode 100644 app/src/gbs3/.src/CompileError.module create mode 100644 app/src/gbs3/.src/Context.class create mode 100644 app/src/gbs3/.src/ConvertProject.module create mode 100644 app/src/gbs3/.src/GenerateFiles.module create mode 100644 app/src/gbs3/.src/GenerateFilesFromArgs.module create mode 100644 app/src/gbs3/.src/GenerateFromLazyScript.module create mode 100644 app/src/gbs3/.src/Libraries.module create mode 100644 app/src/gbs3/.src/MServerPage.module create mode 100644 app/src/gbs3/.src/MakeListing.module create mode 100644 app/src/gbs3/.src/MakeVirtualProject.module create mode 100644 app/src/gbs3/.src/ParseArgs.module create mode 100644 app/src/gbs3/.src/PluginInfo.module create mode 100644 app/src/gbs3/.src/ProcessAssignment.module create mode 100644 app/src/gbs3/.src/Reader.class create mode 100644 app/src/gbs3/.src/ScriptApplyAlias.module create mode 100644 app/src/gbs3/.src/ScriptApplyLineCallBacks.module create mode 100644 app/src/gbs3/.src/ScriptApplyPostProgCallBacks.module create mode 100644 app/src/gbs3/.src/ScriptApplyProgramCallBacks.module create mode 100644 app/src/gbs3/.src/ScriptKeywordFilter.module create mode 100644 app/src/gbs3/.src/ScriptMain.module create mode 100644 app/src/gbs3/.src/ScriptPreProcess.module create mode 100644 app/src/gbs3/.src/ScriptSetAliasTable.module create mode 100644 app/src/gbs3/.src/ScriptSetKeywordFilter.module create mode 100644 app/src/gbs3/.src/ScriptSetPostProcessCallBack.module create mode 100644 app/src/gbs3/.src/ScriptSetPreProcessCallBack.module create mode 100644 app/src/gbs3/.src/ScripterExecute.class create mode 100644 app/src/gbs3/.src/ScripterPlugin.class create mode 100644 app/src/gbs3/.src/TestSuite/TSR.module create mode 100644 app/src/gbs3/.src/TestSuite/TaMServerPages.test create mode 100644 app/src/gbs3/.src/TestSuite/TbCommandLinePrograms.test create mode 100644 app/src/gbs3/.src/TestSuite/TcMMainFunctions.test create mode 100644 app/src/gbs3/.src/TestSuite/TdGeneralCompile.test create mode 100644 app/src/gbs3/.src/TestSuite/TeAliases.test create mode 100644 app/src/gbs3/.src/TestSuite/TfKeyWordFilter.test create mode 100644 app/src/gbs3/.src/TestSuite/TgPluginMode.test create mode 100644 app/src/gbs3/.src/TestSuite/ThPrePostProcessCallBacks.test create mode 100644 app/src/gbs3/.src/UseLibComp.module create mode 100644 app/src/gbs3/.src/Verbose.module create mode 100644 app/src/gbs3/.src/Warning.module create mode 100644 app/src/gbs3/.test create mode 100644 app/src/gbs3/PrePostProcessPlugin create mode 100644 app/src/gbs3/RunComponent create mode 100644 app/src/gbs3/TestApp create mode 100644 app/src/gbs3/TestAppCompiled create mode 100644 app/src/gbs3/TestAppInclude create mode 100644 app/src/gbs3/TestAppInclude2 create mode 100644 app/src/gbs3/TestAppWithMain create mode 100644 app/src/gbs3/TestAppWithMainCompiled create mode 100644 app/src/gbs3/TestExternStructNoMain.gbs create mode 100644 app/src/gbs3/TestExternStructWithMain.gbs create mode 100644 app/src/gbs3/TestFile.info create mode 100644 app/src/gbs3/TestFileFail.info create mode 100644 app/src/gbs3/TestLazyApp create mode 100644 app/src/gbs3/TestPlugin create mode 100644 app/src/gbs3/TestPlugin2 create mode 100644 app/src/gbs3/TestPlugin3.gbs create mode 100644 app/src/gbs3/TestPrePostProcess.gbs create mode 100644 app/src/gbs3/TestWebPageSource create mode 100644 app/src/gbs3/WebPageCompiled create mode 100644 app/src/gbs3/WebPageExpected create mode 100644 app/src/gbs3/WebPageTest create mode 100644 app/src/gbs3/icon.png create mode 100644 app/src/gbs3/license create mode 100644 app/src/gbs3/usage-gbs create mode 100644 app/src/gbs3/usage-gbw create mode 100644 app/template/console/.directory create mode 100644 app/template/console/.icon.png create mode 100644 app/template/console/.lang/es.po create mode 100644 app/template/console/.lang/es_ES.po create mode 100644 app/template/console/.lang/fr.po create mode 100644 app/template/console/.lang/it.po create mode 100644 app/template/console/.lang/ru.po create mode 100644 app/template/console/.lang/zh.po create mode 100644 app/template/console/.project create mode 100644 app/template/console/.src/Main.module create mode 100644 app/template/console/icon.png create mode 100644 app/template/database/.directory create mode 100644 app/template/database/.icon.png create mode 100644 app/template/database/.lang/fr.po create mode 100644 app/template/database/.lang/it.po create mode 100644 app/template/database/.lang/ru.po create mode 100644 app/template/database/.lang/zh.po create mode 100644 app/template/database/.project create mode 100644 app/template/database/.src/FMain.class create mode 100644 app/template/database/.src/FMain.form create mode 100644 app/template/database/icon.png create mode 100644 app/template/graphical/.directory create mode 100644 app/template/graphical/.icon.png create mode 100644 app/template/graphical/.lang/es.po create mode 100644 app/template/graphical/.lang/es_ES.po create mode 100644 app/template/graphical/.lang/fr.po create mode 100644 app/template/graphical/.lang/it.po create mode 100644 app/template/graphical/.lang/ru.po create mode 100644 app/template/graphical/.lang/zh.po create mode 100644 app/template/graphical/.project create mode 100644 app/template/graphical/.src/FMain.class create mode 100644 app/template/graphical/.src/FMain.form create mode 100644 app/template/graphical/icon.png create mode 100644 app/template/gtk2/.directory create mode 100644 app/template/gtk2/.icon.png create mode 100644 app/template/gtk2/.lang/es.po create mode 100644 app/template/gtk2/.lang/es_ES.po create mode 100644 app/template/gtk2/.lang/fr.po create mode 100644 app/template/gtk2/.lang/it.po create mode 100644 app/template/gtk2/.lang/ru.po create mode 100644 app/template/gtk2/.lang/zh.po create mode 100644 app/template/gtk2/.project create mode 100644 app/template/gtk2/.src/FMain.class create mode 100644 app/template/gtk2/.src/FMain.form create mode 100644 app/template/gtk2/icon.png create mode 100644 app/template/gtk3/.directory create mode 100644 app/template/gtk3/.icon.png create mode 100644 app/template/gtk3/.lang/es.po create mode 100644 app/template/gtk3/.lang/fr.po create mode 100644 app/template/gtk3/.lang/it.po create mode 100644 app/template/gtk3/.lang/ru.po create mode 100644 app/template/gtk3/.lang/zh.po create mode 100644 app/template/gtk3/.project create mode 100644 app/template/gtk3/.src/FMain.class create mode 100644 app/template/gtk3/.src/FMain.form create mode 100644 app/template/gtk3/icon.png create mode 100644 app/template/qt/.directory create mode 100644 app/template/qt/.icon.png create mode 100644 app/template/qt/.lang/es.po create mode 100644 app/template/qt/.lang/es_ES.po create mode 100644 app/template/qt/.lang/fr.po create mode 100644 app/template/qt/.lang/it.po create mode 100644 app/template/qt/.lang/ru.po create mode 100644 app/template/qt/.lang/zh.po create mode 100644 app/template/qt/.project create mode 100644 app/template/qt/.src/FMain.class create mode 100644 app/template/qt/.src/FMain.form create mode 100644 app/template/qt/icon.png create mode 100644 app/template/sdl/.directory create mode 100644 app/template/sdl/.icon.png create mode 100644 app/template/sdl/.lang/es.po create mode 100644 app/template/sdl/.lang/es_ES.po create mode 100644 app/template/sdl/.lang/fr.po create mode 100644 app/template/sdl/.lang/it.po create mode 100644 app/template/sdl/.lang/ru.po create mode 100644 app/template/sdl/.lang/zh.po create mode 100644 app/template/sdl/.project create mode 100644 app/template/sdl/.src/MMain.module create mode 100644 app/template/sdl/icon.png create mode 100644 app/template/web/.directory create mode 100644 app/template/web/.icon.png create mode 100644 app/template/web/.lang/es.po create mode 100644 app/template/web/.lang/es_ES.po create mode 100644 app/template/web/.lang/fr.po create mode 100644 app/template/web/.lang/it.po create mode 100644 app/template/web/.lang/ru.po create mode 100644 app/template/web/.lang/zh.po create mode 100644 app/template/web/.project create mode 100644 app/template/web/.src/Main.class create mode 100644 app/template/web/.src/Main.webpage create mode 100644 app/template/web/icon.png create mode 100644 app/template/webform/.directory create mode 100644 app/template/webform/.icon.png create mode 100644 app/template/webform/.lang/fr.po create mode 100644 app/template/webform/.lang/it.po create mode 100644 app/template/webform/.lang/ru.po create mode 100644 app/template/webform/.lang/zh.po create mode 100644 app/template/webform/.project create mode 100644 app/template/webform/.src/Webform1.class create mode 100644 app/template/webform/.src/Webform1.webform create mode 100644 app/template/webform/icon.png create mode 100644 app/template/~subversion/.directory create mode 100644 app/template/~subversion/.icon.png create mode 100644 app/template/~subversion/.lang/es.po create mode 100644 app/template/~subversion/.lang/es_ES.po create mode 100644 app/template/~subversion/.lang/fr.po create mode 100644 app/template/~subversion/.lang/it.po create mode 100644 app/template/~subversion/.lang/ru.po create mode 100644 app/template/~subversion/.lang/zh.po create mode 100644 app/template/~subversion/.project create mode 100644 app/template/~subversion/.src/Main.module create mode 100644 app/template/~subversion/icon.png create mode 100755 benchmark/benchmark.gbs create mode 100755 benchmark/mandelbrot.gbs create mode 100755 benchmark/mandelbrot.jvs create mode 100755 benchmark/mandelbrot.pl create mode 100755 benchmark/mandelbrot.py create mode 100755 benchmark/nbody.gbs create mode 100755 benchmark/nbody.jvs create mode 100755 benchmark/nbody.pl create mode 100755 benchmark/nbody.py create mode 100755 benchmark/polynom.gbs create mode 100755 benchmark/polynom.jvs create mode 100755 benchmark/polynom.pl create mode 100755 benchmark/polynom.py create mode 100755 benchmark/primes.gbs create mode 100755 benchmark/primes.jvs create mode 100755 benchmark/primes.pl create mode 100755 benchmark/primes.py create mode 100755 benchmark/sort.gbs create mode 100755 benchmark/sort.jvs create mode 100755 benchmark/sort.pl create mode 100755 benchmark/sort.py create mode 100755 benchmark/string.gbs create mode 100755 benchmark/string.jvs create mode 100755 benchmark/string.pl create mode 100755 benchmark/string.py create mode 100755 benchmark/string2.gbs create mode 100755 benchmark/string2.jvs create mode 100755 benchmark/string2.pl create mode 100755 benchmark/string2.py create mode 100755 benchmark/test.jvs create mode 100755 build-dist create mode 100644 comp/AUTHORS create mode 120000 comp/COPYING create mode 100644 comp/ChangeLog create mode 100644 comp/INSTALL create mode 100644 comp/Makefile.am create mode 100644 comp/NEWS create mode 100644 comp/README create mode 100644 comp/TODO create mode 120000 comp/acinclude.m4 create mode 100644 comp/configure.ac create mode 120000 comp/reconf create mode 100644 comp/src/gb.args/.component create mode 100644 comp/src/gb.args/.directory create mode 100644 comp/src/gb.args/.icon.png create mode 100644 comp/src/gb.args/.lang/cs.po create mode 100644 comp/src/gb.args/.lang/es.po create mode 100644 comp/src/gb.args/.lang/es_ES.po create mode 100644 comp/src/gb.args/.lang/fr.po create mode 100644 comp/src/gb.args/.lang/it.po create mode 100644 comp/src/gb.args/.lang/nl.po create mode 100644 comp/src/gb.args/.lang/pt_BR.po create mode 100644 comp/src/gb.args/.lang/ru.po create mode 100644 comp/src/gb.args/.lang/zh.po create mode 100644 comp/src/gb.args/.project create mode 100644 comp/src/gb.args/.src/Args.module create mode 100644 comp/src/gb.args/.src/MMain.module create mode 100644 comp/src/gb.chart/.component create mode 100644 comp/src/gb.chart/.directory create mode 100644 comp/src/gb.chart/.icon.png create mode 100644 comp/src/gb.chart/.project create mode 100644 comp/src/gb.chart/.src/CPoint.class create mode 100644 comp/src/gb.chart/.src/CRect.class create mode 100644 comp/src/gb.chart/.src/Chart.class create mode 100644 comp/src/gb.chart/.src/ChartStyle.class create mode 100644 comp/src/gb.chart/.src/ChartType.class create mode 100644 comp/src/gb.chart/.src/FTest.class create mode 100644 comp/src/gb.chart/.src/FTest.form create mode 100644 comp/src/gb.chart/.src/FTest2.class create mode 100644 comp/src/gb.chart/.src/FTest2.form create mode 100644 comp/src/gb.chart/.src/MTools.module create mode 100644 comp/src/gb.chart/.src/Styles/_CSerie.class create mode 100644 comp/src/gb.chart/.src/Styles/_CStyleAreas.class create mode 100644 comp/src/gb.chart/.src/Styles/_CStyleBar.class create mode 100644 comp/src/gb.chart/.src/Styles/_CStyleColumns.class create mode 100644 comp/src/gb.chart/.src/Styles/_CStyleLine.class create mode 100644 comp/src/gb.chart/.src/Styles/_CStylePie.class create mode 100644 comp/src/gb.chart/.src/Styles/_CStylePlot.class create mode 100644 comp/src/gb.chart/.src/_CAxes.class create mode 100644 comp/src/gb.chart/.src/_CHeaders.class create mode 100644 comp/src/gb.chart/.src/_CLabel.class create mode 100644 comp/src/gb.chart/.src/_CLabels.class create mode 100644 comp/src/gb.chart/.src/_CLegend.class create mode 100644 comp/src/gb.chart/.src/_CTitle.class create mode 100644 comp/src/gb.chart/.src/_CXAxe.class create mode 100644 comp/src/gb.chart/.src/_CYAxe.class create mode 100644 comp/src/gb.chart/.src/_Colors.class create mode 100644 comp/src/gb.chart/img/areas.png create mode 100644 comp/src/gb.chart/img/areasnormal.png create mode 100644 comp/src/gb.chart/img/areaspercent.png create mode 100644 comp/src/gb.chart/img/areasstacked.png create mode 100644 comp/src/gb.chart/img/bars.png create mode 100644 comp/src/gb.chart/img/barsnormal.png create mode 100644 comp/src/gb.chart/img/barspercent.png create mode 100644 comp/src/gb.chart/img/barsstacked.png create mode 100644 comp/src/gb.chart/img/columns.png create mode 100644 comp/src/gb.chart/img/columnslinecombination.png create mode 100644 comp/src/gb.chart/img/columnsnormal.png create mode 100644 comp/src/gb.chart/img/columnspercent.png create mode 100644 comp/src/gb.chart/img/columnsstacked.png create mode 100644 comp/src/gb.chart/img/lines.png create mode 100644 comp/src/gb.chart/img/linesnormal.png create mode 100644 comp/src/gb.chart/img/linespercent.png create mode 100644 comp/src/gb.chart/img/linesstacked.png create mode 100644 comp/src/gb.chart/img/linessymbols.png create mode 100644 comp/src/gb.chart/img/net.png create mode 100644 comp/src/gb.chart/img/pie.png create mode 100644 comp/src/gb.chart/img/pienormal.png create mode 100644 comp/src/gb.chart/img/pieoffset1.png create mode 100644 comp/src/gb.chart/img/pieoffset2.png create mode 100644 comp/src/gb.chart/img/pierings.png create mode 100644 comp/src/gb.chart/img/plots.png create mode 100644 comp/src/gb.chart/img/plotsnormal.png create mode 100644 comp/src/gb.chart/img/stockchart.png create mode 100644 comp/src/gb.db.form/.component create mode 100644 comp/src/gb.db.form/.connection/Connection1.connection create mode 100644 comp/src/gb.db.form/.connection/Connection2.connection create mode 100644 comp/src/gb.db.form/.connection/Connection3.connection create mode 100644 comp/src/gb.db.form/.connection/Connection4.connection create mode 100644 comp/src/gb.db.form/.directory create mode 100644 comp/src/gb.db.form/.hidden/control/databrowser.png create mode 100644 comp/src/gb.db.form/.hidden/control/datacheckbox.png create mode 100644 comp/src/gb.db.form/.hidden/control/datacombo.png create mode 100644 comp/src/gb.db.form/.hidden/control/datacomboview.png create mode 100644 comp/src/gb.db.form/.hidden/control/datacontrol.png create mode 100644 comp/src/gb.db.form/.hidden/control/datasource.png create mode 100644 comp/src/gb.db.form/.hidden/control/dataview.png create mode 100644 comp/src/gb.db.form/.hidden/icon.png create mode 100644 comp/src/gb.db.form/.icon.png create mode 100644 comp/src/gb.db.form/.lang/ca.po create mode 100644 comp/src/gb.db.form/.lang/cs.po create mode 100644 comp/src/gb.db.form/.lang/de.po create mode 100644 comp/src/gb.db.form/.lang/es.po create mode 100644 comp/src/gb.db.form/.lang/es_ES.po create mode 100644 comp/src/gb.db.form/.lang/fr.po create mode 100644 comp/src/gb.db.form/.lang/it.po create mode 100644 comp/src/gb.db.form/.lang/nl.po create mode 100644 comp/src/gb.db.form/.lang/pt_BR.po create mode 100644 comp/src/gb.db.form/.lang/ru.po create mode 100644 comp/src/gb.db.form/.lang/sv.po create mode 100644 comp/src/gb.db.form/.lang/zh.po create mode 100644 comp/src/gb.db.form/.project create mode 100644 comp/src/gb.db.form/.src/Common.module create mode 100644 comp/src/gb.db.form/.src/DataBrowser.class create mode 100644 comp/src/gb.db.form/.src/DataCheckBox.class create mode 100644 comp/src/gb.db.form/.src/DataCombo.class create mode 100644 comp/src/gb.db.form/.src/DataComboView.class create mode 100644 comp/src/gb.db.form/.src/DataConnection.class create mode 100644 comp/src/gb.db.form/.src/DataControl.class create mode 100644 comp/src/gb.db.form/.src/DataField.class create mode 100644 comp/src/gb.db.form/.src/DataSource.class create mode 100644 comp/src/gb.db.form/.src/DataTable.class create mode 100644 comp/src/gb.db.form/.src/DataTree.class create mode 100644 comp/src/gb.db.form/.src/DataView.class create mode 100644 comp/src/gb.db.form/.src/FBlobEditor.class create mode 100644 comp/src/gb.db.form/.src/FBlobEditor.form create mode 100644 comp/src/gb.db.form/.src/FBrowser.class create mode 100644 comp/src/gb.db.form/.src/FBrowser.form create mode 100644 comp/src/gb.db.form/.src/Test/FMain.class create mode 100644 comp/src/gb.db.form/.src/Test/FMain.form create mode 100644 comp/src/gb.db.form/.src/Test/FMain2.class create mode 100644 comp/src/gb.db.form/.src/Test/FMain2.form create mode 100644 comp/src/gb.db.form/.src/Test/FMain3.class create mode 100644 comp/src/gb.db.form/.src/Test/FMain3.form create mode 100644 comp/src/gb.db.form/.src/Test/FTest.class create mode 100644 comp/src/gb.db.form/.src/Test/FTest.form create mode 100644 comp/src/gb.db.form/.src/Test/Main.module create mode 100644 comp/src/gb.dbus.trayicon/.component create mode 100644 comp/src/gb.dbus.trayicon/.directory create mode 100644 comp/src/gb.dbus.trayicon/.hidden/com.canonical.dbusmenu.xml create mode 100644 comp/src/gb.dbus.trayicon/.hidden/doc.txt create mode 100644 comp/src/gb.dbus.trayicon/.icon.png create mode 100644 comp/src/gb.dbus.trayicon/.project create mode 100644 comp/src/gb.dbus.trayicon/.src/DBusStatusIcon.class create mode 100644 comp/src/gb.dbus.trayicon/.src/DBusStatusIconMenu.class create mode 100644 comp/src/gb.dbus.trayicon/.src/FMain.class create mode 100644 comp/src/gb.dbus.trayicon/.src/FMain.form create mode 100644 comp/src/gb.dbus.trayicon/.src/FMain1.class create mode 100644 comp/src/gb.dbus.trayicon/.src/FMain1.form create mode 100644 comp/src/gb.dbus.trayicon/.src/FTest.class create mode 100644 comp/src/gb.dbus.trayicon/.src/FTest.form create mode 100644 comp/src/gb.dbus.trayicon/.src/Main.module create mode 100644 comp/src/gb.dbus.trayicon/.src/TrayIcon.class create mode 100644 comp/src/gb.dbus.trayicon/.src/TrayIcons.class create mode 100644 comp/src/gb.dbus.trayicon/.src/_DBusMenuItem.class create mode 100644 comp/src/gb.dbus.trayicon/.src/_DBusMenuLayout.class create mode 100644 comp/src/gb.dbus.trayicon/.src/_DBusMenuProperties.class create mode 100644 comp/src/gb.dbus.trayicon/.src/_DBusStatusIconPixmap.class create mode 100644 comp/src/gb.dbus.trayicon/.src/_DBusStatusIconTooltip.class create mode 100644 comp/src/gb.dbus.trayicon/.src/_DBusUInt.class create mode 100644 comp/src/gb.dbus.trayicon/default.png create mode 100644 comp/src/gb.desktop/.component create mode 100644 comp/src/gb.desktop/.directory create mode 100644 comp/src/gb.desktop/.hidden/control/desktopwatcher.png create mode 100644 comp/src/gb.desktop/.hidden/icon.png create mode 100644 comp/src/gb.desktop/.hidden/xdg-utils-1.0.2/LICENSE create mode 100644 comp/src/gb.desktop/.hidden/xdg-utils-1.0.2/scripts/README create mode 100755 comp/src/gb.desktop/.hidden/xdg-utils-1.0.2/scripts/xdg-desktop-icon create mode 100755 comp/src/gb.desktop/.hidden/xdg-utils-1.0.2/scripts/xdg-desktop-menu create mode 100755 comp/src/gb.desktop/.hidden/xdg-utils-1.0.2/scripts/xdg-email create mode 100755 comp/src/gb.desktop/.hidden/xdg-utils-1.0.2/scripts/xdg-icon-resource create mode 100755 comp/src/gb.desktop/.hidden/xdg-utils-1.0.2/scripts/xdg-mime create mode 100755 comp/src/gb.desktop/.hidden/xdg-utils-1.0.2/scripts/xdg-open create mode 100755 comp/src/gb.desktop/.hidden/xdg-utils-1.0.2/scripts/xdg-screensaver create mode 100644 comp/src/gb.desktop/.hidden/xdg-utils-1.0.3.pre.patch/xdg-email create mode 100644 comp/src/gb.desktop/.hidden/xdg-utils-1.0.3.pre/xdg-copy create mode 100644 comp/src/gb.desktop/.hidden/xdg-utils-1.0.3.pre/xdg-desktop-icon create mode 100644 comp/src/gb.desktop/.hidden/xdg-utils-1.0.3.pre/xdg-desktop-menu create mode 100644 comp/src/gb.desktop/.hidden/xdg-utils-1.0.3.pre/xdg-email create mode 100644 comp/src/gb.desktop/.hidden/xdg-utils-1.0.3.pre/xdg-file-dialog create mode 100644 comp/src/gb.desktop/.hidden/xdg-utils-1.0.3.pre/xdg-icon-resource create mode 100644 comp/src/gb.desktop/.hidden/xdg-utils-1.0.3.pre/xdg-mime create mode 100644 comp/src/gb.desktop/.hidden/xdg-utils-1.0.3.pre/xdg-open create mode 100644 comp/src/gb.desktop/.hidden/xdg-utils-1.0.3.pre/xdg-screensaver create mode 100644 comp/src/gb.desktop/.hidden/xdg-utils-1.0.3.pre/xdg-settings create mode 100644 comp/src/gb.desktop/.hidden/xdg-utils-1.0.3.pre/xdg-su create mode 100644 comp/src/gb.desktop/.hidden/xdg-utils-1.0.3.pre/xdg-terminal create mode 100644 comp/src/gb.desktop/.icon.png create mode 100644 comp/src/gb.desktop/.project create mode 100644 comp/src/gb.desktop/.src/Desktop.class create mode 100644 comp/src/gb.desktop/.src/DesktopFile.class create mode 100644 comp/src/gb.desktop/.src/DesktopMime.class create mode 100644 comp/src/gb.desktop/.src/Main.module create mode 100644 comp/src/gb.desktop/.src/Tests/Form1.class create mode 100644 comp/src/gb.desktop/.src/Tests/Form1.form create mode 100644 comp/src/gb.desktop/.src/Tests/Form11.class create mode 100644 comp/src/gb.desktop/.src/Tests/Form11.form create mode 100644 comp/src/gb.desktop/.src/Tests/Form2.class create mode 100644 comp/src/gb.desktop/.src/Tests/Form2.form create mode 100644 comp/src/gb.desktop/.src/Tests/Module1.module create mode 100644 comp/src/gb.desktop/.src/_DesktopIcons.class create mode 100644 comp/src/gb.desktop/.src/_DesktopMenus.class create mode 100644 comp/src/gb.desktop/.src/_Desktop_Passwords.class create mode 100644 comp/src/gb.desktop/.src/_Desktop_ScreenSaver.class create mode 120000 comp/src/gb.desktop/file.png create mode 100755 comp/src/gb.desktop/xdg-utils/xdg-desktop-icon create mode 100755 comp/src/gb.desktop/xdg-utils/xdg-desktop-menu create mode 100755 comp/src/gb.desktop/xdg-utils/xdg-email create mode 100755 comp/src/gb.desktop/xdg-utils/xdg-icon-resource create mode 100755 comp/src/gb.desktop/xdg-utils/xdg-mime create mode 100755 comp/src/gb.desktop/xdg-utils/xdg-open create mode 100755 comp/src/gb.desktop/xdg-utils/xdg-screensaver create mode 100755 comp/src/gb.desktop/xdg-utils/xdg-settings create mode 100644 comp/src/gb.eval.highlight/.component create mode 100644 comp/src/gb.eval.highlight/.directory create mode 100644 comp/src/gb.eval.highlight/.hidden/OldHighlighter/Helper.module create mode 100644 comp/src/gb.eval.highlight/.hidden/OldHighlighter/HighlightC.module create mode 100644 comp/src/gb.eval.highlight/.hidden/OldHighlighter/HighlightCPlusPlus.module create mode 100644 comp/src/gb.eval.highlight/.hidden/OldHighlighter/HighlightCSS.module create mode 100644 comp/src/gb.eval.highlight/.hidden/OldHighlighter/HighlightDiff.module create mode 100644 comp/src/gb.eval.highlight/.hidden/OldHighlighter/HighlightHTML.module create mode 100644 comp/src/gb.eval.highlight/.hidden/OldHighlighter/HighlightJavascript.module create mode 100644 comp/src/gb.eval.highlight/.hidden/OldHighlighter/HighlightSQL.module create mode 100644 comp/src/gb.eval.highlight/.icon.png create mode 100644 comp/src/gb.eval.highlight/.lang/ar.po create mode 100644 comp/src/gb.eval.highlight/.lang/ca.po create mode 100644 comp/src/gb.eval.highlight/.lang/cs.po create mode 100644 comp/src/gb.eval.highlight/.lang/cy.po create mode 100644 comp/src/gb.eval.highlight/.lang/de.po create mode 100644 comp/src/gb.eval.highlight/.lang/el.po create mode 100644 comp/src/gb.eval.highlight/.lang/es.po create mode 100644 comp/src/gb.eval.highlight/.lang/es_ES.po create mode 100644 comp/src/gb.eval.highlight/.lang/fa.po create mode 100644 comp/src/gb.eval.highlight/.lang/fr.po create mode 100644 comp/src/gb.eval.highlight/.lang/gl_ES.po create mode 100644 comp/src/gb.eval.highlight/.lang/hr.po create mode 100644 comp/src/gb.eval.highlight/.lang/hu.po create mode 100644 comp/src/gb.eval.highlight/.lang/id.po create mode 100644 comp/src/gb.eval.highlight/.lang/it.po create mode 100644 comp/src/gb.eval.highlight/.lang/ja.po create mode 100644 comp/src/gb.eval.highlight/.lang/ko.po create mode 100644 comp/src/gb.eval.highlight/.lang/lt.po create mode 100644 comp/src/gb.eval.highlight/.lang/nl.po create mode 100644 comp/src/gb.eval.highlight/.lang/no.po create mode 100644 comp/src/gb.eval.highlight/.lang/pl.po create mode 100644 comp/src/gb.eval.highlight/.lang/pt.po create mode 100644 comp/src/gb.eval.highlight/.lang/pt_BR.po create mode 100644 comp/src/gb.eval.highlight/.lang/ro.po create mode 100644 comp/src/gb.eval.highlight/.lang/ru.po create mode 100644 comp/src/gb.eval.highlight/.lang/sl.po create mode 100644 comp/src/gb.eval.highlight/.lang/sv.po create mode 100644 comp/src/gb.eval.highlight/.lang/tr.po create mode 100644 comp/src/gb.eval.highlight/.lang/zh.po create mode 100644 comp/src/gb.eval.highlight/.lang/zh_TW.po create mode 100644 comp/src/gb.eval.highlight/.project create mode 100644 comp/src/gb.eval.highlight/.src/Helper.module create mode 100644 comp/src/gb.eval.highlight/.src/Highlight.class create mode 100644 comp/src/gb.eval.highlight/.src/Init.module create mode 100644 comp/src/gb.eval.highlight/.src/Main.module create mode 100644 comp/src/gb.eval.highlight/.src/State.class create mode 100644 comp/src/gb.eval.highlight/.src/TestSuite/AnsiTextColor.test create mode 100644 comp/src/gb.eval.highlight/.src/TestSuite/HtmlTextFormatColor.test create mode 100644 comp/src/gb.eval.highlight/.src/TestSuite/RichTextFormatColor.test create mode 100644 comp/src/gb.eval.highlight/.src/TextHighlighter.class create mode 100644 comp/src/gb.eval.highlight/.src/TextHighlighterStyle.class create mode 100644 comp/src/gb.eval.highlight/.src/TextHighlighterTheme.class create mode 100644 comp/src/gb.eval.highlight/.src/TextHighlighter_C.class create mode 100644 comp/src/gb.eval.highlight/.src/TextHighlighter_CPlusPlus.class create mode 100644 comp/src/gb.eval.highlight/.src/TextHighlighter_CSS.class create mode 100644 comp/src/gb.eval.highlight/.src/TextHighlighter_Diff.class create mode 100644 comp/src/gb.eval.highlight/.src/TextHighlighter_Gambas.class create mode 100644 comp/src/gb.eval.highlight/.src/TextHighlighter_Html.class create mode 100644 comp/src/gb.eval.highlight/.src/TextHighlighter_Javascript.class create mode 100644 comp/src/gb.eval.highlight/.src/TextHighlighter_SQL.class create mode 100644 comp/src/gb.eval.highlight/.src/TextHighlighter_Sh.class create mode 100644 comp/src/gb.eval.highlight/.src/TextHighlighter_WebPage.class create mode 100644 comp/src/gb.eval.highlight/.test create mode 100644 comp/src/gb.eval.highlight/UnitTest/ANSITestResults create mode 100644 comp/src/gb.eval.highlight/UnitTest/HTMLTestResults create mode 100644 comp/src/gb.eval.highlight/UnitTest/RTFTestResults create mode 100644 comp/src/gb.eval.highlight/UnitTest/TestProgram create mode 100644 comp/src/gb.eval.highlight/css/properties create mode 100644 comp/src/gb.eval.highlight/css/values create mode 120000 comp/src/gb.eval.highlight/gambas create mode 100644 comp/src/gb.eval.highlight/sql/datatypes create mode 100644 comp/src/gb.eval.highlight/sql/functions create mode 100644 comp/src/gb.eval.highlight/sql/keywords create mode 100644 comp/src/gb.eval.highlight/sql/operators create mode 100644 comp/src/gb.form.dialog/.component create mode 100644 comp/src/gb.form.dialog/.directory create mode 100644 comp/src/gb.form.dialog/.hidden/icon.png create mode 100644 comp/src/gb.form.dialog/.icon.png create mode 100644 comp/src/gb.form.dialog/.lang/ca.po create mode 100644 comp/src/gb.form.dialog/.lang/cs.po create mode 100644 comp/src/gb.form.dialog/.lang/de.po create mode 100644 comp/src/gb.form.dialog/.lang/es.po create mode 100644 comp/src/gb.form.dialog/.lang/es_ES.po create mode 100644 comp/src/gb.form.dialog/.lang/fr.po create mode 100644 comp/src/gb.form.dialog/.lang/it.po create mode 100644 comp/src/gb.form.dialog/.lang/ja.po create mode 100644 comp/src/gb.form.dialog/.lang/nl.po create mode 100644 comp/src/gb.form.dialog/.lang/pt_BR.po create mode 100644 comp/src/gb.form.dialog/.lang/ru.po create mode 100644 comp/src/gb.form.dialog/.lang/sv.po create mode 100644 comp/src/gb.form.dialog/.lang/zh.po create mode 100644 comp/src/gb.form.dialog/.project create mode 100644 comp/src/gb.form.dialog/.src/Dialog.class create mode 100644 comp/src/gb.form.dialog/.src/FAskPassword.class create mode 100644 comp/src/gb.form.dialog/.src/FAskPassword.form create mode 100644 comp/src/gb.form.dialog/.src/FDirDialog.class create mode 100644 comp/src/gb.form.dialog/.src/FDirDialog.form create mode 100644 comp/src/gb.form.dialog/.src/FFileDialog.class create mode 100644 comp/src/gb.form.dialog/.src/FFileDialog.form create mode 100644 comp/src/gb.form.dialog/.src/FFontDialog.class create mode 100644 comp/src/gb.form.dialog/.src/FFontDialog.form create mode 100644 comp/src/gb.form.dialog/.src/FInputDate.class create mode 100644 comp/src/gb.form.dialog/.src/FInputDate.form create mode 100644 comp/src/gb.form.dialog/.src/Main.module create mode 100644 comp/src/gb.form.editor/.component create mode 100644 comp/src/gb.form.editor/.directory create mode 100644 comp/src/gb.form.editor/.hidden/CHANGELOG create mode 100644 comp/src/gb.form.editor/.hidden/control/texteditor.png create mode 100644 comp/src/gb.form.editor/.icon.png create mode 100644 comp/src/gb.form.editor/.lang/fr.po create mode 100644 comp/src/gb.form.editor/.project create mode 100644 comp/src/gb.form.editor/.src/CCommand.class create mode 100644 comp/src/gb.form.editor/.src/CCommandBefore.class create mode 100644 comp/src/gb.form.editor/.src/CDocument.class create mode 100644 comp/src/gb.form.editor/.src/CLineInfo.class create mode 100644 comp/src/gb.form.editor/.src/FFind.class create mode 100644 comp/src/gb.form.editor/.src/FFind.form create mode 100644 comp/src/gb.form.editor/.src/FGoto.class create mode 100644 comp/src/gb.form.editor/.src/FGoto.form create mode 100644 comp/src/gb.form.editor/.src/Helper.module create mode 100644 comp/src/gb.form.editor/.src/Main.module create mode 100644 comp/src/gb.form.editor/.src/TextEditor.class create mode 100644 comp/src/gb.form.editor/.src/TextEditorMode.class create mode 100644 comp/src/gb.form.editor/.src/TextEditorMode_CSS.class create mode 100644 comp/src/gb.form.editor/.src/TextEditorMode_Gambas.class create mode 100644 comp/src/gb.form.editor/.src/TextEditorMode_HTML.class create mode 100644 comp/src/gb.form.editor/.src/TextEditorMode_Javascript.class create mode 100644 comp/src/gb.form.editor/.src/TextEditorMode_SQL.class create mode 100644 comp/src/gb.form.editor/.src/TextEditorMode_Sh.class create mode 100644 comp/src/gb.form.editor/.src/TextEditorMode_WebPage.class create mode 100644 comp/src/gb.form.editor/.src/TextEditorStyle.class create mode 100644 comp/src/gb.form.editor/.src/_TextEditor_Line.class create mode 100644 comp/src/gb.form.editor/.src/_TextEditor_Rows.class create mode 100644 comp/src/gb.form.editor/.src/_TextEditor_State.class create mode 100644 comp/src/gb.form.editor/.src/test/FTest.class create mode 100644 comp/src/gb.form.editor/.src/test/FTest.form create mode 100644 comp/src/gb.form.editor/.src/test/FTestEditor.class create mode 100644 comp/src/gb.form.editor/.src/test/FTestEditor.form create mode 100644 comp/src/gb.form.editor/Text1 create mode 100644 comp/src/gb.form.editor/test.html create mode 100644 comp/src/gb.form.mdi/.component create mode 100644 comp/src/gb.form.mdi/.directory create mode 100644 comp/src/gb.form.mdi/.hidden/control/toolbar.png create mode 100644 comp/src/gb.form.mdi/.hidden/control/workspace.png create mode 100644 comp/src/gb.form.mdi/.icon.png create mode 100644 comp/src/gb.form.mdi/.lang/ca.po create mode 100644 comp/src/gb.form.mdi/.lang/cs.po create mode 100644 comp/src/gb.form.mdi/.lang/de.po create mode 100644 comp/src/gb.form.mdi/.lang/es.po create mode 100644 comp/src/gb.form.mdi/.lang/es_ES.po create mode 100644 comp/src/gb.form.mdi/.lang/fr.po create mode 100644 comp/src/gb.form.mdi/.lang/it.po create mode 100644 comp/src/gb.form.mdi/.lang/nl.po create mode 100644 comp/src/gb.form.mdi/.lang/pt_BR.po create mode 100644 comp/src/gb.form.mdi/.lang/ru.po create mode 100644 comp/src/gb.form.mdi/.lang/sv.po create mode 100644 comp/src/gb.form.mdi/.lang/zh.po create mode 100644 comp/src/gb.form.mdi/.project create mode 100644 comp/src/gb.form.mdi/.src/Action/Action.class create mode 100644 comp/src/gb.form.mdi/.src/Action/CAction.class create mode 100644 comp/src/gb.form.mdi/.src/Action/MAction.module create mode 100644 comp/src/gb.form.mdi/.src/MMain.module create mode 100644 comp/src/gb.form.mdi/.src/Shortcut/FShortcut.class create mode 100644 comp/src/gb.form.mdi/.src/Shortcut/FShortcut.form create mode 100644 comp/src/gb.form.mdi/.src/Shortcut/FShortcutEditor.class create mode 100644 comp/src/gb.form.mdi/.src/Shortcut/FShortcutEditor.form create mode 100644 comp/src/gb.form.mdi/.src/Tests/FMain.class create mode 100644 comp/src/gb.form.mdi/.src/Tests/FMain.form create mode 100644 comp/src/gb.form.mdi/.src/Tests/FMain1.class create mode 100644 comp/src/gb.form.mdi/.src/Tests/FMain1.form create mode 100644 comp/src/gb.form.mdi/.src/Tests/FMain2.class create mode 100644 comp/src/gb.form.mdi/.src/Tests/FMain2.form create mode 100644 comp/src/gb.form.mdi/.src/Tests/FTestBackground.class create mode 100644 comp/src/gb.form.mdi/.src/Tests/FTestBackground.form create mode 100644 comp/src/gb.form.mdi/.src/Tests/FTestSidePanel.class create mode 100644 comp/src/gb.form.mdi/.src/Tests/FTestSidePanel.form create mode 100644 comp/src/gb.form.mdi/.src/Tests/Form1.class create mode 100644 comp/src/gb.form.mdi/.src/Tests/Form1.form create mode 100644 comp/src/gb.form.mdi/.src/Tests/Form2.class create mode 100644 comp/src/gb.form.mdi/.src/Tests/Form2.form create mode 100644 comp/src/gb.form.mdi/.src/ToolBar/CToolbar.class create mode 100644 comp/src/gb.form.mdi/.src/ToolBar/FToolBar.class create mode 100644 comp/src/gb.form.mdi/.src/ToolBar/FToolBar.form create mode 100644 comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.class create mode 100644 comp/src/gb.form.mdi/.src/ToolBar/FToolBarConfig.form create mode 100644 comp/src/gb.form.mdi/.src/ToolBar/ToolBar.class create mode 100644 comp/src/gb.form.mdi/.src/ToolBar/ToolBarExpander.class create mode 100644 comp/src/gb.form.mdi/.src/Workspace/CWindow.class create mode 100644 comp/src/gb.form.mdi/.src/Workspace/FWorkspace.class create mode 100644 comp/src/gb.form.mdi/.src/Workspace/FWorkspace.form create mode 100644 comp/src/gb.form.mdi/.src/Workspace/Workspace.class create mode 100644 comp/src/gb.form.mdi/70a017.png create mode 100644 comp/src/gb.form.mdi/control/buttonbox.png create mode 100644 comp/src/gb.form.mdi/control/combobox.png create mode 100644 comp/src/gb.form.mdi/control/datebox.png create mode 100644 comp/src/gb.form.mdi/control/valuebox.png create mode 100644 comp/src/gb.form.mdi/img/close.png create mode 100644 comp/src/gb.form.mdi/img/configure.png create mode 100644 comp/src/gb.form.mdi/img/configure_dark.png create mode 100644 comp/src/gb.form.mdi/img/expander.png create mode 100644 comp/src/gb.form.mdi/img/handle-v.png create mode 100644 comp/src/gb.form.mdi/img/handle.png create mode 100644 comp/src/gb.form.mdi/img/hash.png create mode 100644 comp/src/gb.form.mdi/img/roll.png create mode 100644 comp/src/gb.form.mdi/img/separator.png create mode 100644 comp/src/gb.form.mdi/img/space.png create mode 100644 comp/src/gb.form.mdi/img/unroll.png create mode 100644 comp/src/gb.form.print/.component create mode 100644 comp/src/gb.form.print/.directory create mode 100644 comp/src/gb.form.print/.hidden/printer.png create mode 100644 comp/src/gb.form.print/.icon.png create mode 100644 comp/src/gb.form.print/.lang/es.po create mode 100644 comp/src/gb.form.print/.lang/es_ES.po create mode 100644 comp/src/gb.form.print/.lang/fr.po create mode 100644 comp/src/gb.form.print/.lang/it.po create mode 100644 comp/src/gb.form.print/.lang/nl.po create mode 100644 comp/src/gb.form.print/.lang/pt_BR.po create mode 100644 comp/src/gb.form.print/.lang/ru.po create mode 100644 comp/src/gb.form.print/.lang/zh.po create mode 100644 comp/src/gb.form.print/.project create mode 100644 comp/src/gb.form.print/.src/FPreview.class create mode 100644 comp/src/gb.form.print/.src/FPreview.form create mode 100644 comp/src/gb.form.print/.src/FPrinting.class create mode 100644 comp/src/gb.form.print/.src/FPrinting.form create mode 100644 comp/src/gb.form.print/.src/MTest.module create mode 100644 comp/src/gb.form.print/.src/Printer.class create mode 100644 comp/src/gb.form.print/molly-malone.txt create mode 100644 comp/src/gb.form.stock/.component create mode 100644 comp/src/gb.form.stock/.directory create mode 100644 comp/src/gb.form.stock/.hidden/CHANGELOG create mode 100644 comp/src/gb.form.stock/.hidden/earth.png create mode 100644 comp/src/gb.form.stock/.hidden/goutte.png create mode 100644 comp/src/gb.form.stock/.hidden/icon.png create mode 100644 comp/src/gb.form.stock/.icon.png create mode 100644 comp/src/gb.form.stock/.project create mode 100644 comp/src/gb.form.stock/.src/Main.module create mode 100644 comp/src/gb.form.stock/.src/MakeIconTheme.module create mode 100644 comp/src/gb.form.stock/.src/_DefaultStock.class create mode 100644 comp/src/gb.form.stock/gambas-mono/128/alarm.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/android.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/application.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/audio.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/book.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/bus.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/c.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/chart-line.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/chart-pie.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/chart.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/chat.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/clock.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/cloud.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/compass.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/cookie.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/cpp.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/css.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/currency.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/delete.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/directory.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/download.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/error.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/exec.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/file.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/fog.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/folder-document.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/folder-download.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/folder-home.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/folder-image.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/folder-music.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/folder-network.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/folder-recent.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/folder-remote.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/folder-root.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/folder-share.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/folder-template.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/folder-video.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/gambas.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/h.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/help.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/html.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/image.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/info.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/internet.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/java.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/js.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/json.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/layout.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/linux.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/magnet.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/map.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/marker.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/md.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/memory.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/message.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/modem.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/money.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/moon-cloud.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/moon.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/multimedia.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/network.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/news.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/pda.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/people.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/phone.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/printer.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/program.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/question.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/rain.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/script.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/sdcard.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/share.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/smartphone.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/snow.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/sport.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/statistics.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/storm.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/sun-cloud.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/sun.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/taxi.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/template.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/text.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/traffic.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/truck.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/upload.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/user-group.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/user.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/vector.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/video.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/warning.png create mode 100644 comp/src/gb.form.stock/gambas-mono/128/xml.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/access.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/add.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/added.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/administrator.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/agenda.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/alarm.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/align-bottom.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/align-center.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/align-height.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/align-left.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/align-middle.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/align-right.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/align-top.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/align-width.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/anchor.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/android.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/application.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/apply.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/archive.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/attach.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/audio.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/average.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/battery-high.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/battery-low.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/battery-medium.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/battery.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/bicycle.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/blue.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/bluetooth-off.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/bluetooth.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/blur.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/book.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/bookmark.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/border-bottom.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/border-diag.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/border-horizontal.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/border-inside.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/border-left.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/border-none.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/border-outside.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/border-rev-diag.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/border-right.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/border-top.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/border-vertical.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/border.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/bottom.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/brightness.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/brush.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/bus.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/c.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/cake.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/calculator.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/calendar.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/call-stop.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/call.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/camera.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/cancel.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/cap-butt.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/cap-round.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/cap-square.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/car.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/cdrom.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/chart-line.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/chart-pie.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/chart.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/chat.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/cherry.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/city.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/clear.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/clock.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/clone.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/close.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/cloud.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/color-picker.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/color.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/column-after.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/column-before.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/column-remove.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/compass.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/component.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/compress.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/computer.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/conflict.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/connect.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/contrast.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/cookie.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/copy.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/cpp.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/cpu.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/crop.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/css.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/csv.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/currency.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/cut.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/database.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/debug-cursor.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/debug-into.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/debug-out.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/debug-over.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/delete.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/desktop.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/development.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/difference.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/directory.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/disconnect.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/down.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/download.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/draw-arrow.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/draw-circle.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/draw-line.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/draw-path.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/draw-polygon.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/draw-rectangle.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/draw-round.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/draw-star.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/draw-text.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/drink.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/earth.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/edit.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/eject.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/emote-cool.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/emote-crying.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/emote-happy.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/emote-kiss.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/emote-laugh.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/emote-plain.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/emote-raspberry.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/emote-sad.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/emote-surprise.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/emote-uncertain.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/emote-wink.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/end-of-line.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/end.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/energy.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/erase.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/error.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/exclusive.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/exec.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/export.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/factory.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/file-manager.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/file.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/fill.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/filter.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/find.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/firewall.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/first.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/flag-blue.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/flag-green.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/flag-red.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/flag-yellow.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/flag.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/flip-h.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/flip-v.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/floppy.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/fog.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/folder-blue.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/folder-document.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/folder-download.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/folder-green.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/folder-home.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/folder-image.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/folder-music.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/folder-network.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/folder-recent.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/folder-red.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/folder-remote.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/folder-root.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/folder-share.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/folder-template.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/folder-video.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/folder-yellow.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/font.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/formula.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/forward.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/fullscreen.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/gambas.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/game.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/gamma.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/gnu.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/gradient.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/green.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/grid.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/group.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/h.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/halt.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/harddisk-root.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/harddisk.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/hardware.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/hatch.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/headset.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/help.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/hibernate.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/highlight.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/home.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/house.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/html.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/hue.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/identity.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/image.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/import.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/important.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/indent.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/info.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/inheritance.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/insert-image.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/insert-link.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/insert-table.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/insert-text.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/internet.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/intersection.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/invert.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/java.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/join-bevel.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/join-miter.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/join-round.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/js.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/json.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/jump.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/key.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/keyboard.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/lamp.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/language.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/last.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/layer.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/layout.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/left.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/library.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/lightness.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/line-style.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/line-width.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/link.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/linux.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/lock-screen.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/lock.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/logout.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/love.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/lower.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/magnet.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/mail.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/make-all.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/make.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/map.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/marker.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/math.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/md.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/media-player.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/memory.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/menu.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/message.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/microphone-off.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/microphone.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/modem.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/modified.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/money.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/monitor.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/moon-cloud.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/moon.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/more-h.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/more.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/mount.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/mouse.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/move.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/multimedia.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/muted.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/network.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/new-appointment.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/new-dir.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/new-mail.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/new-tab.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/new-tag.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/new-user.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/new-window.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/new.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/news.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/next.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/notification.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/office-calc.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/office-draw.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/office-math.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/office-presentation.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/office.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/ok.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/opacity.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/open-link.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/open-recent.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/open.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/options.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/package.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/page-break.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/page-two.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/page.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/paragraph.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/paste-special.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/paste.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/pause.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/pda.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/pdf.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/pen.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/people.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/percent.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/phone.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/pin.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/plane.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/play.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/plugin.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/pointer.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/preview.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/previous.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/print.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/printer.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/program.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/properties.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/question.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/quit.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/quote.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/rain.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/raise.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/record.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/red.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/redo.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/refresh.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/remove.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/rename.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/repeat.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/replace.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/reply-all.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/reply.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/resize.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/restart.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/restaurant.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/revert.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/rewind.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/right.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/rotate-left.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/rotate-right.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/rotate.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/row-after.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/row-before.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/row-remove.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/rss.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/saturation.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/save-as.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/save.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/scanner.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/science.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/screen.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/script.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/sdcard.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/security-high.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/security-low.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/security-medium.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/security.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/select-all.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/select.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/server.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/share.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/shopping.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/shortcut.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/shuffle.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/shutdown.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/smartphone.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/snow.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/sort-ascent.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/sort-descent.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/speaker.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/spell-check.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/sport.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/star.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/start.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/statistics.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/stop.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/storm.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/subtitle.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/sum.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/sun-cloud.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/sun.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/suspend.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/switch-user.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/system.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/tab.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/table.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/tablet.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/tag.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/taxi.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/template.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/terminal.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-baseline.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-bigger.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-bold.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-bottom.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-center.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-fill.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-italic.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-left.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-line-spacing.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-list-order-rtl.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-list-order.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-list.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-lower.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-middle.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-outline.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-right.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-shadow.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-smaller.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-strike.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-sub.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-super.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-top.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-underline.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text-upper.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/text.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/theme.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/today.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/toilet.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/tools.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/top.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/town.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/traffic.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/train.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/transparency.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/trash-full.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/trash.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/truck.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/uncompress.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/undo.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/ungroup.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/unindent.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/union.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/unlock.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/unselect.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/up.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/update.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/upload.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/usb.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/user-group.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/user.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/vector.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/version-control.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/video.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/view-compact.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/view-detail.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/view-icon.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/view-normal.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/view-preview.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/view-split-h.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/view-split-v.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/view-tree.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/volume-high.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/volume-low.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/volume-medium.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/volume.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/vpn.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/walk.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/warning.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/watch.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/webcam.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/wifi-high.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/wifi-low.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/wifi-medium.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/wifi.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/window.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/windows.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/wizard.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/worship.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/wrap.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/xml.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/zoom-fit.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/zoom-in.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/zoom-normal-rtl.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/zoom-normal.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/zoom-out.png create mode 100644 comp/src/gb.form.stock/gambas-mono/32/zoom-width.png create mode 100644 comp/src/gb.form.stock/gambas-mono/app/gambas3.png create mode 100644 comp/src/gb.form.stock/gambas/128/access.png create mode 100644 comp/src/gb.form.stock/gambas/128/administrator.png create mode 100644 comp/src/gb.form.stock/gambas/128/agenda.png create mode 100644 comp/src/gb.form.stock/gambas/128/alarm.png create mode 100644 comp/src/gb.form.stock/gambas/128/android.png create mode 100644 comp/src/gb.form.stock/gambas/128/application.png create mode 100644 comp/src/gb.form.stock/gambas/128/archive.png create mode 100644 comp/src/gb.form.stock/gambas/128/audio.png create mode 100644 comp/src/gb.form.stock/gambas/128/battery.png create mode 100644 comp/src/gb.form.stock/gambas/128/bicycle.png create mode 100644 comp/src/gb.form.stock/gambas/128/bluetooth-off.png create mode 100644 comp/src/gb.form.stock/gambas/128/bluetooth.png create mode 100644 comp/src/gb.form.stock/gambas/128/book.png create mode 100644 comp/src/gb.form.stock/gambas/128/bookmark.png create mode 100644 comp/src/gb.form.stock/gambas/128/bus.png create mode 100644 comp/src/gb.form.stock/gambas/128/c.png create mode 100644 comp/src/gb.form.stock/gambas/128/cake.png create mode 100644 comp/src/gb.form.stock/gambas/128/calculator.png create mode 100644 comp/src/gb.form.stock/gambas/128/calendar.png create mode 100644 comp/src/gb.form.stock/gambas/128/camera.png create mode 100644 comp/src/gb.form.stock/gambas/128/car.png create mode 100644 comp/src/gb.form.stock/gambas/128/cdrom.png create mode 100644 comp/src/gb.form.stock/gambas/128/chart-line.png create mode 100644 comp/src/gb.form.stock/gambas/128/chart-pie.png create mode 100644 comp/src/gb.form.stock/gambas/128/chart.png create mode 100644 comp/src/gb.form.stock/gambas/128/chat.png create mode 100644 comp/src/gb.form.stock/gambas/128/cherry.png create mode 100644 comp/src/gb.form.stock/gambas/128/city.png create mode 100644 comp/src/gb.form.stock/gambas/128/clock.png create mode 100644 comp/src/gb.form.stock/gambas/128/cloud.png create mode 100644 comp/src/gb.form.stock/gambas/128/color-picker.png create mode 100644 comp/src/gb.form.stock/gambas/128/color.png create mode 100644 comp/src/gb.form.stock/gambas/128/compass.png create mode 100644 comp/src/gb.form.stock/gambas/128/component.png create mode 100644 comp/src/gb.form.stock/gambas/128/computer.png create mode 100644 comp/src/gb.form.stock/gambas/128/cookie.png create mode 100644 comp/src/gb.form.stock/gambas/128/copy.png create mode 100644 comp/src/gb.form.stock/gambas/128/cpp.png create mode 100644 comp/src/gb.form.stock/gambas/128/cpu.png create mode 100644 comp/src/gb.form.stock/gambas/128/css.png create mode 100644 comp/src/gb.form.stock/gambas/128/csv.png create mode 100644 comp/src/gb.form.stock/gambas/128/currency.png create mode 100644 comp/src/gb.form.stock/gambas/128/cut.png create mode 100644 comp/src/gb.form.stock/gambas/128/database.png create mode 100644 comp/src/gb.form.stock/gambas/128/delete.png create mode 100644 comp/src/gb.form.stock/gambas/128/desktop.png create mode 100644 comp/src/gb.form.stock/gambas/128/development.png create mode 100644 comp/src/gb.form.stock/gambas/128/directory.png create mode 100644 comp/src/gb.form.stock/gambas/128/download.png create mode 100644 comp/src/gb.form.stock/gambas/128/drink.png create mode 100644 comp/src/gb.form.stock/gambas/128/earth.png create mode 100644 comp/src/gb.form.stock/gambas/128/edit.png create mode 100644 comp/src/gb.form.stock/gambas/128/emote-cool.png create mode 100644 comp/src/gb.form.stock/gambas/128/emote-crying.png create mode 100644 comp/src/gb.form.stock/gambas/128/emote-happy.png create mode 100644 comp/src/gb.form.stock/gambas/128/emote-kiss.png create mode 100644 comp/src/gb.form.stock/gambas/128/emote-laugh.png create mode 100644 comp/src/gb.form.stock/gambas/128/emote-plain.png create mode 100644 comp/src/gb.form.stock/gambas/128/emote-raspberry.png create mode 100644 comp/src/gb.form.stock/gambas/128/emote-sad.png create mode 100644 comp/src/gb.form.stock/gambas/128/emote-surprise.png create mode 100644 comp/src/gb.form.stock/gambas/128/emote-uncertain.png create mode 100644 comp/src/gb.form.stock/gambas/128/emote-wink.png create mode 100644 comp/src/gb.form.stock/gambas/128/energy.png create mode 100644 comp/src/gb.form.stock/gambas/128/error.png create mode 100644 comp/src/gb.form.stock/gambas/128/exec.png create mode 100644 comp/src/gb.form.stock/gambas/128/factory.png create mode 100644 comp/src/gb.form.stock/gambas/128/file-manager.png create mode 100644 comp/src/gb.form.stock/gambas/128/file.png create mode 100644 comp/src/gb.form.stock/gambas/128/find.png create mode 100644 comp/src/gb.form.stock/gambas/128/firewall.png create mode 100644 comp/src/gb.form.stock/gambas/128/flag-blue.png create mode 100644 comp/src/gb.form.stock/gambas/128/flag-green.png create mode 100644 comp/src/gb.form.stock/gambas/128/flag-red.png create mode 100644 comp/src/gb.form.stock/gambas/128/flag-yellow.png create mode 100644 comp/src/gb.form.stock/gambas/128/flag.png create mode 100644 comp/src/gb.form.stock/gambas/128/floppy.png create mode 100644 comp/src/gb.form.stock/gambas/128/fog.png create mode 100644 comp/src/gb.form.stock/gambas/128/folder-blue.png create mode 100644 comp/src/gb.form.stock/gambas/128/folder-document.png create mode 100644 comp/src/gb.form.stock/gambas/128/folder-download.png create mode 100644 comp/src/gb.form.stock/gambas/128/folder-green.png create mode 100644 comp/src/gb.form.stock/gambas/128/folder-home.png create mode 100644 comp/src/gb.form.stock/gambas/128/folder-image.png create mode 100644 comp/src/gb.form.stock/gambas/128/folder-music.png create mode 100644 comp/src/gb.form.stock/gambas/128/folder-network.png create mode 100644 comp/src/gb.form.stock/gambas/128/folder-recent.png create mode 100644 comp/src/gb.form.stock/gambas/128/folder-red.png create mode 100644 comp/src/gb.form.stock/gambas/128/folder-remote.png create mode 100644 comp/src/gb.form.stock/gambas/128/folder-root.png create mode 100644 comp/src/gb.form.stock/gambas/128/folder-share.png create mode 100644 comp/src/gb.form.stock/gambas/128/folder-template.png create mode 100644 comp/src/gb.form.stock/gambas/128/folder-video.png create mode 100644 comp/src/gb.form.stock/gambas/128/folder-yellow.png create mode 100644 comp/src/gb.form.stock/gambas/128/font.png create mode 100644 comp/src/gb.form.stock/gambas/128/gambas.png create mode 100644 comp/src/gb.form.stock/gambas/128/game.png create mode 100644 comp/src/gb.form.stock/gambas/128/gnu.png create mode 100644 comp/src/gb.form.stock/gambas/128/h.png create mode 100644 comp/src/gb.form.stock/gambas/128/harddisk-root.png create mode 100644 comp/src/gb.form.stock/gambas/128/harddisk.png create mode 100644 comp/src/gb.form.stock/gambas/128/hardware.png create mode 100644 comp/src/gb.form.stock/gambas/128/headset.png create mode 100644 comp/src/gb.form.stock/gambas/128/help.png create mode 100644 comp/src/gb.form.stock/gambas/128/hibernate.png create mode 100644 comp/src/gb.form.stock/gambas/128/house.png create mode 100644 comp/src/gb.form.stock/gambas/128/html.png create mode 100644 comp/src/gb.form.stock/gambas/128/identity.png create mode 100644 comp/src/gb.form.stock/gambas/128/image.png create mode 100644 comp/src/gb.form.stock/gambas/128/important.png create mode 100644 comp/src/gb.form.stock/gambas/128/info.png create mode 100644 comp/src/gb.form.stock/gambas/128/internet.png create mode 100644 comp/src/gb.form.stock/gambas/128/java.png create mode 100644 comp/src/gb.form.stock/gambas/128/js.png create mode 100644 comp/src/gb.form.stock/gambas/128/json.png create mode 100644 comp/src/gb.form.stock/gambas/128/keyboard.png create mode 100644 comp/src/gb.form.stock/gambas/128/library.png create mode 100644 comp/src/gb.form.stock/gambas/128/linux.png create mode 100644 comp/src/gb.form.stock/gambas/128/lock-screen.png create mode 100644 comp/src/gb.form.stock/gambas/128/lock.png create mode 100644 comp/src/gb.form.stock/gambas/128/logout.png create mode 100644 comp/src/gb.form.stock/gambas/128/love.png create mode 100644 comp/src/gb.form.stock/gambas/128/magnet.png create mode 100644 comp/src/gb.form.stock/gambas/128/mail.png create mode 100644 comp/src/gb.form.stock/gambas/128/map.png create mode 100644 comp/src/gb.form.stock/gambas/128/marker.png create mode 100644 comp/src/gb.form.stock/gambas/128/md.png create mode 100644 comp/src/gb.form.stock/gambas/128/media-player.png create mode 100644 comp/src/gb.form.stock/gambas/128/memory.png create mode 100644 comp/src/gb.form.stock/gambas/128/message.png create mode 100644 comp/src/gb.form.stock/gambas/128/microphone-off.png create mode 100644 comp/src/gb.form.stock/gambas/128/microphone.png create mode 100644 comp/src/gb.form.stock/gambas/128/modem.png create mode 100644 comp/src/gb.form.stock/gambas/128/money.png create mode 100644 comp/src/gb.form.stock/gambas/128/monitor.png create mode 100644 comp/src/gb.form.stock/gambas/128/moon-cloud.png create mode 100644 comp/src/gb.form.stock/gambas/128/moon.png create mode 100644 comp/src/gb.form.stock/gambas/128/mouse.png create mode 100644 comp/src/gb.form.stock/gambas/128/multimedia.png create mode 100644 comp/src/gb.form.stock/gambas/128/network.png create mode 100644 comp/src/gb.form.stock/gambas/128/new.png create mode 100644 comp/src/gb.form.stock/gambas/128/news.png create mode 100644 comp/src/gb.form.stock/gambas/128/notification.png create mode 100644 comp/src/gb.form.stock/gambas/128/office-calc.png create mode 100644 comp/src/gb.form.stock/gambas/128/office-draw.png create mode 100644 comp/src/gb.form.stock/gambas/128/office-math.png create mode 100644 comp/src/gb.form.stock/gambas/128/office-presentation.png create mode 100644 comp/src/gb.form.stock/gambas/128/office.png create mode 100644 comp/src/gb.form.stock/gambas/128/open-recent.png create mode 100644 comp/src/gb.form.stock/gambas/128/open.png create mode 100644 comp/src/gb.form.stock/gambas/128/options.png create mode 100644 comp/src/gb.form.stock/gambas/128/package.png create mode 100644 comp/src/gb.form.stock/gambas/128/pda.png create mode 100644 comp/src/gb.form.stock/gambas/128/pdf.png create mode 100644 comp/src/gb.form.stock/gambas/128/pen.png create mode 100644 comp/src/gb.form.stock/gambas/128/people.png create mode 100644 comp/src/gb.form.stock/gambas/128/phone.png create mode 100644 comp/src/gb.form.stock/gambas/128/plane.png create mode 100644 comp/src/gb.form.stock/gambas/128/plugin.png create mode 100644 comp/src/gb.form.stock/gambas/128/preview.png create mode 100644 comp/src/gb.form.stock/gambas/128/printer.png create mode 100644 comp/src/gb.form.stock/gambas/128/program.png create mode 100644 comp/src/gb.form.stock/gambas/128/question.png create mode 100644 comp/src/gb.form.stock/gambas/128/quit.png create mode 100644 comp/src/gb.form.stock/gambas/128/rain.png create mode 100644 comp/src/gb.form.stock/gambas/128/rename.png create mode 100644 comp/src/gb.form.stock/gambas/128/restart.png create mode 100644 comp/src/gb.form.stock/gambas/128/restaurant.png create mode 100644 comp/src/gb.form.stock/gambas/128/rss.png create mode 100644 comp/src/gb.form.stock/gambas/128/scanner.png create mode 100644 comp/src/gb.form.stock/gambas/128/science.png create mode 100644 comp/src/gb.form.stock/gambas/128/screen.png create mode 100644 comp/src/gb.form.stock/gambas/128/script.png create mode 100644 comp/src/gb.form.stock/gambas/128/sdcard.png create mode 100644 comp/src/gb.form.stock/gambas/128/security.png create mode 100644 comp/src/gb.form.stock/gambas/128/server.png create mode 100644 comp/src/gb.form.stock/gambas/128/share.png create mode 100644 comp/src/gb.form.stock/gambas/128/shopping.png create mode 100644 comp/src/gb.form.stock/gambas/128/shutdown.png create mode 100644 comp/src/gb.form.stock/gambas/128/smartphone.png create mode 100644 comp/src/gb.form.stock/gambas/128/snow.png create mode 100644 comp/src/gb.form.stock/gambas/128/speaker.png create mode 100644 comp/src/gb.form.stock/gambas/128/sport.png create mode 100644 comp/src/gb.form.stock/gambas/128/star.png create mode 100644 comp/src/gb.form.stock/gambas/128/statistics.png create mode 100644 comp/src/gb.form.stock/gambas/128/storm.png create mode 100644 comp/src/gb.form.stock/gambas/128/sun-cloud.png create mode 100644 comp/src/gb.form.stock/gambas/128/sun.png create mode 100644 comp/src/gb.form.stock/gambas/128/suspend.png create mode 100644 comp/src/gb.form.stock/gambas/128/switch-user.png create mode 100644 comp/src/gb.form.stock/gambas/128/system.png create mode 100644 comp/src/gb.form.stock/gambas/128/table.png create mode 100644 comp/src/gb.form.stock/gambas/128/tablet.png create mode 100644 comp/src/gb.form.stock/gambas/128/tag.png create mode 100644 comp/src/gb.form.stock/gambas/128/taxi.png create mode 100644 comp/src/gb.form.stock/gambas/128/template.png create mode 100644 comp/src/gb.form.stock/gambas/128/terminal.png create mode 100644 comp/src/gb.form.stock/gambas/128/text.png create mode 100644 comp/src/gb.form.stock/gambas/128/theme.png create mode 100644 comp/src/gb.form.stock/gambas/128/toilet.png create mode 100644 comp/src/gb.form.stock/gambas/128/tools.png create mode 100644 comp/src/gb.form.stock/gambas/128/town.png create mode 100644 comp/src/gb.form.stock/gambas/128/traffic.png create mode 100644 comp/src/gb.form.stock/gambas/128/train.png create mode 100644 comp/src/gb.form.stock/gambas/128/trash-full.png create mode 100644 comp/src/gb.form.stock/gambas/128/trash.png create mode 100644 comp/src/gb.form.stock/gambas/128/truck.png create mode 100644 comp/src/gb.form.stock/gambas/128/unlock.png create mode 100644 comp/src/gb.form.stock/gambas/128/update.png create mode 100644 comp/src/gb.form.stock/gambas/128/upload.png create mode 100644 comp/src/gb.form.stock/gambas/128/usb.png create mode 100644 comp/src/gb.form.stock/gambas/128/user-group.png create mode 100644 comp/src/gb.form.stock/gambas/128/user.png create mode 100644 comp/src/gb.form.stock/gambas/128/vector.png create mode 100644 comp/src/gb.form.stock/gambas/128/video.png create mode 100644 comp/src/gb.form.stock/gambas/128/vpn.png create mode 100644 comp/src/gb.form.stock/gambas/128/walk.png create mode 100644 comp/src/gb.form.stock/gambas/128/warning.png create mode 100644 comp/src/gb.form.stock/gambas/128/webcam.png create mode 100644 comp/src/gb.form.stock/gambas/128/window.png create mode 100644 comp/src/gb.form.stock/gambas/128/windows.png create mode 100644 comp/src/gb.form.stock/gambas/128/wizard.png create mode 100644 comp/src/gb.form.stock/gambas/128/worship.png create mode 100644 comp/src/gb.form.stock/gambas/128/xml.png create mode 100644 comp/src/gb.form.stock/gambas/32/access.png create mode 100644 comp/src/gb.form.stock/gambas/32/add.png create mode 100644 comp/src/gb.form.stock/gambas/32/added.png create mode 100644 comp/src/gb.form.stock/gambas/32/administrator.png create mode 100644 comp/src/gb.form.stock/gambas/32/agenda.png create mode 100644 comp/src/gb.form.stock/gambas/32/alarm.png create mode 100644 comp/src/gb.form.stock/gambas/32/align-bottom.png create mode 100644 comp/src/gb.form.stock/gambas/32/align-center.png create mode 100644 comp/src/gb.form.stock/gambas/32/align-height.png create mode 100644 comp/src/gb.form.stock/gambas/32/align-left.png create mode 100644 comp/src/gb.form.stock/gambas/32/align-middle.png create mode 100644 comp/src/gb.form.stock/gambas/32/align-right.png create mode 100644 comp/src/gb.form.stock/gambas/32/align-top.png create mode 100644 comp/src/gb.form.stock/gambas/32/align-width.png create mode 100644 comp/src/gb.form.stock/gambas/32/anchor.png create mode 100644 comp/src/gb.form.stock/gambas/32/android.png create mode 100644 comp/src/gb.form.stock/gambas/32/application.png create mode 100644 comp/src/gb.form.stock/gambas/32/apply.png create mode 100644 comp/src/gb.form.stock/gambas/32/archive.png create mode 100644 comp/src/gb.form.stock/gambas/32/attach.png create mode 100644 comp/src/gb.form.stock/gambas/32/audio.png create mode 100644 comp/src/gb.form.stock/gambas/32/average.png create mode 100644 comp/src/gb.form.stock/gambas/32/battery-high.png create mode 100644 comp/src/gb.form.stock/gambas/32/battery-low.png create mode 100644 comp/src/gb.form.stock/gambas/32/battery-medium.png create mode 100644 comp/src/gb.form.stock/gambas/32/battery.png create mode 100644 comp/src/gb.form.stock/gambas/32/bicycle.png create mode 100644 comp/src/gb.form.stock/gambas/32/blue.png create mode 100644 comp/src/gb.form.stock/gambas/32/bluetooth-off.png create mode 100644 comp/src/gb.form.stock/gambas/32/bluetooth.png create mode 100644 comp/src/gb.form.stock/gambas/32/blur.png create mode 100644 comp/src/gb.form.stock/gambas/32/book.png create mode 100644 comp/src/gb.form.stock/gambas/32/bookmark.png create mode 100644 comp/src/gb.form.stock/gambas/32/border-bottom.png create mode 100644 comp/src/gb.form.stock/gambas/32/border-diag.png create mode 100644 comp/src/gb.form.stock/gambas/32/border-horizontal.png create mode 100644 comp/src/gb.form.stock/gambas/32/border-inside.png create mode 100644 comp/src/gb.form.stock/gambas/32/border-left.png create mode 100644 comp/src/gb.form.stock/gambas/32/border-none.png create mode 100644 comp/src/gb.form.stock/gambas/32/border-outside.png create mode 100644 comp/src/gb.form.stock/gambas/32/border-rev-diag.png create mode 100644 comp/src/gb.form.stock/gambas/32/border-right.png create mode 100644 comp/src/gb.form.stock/gambas/32/border-top.png create mode 100644 comp/src/gb.form.stock/gambas/32/border-vertical.png create mode 100644 comp/src/gb.form.stock/gambas/32/border.png create mode 100644 comp/src/gb.form.stock/gambas/32/bottom.png create mode 100644 comp/src/gb.form.stock/gambas/32/brightness.png create mode 100644 comp/src/gb.form.stock/gambas/32/brush.png create mode 100644 comp/src/gb.form.stock/gambas/32/bus.png create mode 100644 comp/src/gb.form.stock/gambas/32/c.png create mode 100644 comp/src/gb.form.stock/gambas/32/cake.png create mode 100644 comp/src/gb.form.stock/gambas/32/calculator.png create mode 100644 comp/src/gb.form.stock/gambas/32/calendar.png create mode 100644 comp/src/gb.form.stock/gambas/32/call-stop.png create mode 100644 comp/src/gb.form.stock/gambas/32/call.png create mode 100644 comp/src/gb.form.stock/gambas/32/camera.png create mode 100644 comp/src/gb.form.stock/gambas/32/cancel.png create mode 100644 comp/src/gb.form.stock/gambas/32/cap-butt.png create mode 100644 comp/src/gb.form.stock/gambas/32/cap-round.png create mode 100644 comp/src/gb.form.stock/gambas/32/cap-square.png create mode 100644 comp/src/gb.form.stock/gambas/32/car.png create mode 100644 comp/src/gb.form.stock/gambas/32/cdrom.png create mode 100644 comp/src/gb.form.stock/gambas/32/chart-line.png create mode 100644 comp/src/gb.form.stock/gambas/32/chart-pie.png create mode 100644 comp/src/gb.form.stock/gambas/32/chart.png create mode 100644 comp/src/gb.form.stock/gambas/32/chat.png create mode 100644 comp/src/gb.form.stock/gambas/32/cherry.png create mode 100644 comp/src/gb.form.stock/gambas/32/city.png create mode 100644 comp/src/gb.form.stock/gambas/32/clear.png create mode 100644 comp/src/gb.form.stock/gambas/32/clock.png create mode 100644 comp/src/gb.form.stock/gambas/32/clone.png create mode 100644 comp/src/gb.form.stock/gambas/32/close.png create mode 100644 comp/src/gb.form.stock/gambas/32/cloud.png create mode 100644 comp/src/gb.form.stock/gambas/32/color-picker.png create mode 100644 comp/src/gb.form.stock/gambas/32/color.png create mode 100644 comp/src/gb.form.stock/gambas/32/column-after.png create mode 100644 comp/src/gb.form.stock/gambas/32/column-before.png create mode 100644 comp/src/gb.form.stock/gambas/32/column-remove.png create mode 100644 comp/src/gb.form.stock/gambas/32/compass.png create mode 100644 comp/src/gb.form.stock/gambas/32/component.png create mode 100644 comp/src/gb.form.stock/gambas/32/compress.png create mode 100644 comp/src/gb.form.stock/gambas/32/computer.png create mode 100644 comp/src/gb.form.stock/gambas/32/conflict.png create mode 100644 comp/src/gb.form.stock/gambas/32/connect.png create mode 100644 comp/src/gb.form.stock/gambas/32/contrast.png create mode 100644 comp/src/gb.form.stock/gambas/32/cookie.png create mode 100644 comp/src/gb.form.stock/gambas/32/copy.png create mode 100644 comp/src/gb.form.stock/gambas/32/cpp.png create mode 100644 comp/src/gb.form.stock/gambas/32/cpu.png create mode 100644 comp/src/gb.form.stock/gambas/32/crop.png create mode 100644 comp/src/gb.form.stock/gambas/32/css.png create mode 100644 comp/src/gb.form.stock/gambas/32/csv.png create mode 100644 comp/src/gb.form.stock/gambas/32/currency.png create mode 100644 comp/src/gb.form.stock/gambas/32/cut.png create mode 100644 comp/src/gb.form.stock/gambas/32/database.png create mode 100644 comp/src/gb.form.stock/gambas/32/debug-cursor.png create mode 100644 comp/src/gb.form.stock/gambas/32/debug-into.png create mode 100644 comp/src/gb.form.stock/gambas/32/debug-out.png create mode 100644 comp/src/gb.form.stock/gambas/32/debug-over.png create mode 100644 comp/src/gb.form.stock/gambas/32/delete.png create mode 100644 comp/src/gb.form.stock/gambas/32/desktop.png create mode 100644 comp/src/gb.form.stock/gambas/32/development.png create mode 100644 comp/src/gb.form.stock/gambas/32/difference.png create mode 100644 comp/src/gb.form.stock/gambas/32/directory.png create mode 100644 comp/src/gb.form.stock/gambas/32/disconnect.png create mode 100644 comp/src/gb.form.stock/gambas/32/down.png create mode 100644 comp/src/gb.form.stock/gambas/32/download.png create mode 100644 comp/src/gb.form.stock/gambas/32/draw-arrow.png create mode 100644 comp/src/gb.form.stock/gambas/32/draw-circle.png create mode 100644 comp/src/gb.form.stock/gambas/32/draw-line.png create mode 100644 comp/src/gb.form.stock/gambas/32/draw-path.png create mode 100644 comp/src/gb.form.stock/gambas/32/draw-polygon.png create mode 100644 comp/src/gb.form.stock/gambas/32/draw-rectangle.png create mode 100644 comp/src/gb.form.stock/gambas/32/draw-round.png create mode 100644 comp/src/gb.form.stock/gambas/32/draw-star.png create mode 100644 comp/src/gb.form.stock/gambas/32/draw-text.png create mode 100644 comp/src/gb.form.stock/gambas/32/drink.png create mode 100644 comp/src/gb.form.stock/gambas/32/earth.png create mode 100644 comp/src/gb.form.stock/gambas/32/edit.png create mode 100644 comp/src/gb.form.stock/gambas/32/eject.png create mode 100644 comp/src/gb.form.stock/gambas/32/emote-cool.png create mode 100644 comp/src/gb.form.stock/gambas/32/emote-crying.png create mode 100644 comp/src/gb.form.stock/gambas/32/emote-happy.png create mode 100644 comp/src/gb.form.stock/gambas/32/emote-kiss.png create mode 100644 comp/src/gb.form.stock/gambas/32/emote-laugh.png create mode 100644 comp/src/gb.form.stock/gambas/32/emote-plain.png create mode 100644 comp/src/gb.form.stock/gambas/32/emote-raspberry.png create mode 100644 comp/src/gb.form.stock/gambas/32/emote-sad.png create mode 100644 comp/src/gb.form.stock/gambas/32/emote-surprise.png create mode 100644 comp/src/gb.form.stock/gambas/32/emote-uncertain.png create mode 100644 comp/src/gb.form.stock/gambas/32/emote-wink.png create mode 100644 comp/src/gb.form.stock/gambas/32/end-of-line.png create mode 100644 comp/src/gb.form.stock/gambas/32/end.png create mode 100644 comp/src/gb.form.stock/gambas/32/energy.png create mode 100644 comp/src/gb.form.stock/gambas/32/erase.png create mode 100644 comp/src/gb.form.stock/gambas/32/error.png create mode 100644 comp/src/gb.form.stock/gambas/32/exclusive.png create mode 100644 comp/src/gb.form.stock/gambas/32/exec.png create mode 100644 comp/src/gb.form.stock/gambas/32/export.png create mode 100644 comp/src/gb.form.stock/gambas/32/factory.png create mode 100644 comp/src/gb.form.stock/gambas/32/file-manager.png create mode 100644 comp/src/gb.form.stock/gambas/32/file.png create mode 100644 comp/src/gb.form.stock/gambas/32/fill.png create mode 100644 comp/src/gb.form.stock/gambas/32/filter.png create mode 100644 comp/src/gb.form.stock/gambas/32/find.png create mode 100644 comp/src/gb.form.stock/gambas/32/firewall.png create mode 100644 comp/src/gb.form.stock/gambas/32/first.png create mode 100644 comp/src/gb.form.stock/gambas/32/flag-blue.png create mode 100644 comp/src/gb.form.stock/gambas/32/flag-green.png create mode 100644 comp/src/gb.form.stock/gambas/32/flag-red.png create mode 100644 comp/src/gb.form.stock/gambas/32/flag-yellow.png create mode 100644 comp/src/gb.form.stock/gambas/32/flag.png create mode 100644 comp/src/gb.form.stock/gambas/32/flip-h.png create mode 100644 comp/src/gb.form.stock/gambas/32/flip-v.png create mode 100644 comp/src/gb.form.stock/gambas/32/floppy.png create mode 100644 comp/src/gb.form.stock/gambas/32/fog.png create mode 100644 comp/src/gb.form.stock/gambas/32/folder-blue.png create mode 100644 comp/src/gb.form.stock/gambas/32/folder-document.png create mode 100644 comp/src/gb.form.stock/gambas/32/folder-download.png create mode 100644 comp/src/gb.form.stock/gambas/32/folder-green.png create mode 100644 comp/src/gb.form.stock/gambas/32/folder-home.png create mode 100644 comp/src/gb.form.stock/gambas/32/folder-image.png create mode 100644 comp/src/gb.form.stock/gambas/32/folder-music.png create mode 100644 comp/src/gb.form.stock/gambas/32/folder-network.png create mode 100644 comp/src/gb.form.stock/gambas/32/folder-recent.png create mode 100644 comp/src/gb.form.stock/gambas/32/folder-red.png create mode 100644 comp/src/gb.form.stock/gambas/32/folder-remote.png create mode 100644 comp/src/gb.form.stock/gambas/32/folder-root.png create mode 100644 comp/src/gb.form.stock/gambas/32/folder-share.png create mode 100644 comp/src/gb.form.stock/gambas/32/folder-template.png create mode 100644 comp/src/gb.form.stock/gambas/32/folder-video.png create mode 100644 comp/src/gb.form.stock/gambas/32/folder-yellow.png create mode 100644 comp/src/gb.form.stock/gambas/32/font.png create mode 100644 comp/src/gb.form.stock/gambas/32/formula.png create mode 100644 comp/src/gb.form.stock/gambas/32/forward.png create mode 100644 comp/src/gb.form.stock/gambas/32/fullscreen.png create mode 100644 comp/src/gb.form.stock/gambas/32/gambas.png create mode 100644 comp/src/gb.form.stock/gambas/32/game.png create mode 100644 comp/src/gb.form.stock/gambas/32/gamma.png create mode 100644 comp/src/gb.form.stock/gambas/32/gnu.png create mode 100644 comp/src/gb.form.stock/gambas/32/gradient.png create mode 100644 comp/src/gb.form.stock/gambas/32/green.png create mode 100644 comp/src/gb.form.stock/gambas/32/grid.png create mode 100644 comp/src/gb.form.stock/gambas/32/group.png create mode 100644 comp/src/gb.form.stock/gambas/32/h.png create mode 100644 comp/src/gb.form.stock/gambas/32/halt.png create mode 100644 comp/src/gb.form.stock/gambas/32/harddisk-root.png create mode 100644 comp/src/gb.form.stock/gambas/32/harddisk.png create mode 100644 comp/src/gb.form.stock/gambas/32/hardware.png create mode 100644 comp/src/gb.form.stock/gambas/32/hatch.png create mode 100644 comp/src/gb.form.stock/gambas/32/headset.png create mode 100644 comp/src/gb.form.stock/gambas/32/help.png create mode 100644 comp/src/gb.form.stock/gambas/32/hibernate.png create mode 100644 comp/src/gb.form.stock/gambas/32/highlight.png create mode 100644 comp/src/gb.form.stock/gambas/32/home.png create mode 100644 comp/src/gb.form.stock/gambas/32/house.png create mode 100644 comp/src/gb.form.stock/gambas/32/html.png create mode 100644 comp/src/gb.form.stock/gambas/32/hue.png create mode 100644 comp/src/gb.form.stock/gambas/32/identity.png create mode 100644 comp/src/gb.form.stock/gambas/32/image.png create mode 100644 comp/src/gb.form.stock/gambas/32/import.png create mode 100644 comp/src/gb.form.stock/gambas/32/important.png create mode 100644 comp/src/gb.form.stock/gambas/32/indent.png create mode 100644 comp/src/gb.form.stock/gambas/32/info.png create mode 100644 comp/src/gb.form.stock/gambas/32/inheritance.png create mode 100644 comp/src/gb.form.stock/gambas/32/insert-image.png create mode 100644 comp/src/gb.form.stock/gambas/32/insert-link.png create mode 100644 comp/src/gb.form.stock/gambas/32/insert-table.png create mode 100644 comp/src/gb.form.stock/gambas/32/insert-text.png create mode 100644 comp/src/gb.form.stock/gambas/32/internet.png create mode 100644 comp/src/gb.form.stock/gambas/32/intersection.png create mode 100644 comp/src/gb.form.stock/gambas/32/invert.png create mode 100644 comp/src/gb.form.stock/gambas/32/java.png create mode 100644 comp/src/gb.form.stock/gambas/32/join-bevel.png create mode 100644 comp/src/gb.form.stock/gambas/32/join-miter.png create mode 100644 comp/src/gb.form.stock/gambas/32/join-round.png create mode 100644 comp/src/gb.form.stock/gambas/32/js.png create mode 100644 comp/src/gb.form.stock/gambas/32/json.png create mode 100644 comp/src/gb.form.stock/gambas/32/jump.png create mode 100644 comp/src/gb.form.stock/gambas/32/key.png create mode 100644 comp/src/gb.form.stock/gambas/32/keyboard.png create mode 100644 comp/src/gb.form.stock/gambas/32/lamp.png create mode 100644 comp/src/gb.form.stock/gambas/32/language.png create mode 100644 comp/src/gb.form.stock/gambas/32/last.png create mode 100644 comp/src/gb.form.stock/gambas/32/layer.png create mode 100644 comp/src/gb.form.stock/gambas/32/layout.png create mode 100644 comp/src/gb.form.stock/gambas/32/left.png create mode 100644 comp/src/gb.form.stock/gambas/32/library.png create mode 100644 comp/src/gb.form.stock/gambas/32/lightness.png create mode 100644 comp/src/gb.form.stock/gambas/32/line-style.png create mode 100644 comp/src/gb.form.stock/gambas/32/line-width.png create mode 100644 comp/src/gb.form.stock/gambas/32/link.png create mode 100644 comp/src/gb.form.stock/gambas/32/linux.png create mode 100644 comp/src/gb.form.stock/gambas/32/lock-screen.png create mode 100644 comp/src/gb.form.stock/gambas/32/lock.png create mode 100644 comp/src/gb.form.stock/gambas/32/logout.png create mode 100644 comp/src/gb.form.stock/gambas/32/love.png create mode 100644 comp/src/gb.form.stock/gambas/32/lower.png create mode 100644 comp/src/gb.form.stock/gambas/32/magnet.png create mode 100644 comp/src/gb.form.stock/gambas/32/mail.png create mode 100644 comp/src/gb.form.stock/gambas/32/make-all.png create mode 100644 comp/src/gb.form.stock/gambas/32/make.png create mode 100644 comp/src/gb.form.stock/gambas/32/map.png create mode 100644 comp/src/gb.form.stock/gambas/32/marker.png create mode 100644 comp/src/gb.form.stock/gambas/32/math.png create mode 100644 comp/src/gb.form.stock/gambas/32/md.png create mode 100644 comp/src/gb.form.stock/gambas/32/media-player.png create mode 100644 comp/src/gb.form.stock/gambas/32/memory.png create mode 100644 comp/src/gb.form.stock/gambas/32/menu.png create mode 100644 comp/src/gb.form.stock/gambas/32/message.png create mode 100644 comp/src/gb.form.stock/gambas/32/microphone-off.png create mode 100644 comp/src/gb.form.stock/gambas/32/microphone.png create mode 100644 comp/src/gb.form.stock/gambas/32/modem.png create mode 100644 comp/src/gb.form.stock/gambas/32/modified.png create mode 100644 comp/src/gb.form.stock/gambas/32/money.png create mode 100644 comp/src/gb.form.stock/gambas/32/monitor.png create mode 100644 comp/src/gb.form.stock/gambas/32/moon-cloud.png create mode 100644 comp/src/gb.form.stock/gambas/32/moon.png create mode 100644 comp/src/gb.form.stock/gambas/32/more-h.png create mode 100644 comp/src/gb.form.stock/gambas/32/more.png create mode 100644 comp/src/gb.form.stock/gambas/32/mount.png create mode 100644 comp/src/gb.form.stock/gambas/32/mouse.png create mode 100644 comp/src/gb.form.stock/gambas/32/move.png create mode 100644 comp/src/gb.form.stock/gambas/32/multimedia.png create mode 100644 comp/src/gb.form.stock/gambas/32/muted.png create mode 100644 comp/src/gb.form.stock/gambas/32/network.png create mode 100644 comp/src/gb.form.stock/gambas/32/new-appointment.png create mode 100644 comp/src/gb.form.stock/gambas/32/new-dir.png create mode 100644 comp/src/gb.form.stock/gambas/32/new-mail.png create mode 100644 comp/src/gb.form.stock/gambas/32/new-tab.png create mode 100644 comp/src/gb.form.stock/gambas/32/new-tag.png create mode 100644 comp/src/gb.form.stock/gambas/32/new-user.png create mode 100644 comp/src/gb.form.stock/gambas/32/new-window.png create mode 100644 comp/src/gb.form.stock/gambas/32/new.png create mode 100644 comp/src/gb.form.stock/gambas/32/news.png create mode 100644 comp/src/gb.form.stock/gambas/32/next.png create mode 100644 comp/src/gb.form.stock/gambas/32/notification.png create mode 100644 comp/src/gb.form.stock/gambas/32/office-calc.png create mode 100644 comp/src/gb.form.stock/gambas/32/office-draw.png create mode 100644 comp/src/gb.form.stock/gambas/32/office-math.png create mode 100644 comp/src/gb.form.stock/gambas/32/office-presentation.png create mode 100644 comp/src/gb.form.stock/gambas/32/office.png create mode 100644 comp/src/gb.form.stock/gambas/32/ok.png create mode 100644 comp/src/gb.form.stock/gambas/32/opacity.png create mode 100644 comp/src/gb.form.stock/gambas/32/open-link.png create mode 100644 comp/src/gb.form.stock/gambas/32/open-recent.png create mode 100644 comp/src/gb.form.stock/gambas/32/open.png create mode 100644 comp/src/gb.form.stock/gambas/32/options.png create mode 100644 comp/src/gb.form.stock/gambas/32/package.png create mode 100644 comp/src/gb.form.stock/gambas/32/page-break.png create mode 100644 comp/src/gb.form.stock/gambas/32/page-two.png create mode 100644 comp/src/gb.form.stock/gambas/32/page.png create mode 100644 comp/src/gb.form.stock/gambas/32/paragraph.png create mode 100644 comp/src/gb.form.stock/gambas/32/paste-special.png create mode 100644 comp/src/gb.form.stock/gambas/32/paste.png create mode 100644 comp/src/gb.form.stock/gambas/32/pause.png create mode 100644 comp/src/gb.form.stock/gambas/32/pda.png create mode 100644 comp/src/gb.form.stock/gambas/32/pdf.png create mode 100644 comp/src/gb.form.stock/gambas/32/pen.png create mode 100644 comp/src/gb.form.stock/gambas/32/people.png create mode 100644 comp/src/gb.form.stock/gambas/32/percent.png create mode 100644 comp/src/gb.form.stock/gambas/32/phone.png create mode 100644 comp/src/gb.form.stock/gambas/32/pin.png create mode 100644 comp/src/gb.form.stock/gambas/32/plane.png create mode 100644 comp/src/gb.form.stock/gambas/32/play.png create mode 100644 comp/src/gb.form.stock/gambas/32/plugin.png create mode 100644 comp/src/gb.form.stock/gambas/32/pointer.png create mode 100644 comp/src/gb.form.stock/gambas/32/preview.png create mode 100644 comp/src/gb.form.stock/gambas/32/previous.png create mode 100644 comp/src/gb.form.stock/gambas/32/print.png create mode 100644 comp/src/gb.form.stock/gambas/32/printer.png create mode 100644 comp/src/gb.form.stock/gambas/32/program.png create mode 100644 comp/src/gb.form.stock/gambas/32/properties.png create mode 100644 comp/src/gb.form.stock/gambas/32/question.png create mode 100644 comp/src/gb.form.stock/gambas/32/quit.png create mode 100644 comp/src/gb.form.stock/gambas/32/quote.png create mode 100644 comp/src/gb.form.stock/gambas/32/rain.png create mode 100644 comp/src/gb.form.stock/gambas/32/raise.png create mode 100644 comp/src/gb.form.stock/gambas/32/record.png create mode 100644 comp/src/gb.form.stock/gambas/32/red.png create mode 100644 comp/src/gb.form.stock/gambas/32/redo.png create mode 100644 comp/src/gb.form.stock/gambas/32/refresh.png create mode 100644 comp/src/gb.form.stock/gambas/32/remove.png create mode 100644 comp/src/gb.form.stock/gambas/32/rename.png create mode 100644 comp/src/gb.form.stock/gambas/32/repeat.png create mode 100644 comp/src/gb.form.stock/gambas/32/replace.png create mode 100644 comp/src/gb.form.stock/gambas/32/reply-all.png create mode 100644 comp/src/gb.form.stock/gambas/32/reply.png create mode 100644 comp/src/gb.form.stock/gambas/32/resize.png create mode 100644 comp/src/gb.form.stock/gambas/32/restart.png create mode 100644 comp/src/gb.form.stock/gambas/32/restaurant.png create mode 100644 comp/src/gb.form.stock/gambas/32/revert.png create mode 100644 comp/src/gb.form.stock/gambas/32/rewind.png create mode 100644 comp/src/gb.form.stock/gambas/32/right.png create mode 100644 comp/src/gb.form.stock/gambas/32/rotate-left.png create mode 100644 comp/src/gb.form.stock/gambas/32/rotate-right.png create mode 100644 comp/src/gb.form.stock/gambas/32/rotate.png create mode 100644 comp/src/gb.form.stock/gambas/32/row-after.png create mode 100644 comp/src/gb.form.stock/gambas/32/row-before.png create mode 100644 comp/src/gb.form.stock/gambas/32/row-remove.png create mode 100644 comp/src/gb.form.stock/gambas/32/rss.png create mode 100644 comp/src/gb.form.stock/gambas/32/saturation.png create mode 100644 comp/src/gb.form.stock/gambas/32/save-as.png create mode 100644 comp/src/gb.form.stock/gambas/32/save.png create mode 100644 comp/src/gb.form.stock/gambas/32/scanner.png create mode 100644 comp/src/gb.form.stock/gambas/32/science.png create mode 100644 comp/src/gb.form.stock/gambas/32/screen.png create mode 100644 comp/src/gb.form.stock/gambas/32/script.png create mode 100644 comp/src/gb.form.stock/gambas/32/sdcard.png create mode 100644 comp/src/gb.form.stock/gambas/32/security-high.png create mode 100644 comp/src/gb.form.stock/gambas/32/security-low.png create mode 100644 comp/src/gb.form.stock/gambas/32/security-medium.png create mode 100644 comp/src/gb.form.stock/gambas/32/security.png create mode 100644 comp/src/gb.form.stock/gambas/32/select-all.png create mode 100644 comp/src/gb.form.stock/gambas/32/select.png create mode 100644 comp/src/gb.form.stock/gambas/32/server.png create mode 100644 comp/src/gb.form.stock/gambas/32/share.png create mode 100644 comp/src/gb.form.stock/gambas/32/shopping.png create mode 100644 comp/src/gb.form.stock/gambas/32/shortcut.png create mode 100644 comp/src/gb.form.stock/gambas/32/shuffle.png create mode 100644 comp/src/gb.form.stock/gambas/32/shutdown.png create mode 100644 comp/src/gb.form.stock/gambas/32/smartphone.png create mode 100644 comp/src/gb.form.stock/gambas/32/snow.png create mode 100644 comp/src/gb.form.stock/gambas/32/sort-ascent.png create mode 100644 comp/src/gb.form.stock/gambas/32/sort-descent.png create mode 100644 comp/src/gb.form.stock/gambas/32/speaker.png create mode 100644 comp/src/gb.form.stock/gambas/32/spell-check.png create mode 100644 comp/src/gb.form.stock/gambas/32/sport.png create mode 100644 comp/src/gb.form.stock/gambas/32/star.png create mode 100644 comp/src/gb.form.stock/gambas/32/start.png create mode 100644 comp/src/gb.form.stock/gambas/32/statistics.png create mode 100644 comp/src/gb.form.stock/gambas/32/stop.png create mode 100644 comp/src/gb.form.stock/gambas/32/storm.png create mode 100644 comp/src/gb.form.stock/gambas/32/subtitle.png create mode 100644 comp/src/gb.form.stock/gambas/32/sum.png create mode 100644 comp/src/gb.form.stock/gambas/32/sun-cloud.png create mode 100644 comp/src/gb.form.stock/gambas/32/sun.png create mode 100644 comp/src/gb.form.stock/gambas/32/suspend.png create mode 100644 comp/src/gb.form.stock/gambas/32/switch-user.png create mode 100644 comp/src/gb.form.stock/gambas/32/system.png create mode 100644 comp/src/gb.form.stock/gambas/32/tab.png create mode 100644 comp/src/gb.form.stock/gambas/32/table.png create mode 100644 comp/src/gb.form.stock/gambas/32/tablet.png create mode 100644 comp/src/gb.form.stock/gambas/32/tag.png create mode 100644 comp/src/gb.form.stock/gambas/32/taxi.png create mode 100644 comp/src/gb.form.stock/gambas/32/template.png create mode 100644 comp/src/gb.form.stock/gambas/32/terminal.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-baseline.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-bigger.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-bold.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-bottom.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-center.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-fill.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-italic.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-left.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-line-spacing.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-list-order-rtl.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-list-order.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-list.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-lower.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-middle.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-outline.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-right.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-shadow.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-smaller.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-strike.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-sub.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-super.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-top.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-underline.png create mode 100644 comp/src/gb.form.stock/gambas/32/text-upper.png create mode 100644 comp/src/gb.form.stock/gambas/32/text.png create mode 100644 comp/src/gb.form.stock/gambas/32/theme.png create mode 100644 comp/src/gb.form.stock/gambas/32/today.png create mode 100644 comp/src/gb.form.stock/gambas/32/toilet.png create mode 100644 comp/src/gb.form.stock/gambas/32/tools.png create mode 100644 comp/src/gb.form.stock/gambas/32/top.png create mode 100644 comp/src/gb.form.stock/gambas/32/town.png create mode 100644 comp/src/gb.form.stock/gambas/32/traffic.png create mode 100644 comp/src/gb.form.stock/gambas/32/train.png create mode 100644 comp/src/gb.form.stock/gambas/32/transparency.png create mode 100644 comp/src/gb.form.stock/gambas/32/trash-full.png create mode 100644 comp/src/gb.form.stock/gambas/32/trash.png create mode 100644 comp/src/gb.form.stock/gambas/32/truck.png create mode 100644 comp/src/gb.form.stock/gambas/32/uncompress.png create mode 100644 comp/src/gb.form.stock/gambas/32/undo.png create mode 100644 comp/src/gb.form.stock/gambas/32/ungroup.png create mode 100644 comp/src/gb.form.stock/gambas/32/unindent.png create mode 100644 comp/src/gb.form.stock/gambas/32/union.png create mode 100644 comp/src/gb.form.stock/gambas/32/unlock.png create mode 100644 comp/src/gb.form.stock/gambas/32/unselect.png create mode 100644 comp/src/gb.form.stock/gambas/32/up.png create mode 100644 comp/src/gb.form.stock/gambas/32/update.png create mode 100644 comp/src/gb.form.stock/gambas/32/upload.png create mode 100644 comp/src/gb.form.stock/gambas/32/usb.png create mode 100644 comp/src/gb.form.stock/gambas/32/user-group.png create mode 100644 comp/src/gb.form.stock/gambas/32/user.png create mode 100644 comp/src/gb.form.stock/gambas/32/vector.png create mode 100644 comp/src/gb.form.stock/gambas/32/version-control.png create mode 100644 comp/src/gb.form.stock/gambas/32/video.png create mode 100644 comp/src/gb.form.stock/gambas/32/view-compact.png create mode 100644 comp/src/gb.form.stock/gambas/32/view-detail.png create mode 100644 comp/src/gb.form.stock/gambas/32/view-icon.png create mode 100644 comp/src/gb.form.stock/gambas/32/view-normal.png create mode 100644 comp/src/gb.form.stock/gambas/32/view-preview.png create mode 100644 comp/src/gb.form.stock/gambas/32/view-split-h.png create mode 100644 comp/src/gb.form.stock/gambas/32/view-split-v.png create mode 100644 comp/src/gb.form.stock/gambas/32/view-tree.png create mode 100644 comp/src/gb.form.stock/gambas/32/volume-high.png create mode 100644 comp/src/gb.form.stock/gambas/32/volume-low.png create mode 100644 comp/src/gb.form.stock/gambas/32/volume-medium.png create mode 100644 comp/src/gb.form.stock/gambas/32/volume.png create mode 100644 comp/src/gb.form.stock/gambas/32/vpn.png create mode 100644 comp/src/gb.form.stock/gambas/32/walk.png create mode 100644 comp/src/gb.form.stock/gambas/32/warning.png create mode 100644 comp/src/gb.form.stock/gambas/32/watch.png create mode 100644 comp/src/gb.form.stock/gambas/32/webcam.png create mode 100644 comp/src/gb.form.stock/gambas/32/wifi-high.png create mode 100644 comp/src/gb.form.stock/gambas/32/wifi-low.png create mode 100644 comp/src/gb.form.stock/gambas/32/wifi-medium.png create mode 100644 comp/src/gb.form.stock/gambas/32/wifi.png create mode 100644 comp/src/gb.form.stock/gambas/32/window.png create mode 100644 comp/src/gb.form.stock/gambas/32/windows.png create mode 100644 comp/src/gb.form.stock/gambas/32/wizard.png create mode 100644 comp/src/gb.form.stock/gambas/32/worship.png create mode 100644 comp/src/gb.form.stock/gambas/32/wrap.png create mode 100644 comp/src/gb.form.stock/gambas/32/xml.png create mode 100644 comp/src/gb.form.stock/gambas/32/zoom-fit.png create mode 100644 comp/src/gb.form.stock/gambas/32/zoom-in.png create mode 100644 comp/src/gb.form.stock/gambas/32/zoom-normal-rtl.png create mode 100644 comp/src/gb.form.stock/gambas/32/zoom-normal.png create mode 100644 comp/src/gb.form.stock/gambas/32/zoom-out.png create mode 100644 comp/src/gb.form.stock/gambas/32/zoom-width.png create mode 100644 comp/src/gb.form.stock/gambas/app/gambas3.png create mode 120000 comp/src/gb.form.stock/icon.map create mode 100644 comp/src/gb.form.stock/links create mode 100644 comp/src/gb.form.stock/reverse create mode 100644 comp/src/gb.form.terminal/.component create mode 100644 comp/src/gb.form.terminal/.directory create mode 100644 comp/src/gb.form.terminal/.hidden/Konsole keys README.txt create mode 100644 comp/src/gb.form.terminal/.hidden/Konsole keys.txt create mode 100644 comp/src/gb.form.terminal/.hidden/XTerm control sequences.txt create mode 100644 comp/src/gb.form.terminal/.hidden/XtermTests/16colors.sh create mode 100644 comp/src/gb.form.terminal/.hidden/XtermTests/256colors.pl create mode 100644 comp/src/gb.form.terminal/.hidden/XtermTests/256colors2.pl create mode 100644 comp/src/gb.form.terminal/.hidden/XtermTests/88colors.pl create mode 100644 comp/src/gb.form.terminal/.hidden/XtermTests/88colors2.pl create mode 100644 comp/src/gb.form.terminal/.hidden/XtermTests/8colors.sh create mode 100644 comp/src/gb.form.terminal/.hidden/XtermTests/acolors.sh create mode 100644 comp/src/gb.form.terminal/.hidden/XtermTests/doublechars.sh create mode 100644 comp/src/gb.form.terminal/.hidden/XtermTests/dynamic.pl create mode 100644 comp/src/gb.form.terminal/.hidden/XtermTests/dynamic.sh create mode 100644 comp/src/gb.form.terminal/.hidden/XtermTests/dynamic2.sh create mode 100644 comp/src/gb.form.terminal/.hidden/XtermTests/fonts.sh create mode 100644 comp/src/gb.form.terminal/.hidden/XtermTests/paste64.pl create mode 100644 comp/src/gb.form.terminal/.hidden/XtermTests/query-color.pl create mode 100644 comp/src/gb.form.terminal/.hidden/XtermTests/query-fonts.pl create mode 100644 comp/src/gb.form.terminal/.hidden/XtermTests/resize.pl create mode 100644 comp/src/gb.form.terminal/.hidden/XtermTests/resize.sh create mode 100644 comp/src/gb.form.terminal/.hidden/XtermTests/tcapquery.pl create mode 100644 comp/src/gb.form.terminal/.hidden/XtermTests/title.sh create mode 100644 comp/src/gb.form.terminal/.hidden/XtermVT100 create mode 100644 comp/src/gb.form.terminal/.hidden/control/terminalview.png create mode 100644 comp/src/gb.form.terminal/.icon.png create mode 100644 comp/src/gb.form.terminal/.lang/fr.po create mode 100644 comp/src/gb.form.terminal/.lang/it.po create mode 100644 comp/src/gb.form.terminal/.lang/pt_BR.po create mode 100644 comp/src/gb.form.terminal/.lang/ru.po create mode 100644 comp/src/gb.form.terminal/.lang/zh.po create mode 100644 comp/src/gb.form.terminal/.project create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/CTerminalLine.class create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/TerminalAttr.class create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/TerminalFilter.class create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/TerminalFilter_VT100.class create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/TerminalLink.class create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/TerminalScreen.class create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/TerminalView.class create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/test/FOtherTest.class create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/test/FOtherTest.form create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/test/FTestTerminalView.class create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/test/FTestTerminalView.form create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/test/Form1.class create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/test/Form1.form create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/test/MTest.module create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/test/PipeTest.class create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/test/PipeTest.form create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/test/PipedTask.class create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/test/TelNetProtocol.class create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/test/VT100/Attr.class create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/test/VT100/Console.class create mode 100644 comp/src/gb.form.terminal/.src/TerminalView/test/VT100/Main.module create mode 100644 comp/src/gb.form.terminal/brush_dark.png create mode 100644 comp/src/gb.form.terminal/brush_light.png create mode 100644 comp/src/gb.form.terminal/brush_medium.png create mode 100644 comp/src/gb.form/.component create mode 100644 comp/src/gb.form/.directory create mode 100644 comp/src/gb.form/.hidden/CHANGELOG create mode 100644 comp/src/gb.form/.hidden/FailedNewMaskBox.class create mode 100644 comp/src/gb.form/.hidden/control/buttonbox.png create mode 100644 comp/src/gb.form/.hidden/control/colorbutton.png create mode 100644 comp/src/gb.form/.hidden/control/colorchooser.png create mode 100644 comp/src/gb.form/.hidden/control/colorpalette.png create mode 100644 comp/src/gb.form/.hidden/control/datebox.png create mode 100644 comp/src/gb.form/.hidden/control/datechooser.png create mode 100644 comp/src/gb.form/.hidden/control/dirbox.png create mode 100644 comp/src/gb.form/.hidden/control/dirbrowser.png create mode 100644 comp/src/gb.form/.hidden/control/dirchooser.png create mode 100644 comp/src/gb.form/.hidden/control/dirview.png create mode 100644 comp/src/gb.form/.hidden/control/documentview.png create mode 100644 comp/src/gb.form/.hidden/control/expander.png create mode 100644 comp/src/gb.form/.hidden/control/filebox.png create mode 100644 comp/src/gb.form/.hidden/control/filechooser.png create mode 100644 comp/src/gb.form/.hidden/control/fileproperties.png create mode 100644 comp/src/gb.form/.hidden/control/fileview.png create mode 100644 comp/src/gb.form/.hidden/control/fontbox.png create mode 100644 comp/src/gb.form/.hidden/control/fontchooser.png create mode 100644 comp/src/gb.form/.hidden/control/iconpanel.png create mode 100644 comp/src/gb.form/.hidden/control/imageview.png create mode 100644 comp/src/gb.form/.hidden/control/lcdlabel.png create mode 100644 comp/src/gb.form/.hidden/control/listcontainer.png create mode 100644 comp/src/gb.form/.hidden/control/listeditor.png create mode 100644 comp/src/gb.form/.hidden/control/maskbox.png create mode 100644 comp/src/gb.form/.hidden/control/menubutton.png create mode 100644 comp/src/gb.form/.hidden/control/messageview.png create mode 100644 comp/src/gb.form/.hidden/control/sidepanel.png create mode 100644 comp/src/gb.form/.hidden/control/sliderbox.png create mode 100644 comp/src/gb.form/.hidden/control/spinbar.png create mode 100644 comp/src/gb.form/.hidden/control/spinner.png create mode 100644 comp/src/gb.form/.hidden/control/switchbutton.png create mode 100644 comp/src/gb.form/.hidden/control/tableview.png create mode 100644 comp/src/gb.form/.hidden/control/tabpanel.png create mode 100644 comp/src/gb.form/.hidden/control/timebox.png create mode 100644 comp/src/gb.form/.hidden/control/toolpanel.png create mode 100644 comp/src/gb.form/.hidden/control/urllabel.png create mode 100644 comp/src/gb.form/.hidden/control/valuebox.png create mode 100644 comp/src/gb.form/.hidden/control/wizard.png create mode 100644 comp/src/gb.form/.hidden/icon.png create mode 100644 comp/src/gb.form/.icon.png create mode 100644 comp/src/gb.form/.lang/ar.po create mode 100644 comp/src/gb.form/.lang/ca.po create mode 100644 comp/src/gb.form/.lang/cs.po create mode 100644 comp/src/gb.form/.lang/de.po create mode 100644 comp/src/gb.form/.lang/es.po create mode 100644 comp/src/gb.form/.lang/es_ES.po create mode 100644 comp/src/gb.form/.lang/fa.po create mode 100644 comp/src/gb.form/.lang/fr.po create mode 100644 comp/src/gb.form/.lang/it.po create mode 100644 comp/src/gb.form/.lang/ja.po create mode 100644 comp/src/gb.form/.lang/nl.po create mode 100644 comp/src/gb.form/.lang/pt_BR.po create mode 100644 comp/src/gb.form/.lang/ru.po create mode 100644 comp/src/gb.form/.lang/sv.po create mode 100644 comp/src/gb.form/.lang/zh.po create mode 100644 comp/src/gb.form/.lang/zh_TW.po create mode 100644 comp/src/gb.form/.project create mode 100644 comp/src/gb.form/.src/Balloon/Balloon.class create mode 100644 comp/src/gb.form/.src/Balloon/FBalloon.class create mode 100644 comp/src/gb.form/.src/Balloon/FBalloon.form create mode 100644 comp/src/gb.form/.src/Button/ButtonBox.class create mode 100644 comp/src/gb.form/.src/Button/MenuButton.class create mode 100644 comp/src/gb.form/.src/Button/SwitchButton.class create mode 100644 comp/src/gb.form/.src/Color/ColorButton.class create mode 100644 comp/src/gb.form/.src/Color/ColorChooser.class create mode 100644 comp/src/gb.form/.src/Color/ColorPalette.class create mode 100644 comp/src/gb.form/.src/Color/FColorChooser.class create mode 100644 comp/src/gb.form/.src/Color/FColorChooser.form create mode 100644 comp/src/gb.form/.src/Completion.class create mode 100644 comp/src/gb.form/.src/Date/DateBox.class create mode 100644 comp/src/gb.form/.src/Date/DateChooser.class create mode 100644 comp/src/gb.form/.src/Date/FCalendar.class create mode 100644 comp/src/gb.form/.src/Date/FCalendar.form create mode 100644 comp/src/gb.form/.src/Date/TimeBox.class create mode 100644 comp/src/gb.form/.src/Date/_DateChooser_Colors.class create mode 100644 comp/src/gb.form/.src/Date/_DateChooser_Data.class create mode 100644 comp/src/gb.form/.src/Date/_DateChooser_Date.class create mode 100644 comp/src/gb.form/.src/DocumentView/DocumentView.class create mode 100644 comp/src/gb.form/.src/DocumentView/_DocumentItem.class create mode 100644 comp/src/gb.form/.src/DocumentView/_DocumentLayout.class create mode 100644 comp/src/gb.form/.src/Expander/Expander.class create mode 100644 comp/src/gb.form/.src/Expander/FExpander.class create mode 100644 comp/src/gb.form/.src/Expander/FExpander.form create mode 100644 comp/src/gb.form/.src/FInputBox.class create mode 100644 comp/src/gb.form/.src/FInputBox.form create mode 100644 comp/src/gb.form/.src/File/Bookmark.class create mode 100644 comp/src/gb.form/.src/File/Bookmark/CBookmark.class create mode 100644 comp/src/gb.form/.src/File/Bookmark/CBookmarkList.class create mode 100644 comp/src/gb.form/.src/File/Bookmark/FEditBookmark.class create mode 100644 comp/src/gb.form/.src/File/Bookmark/FEditBookmark.form create mode 100644 comp/src/gb.form/.src/File/Bookmarks.class create mode 100644 comp/src/gb.form/.src/File/CTaskPreview.class create mode 100644 comp/src/gb.form/.src/File/Chooser/DirButton.class create mode 100644 comp/src/gb.form/.src/File/Chooser/DirChooser.class create mode 100644 comp/src/gb.form/.src/File/Chooser/FDirChooser.class create mode 100644 comp/src/gb.form/.src/File/Chooser/FDirChooser.form create mode 100644 comp/src/gb.form/.src/File/Chooser/FileChooser.class create mode 100644 comp/src/gb.form/.src/File/DirBox.class create mode 100644 comp/src/gb.form/.src/File/DirBrowser.class create mode 100644 comp/src/gb.form/.src/File/DirCache.class create mode 100644 comp/src/gb.form/.src/File/DirView.class create mode 100644 comp/src/gb.form/.src/File/FileBox.class create mode 100644 comp/src/gb.form/.src/File/FileView.class create mode 100644 comp/src/gb.form/.src/File/Properties/CTaskDirSize.class create mode 100644 comp/src/gb.form/.src/File/Properties/FFileProperties.class create mode 100644 comp/src/gb.form/.src/File/Properties/FFileProperties.form create mode 100644 comp/src/gb.form/.src/File/Properties/FileProperties.class create mode 100644 comp/src/gb.form/.src/File/Properties/_FilePropertiesData.class create mode 100644 comp/src/gb.form/.src/FileCompletion.class create mode 100644 comp/src/gb.form/.src/Font/FFontChooser.class create mode 100644 comp/src/gb.form/.src/Font/FFontChooser.form create mode 100644 comp/src/gb.form/.src/Font/FontBox.class create mode 100644 comp/src/gb.form/.src/Font/FontCacheTask.class create mode 100644 comp/src/gb.form/.src/Font/FontChooser.class create mode 100644 comp/src/gb.form/.src/Help.module create mode 100644 comp/src/gb.form/.src/IconPanel/IconPanel.class create mode 100644 comp/src/gb.form/.src/IconPanel/_IconPanelContainer.class create mode 100644 comp/src/gb.form/.src/ImageView/ImageView.class create mode 100644 comp/src/gb.form/.src/InputBox.class create mode 100644 comp/src/gb.form/.src/LCDLabel.class create mode 100644 comp/src/gb.form/.src/ListContainer.class create mode 100644 comp/src/gb.form/.src/ListEditor/FListEditor.class create mode 100644 comp/src/gb.form/.src/ListEditor/FListEditor.form create mode 100644 comp/src/gb.form/.src/ListEditor/ListEditor.class create mode 100644 comp/src/gb.form/.src/Main.module create mode 100644 comp/src/gb.form/.src/MaskBox.class create mode 100644 comp/src/gb.form/.src/MaskBox2.class create mode 100644 comp/src/gb.form/.src/Message/FMessage.class create mode 100644 comp/src/gb.form/.src/Message/FMessage.form create mode 100644 comp/src/gb.form/.src/Message/Message.module create mode 100644 comp/src/gb.form/.src/Message/MessageView.class create mode 100644 comp/src/gb.form/.src/MessageLabel.class create mode 100644 comp/src/gb.form/.src/MultiContainer/_MultiContainer.class create mode 100644 comp/src/gb.form/.src/MultiContainer/_MultiContainerTab.class create mode 100644 comp/src/gb.form/.src/SidePanel/FSidePanel.class create mode 100644 comp/src/gb.form/.src/SidePanel/FSidePanel.form create mode 100644 comp/src/gb.form/.src/SidePanel/SidePanel.class create mode 100644 comp/src/gb.form/.src/SliderBox.class create mode 100644 comp/src/gb.form/.src/SpinBar/SpinBar.class create mode 100644 comp/src/gb.form/.src/Spinner.class create mode 100644 comp/src/gb.form/.src/Stock.class create mode 100644 comp/src/gb.form/.src/TabPanel/TabPanel.class create mode 100644 comp/src/gb.form/.src/TabPanel/_TabPanelButton.class create mode 100644 comp/src/gb.form/.src/TabPanel/_TabPanelContainer.class create mode 100644 comp/src/gb.form/.src/TableView.class create mode 100644 comp/src/gb.form/.src/Test/FBugFileView.class create mode 100644 comp/src/gb.form/.src/Test/FBugFileView.form create mode 100644 comp/src/gb.form/.src/Test/FDocumentView.class create mode 100644 comp/src/gb.form/.src/Test/FDocumentView.form create mode 100644 comp/src/gb.form/.src/Test/FIconPanel.class create mode 100644 comp/src/gb.form/.src/Test/FIconPanel.form create mode 100644 comp/src/gb.form/.src/Test/FIconView.class create mode 100644 comp/src/gb.form/.src/Test/FIconView.form create mode 100644 comp/src/gb.form/.src/Test/FLCDLabel.class create mode 100644 comp/src/gb.form/.src/Test/FLCDLabel.form create mode 100644 comp/src/gb.form/.src/Test/FMain.class create mode 100644 comp/src/gb.form/.src/Test/FMain.form create mode 100644 comp/src/gb.form/.src/Test/FSpinBar.class create mode 100644 comp/src/gb.form/.src/Test/FSpinBar.form create mode 100644 comp/src/gb.form/.src/Test/FTestArrangement.class create mode 100644 comp/src/gb.form/.src/Test/FTestArrangement.form create mode 100644 comp/src/gb.form/.src/Test/FTestBalloon.class create mode 100644 comp/src/gb.form/.src/Test/FTestBalloon.form create mode 100644 comp/src/gb.form/.src/Test/FTestColorChooser.class create mode 100644 comp/src/gb.form/.src/Test/FTestColorChooser.form create mode 100644 comp/src/gb.form/.src/Test/FTestCompletion.class create mode 100644 comp/src/gb.form/.src/Test/FTestCompletion.form create mode 100644 comp/src/gb.form/.src/Test/FTestDateChooser.class create mode 100644 comp/src/gb.form/.src/Test/FTestDateChooser.form create mode 100644 comp/src/gb.form/.src/Test/FTestDirBrowser.class create mode 100644 comp/src/gb.form/.src/Test/FTestDirBrowser.form create mode 100644 comp/src/gb.form/.src/Test/FTestExpander.class create mode 100644 comp/src/gb.form/.src/Test/FTestExpander.form create mode 100644 comp/src/gb.form/.src/Test/FTestFileBox.class create mode 100644 comp/src/gb.form/.src/Test/FTestFileBox.form create mode 100644 comp/src/gb.form/.src/Test/FTestFileChooser.class create mode 100644 comp/src/gb.form/.src/Test/FTestFileChooser.form create mode 100644 comp/src/gb.form/.src/Test/FTestFileView.class create mode 100644 comp/src/gb.form/.src/Test/FTestFileView.form create mode 100644 comp/src/gb.form/.src/Test/FTestFontBox.class create mode 100644 comp/src/gb.form/.src/Test/FTestFontBox.form create mode 100644 comp/src/gb.form/.src/Test/FTestFontChooser.class create mode 100644 comp/src/gb.form/.src/Test/FTestFontChooser.form create mode 100644 comp/src/gb.form/.src/Test/FTestImageView.class create mode 100644 comp/src/gb.form/.src/Test/FTestImageView.form create mode 100644 comp/src/gb.form/.src/Test/FTestListEditor.class create mode 100644 comp/src/gb.form/.src/Test/FTestListEditor.form create mode 100644 comp/src/gb.form/.src/Test/FTestMaskBox.class create mode 100644 comp/src/gb.form/.src/Test/FTestMaskBox.form create mode 100644 comp/src/gb.form/.src/Test/FTestMenuButton.class create mode 100644 comp/src/gb.form/.src/Test/FTestMenuButton.form create mode 100644 comp/src/gb.form/.src/Test/FTestMessageView.class create mode 100644 comp/src/gb.form/.src/Test/FTestMessageView.form create mode 100644 comp/src/gb.form/.src/Test/FTestSidePanel.class create mode 100644 comp/src/gb.form/.src/Test/FTestSidePanel.form create mode 100644 comp/src/gb.form/.src/Test/FTestSpinner.class create mode 100644 comp/src/gb.form/.src/Test/FTestSpinner.form create mode 100644 comp/src/gb.form/.src/Test/FTestSwitchButton.class create mode 100644 comp/src/gb.form/.src/Test/FTestSwitchButton.form create mode 100644 comp/src/gb.form/.src/Test/FTestTabPanel.class create mode 100644 comp/src/gb.form/.src/Test/FTestTabPanel.form create mode 100644 comp/src/gb.form/.src/Test/FTestTableView.class create mode 100644 comp/src/gb.form/.src/Test/FTestTableView.form create mode 100644 comp/src/gb.form/.src/Test/FTestTimeBox.class create mode 100644 comp/src/gb.form/.src/Test/FTestTimeBox.form create mode 100644 comp/src/gb.form/.src/Test/FTestToolPanel.class create mode 100644 comp/src/gb.form/.src/Test/FTestToolPanel.form create mode 100644 comp/src/gb.form/.src/Test/FTestValueBox.class create mode 100644 comp/src/gb.form/.src/Test/FTestValueBox.form create mode 100644 comp/src/gb.form/.src/Test/FTestWizard.class create mode 100644 comp/src/gb.form/.src/Test/FTestWizard.form create mode 100644 comp/src/gb.form/.src/Test/FWiki.class create mode 100644 comp/src/gb.form/.src/Test/FWiki.form create mode 100644 comp/src/gb.form/.src/Test/Form1.class create mode 100644 comp/src/gb.form/.src/Test/Form1.form create mode 100644 comp/src/gb.form/.src/Test/Form2.class create mode 100644 comp/src/gb.form/.src/Test/Form2.form create mode 100644 comp/src/gb.form/.src/Test/Form3.class create mode 100644 comp/src/gb.form/.src/Test/Form3.form create mode 100644 comp/src/gb.form/.src/Test/Form4.class create mode 100644 comp/src/gb.form/.src/Test/Form4.form create mode 100644 comp/src/gb.form/.src/TestControl.class create mode 100644 comp/src/gb.form/.src/ToolPanel/FToolBar.class create mode 100644 comp/src/gb.form/.src/ToolPanel/FToolBar.form create mode 100644 comp/src/gb.form/.src/ToolPanel/ToolPanel.class create mode 100644 comp/src/gb.form/.src/ToolPanel/_ToolPanelContainer.class create mode 100644 comp/src/gb.form/.src/URLLabel.class create mode 100644 comp/src/gb.form/.src/ValueBox.class create mode 100644 comp/src/gb.form/.src/Wizard/FWizard.class create mode 100644 comp/src/gb.form/.src/Wizard/FWizard.form create mode 100644 comp/src/gb.form/.src/Wizard/Wizard.class create mode 100644 comp/src/gb.form/.src/Wizard/_WizardContainer.class create mode 100644 comp/src/gb.form/img/16/cross.png create mode 100644 comp/src/gb.form/img/32/filter-menu.png create mode 100644 comp/src/gb.form/img/32/filter.png create mode 100644 comp/src/gb.form/img/32/warning.png create mode 100644 comp/src/gb.form/img/8/new/side-bottom-void.png create mode 100644 comp/src/gb.form/img/8/new/side-bottom.png create mode 100644 comp/src/gb.form/img/8/new/side-left.png create mode 100644 comp/src/gb.form/img/8/new/side-right-void.png create mode 100644 comp/src/gb.form/img/8/new/side-right.png create mode 100644 comp/src/gb.form/img/8/new/side-top.png create mode 100644 comp/src/gb.form/img/8/side-bottom-void.png create mode 100644 comp/src/gb.form/img/8/side-bottom.png create mode 100644 comp/src/gb.form/img/8/side-left.png create mode 100644 comp/src/gb.form/img/8/side-right-void.png create mode 100644 comp/src/gb.form/img/8/side-right.png create mode 100644 comp/src/gb.form/img/8/side-top.png create mode 100644 comp/src/gb.form/img/colormap-snap.png create mode 100644 comp/src/gb.form/img/colormap.png create mode 100644 comp/src/gb.form/img/cross.png create mode 120000 comp/src/gb.form/img/emblem/lock.png create mode 100644 comp/src/gb.form/img/handle-h.png create mode 100644 comp/src/gb.form/img/handle-v.png create mode 100644 comp/src/gb.form/img/line.png create mode 100644 comp/src/gb.form/img/lock.png create mode 100644 comp/src/gb.form/img/page.png create mode 100644 comp/src/gb.form/img/round.png create mode 100644 comp/src/gb.form/img/select-dark.png create mode 100644 comp/src/gb.form/img/select.png create mode 100644 comp/src/gb.form/img/unknown.svg create mode 100644 comp/src/gb.form/img/valuemap-snap.png create mode 100644 comp/src/gb.form/img/valuemap.png create mode 100644 comp/src/gb.form/map/icon.map create mode 100644 comp/src/gb.form/stock/16/gambas.png create mode 100644 comp/src/gb.form/stock/16/gnu.png create mode 100644 comp/src/gb.form/stock/16/linux.png create mode 100644 comp/src/gb.form/stock/32/gambas.png create mode 100644 comp/src/gb.form/stock/32/gnu.png create mode 100644 comp/src/gb.form/stock/32/linux.png create mode 100644 comp/src/gb.form/stock/scalable/gambas.svg create mode 100644 comp/src/gb.form/stock/scalable/gnu.svg create mode 100644 comp/src/gb.form/stock/scalable/linux.svg create mode 100644 comp/src/gb.gui.base/.component create mode 100644 comp/src/gb.gui.base/.directory create mode 100644 comp/src/gb.gui.base/.hidden/window.png create mode 100644 comp/src/gb.gui.base/.icon.png create mode 100644 comp/src/gb.gui.base/.lang/de.po create mode 100644 comp/src/gb.gui.base/.lang/es.po create mode 100644 comp/src/gb.gui.base/.lang/fr.po create mode 100644 comp/src/gb.gui.base/.lang/it.po create mode 100644 comp/src/gb.gui.base/.lang/zh.po create mode 100644 comp/src/gb.gui.base/.project create mode 100644 comp/src/gb.gui.base/.src/Action.class create mode 100644 comp/src/gb.gui.base/.src/Border.class create mode 100644 comp/src/gb.gui.base/.src/Clipboard.class create mode 100644 comp/src/gb.gui.base/.src/ComboBox/ComboBox.class create mode 100644 comp/src/gb.gui.base/.src/ComboBox/FComboBoxPopup.class create mode 100644 comp/src/gb.gui.base/.src/ComboBox/FComboBoxPopup.form create mode 100644 comp/src/gb.gui.base/.src/ComboBox/_ComboBox_Item.class create mode 100644 comp/src/gb.gui.base/.src/ComboBox/_ComboBox_Selection.class create mode 100644 comp/src/gb.gui.base/.src/Desktop.class create mode 100644 comp/src/gb.gui.base/.src/Drag.class create mode 100644 comp/src/gb.gui.base/.src/Draw.module create mode 100644 comp/src/gb.gui.base/.src/Fill.class create mode 100644 comp/src/gb.gui.base/.src/Frame.class create mode 100644 comp/src/gb.gui.base/.src/GridView/GridView.class create mode 100644 comp/src/gb.gui.base/.src/GridView/GridViewSelection.class create mode 100644 comp/src/gb.gui.base/.src/GridView/_GridView_Cell.class create mode 100644 comp/src/gb.gui.base/.src/GridView/_GridView_Column.class create mode 100644 comp/src/gb.gui.base/.src/GridView/_GridView_Columns.class create mode 100644 comp/src/gb.gui.base/.src/GridView/_GridView_Data.class create mode 100644 comp/src/gb.gui.base/.src/GridView/_GridView_Row.class create mode 100644 comp/src/gb.gui.base/.src/GridView/_GridView_Rows.class create mode 100644 comp/src/gb.gui.base/.src/IconView/IconView.class create mode 100644 comp/src/gb.gui.base/.src/IconView/_IconView_Item.class create mode 100644 comp/src/gb.gui.base/.src/Label.class create mode 100644 comp/src/gb.gui.base/.src/Line.class create mode 100644 comp/src/gb.gui.base/.src/ListBox/ListBox.class create mode 100644 comp/src/gb.gui.base/.src/ListBox/_ListBox_Item.class create mode 100644 comp/src/gb.gui.base/.src/Main.module create mode 100644 comp/src/gb.gui.base/.src/Message/FMessage.class create mode 100644 comp/src/gb.gui.base/.src/Message/FMessage.form create mode 100644 comp/src/gb.gui.base/.src/Message/Message.class create mode 100644 comp/src/gb.gui.base/.src/MovieBox.class create mode 100644 comp/src/gb.gui.base/.src/Paint.class create mode 100644 comp/src/gb.gui.base/.src/Picture.class create mode 100644 comp/src/gb.gui.base/.src/PictureBox.class create mode 100644 comp/src/gb.gui.base/.src/ProgressBar.class create mode 100644 comp/src/gb.gui.base/.src/ScrollArea.class create mode 100644 comp/src/gb.gui.base/.src/ScrollView.class create mode 100644 comp/src/gb.gui.base/.src/Separator.class create mode 100644 comp/src/gb.gui.base/.src/Shortcut.class create mode 100644 comp/src/gb.gui.base/.src/SpinBox.class create mode 100644 comp/src/gb.gui.base/.src/Split/HSplit.class create mode 100644 comp/src/gb.gui.base/.src/Split/Splitter.class create mode 100644 comp/src/gb.gui.base/.src/Split/VSplit.class create mode 100644 comp/src/gb.gui.base/.src/Spring.class create mode 100644 comp/src/gb.gui.base/.src/Test/FBorder.class create mode 100644 comp/src/gb.gui.base/.src/Test/FBorder.form create mode 100644 comp/src/gb.gui.base/.src/Test/FListBox.class create mode 100644 comp/src/gb.gui.base/.src/Test/FListBox.form create mode 100644 comp/src/gb.gui.base/.src/Test/FMain.class create mode 100644 comp/src/gb.gui.base/.src/Test/FMain.form create mode 100644 comp/src/gb.gui.base/.src/Test/FPaint.class create mode 100644 comp/src/gb.gui.base/.src/Test/FPaint.form create mode 100644 comp/src/gb.gui.base/.src/Test/FPictureBox.class create mode 100644 comp/src/gb.gui.base/.src/Test/FPictureBox.form create mode 100644 comp/src/gb.gui.base/.src/Test/FRightToLeft.class create mode 100644 comp/src/gb.gui.base/.src/Test/FRightToLeft.form create mode 100644 comp/src/gb.gui.base/.src/Test/FScrollArea.class create mode 100644 comp/src/gb.gui.base/.src/Test/FScrollArea.form create mode 100644 comp/src/gb.gui.base/.src/Test/FTestClipping.class create mode 100644 comp/src/gb.gui.base/.src/Test/FTestClipping.form create mode 100644 comp/src/gb.gui.base/.src/Test/FTestCombo.class create mode 100644 comp/src/gb.gui.base/.src/Test/FTestCombo.form create mode 100644 comp/src/gb.gui.base/.src/Test/FTestFrame.class create mode 100644 comp/src/gb.gui.base/.src/Test/FTestFrame.form create mode 100644 comp/src/gb.gui.base/.src/Test/FTestGridView.class create mode 100644 comp/src/gb.gui.base/.src/Test/FTestGridView.form create mode 100644 comp/src/gb.gui.base/.src/Test/FTestGridViewRtl.class create mode 100644 comp/src/gb.gui.base/.src/Test/FTestGridViewRtl.form create mode 100644 comp/src/gb.gui.base/.src/Test/FTestIconView.class create mode 100644 comp/src/gb.gui.base/.src/Test/FTestIconView.form create mode 100644 comp/src/gb.gui.base/.src/Test/FTestLabel.class create mode 100644 comp/src/gb.gui.base/.src/Test/FTestLabel.form create mode 100644 comp/src/gb.gui.base/.src/Test/FTestListView.class create mode 100644 comp/src/gb.gui.base/.src/Test/FTestListView.form create mode 100644 comp/src/gb.gui.base/.src/Test/FTestMouseWheel.class create mode 100644 comp/src/gb.gui.base/.src/Test/FTestMouseWheel.form create mode 100644 comp/src/gb.gui.base/.src/Test/FTestMyCombo.class create mode 100644 comp/src/gb.gui.base/.src/Test/FTestMyCombo.form create mode 100644 comp/src/gb.gui.base/.src/Test/FTestProgressBar.class create mode 100644 comp/src/gb.gui.base/.src/Test/FTestProgressBar.form create mode 100644 comp/src/gb.gui.base/.src/Test/FTestSpinBox.class create mode 100644 comp/src/gb.gui.base/.src/Test/FTestSpinBox.form create mode 100644 comp/src/gb.gui.base/.src/Test/FTestSplit.class create mode 100644 comp/src/gb.gui.base/.src/Test/FTestSplit.form create mode 100644 comp/src/gb.gui.base/.src/Test/FTestTreeView.class create mode 100644 comp/src/gb.gui.base/.src/Test/FTestTreeView.form create mode 100644 comp/src/gb.gui.base/.src/Test/FTestTreeViewRtl.class create mode 100644 comp/src/gb.gui.base/.src/Test/FTestTreeViewRtl.form create mode 100644 comp/src/gb.gui.base/.src/Test/FileView/CTaskPreview.class create mode 100644 comp/src/gb.gui.base/.src/Test/FileView/DirCache.class create mode 100644 comp/src/gb.gui.base/.src/Test/FileView/FTestFileView.class create mode 100644 comp/src/gb.gui.base/.src/Test/FileView/FTestFileView.form create mode 100644 comp/src/gb.gui.base/.src/Test/FileView/FileView.class create mode 100644 comp/src/gb.gui.base/.src/Test/FileView/Help.module create mode 100644 comp/src/gb.gui.base/.src/Test/TestMessage.module create mode 100644 comp/src/gb.gui.base/.src/TestCursor.class create mode 100644 comp/src/gb.gui.base/.src/TextLabel.class create mode 100644 comp/src/gb.gui.base/.src/TreeView/ColumnView.class create mode 100644 comp/src/gb.gui.base/.src/TreeView/ListView.class create mode 100644 comp/src/gb.gui.base/.src/TreeView/RenameBox.class create mode 100644 comp/src/gb.gui.base/.src/TreeView/TreeView.class create mode 100644 comp/src/gb.gui.base/.src/TreeView/TreeViewSelection.class create mode 100644 comp/src/gb.gui.base/.src/TreeView/_ColumnView_Columns.class create mode 100644 comp/src/gb.gui.base/.src/TreeView/_TreeView.class create mode 100644 comp/src/gb.gui.base/.src/TreeView/_TreeView_Item.class create mode 100644 comp/src/gb.gui.base/.src/_Draw_Clip.class create mode 100644 comp/src/gb.gui.base/.src/_Draw_Style.class create mode 100644 comp/src/gb.gui.base/.src/_Gui.class create mode 100644 comp/src/gb.gui.base/broken.svg create mode 120000 comp/src/gb.gui.base/message/delete.png create mode 120000 comp/src/gb.gui.base/message/error.png create mode 120000 comp/src/gb.gui.base/message/info.png create mode 120000 comp/src/gb.gui.base/message/question.png create mode 120000 comp/src/gb.gui.base/message/warning.png create mode 120000 comp/src/gb.gui.base/moviebox.png create mode 100644 comp/src/gb.gui.base/pattern/10.png create mode 100644 comp/src/gb.gui.base/pattern/11.png create mode 100644 comp/src/gb.gui.base/pattern/12.png create mode 100644 comp/src/gb.gui.base/pattern/13.png create mode 100644 comp/src/gb.gui.base/pattern/14.png create mode 100644 comp/src/gb.gui.base/pattern/2.png create mode 100644 comp/src/gb.gui.base/pattern/3.png create mode 100644 comp/src/gb.gui.base/pattern/4.png create mode 100644 comp/src/gb.gui.base/pattern/5.png create mode 100644 comp/src/gb.gui.base/pattern/6.png create mode 100644 comp/src/gb.gui.base/pattern/7.png create mode 100644 comp/src/gb.gui.base/pattern/8.png create mode 100644 comp/src/gb.gui.base/pattern/9.png create mode 120000 comp/src/gb.gui.base/picturebox.png create mode 100644 comp/src/gb.gui.base/spinbox/minus.png create mode 100644 comp/src/gb.gui.base/spinbox/plus.png create mode 100644 comp/src/gb.logging/.component create mode 100644 comp/src/gb.logging/.directory create mode 100644 comp/src/gb.logging/.icon.png create mode 100644 comp/src/gb.logging/.project create mode 100644 comp/src/gb.logging/.src/ComplexLogger.class create mode 100644 comp/src/gb.logging/.src/ConsoleHandler.class create mode 100644 comp/src/gb.logging/.src/FileHandler.class create mode 100644 comp/src/gb.logging/.src/Formatter.module create mode 100644 comp/src/gb.logging/.src/LogHandler.class create mode 100644 comp/src/gb.logging/.src/LogLevel.module create mode 100644 comp/src/gb.logging/.src/LogRotator.module create mode 100644 comp/src/gb.logging/.src/Logger.class create mode 100644 comp/src/gb.logging/.src/MTest.module create mode 100644 comp/src/gb.map/.component create mode 100644 comp/src/gb.map/.connection/Connection1.connection create mode 100644 comp/src/gb.map/.directory create mode 100644 comp/src/gb.map/.hidden/control/mapview.png create mode 100644 comp/src/gb.map/.icon.png create mode 100644 comp/src/gb.map/.project create mode 100644 comp/src/gb.map/.src/FCarto.class create mode 100644 comp/src/gb.map/.src/FCarto.form create mode 100644 comp/src/gb.map/.src/Map.class create mode 100644 comp/src/gb.map/.src/MapView.class create mode 100644 comp/src/gb.map/.src/Shapes/_MapShapeItem.class create mode 100644 comp/src/gb.map/.src/Shapes/_ShapeItem.class create mode 100644 comp/src/gb.map/.src/Sprite.class create mode 100644 comp/src/gb.map/.src/Tests/FMain.class create mode 100644 comp/src/gb.map/.src/Tests/FMain.form create mode 100644 comp/src/gb.map/.src/Tests/FTestWmts.class create mode 100644 comp/src/gb.map/.src/Tests/FTestWmts.form create mode 100644 comp/src/gb.map/.src/Tests/Form1.class create mode 100644 comp/src/gb.map/.src/Tests/Form1.form create mode 100644 comp/src/gb.map/.src/Tests/Form2.class create mode 100644 comp/src/gb.map/.src/Tests/Form2.form create mode 100644 comp/src/gb.map/.src/Tests/Form3.class create mode 100644 comp/src/gb.map/.src/Tests/Form3.form create mode 100644 comp/src/gb.map/.src/Tests/Form4.class create mode 100644 comp/src/gb.map/.src/Tests/Form4.form create mode 100644 comp/src/gb.map/.src/Tests/Form5.class create mode 100644 comp/src/gb.map/.src/Tests/Form5.form create mode 100644 comp/src/gb.map/.src/Tests/Form6.class create mode 100644 comp/src/gb.map/.src/Tests/Form6.form create mode 100644 comp/src/gb.map/.src/Tests/Form7.class create mode 100644 comp/src/gb.map/.src/Tests/Form7.form create mode 100644 comp/src/gb.map/.src/Tests/MMain.module create mode 100644 comp/src/gb.map/.src/Tests/_BalloonLayer.class create mode 100644 comp/src/gb.map/.src/Tools/Geo.module create mode 100644 comp/src/gb.map/.src/Tools/MyPaint.class create mode 100644 comp/src/gb.map/.src/Tools/Proj.class create mode 100644 comp/src/gb.map/.src/Tools/_MapProxy.class create mode 100644 comp/src/gb.map/.src/Types/MapBounds.class create mode 100644 comp/src/gb.map/.src/Types/MapPoint.class create mode 100644 comp/src/gb.map/.src/Types/TileSource.module create mode 100644 comp/src/gb.map/.src/Types/_Tile.class create mode 100644 comp/src/gb.map/.src/_MapLayer.class create mode 100644 comp/src/gb.map/.src/_MapShape.class create mode 100644 comp/src/gb.map/.src/_MapTile.class create mode 100644 comp/src/gb.map/.src/_ViewLayer.class create mode 100644 comp/src/gb.map/Text1 create mode 100644 comp/src/gb.map/bar.png create mode 100644 comp/src/gb.map/cursor.png create mode 100644 comp/src/gb.map/minus.png create mode 100644 comp/src/gb.map/plus.png create mode 100644 comp/src/gb.map/point.png create mode 100644 comp/src/gb.map/pointsparcelle create mode 100644 comp/src/gb.markdown/.component create mode 100644 comp/src/gb.markdown/.directory create mode 100644 comp/src/gb.markdown/.icon.png create mode 100644 comp/src/gb.markdown/.project create mode 100644 comp/src/gb.markdown/.src/MTest.module create mode 100644 comp/src/gb.markdown/.src/Markdown.class create mode 100644 comp/src/gb.markdown/.src/MarkdownLink.class create mode 100644 comp/src/gb.markdown/.src/Markup.module create mode 100644 comp/src/gb.markdown/.src/TMarkdown.test create mode 100644 comp/src/gb.markdown/.test create mode 100644 comp/src/gb.markdown/test.txt create mode 100644 comp/src/gb.markdown/test2.txt create mode 100644 comp/src/gb.markdown/test3.txt create mode 100644 comp/src/gb.media.form/.component create mode 100644 comp/src/gb.media.form/.directory create mode 100644 comp/src/gb.media.form/.hidden/control/mediaview.png create mode 100644 comp/src/gb.media.form/.icon.png create mode 100644 comp/src/gb.media.form/.project create mode 100644 comp/src/gb.media.form/.src/FMediaPlayer.class create mode 100644 comp/src/gb.media.form/.src/FMediaPlayer.form create mode 100644 comp/src/gb.media.form/.src/FTest.class create mode 100644 comp/src/gb.media.form/.src/FTest.form create mode 100644 comp/src/gb.media.form/.src/MediaView.class create mode 100644 comp/src/gb.memcached/.component create mode 100644 comp/src/gb.memcached/.directory create mode 100644 comp/src/gb.memcached/.icon.png create mode 100644 comp/src/gb.memcached/.project create mode 100644 comp/src/gb.memcached/.src/FMain.class create mode 100644 comp/src/gb.memcached/.src/FMain.form create mode 100644 comp/src/gb.memcached/.src/Main.module create mode 100644 comp/src/gb.memcached/.src/Memcached.class create mode 100644 comp/src/gb.memcached/.src/_Memcached_Key.class create mode 100644 comp/src/gb.mysql/.component create mode 100644 comp/src/gb.mysql/.directory create mode 100644 comp/src/gb.mysql/.icon.png create mode 100644 comp/src/gb.mysql/.lang/es.po create mode 100644 comp/src/gb.mysql/.project create mode 100644 comp/src/gb.mysql/.src/Connection.class create mode 100644 comp/src/gb.mysql/.src/DB.class create mode 100644 comp/src/gb.mysql/.src/_DataBase.class create mode 100644 comp/src/gb.mysql/.src/_DataTypes.class create mode 100644 comp/src/gb.mysql/.src/_Event.class create mode 100644 comp/src/gb.mysql/.src/_Field.class create mode 100644 comp/src/gb.mysql/.src/_FieldEspecifications.class create mode 100644 comp/src/gb.mysql/.src/_Index.class create mode 100644 comp/src/gb.mysql/.src/_MySQL.class create mode 100644 comp/src/gb.mysql/.src/_Result.class create mode 100644 comp/src/gb.mysql/.src/_Routines.class create mode 100644 comp/src/gb.mysql/.src/_Table.class create mode 100644 comp/src/gb.mysql/.src/_TableMaintenance.class create mode 100644 comp/src/gb.mysql/.src/_Trigger.class create mode 100644 comp/src/gb.mysql/.src/_User.class create mode 100644 comp/src/gb.mysql/.src/_Version.class create mode 100644 comp/src/gb.mysql/.src/_View.class create mode 100644 comp/src/gb.mysql/.src/modMain.module create mode 100644 comp/src/gb.mysql/logo.png create mode 100644 comp/src/gb.net.pop3/.component create mode 100644 comp/src/gb.net.pop3/.directory create mode 100644 comp/src/gb.net.pop3/.hidden/control/pop3client.png create mode 100644 comp/src/gb.net.pop3/.icon.png create mode 100644 comp/src/gb.net.pop3/.lang/cs.po create mode 100644 comp/src/gb.net.pop3/.lang/es.po create mode 100644 comp/src/gb.net.pop3/.lang/es_ES.po create mode 100644 comp/src/gb.net.pop3/.lang/it.po create mode 100644 comp/src/gb.net.pop3/.lang/nl.po create mode 100644 comp/src/gb.net.pop3/.lang/ru.po create mode 100644 comp/src/gb.net.pop3/.lang/zh.po create mode 100644 comp/src/gb.net.pop3/.project create mode 100644 comp/src/gb.net.pop3/.src/MTest.module create mode 100644 comp/src/gb.net.pop3/.src/Net.class create mode 100644 comp/src/gb.net.pop3/.src/POPClient.class create mode 100644 comp/src/gb.net.pop3/.src/Pop3Client.class create mode 100644 comp/src/gb.net.pop3/.src/SSLClient.class create mode 100644 comp/src/gb.net.pop3/.src/TCPClient.class create mode 100644 comp/src/gb.net.pop3/.src/_Pop3Client_Message.class create mode 100644 comp/src/gb.net.smtp/.component create mode 100644 comp/src/gb.net.smtp/.directory create mode 100644 comp/src/gb.net.smtp/.hidden/control/smtpclient.png create mode 100644 comp/src/gb.net.smtp/.icon.png create mode 100644 comp/src/gb.net.smtp/.project create mode 100644 comp/src/gb.net.smtp/.src/Encode.module create mode 100644 comp/src/gb.net.smtp/.src/Main.module create mode 100644 comp/src/gb.net.smtp/.src/Net.class create mode 100644 comp/src/gb.net.smtp/.src/SmtpClient.class create mode 100644 comp/src/gb.net.smtp/.src/SmtpPart.class create mode 100644 comp/src/gb.net.smtp/.src/SmtpSession.class create mode 100644 comp/src/gb.net.smtp/.src/SslSession.class create mode 100644 comp/src/gb.net.smtp/.src/TcpSession.class create mode 100644 comp/src/gb.net.smtp/.src/TlsSession.class create mode 100644 comp/src/gb.report/.component create mode 100644 comp/src/gb.report/.connection/Connection1.connection create mode 100644 comp/src/gb.report/.connection/Connection2.connection create mode 100644 comp/src/gb.report/.connection/MainConn.connection create mode 100644 comp/src/gb.report/.dir_icon.png create mode 100644 comp/src/gb.report/.directory create mode 100644 comp/src/gb.report/.hidden/control/reportdrawingarea.png create mode 100644 comp/src/gb.report/.hidden/control/reportgridview.png create mode 100644 comp/src/gb.report/.hidden/control/reporthbox.png create mode 100644 comp/src/gb.report/.hidden/control/reportimage.png create mode 100644 comp/src/gb.report/.hidden/control/reportlabel.png create mode 100644 comp/src/gb.report/.hidden/control/reportline.png create mode 100644 comp/src/gb.report/.hidden/control/reportpagebreak.png create mode 100644 comp/src/gb.report/.hidden/control/reportpanel.png create mode 100644 comp/src/gb.report/.hidden/control/reportsvgimage.png create mode 100644 comp/src/gb.report/.hidden/control/reporttextlabel.png create mode 100644 comp/src/gb.report/.hidden/control/reportvbox.png create mode 100644 comp/src/gb.report/.hidden/control/reportview.png create mode 100644 comp/src/gb.report/.hidden/control/reportvpanel.png create mode 100644 comp/src/gb.report/.icon.png create mode 100644 comp/src/gb.report/.lang/ca.po create mode 100644 comp/src/gb.report/.lang/cs.po create mode 100644 comp/src/gb.report/.lang/es.po create mode 100644 comp/src/gb.report/.lang/es_ES.po create mode 100644 comp/src/gb.report/.lang/fr.po create mode 100644 comp/src/gb.report/.lang/nl.po create mode 100644 comp/src/gb.report/.lang/ru.po create mode 100644 comp/src/gb.report/.lang/zh.po create mode 100644 comp/src/gb.report/.project create mode 100644 comp/src/gb.report/.src/Borders/ReportBorder.class create mode 100644 comp/src/gb.report/.src/Borders/_ReportBorderSide.class create mode 100644 comp/src/gb.report/.src/Borders/_ReportRoundCorner.class create mode 100644 comp/src/gb.report/.src/BoxShadow/FReportBoxEditor.class create mode 100644 comp/src/gb.report/.src/BoxShadow/FReportBoxEditor.form create mode 100644 comp/src/gb.report/.src/BoxShadow/ReportBoxShadow.class create mode 100644 comp/src/gb.report/.src/BoxShadow/_ReportBoxShadow.class create mode 100644 comp/src/gb.report/.src/Brush/ReportBrush.class create mode 100644 comp/src/gb.report/.src/Controls/ReportControl.class create mode 100644 comp/src/gb.report/.src/MainTools/MReport.module create mode 100644 comp/src/gb.report/.src/MainTools/ReportUnits.module create mode 100644 comp/src/gb.report/.src/MainTools/Types/TControl.class create mode 100644 comp/src/gb.report/.src/MainTools/Types/TPageColumn.class create mode 100644 comp/src/gb.report/.src/MainTools/Types/TSizeHint.class create mode 100644 comp/src/gb.report/.src/MainTools/Types/TSizeParse.class create mode 100644 comp/src/gb.report/.src/Optional/Align.class create mode 100644 comp/src/gb.report/.src/Optional/Arrange.class create mode 100644 comp/src/gb.report/.src/Optional/Line.class create mode 100644 comp/src/gb.report/.src/Padding/ReportPadding.class create mode 100644 comp/src/gb.report/.src/Preview/CPrint.class create mode 100644 comp/src/gb.report/.src/Preview/FOptions.class create mode 100644 comp/src/gb.report/.src/Preview/FOptions.form create mode 100644 comp/src/gb.report/.src/Preview/FPreview.class create mode 100644 comp/src/gb.report/.src/Preview/FPreview.form create mode 100644 comp/src/gb.report/.src/Preview/FPrint.class create mode 100644 comp/src/gb.report/.src/Preview/FPrint.form create mode 100644 comp/src/gb.report/.src/Preview/Form1.class create mode 100644 comp/src/gb.report/.src/Preview/Form1.form create mode 100644 comp/src/gb.report/.src/Preview/ReportView.class create mode 100644 comp/src/gb.report/.src/Preview/ReportViewTask.class create mode 100644 comp/src/gb.report/.src/Report.class create mode 100644 comp/src/gb.report/.src/ReportContainer.class create mode 100644 comp/src/gb.report/.src/ReportDrawingArea.class create mode 100644 comp/src/gb.report/.src/ReportFrame.class create mode 100644 comp/src/gb.report/.src/ReportGridView.class create mode 100644 comp/src/gb.report/.src/ReportGridView/_ReportGridViewCell.class create mode 100644 comp/src/gb.report/.src/ReportGridView/_ReportGridViewColumn.class create mode 100644 comp/src/gb.report/.src/ReportGridView/_ReportGridViewColumns.class create mode 100644 comp/src/gb.report/.src/ReportGridView/_ReportGridViewRow.class create mode 100644 comp/src/gb.report/.src/ReportGridView/_ReportGridViewRows.class create mode 100644 comp/src/gb.report/.src/ReportHBox.class create mode 100644 comp/src/gb.report/.src/ReportImage.class create mode 100644 comp/src/gb.report/.src/ReportLabel.class create mode 100644 comp/src/gb.report/.src/ReportLine.class create mode 100644 comp/src/gb.report/.src/ReportPageBreak.class create mode 100644 comp/src/gb.report/.src/ReportPanel.class create mode 100644 comp/src/gb.report/.src/ReportSection.class create mode 100644 comp/src/gb.report/.src/ReportSvgImage.class create mode 100644 comp/src/gb.report/.src/ReportTextLabel.class create mode 100644 comp/src/gb.report/.src/ReportVBox.class create mode 100644 comp/src/gb.report/.src/ReportVPanel.class create mode 100644 comp/src/gb.report/.src/Tests/Old/Report1.class create mode 100644 comp/src/gb.report/.src/Tests/Old/Report1.report create mode 100644 comp/src/gb.report/.src/Tests/Old/Report10.class create mode 100644 comp/src/gb.report/.src/Tests/Old/Report10.report create mode 100644 comp/src/gb.report/.src/Tests/Old/Report12.class create mode 100644 comp/src/gb.report/.src/Tests/Old/Report12.report create mode 100644 comp/src/gb.report/.src/Tests/Old/Report13.class create mode 100644 comp/src/gb.report/.src/Tests/Old/Report13.report create mode 100644 comp/src/gb.report/.src/Tests/Old/Report14.class create mode 100644 comp/src/gb.report/.src/Tests/Old/Report14.report create mode 100644 comp/src/gb.report/.src/Tests/Old/Report2.class create mode 100644 comp/src/gb.report/.src/Tests/Old/Report2.report create mode 100644 comp/src/gb.report/.src/Tests/Old/Report3.class create mode 100644 comp/src/gb.report/.src/Tests/Old/Report3.report create mode 100644 comp/src/gb.report/.src/Tests/Old/Report4.class create mode 100644 comp/src/gb.report/.src/Tests/Old/Report4.report create mode 100644 comp/src/gb.report/.src/Tests/Old/Report5.class create mode 100644 comp/src/gb.report/.src/Tests/Old/Report5.report create mode 100644 comp/src/gb.report/.src/Tests/Old/Report6.class create mode 100644 comp/src/gb.report/.src/Tests/Old/Report6.report create mode 100644 comp/src/gb.report/.src/Tests/Old/Report7.class create mode 100644 comp/src/gb.report/.src/Tests/Old/Report7.report create mode 100644 comp/src/gb.report/.src/Tests/Old/Report8.class create mode 100644 comp/src/gb.report/.src/Tests/Old/Report8.report create mode 100644 comp/src/gb.report/.src/Tests/Old/myReport1.class create mode 100644 comp/src/gb.report/.src/Tests/Old/myReport1.report create mode 100644 comp/src/gb.report/.src/Tests/Old/myReport2.class create mode 100644 comp/src/gb.report/.src/Tests/Old/myReport2.report create mode 100644 comp/src/gb.report/.src/Tests/Old/myReport5.class create mode 100644 comp/src/gb.report/.src/Tests/Old/myReport5.report create mode 100644 comp/src/gb.report/.src/Tests/OutputReport.class create mode 100644 comp/src/gb.report/.src/Tests/OutputReport.report create mode 100644 comp/src/gb.report/.src/Tests/OutputReport2.class create mode 100644 comp/src/gb.report/.src/Tests/OutputReport2.report create mode 100644 comp/src/gb.report/.src/Tests/Paints.class create mode 100644 comp/src/gb.report/.src/Tests/Report11.class create mode 100644 comp/src/gb.report/.src/Tests/Report11.report create mode 100644 comp/src/gb.report/.src/Tests/Report41.class create mode 100644 comp/src/gb.report/.src/Tests/Report41.report create mode 100644 comp/src/gb.report/.src/Tests/Report51.class create mode 100644 comp/src/gb.report/.src/Tests/Report51.report create mode 100644 comp/src/gb.report/.src/Tests/Report52.class create mode 100644 comp/src/gb.report/.src/Tests/Report52.report create mode 100644 comp/src/gb.report/.src/Tests/Report9.class create mode 100644 comp/src/gb.report/.src/Tests/Report9.report create mode 100644 comp/src/gb.report/.src/Tests/Test.module create mode 100644 comp/src/gb.report/.src/Tests/rpTestShadowGrid.class create mode 100644 comp/src/gb.report/.src/Tests/rpTestShadowGrid.report create mode 100644 comp/src/gb.report/ChangeLog create mode 100644 comp/src/gb.report/gambas.svg create mode 100644 comp/src/gb.report/img/16/red-arrow-h.png create mode 100644 comp/src/gb.report/img/16/red-arrow-v.png create mode 100644 comp/src/gb.report/img/22/FullWidth.png create mode 100644 comp/src/gb.report/img/22/OnePage.png create mode 100644 comp/src/gb.report/img/22/RealSize.png create mode 100644 comp/src/gb.report/img/22/TwoPage.png create mode 100644 comp/src/gb.report/img/32/Collatecopie.png create mode 100644 comp/src/gb.report/img/32/Empty.png create mode 100644 comp/src/gb.report/img/32/grayscale.png create mode 100644 comp/src/gb.report/img/32/reverse.png create mode 100644 comp/src/gb.report/img/control/hbox.png create mode 100644 comp/src/gb.report/img/control/label.png create mode 100644 comp/src/gb.report/img/control/picturebox.png create mode 100644 comp/src/gb.report/img/control/vbox.png create mode 100644 comp/src/gb.report/img/control/vpanel.png create mode 100644 comp/src/gb.report/img/logo.svg create mode 100644 comp/src/gb.report/printer1.png create mode 100644 comp/src/gb.report2/.component create mode 100644 comp/src/gb.report2/.connection/Connection1.connection create mode 100644 comp/src/gb.report2/.connection/Connection2.connection create mode 100644 comp/src/gb.report2/.connection/Connection2.template create mode 100644 comp/src/gb.report2/.directory create mode 120000 comp/src/gb.report2/.hidden/control/reportdrawingarea.png create mode 120000 comp/src/gb.report2/.hidden/control/reportgridview.png create mode 120000 comp/src/gb.report2/.hidden/control/reporthbox.png create mode 120000 comp/src/gb.report2/.hidden/control/reportimage.png create mode 120000 comp/src/gb.report2/.hidden/control/reportlabel.png create mode 100644 comp/src/gb.report2/.hidden/control/reportline.png create mode 100644 comp/src/gb.report2/.hidden/control/reportpagebreak.png create mode 120000 comp/src/gb.report2/.hidden/control/reportpanel.png create mode 100644 comp/src/gb.report2/.hidden/control/reportsvgimage.png create mode 120000 comp/src/gb.report2/.hidden/control/reporttextlabel.png create mode 120000 comp/src/gb.report2/.hidden/control/reportvbox.png create mode 120000 comp/src/gb.report2/.hidden/control/reportview.png create mode 120000 comp/src/gb.report2/.hidden/control/reportvpanel.png create mode 100644 comp/src/gb.report2/.icon.png create mode 100644 comp/src/gb.report2/.lang/de.po create mode 100644 comp/src/gb.report2/.lang/es.po create mode 100644 comp/src/gb.report2/.lang/es_ES.po create mode 100644 comp/src/gb.report2/.lang/fr.po create mode 100644 comp/src/gb.report2/.lang/it.po create mode 100644 comp/src/gb.report2/.lang/nl.po create mode 100644 comp/src/gb.report2/.lang/pt_BR.po create mode 100644 comp/src/gb.report2/.lang/ru.po create mode 100644 comp/src/gb.report2/.lang/zh.po create mode 100644 comp/src/gb.report2/.project create mode 100644 comp/src/gb.report2/.src/Evaluator/CResult.class create mode 100644 comp/src/gb.report2/.src/Evaluator/_RepExp.class create mode 100644 comp/src/gb.report2/.src/Optional/Align.class create mode 100644 comp/src/gb.report2/.src/Optional/Arrange.class create mode 100644 comp/src/gb.report2/.src/Optional/Line.class create mode 100644 comp/src/gb.report2/.src/Report.class create mode 100644 comp/src/gb.report2/.src/ReportContainer.class create mode 100644 comp/src/gb.report2/.src/ReportControl.class create mode 100644 comp/src/gb.report2/.src/ReportDrawingArea.class create mode 100644 comp/src/gb.report2/.src/ReportFrame.class create mode 100644 comp/src/gb.report2/.src/ReportGridView/ReportGridView.class create mode 100644 comp/src/gb.report2/.src/ReportGridView/_ReportGridViewColumn.class create mode 100644 comp/src/gb.report2/.src/ReportGridView/_ReportGridViewColumns.class create mode 100644 comp/src/gb.report2/.src/ReportGridView/_ReportGridViewData.class create mode 100644 comp/src/gb.report2/.src/ReportGridView/_ReportGridViewRow.class create mode 100644 comp/src/gb.report2/.src/ReportGridView/_ReportGridViewRows.class create mode 100644 comp/src/gb.report2/.src/ReportHBox.class create mode 100644 comp/src/gb.report2/.src/ReportImage.class create mode 100644 comp/src/gb.report2/.src/ReportLabel.class create mode 100644 comp/src/gb.report2/.src/ReportLine.class create mode 100644 comp/src/gb.report2/.src/ReportPageBreak.class create mode 100644 comp/src/gb.report2/.src/ReportPanel.class create mode 100644 comp/src/gb.report2/.src/ReportSvgImage.class create mode 100644 comp/src/gb.report2/.src/ReportTextLabel.class create mode 100644 comp/src/gb.report2/.src/ReportVBox.class create mode 100644 comp/src/gb.report2/.src/ReportVPanel.class create mode 100644 comp/src/gb.report2/.src/Tests/Module2.module create mode 100644 comp/src/gb.report2/.src/Tests/Report10.class create mode 100644 comp/src/gb.report2/.src/Tests/Report10.report create mode 100644 comp/src/gb.report2/.src/Tests/Report13.class create mode 100644 comp/src/gb.report2/.src/Tests/Report13.report create mode 100644 comp/src/gb.report2/.src/Tests/Report14.class create mode 100644 comp/src/gb.report2/.src/Tests/Report14.report create mode 100644 comp/src/gb.report2/.src/Tests/Report15.class create mode 100644 comp/src/gb.report2/.src/Tests/Report15.report create mode 100644 comp/src/gb.report2/.src/Tests/Report16.class create mode 100644 comp/src/gb.report2/.src/Tests/Report16.report create mode 100644 comp/src/gb.report2/.src/Tests/Report17.class create mode 100644 comp/src/gb.report2/.src/Tests/Report17.report create mode 100644 comp/src/gb.report2/.src/Tests/old/FMain.class create mode 100644 comp/src/gb.report2/.src/Tests/old/FMain.form create mode 100644 comp/src/gb.report2/.src/Tests/old/Module1.module create mode 100644 comp/src/gb.report2/.src/Tests/old/OutputReport2.class create mode 100644 comp/src/gb.report2/.src/Tests/old/OutputReport2.report create mode 100644 comp/src/gb.report2/.src/Tests/old/Report1.class create mode 100644 comp/src/gb.report2/.src/Tests/old/Report1.report create mode 100644 comp/src/gb.report2/.src/Tests/old/Report11.class create mode 100644 comp/src/gb.report2/.src/Tests/old/Report11.report create mode 100644 comp/src/gb.report2/.src/Tests/old/Report12.class create mode 100644 comp/src/gb.report2/.src/Tests/old/Report12.report create mode 100644 comp/src/gb.report2/.src/Tests/old/Report2.class create mode 100644 comp/src/gb.report2/.src/Tests/old/Report2.report create mode 100644 comp/src/gb.report2/.src/Tests/old/Report3.class create mode 100644 comp/src/gb.report2/.src/Tests/old/Report3.report create mode 100644 comp/src/gb.report2/.src/Tests/old/Report4.class create mode 100644 comp/src/gb.report2/.src/Tests/old/Report4.report create mode 100644 comp/src/gb.report2/.src/Tests/old/Report5.class create mode 100644 comp/src/gb.report2/.src/Tests/old/Report5.report create mode 100644 comp/src/gb.report2/.src/Tests/old/Report6.class create mode 100644 comp/src/gb.report2/.src/Tests/old/Report6.report create mode 100644 comp/src/gb.report2/.src/Tests/old/Report7.class create mode 100644 comp/src/gb.report2/.src/Tests/old/Report7.report create mode 100644 comp/src/gb.report2/.src/Tests/old/Report8.class create mode 100644 comp/src/gb.report2/.src/Tests/old/Report8.report create mode 100644 comp/src/gb.report2/.src/Tests/old/Report9.class create mode 100644 comp/src/gb.report2/.src/Tests/old/Report9.report create mode 100644 comp/src/gb.report2/.src/Tools/CPrint.class create mode 100644 comp/src/gb.report2/.src/Tools/MUtil.module create mode 100644 comp/src/gb.report2/.src/Types/Base/ReportBrush.class create mode 100644 comp/src/gb.report2/.src/Types/Base/ReportMargin.class create mode 100644 comp/src/gb.report2/.src/Types/Base/ReportPadding.class create mode 100644 comp/src/gb.report2/.src/Types/Border/ReportBorder.class create mode 100644 comp/src/gb.report2/.src/Types/Border/_ReportBorderSide.class create mode 100644 comp/src/gb.report2/.src/Types/Border/_ReportRoundCorner.class create mode 100644 comp/src/gb.report2/.src/Types/BoxShadow/ReportBoxShadow.class create mode 100644 comp/src/gb.report2/.src/Types/BoxShadow/_ReportBoxShadow.class create mode 100644 comp/src/gb.report2/.src/Types/ReportSizeHints.class create mode 100644 comp/src/gb.report2/.src/Types/ReportSizeParser.class create mode 100644 comp/src/gb.report2/.src/Types/TControl.class create mode 100644 comp/src/gb.report2/.src/Types/TSizeParse.class create mode 100644 comp/src/gb.report2/.src/Types/_ReportVirtualControl.class create mode 100644 comp/src/gb.report2/.src/Viewer/FPreview.class create mode 100644 comp/src/gb.report2/.src/Viewer/FPreview.form create mode 100644 comp/src/gb.report2/.src/Viewer/ReportView.class create mode 100644 comp/src/gb.report2/.src/_ReportSection.class create mode 100644 comp/src/gb.report2/16/full-width.png create mode 100644 comp/src/gb.report2/16/one-page.png create mode 100644 comp/src/gb.report2/16/real-size.png create mode 100644 comp/src/gb.report2/16/red-arrow-h.png create mode 100644 comp/src/gb.report2/16/red-arrow-v.png create mode 100644 comp/src/gb.report2/16/two-pages.png create mode 100644 comp/src/gb.report2/22/FullWidth.png create mode 100644 comp/src/gb.report2/22/OnePage.png create mode 100644 comp/src/gb.report2/22/RealSize.png create mode 100644 comp/src/gb.report2/22/TwoPage.png create mode 100644 comp/src/gb.report2/32/Collatecopie.png create mode 100644 comp/src/gb.report2/32/Empty.png create mode 100644 comp/src/gb.report2/32/grayscale.png create mode 100644 comp/src/gb.report2/32/reverse.png create mode 100644 comp/src/gb.report2/FunctionsList create mode 100644 comp/src/gb.report2/Structure create mode 100644 comp/src/gb.report2/gambas.svg create mode 100644 comp/src/gb.report2/icon.png create mode 100644 comp/src/gb.report2/tmpJournal create mode 100644 comp/src/gb.report2/tortueface.gif create mode 100644 comp/src/gb.scanner/.component create mode 100644 comp/src/gb.scanner/.directory create mode 100644 comp/src/gb.scanner/.hidden/scanner.png create mode 100644 comp/src/gb.scanner/.icon.png create mode 100644 comp/src/gb.scanner/.project create mode 100644 comp/src/gb.scanner/.src/Demo/FScan.class create mode 100644 comp/src/gb.scanner/.src/Demo/FScan.form create mode 100644 comp/src/gb.scanner/.src/Demo/Form1.class create mode 100644 comp/src/gb.scanner/.src/Demo/Form1.form create mode 100644 comp/src/gb.scanner/.src/Demo/Main.module create mode 100644 comp/src/gb.scanner/.src/Demo/Main2.module create mode 100644 comp/src/gb.scanner/.src/MTest.module create mode 100644 comp/src/gb.scanner/.src/MTest2.module create mode 100644 comp/src/gb.scanner/.src/Module1.module create mode 100644 comp/src/gb.scanner/.src/Module2.module create mode 100644 comp/src/gb.scanner/.src/Scanner.class create mode 100644 comp/src/gb.scanner/.src/ScannerOption.class create mode 100644 comp/src/gb.scanner/.src/Scanners.class create mode 100644 comp/src/gb.scanner/next.png create mode 100644 comp/src/gb.settings/.component create mode 100644 comp/src/gb.settings/.directory create mode 100644 comp/src/gb.settings/.icon.png create mode 100644 comp/src/gb.settings/.project create mode 100644 comp/src/gb.settings/.src/Main.module create mode 100644 comp/src/gb.settings/.src/Settings.class create mode 100644 comp/src/gb.settings/.src/_Settings_Keys.class create mode 100644 comp/src/gb.term.form/.component create mode 100644 comp/src/gb.term.form/.directory create mode 100644 comp/src/gb.term.form/.hidden/CHANGELOG create mode 120000 comp/src/gb.term.form/.hidden/control/termbutton.png create mode 120000 comp/src/gb.term.form/.hidden/control/termcheckbox.png create mode 120000 comp/src/gb.term.form/.hidden/control/termframe.png create mode 120000 comp/src/gb.term.form/.hidden/control/termhbox.png create mode 120000 comp/src/gb.term.form/.hidden/control/termlabel.png create mode 120000 comp/src/gb.term.form/.hidden/control/termlistbox.png create mode 120000 comp/src/gb.term.form/.hidden/control/termpanel.png create mode 120000 comp/src/gb.term.form/.hidden/control/termpicturebox.png create mode 120000 comp/src/gb.term.form/.hidden/control/termradiobutton.png create mode 120000 comp/src/gb.term.form/.hidden/control/termscrollbar.png create mode 120000 comp/src/gb.term.form/.hidden/control/termtextbox.png create mode 120000 comp/src/gb.term.form/.hidden/control/termvbox.png create mode 100644 comp/src/gb.term.form/.icon.png create mode 100644 comp/src/gb.term.form/.lang/it.po create mode 100644 comp/src/gb.term.form/.lang/nl.po create mode 100644 comp/src/gb.term.form/.lang/ru.po create mode 100644 comp/src/gb.term.form/.lang/zh.po create mode 100644 comp/src/gb.term.form/.project create mode 100644 comp/src/gb.term.form/.src/Align.class create mode 100644 comp/src/gb.term.form/.src/Arrange.class create mode 100644 comp/src/gb.term.form/.src/Attr.class create mode 100644 comp/src/gb.term.form/.src/Border.class create mode 100644 comp/src/gb.term.form/.src/Char.class create mode 100644 comp/src/gb.term.form/.src/Desktop.class create mode 100644 comp/src/gb.term.form/.src/Dialog/Message.class create mode 100644 comp/src/gb.term.form/.src/Key.class create mode 100644 comp/src/gb.term.form/.src/Mouse.class create mode 100644 comp/src/gb.term.form/.src/TermButton.class create mode 100644 comp/src/gb.term.form/.src/TermCheckBox.class create mode 100644 comp/src/gb.term.form/.src/TermColor.class create mode 100644 comp/src/gb.term.form/.src/TermContainer.class create mode 100644 comp/src/gb.term.form/.src/TermControl.class create mode 100644 comp/src/gb.term.form/.src/TermForm.class create mode 100644 comp/src/gb.term.form/.src/TermFrame.class create mode 100644 comp/src/gb.term.form/.src/TermHBox.class create mode 100644 comp/src/gb.term.form/.src/TermLabel.class create mode 100644 comp/src/gb.term.form/.src/TermListBox.class create mode 100644 comp/src/gb.term.form/.src/TermPanel.class create mode 100644 comp/src/gb.term.form/.src/TermPictureBox.class create mode 100644 comp/src/gb.term.form/.src/TermRadioButton.class create mode 100644 comp/src/gb.term.form/.src/TermScrollBar.class create mode 100644 comp/src/gb.term.form/.src/TermTextBox.class create mode 100644 comp/src/gb.term.form/.src/TermVBox.class create mode 100644 comp/src/gb.term.form/.src/TermWindow.class create mode 100644 comp/src/gb.term.form/.src/TermWindows.class create mode 100644 comp/src/gb.term.form/.src/Test/FTest2.class create mode 100644 comp/src/gb.term.form/.src/Test/Main.module create mode 100644 comp/src/gb.term.form/.src/Test/Main2.module create mode 100644 comp/src/gb.term.form/.src/Test/Main3.module create mode 100644 comp/src/gb.term.form/.src/Test/Module1.module create mode 100644 comp/src/gb.term.form/.src/Test/Termform1.class create mode 100644 comp/src/gb.term.form/.src/Test/Termform1.termform create mode 100644 comp/src/gb.term.form/.src/Test/Termform2.class create mode 100644 comp/src/gb.term.form/.src/Test/Termform2.termform create mode 100644 comp/src/gb.term.form/.src/Test/trfTest.class create mode 100644 comp/src/gb.term.form/all.png create mode 100644 comp/src/gb.util.web/.component create mode 100644 comp/src/gb.util.web/.directory create mode 100644 comp/src/gb.util.web/.hidden/control/ccontainer.png create mode 100644 comp/src/gb.util.web/.hidden/control/ccontrol.png create mode 100644 comp/src/gb.util.web/.icon.png create mode 100644 comp/src/gb.util.web/.project create mode 100644 comp/src/gb.util.web/.src/JS.class create mode 100644 comp/src/gb.util.web/.src/JSON.module create mode 100644 comp/src/gb.util.web/.src/JSONCollection.class create mode 100644 comp/src/gb.util.web/.src/MMain.module create mode 100644 comp/src/gb.util.web/.src/URL.class create mode 100644 comp/src/gb.util.web/.src/URLQuery.class create mode 100644 comp/src/gb.util.web/.src/XML.class create mode 100644 comp/src/gb.util.web/.src/XMLMarkup.class create mode 100644 comp/src/gb.util/.component create mode 100644 comp/src/gb.util/.directory create mode 100644 comp/src/gb.util/.icon.png create mode 100644 comp/src/gb.util/.lang/ar.po create mode 100644 comp/src/gb.util/.lang/ca.po create mode 100644 comp/src/gb.util/.lang/cs.po create mode 100644 comp/src/gb.util/.lang/cy.po create mode 100644 comp/src/gb.util/.lang/de.po create mode 100644 comp/src/gb.util/.lang/el.po create mode 100644 comp/src/gb.util/.lang/es.po create mode 100644 comp/src/gb.util/.lang/es_ES.po create mode 100644 comp/src/gb.util/.lang/fa.po create mode 100644 comp/src/gb.util/.lang/fr.po create mode 100644 comp/src/gb.util/.lang/gl_ES.po create mode 100644 comp/src/gb.util/.lang/hr.po create mode 100644 comp/src/gb.util/.lang/hu.po create mode 100644 comp/src/gb.util/.lang/id.po create mode 100644 comp/src/gb.util/.lang/it.po create mode 100644 comp/src/gb.util/.lang/ja.po create mode 100644 comp/src/gb.util/.lang/ko.po create mode 100644 comp/src/gb.util/.lang/lt.po create mode 100644 comp/src/gb.util/.lang/nl.po create mode 100644 comp/src/gb.util/.lang/no.po create mode 100644 comp/src/gb.util/.lang/pl.po create mode 100644 comp/src/gb.util/.lang/pt.po create mode 100644 comp/src/gb.util/.lang/pt_BR.po create mode 100644 comp/src/gb.util/.lang/ro.po create mode 100644 comp/src/gb.util/.lang/ru.po create mode 100644 comp/src/gb.util/.lang/sl.po create mode 100644 comp/src/gb.util/.lang/sv.po create mode 100644 comp/src/gb.util/.lang/tr.po create mode 100644 comp/src/gb.util/.lang/zh.po create mode 100644 comp/src/gb.util/.lang/zh_TW.po create mode 100644 comp/src/gb.util/.project create mode 100644 comp/src/gb.util/.src/Class.class create mode 100644 comp/src/gb.util/.src/ClassStat.class create mode 100644 comp/src/gb.util/.src/CsvFile.class create mode 100644 comp/src/gb.util/.src/Date.module create mode 100644 comp/src/gb.util/.src/File.class create mode 100644 comp/src/gb.util/.src/Language.class create mode 100644 comp/src/gb.util/.src/MMain.module create mode 100644 comp/src/gb.util/.src/MPhonetic_English.module create mode 100644 comp/src/gb.util/.src/MPhonetic_French.module create mode 100644 comp/src/gb.util/.src/Process.class create mode 100644 comp/src/gb.util/.src/ProcessExpect.class create mode 100644 comp/src/gb.util/.src/ProcessPrompt.class create mode 100644 comp/src/gb.util/.src/Shell.module create mode 100644 comp/src/gb.util/.src/String.class create mode 100644 comp/src/gb.web.feed/.component create mode 100644 comp/src/gb.web.feed/.directory create mode 100644 comp/src/gb.web.feed/.hidden/TODO create mode 100644 comp/src/gb.web.feed/.icon.png create mode 100644 comp/src/gb.web.feed/.lang/it.po create mode 100644 comp/src/gb.web.feed/.lang/nl.po create mode 100644 comp/src/gb.web.feed/.lang/ru.po create mode 100644 comp/src/gb.web.feed/.lang/zh.po create mode 100644 comp/src/gb.web.feed/.project create mode 100644 comp/src/gb.web.feed/.src/Main.module create mode 100644 comp/src/gb.web.feed/.src/Rss.class create mode 100644 comp/src/gb.web.feed/.src/RssCategory.class create mode 100644 comp/src/gb.web.feed/.src/RssCloud.class create mode 100644 comp/src/gb.web.feed/.src/RssDate.class create mode 100644 comp/src/gb.web.feed/.src/RssEnclosure.class create mode 100644 comp/src/gb.web.feed/.src/RssGuid.class create mode 100644 comp/src/gb.web.feed/.src/RssImage.class create mode 100644 comp/src/gb.web.feed/.src/RssItem.class create mode 100644 comp/src/gb.web.feed/.src/RssSource.class create mode 100644 comp/src/gb.web.feed/.src/RssTextInput.class create mode 100644 comp/src/gb.web.feed/Feed-icon.svg create mode 100644 comp/src/gb.web.feed/test.xml create mode 100644 comp/src/gb.web.form/.component create mode 100644 comp/src/gb.web.form/.directory create mode 100644 comp/src/gb.web.form/.hidden/Uncompressed/gw-style.css create mode 100644 comp/src/gb.web.form/.hidden/Uncompressed/lib.js create mode 100644 comp/src/gb.web.form/.hidden/Uncompressed/style.css create mode 100644 comp/src/gb.web.form/.hidden/calendar.js create mode 120000 comp/src/gb.web.form/.hidden/control/webbutton.png create mode 120000 comp/src/gb.web.form/.hidden/control/webcheckbox.png create mode 120000 comp/src/gb.web.form/.hidden/control/webcombobox.png create mode 100644 comp/src/gb.web.form/.hidden/control/webcontainer.png create mode 120000 comp/src/gb.web.form/.hidden/control/webdatebox.png create mode 120000 comp/src/gb.web.form/.hidden/control/webdatechooser.png create mode 120000 comp/src/gb.web.form/.hidden/control/webexpander.png create mode 120000 comp/src/gb.web.form/.hidden/control/webhbox.png create mode 100644 comp/src/gb.web.form/.hidden/control/webhtml.png create mode 120000 comp/src/gb.web.form/.hidden/control/webimage.png create mode 120000 comp/src/gb.web.form/.hidden/control/weblabel.png create mode 120000 comp/src/gb.web.form/.hidden/control/weblistbox.png create mode 100644 comp/src/gb.web.form/.hidden/control/webmenu.png create mode 100644 comp/src/gb.web.form/.hidden/control/webmenubar.png create mode 100644 comp/src/gb.web.form/.hidden/control/webmenuitem.png create mode 120000 comp/src/gb.web.form/.hidden/control/webprogressbar.png create mode 120000 comp/src/gb.web.form/.hidden/control/webradiobutton.png create mode 120000 comp/src/gb.web.form/.hidden/control/webscrollview.png create mode 120000 comp/src/gb.web.form/.hidden/control/webseparator.png create mode 120000 comp/src/gb.web.form/.hidden/control/webslider.png create mode 120000 comp/src/gb.web.form/.hidden/control/webspinbox.png create mode 100644 comp/src/gb.web.form/.hidden/control/webtable.png create mode 120000 comp/src/gb.web.form/.hidden/control/webtabpanel.png create mode 120000 comp/src/gb.web.form/.hidden/control/webtextarea.png create mode 120000 comp/src/gb.web.form/.hidden/control/webtextbox.png create mode 120000 comp/src/gb.web.form/.hidden/control/webtimer.png create mode 100644 comp/src/gb.web.form/.hidden/control/webuploadarea.png create mode 100644 comp/src/gb.web.form/.hidden/control/webuploadbutton.png create mode 100644 comp/src/gb.web.form/.hidden/control/webuploader.png create mode 120000 comp/src/gb.web.form/.hidden/control/webvbox.png create mode 100644 comp/src/gb.web.form/.icon.png create mode 100644 comp/src/gb.web.form/.lang/fr.po create mode 100644 comp/src/gb.web.form/.lang/it.po create mode 100644 comp/src/gb.web.form/.lang/nl.po create mode 100644 comp/src/gb.web.form/.lang/pt_BR.po create mode 100644 comp/src/gb.web.form/.lang/ru.po create mode 100644 comp/src/gb.web.form/.lang/zh.po create mode 100644 comp/src/gb.web.form/.project create mode 100644 comp/src/gb.web.form/.public/favicon.png create mode 100644 comp/src/gb.web.form/.public/gw-arrow-down.png create mode 100644 comp/src/gb.web.form/.public/gw-arrow-left.png create mode 100644 comp/src/gb.web.form/.public/gw-arrow-right.png create mode 100644 comp/src/gb.web.form/.public/gw-arrow-up.png create mode 100644 comp/src/gb.web.form/.public/gw-close.png create mode 100644 comp/src/gb.web.form/.public/gw-max.png create mode 100644 comp/src/gb.web.form/.public/gw-table-more.gif create mode 100644 comp/src/gb.web.form/.public/gw-waiting.gif create mode 100644 comp/src/gb.web.form/.public/message/close.svg create mode 100644 comp/src/gb.web.form/.public/message/error.png create mode 100644 comp/src/gb.web.form/.public/message/info.png create mode 100644 comp/src/gb.web.form/.public/message/question.png create mode 100644 comp/src/gb.web.form/.public/message/warning.png create mode 100644 comp/src/gb.web.form/.public/new.png create mode 100644 comp/src/gb.web.form/.public/open.png create mode 100644 comp/src/gb.web.form/.src/Align.class create mode 100644 comp/src/gb.web.form/.src/Arrange.class create mode 100644 comp/src/gb.web.form/.src/Calendar/FCalendar.class create mode 100644 comp/src/gb.web.form/.src/Calendar/FCalendar.webform create mode 100644 comp/src/gb.web.form/.src/Calendar/WebDateBox.class create mode 100644 comp/src/gb.web.form/.src/Calendar/WebDateChooser.class create mode 100644 comp/src/gb.web.form/.src/Color.class create mode 100644 comp/src/gb.web.form/.src/Header.class create mode 100644 comp/src/gb.web.form/.src/Header.webpage create mode 100644 comp/src/gb.web.form/.src/Main.module create mode 100644 comp/src/gb.web.form/.src/Message/FMessage.class create mode 100644 comp/src/gb.web.form/.src/Message/FMessage.webform create mode 100644 comp/src/gb.web.form/.src/Message/Message.class create mode 100644 comp/src/gb.web.form/.src/Scroll.class create mode 100644 comp/src/gb.web.form/.src/Select.class create mode 100644 comp/src/gb.web.form/.src/Test/FHello.class create mode 100644 comp/src/gb.web.form/.src/Test/FHello.webform create mode 100644 comp/src/gb.web.form/.src/Test/FTestWebUploader.class create mode 100644 comp/src/gb.web.form/.src/Test/FTestWebUploader.webform create mode 100644 comp/src/gb.web.form/.src/Test/Webform1.class create mode 100644 comp/src/gb.web.form/.src/Test/Webform1.webform create mode 100644 comp/src/gb.web.form/.src/Test/Webform2.class create mode 100644 comp/src/gb.web.form/.src/Test/Webform2.webform create mode 100644 comp/src/gb.web.form/.src/Test/Webform3.class create mode 100644 comp/src/gb.web.form/.src/Test/Webform3.webform create mode 100644 comp/src/gb.web.form/.src/Test/Webform4.class create mode 100644 comp/src/gb.web.form/.src/Test/Webform4.webform create mode 100644 comp/src/gb.web.form/.src/Test/Webform5.class create mode 100644 comp/src/gb.web.form/.src/Test/Webform5.webform create mode 100644 comp/src/gb.web.form/.src/Test/Webform6.class create mode 100644 comp/src/gb.web.form/.src/Test/Webform6.webform create mode 100644 comp/src/gb.web.form/.src/Test/Webform7.class create mode 100644 comp/src/gb.web.form/.src/Test/Webform7.webform create mode 100644 comp/src/gb.web.form/.src/Test/Webform8.class create mode 100644 comp/src/gb.web.form/.src/Test/Webform8.webform create mode 100644 comp/src/gb.web.form/.src/WebButton.class create mode 100644 comp/src/gb.web.form/.src/WebCheckBox.class create mode 100644 comp/src/gb.web.form/.src/WebComboBox.class create mode 100644 comp/src/gb.web.form/.src/WebContainer.class create mode 100644 comp/src/gb.web.form/.src/WebControl.class create mode 100644 comp/src/gb.web.form/.src/WebControlStyle.class create mode 100644 comp/src/gb.web.form/.src/WebExpander.class create mode 100644 comp/src/gb.web.form/.src/WebForm.class create mode 100644 comp/src/gb.web.form/.src/WebHBox.class create mode 100644 comp/src/gb.web.form/.src/WebHtml.class create mode 100644 comp/src/gb.web.form/.src/WebImage.class create mode 100644 comp/src/gb.web.form/.src/WebLabel.class create mode 100644 comp/src/gb.web.form/.src/WebMenu.class create mode 100644 comp/src/gb.web.form/.src/WebMenuBar.class create mode 100644 comp/src/gb.web.form/.src/WebMenuItem.class create mode 100644 comp/src/gb.web.form/.src/WebProgressBar.class create mode 100644 comp/src/gb.web.form/.src/WebRadioButton.class create mode 100644 comp/src/gb.web.form/.src/WebScrollView.class create mode 100644 comp/src/gb.web.form/.src/WebSeparator.class create mode 100644 comp/src/gb.web.form/.src/WebSlider.class create mode 100644 comp/src/gb.web.form/.src/WebSpinBox.class create mode 100644 comp/src/gb.web.form/.src/WebTabPanel.class create mode 100644 comp/src/gb.web.form/.src/WebTable/WebTable.class create mode 100644 comp/src/gb.web.form/.src/WebTable/WebTableData.class create mode 100644 comp/src/gb.web.form/.src/WebTable/WebTableSelection.class create mode 100644 comp/src/gb.web.form/.src/WebTable/_WebTableColumn.class create mode 100644 comp/src/gb.web.form/.src/WebTable/_WebTableColumns.class create mode 100644 comp/src/gb.web.form/.src/WebTextArea.class create mode 100644 comp/src/gb.web.form/.src/WebTextBox.class create mode 100644 comp/src/gb.web.form/.src/WebTimer.class create mode 100644 comp/src/gb.web.form/.src/WebUploadArea.class create mode 100644 comp/src/gb.web.form/.src/WebUploadButton.class create mode 100644 comp/src/gb.web.form/.src/WebUploader.class create mode 100644 comp/src/gb.web.form/.src/WebVBox.class create mode 100644 comp/src/gb.web.form/.src/WebWindow.class create mode 100644 comp/src/gb.web.form/ac.js create mode 100644 comp/src/gb.web.form/arrow-down.png create mode 100644 comp/src/gb.web.form/arrow-right.png create mode 100644 comp/src/gb.web.form/clear.png create mode 100644 comp/src/gb.web.form/lib.js create mode 100644 comp/src/gb.web.form/shadow.png create mode 100644 comp/src/gb.web.form/style.css create mode 100644 comp/src/gb.web.gui/.component create mode 100644 comp/src/gb.web.gui/.directory create mode 100644 comp/src/gb.web.gui/.hidden/control/webaudio.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webbutton.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webcheckbox.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webcombobox.png create mode 100644 comp/src/gb.web.gui/.hidden/control/webcontainer.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webdatebox.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webdatechooser.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webdrawingarea.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webexpander.png create mode 100644 comp/src/gb.web.gui/.hidden/control/webfilebutton.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webhbox.png create mode 100644 comp/src/gb.web.gui/.hidden/control/webhtml.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webimage.png create mode 120000 comp/src/gb.web.gui/.hidden/control/weblabel.png create mode 120000 comp/src/gb.web.gui/.hidden/control/weblistbox.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webprogressbar.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webradiobutton.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webscrollview.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webseparator.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webslider.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webspinbox.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webtable.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webtabpanel.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webtextarea.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webtextbox.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webtimer.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webtree.png create mode 120000 comp/src/gb.web.gui/.hidden/control/webvbox.png create mode 100644 comp/src/gb.web.gui/.hidden/lib.js.copy create mode 120000 comp/src/gb.web.gui/.hidden/webform.png create mode 100644 comp/src/gb.web.gui/.icon.png create mode 100644 comp/src/gb.web.gui/.lang/it.po create mode 100644 comp/src/gb.web.gui/.lang/pt_BR.po create mode 100644 comp/src/gb.web.gui/.lang/zh.po create mode 100644 comp/src/gb.web.gui/.project create mode 100644 comp/src/gb.web.gui/.public/blip.ogg create mode 100644 comp/src/gb.web.gui/.public/favicon.png create mode 100644 comp/src/gb.web.gui/.public/gw-arrow-down.png create mode 100644 comp/src/gb.web.gui/.public/gw-arrow-left.png create mode 100644 comp/src/gb.web.gui/.public/gw-arrow-right.png create mode 100644 comp/src/gb.web.gui/.public/gw-arrow-up.png create mode 100644 comp/src/gb.web.gui/.public/gw-close.png create mode 100644 comp/src/gb.web.gui/.public/gw-table-more.gif create mode 100644 comp/src/gb.web.gui/.public/gw-waiting.gif create mode 100644 comp/src/gb.web.gui/.public/message/error.png create mode 100644 comp/src/gb.web.gui/.public/message/info.png create mode 100644 comp/src/gb.web.gui/.public/message/question.png create mode 100644 comp/src/gb.web.gui/.public/message/warning.png create mode 100644 comp/src/gb.web.gui/.src/Align.class create mode 100644 comp/src/gb.web.gui/.src/Application.class create mode 100644 comp/src/gb.web.gui/.src/Arrange.class create mode 100644 comp/src/gb.web.gui/.src/CSelection.class create mode 100644 comp/src/gb.web.gui/.src/Calendar/FCalendar.class create mode 100644 comp/src/gb.web.gui/.src/Calendar/FCalendar.webform create mode 100644 comp/src/gb.web.gui/.src/Calendar/WebDateBox.class create mode 100644 comp/src/gb.web.gui/.src/Calendar/WebDateChooser.class create mode 100644 comp/src/gb.web.gui/.src/Color.class create mode 100644 comp/src/gb.web.gui/.src/Header.class create mode 100644 comp/src/gb.web.gui/.src/Header.webpage create mode 100644 comp/src/gb.web.gui/.src/Key.class create mode 100644 comp/src/gb.web.gui/.src/Menu/FPopupMenu.class create mode 100644 comp/src/gb.web.gui/.src/Menu/FPopupMenu.webform create mode 100644 comp/src/gb.web.gui/.src/Menu/WebMenu.class create mode 100644 comp/src/gb.web.gui/.src/Menu/WebMenuBar.class create mode 100644 comp/src/gb.web.gui/.src/Message/FMessage.class create mode 100644 comp/src/gb.web.gui/.src/Message/FMessage.webform create mode 100644 comp/src/gb.web.gui/.src/Message/Message.class create mode 100644 comp/src/gb.web.gui/.src/Mouse.class create mode 100644 comp/src/gb.web.gui/.src/Paint/Gradient.class create mode 100644 comp/src/gb.web.gui/.src/Paint/Paint.class create mode 100644 comp/src/gb.web.gui/.src/Paint/PaintBrush.class create mode 100644 comp/src/gb.web.gui/.src/Paint/PaintDriver.class create mode 100644 comp/src/gb.web.gui/.src/Paint/PaintDriver_WebDrawingArea.class create mode 100644 comp/src/gb.web.gui/.src/Scroll.class create mode 100644 comp/src/gb.web.gui/.src/Select.class create mode 100644 comp/src/gb.web.gui/.src/Session.module create mode 100644 comp/src/gb.web.gui/.src/StartupError.class create mode 100644 comp/src/gb.web.gui/.src/StartupError.webpage create mode 100644 comp/src/gb.web.gui/.src/Table/WebTable.class create mode 100644 comp/src/gb.web.gui/.src/Table/WebTableData.class create mode 100644 comp/src/gb.web.gui/.src/Table/_WebTableColumn.class create mode 100644 comp/src/gb.web.gui/.src/Table/_WebTableColumns.class create mode 100644 comp/src/gb.web.gui/.src/Test/FInputBox.class create mode 100644 comp/src/gb.web.gui/.src/Test/FInputBox.webform create mode 100644 comp/src/gb.web.gui/.src/Test/FTestDialog.class create mode 100644 comp/src/gb.web.gui/.src/Test/FTestDialog.webform create mode 100644 comp/src/gb.web.gui/.src/Test/FTestDrawingArea.class create mode 100644 comp/src/gb.web.gui/.src/Test/FTestDrawingArea.webform create mode 100644 comp/src/gb.web.gui/.src/Test/FTestSlider.class create mode 100644 comp/src/gb.web.gui/.src/Test/FTestSlider.webform create mode 100644 comp/src/gb.web.gui/.src/Test/FTestWebAudio.class create mode 100644 comp/src/gb.web.gui/.src/Test/FTestWebAudio.webform create mode 100644 comp/src/gb.web.gui/.src/Test/Webform1.class create mode 100644 comp/src/gb.web.gui/.src/Test/Webform1.webform create mode 100644 comp/src/gb.web.gui/.src/Test/Webform2.class create mode 100644 comp/src/gb.web.gui/.src/Test/Webform2.webform create mode 100644 comp/src/gb.web.gui/.src/Test/Webform3.class create mode 100644 comp/src/gb.web.gui/.src/Test/Webform3.webform create mode 100644 comp/src/gb.web.gui/.src/Test/Webform4.class create mode 100644 comp/src/gb.web.gui/.src/Test/Webform4.webform create mode 100644 comp/src/gb.web.gui/.src/Tree/WebTree.class create mode 100644 comp/src/gb.web.gui/.src/Tree/WebTreeData.class create mode 100644 comp/src/gb.web.gui/.src/Tree/WebTreeSelection.class create mode 100644 comp/src/gb.web.gui/.src/Tree/_WebTreeColumn.class create mode 100644 comp/src/gb.web.gui/.src/Tree/_WebTreeColumns.class create mode 100644 comp/src/gb.web.gui/.src/Tree/_WebTreeItem.class create mode 100644 comp/src/gb.web.gui/.src/Upload.module create mode 100644 comp/src/gb.web.gui/.src/WebAudio.class create mode 100644 comp/src/gb.web.gui/.src/WebButton.class create mode 100644 comp/src/gb.web.gui/.src/WebCheckBox.class create mode 100644 comp/src/gb.web.gui/.src/WebComboBox.class create mode 100644 comp/src/gb.web.gui/.src/WebContainer.class create mode 100644 comp/src/gb.web.gui/.src/WebControl.class create mode 100644 comp/src/gb.web.gui/.src/WebControlStyle.class create mode 100644 comp/src/gb.web.gui/.src/WebDrawingArea.class create mode 100644 comp/src/gb.web.gui/.src/WebFileButton.class create mode 100644 comp/src/gb.web.gui/.src/WebForm.class create mode 100644 comp/src/gb.web.gui/.src/WebHBox.class create mode 100644 comp/src/gb.web.gui/.src/WebHtml.class create mode 100644 comp/src/gb.web.gui/.src/WebImage.class create mode 100644 comp/src/gb.web.gui/.src/WebLabel.class create mode 100644 comp/src/gb.web.gui/.src/WebListBox.class create mode 100644 comp/src/gb.web.gui/.src/WebProgressBar.class create mode 100644 comp/src/gb.web.gui/.src/WebRadioButton.class create mode 100644 comp/src/gb.web.gui/.src/WebScrollView.class create mode 100644 comp/src/gb.web.gui/.src/WebSeparator.class create mode 100644 comp/src/gb.web.gui/.src/WebSlider.class create mode 100644 comp/src/gb.web.gui/.src/WebSpinBox.class create mode 100644 comp/src/gb.web.gui/.src/WebTabPanel.class create mode 100644 comp/src/gb.web.gui/.src/WebTextArea.class create mode 100644 comp/src/gb.web.gui/.src/WebTextBox.class create mode 100644 comp/src/gb.web.gui/.src/WebTimer.class create mode 100644 comp/src/gb.web.gui/.src/WebVBox.class create mode 100644 comp/src/gb.web.gui/.src/WebWindow.class create mode 100644 comp/src/gb.web.gui/ac.js create mode 100644 comp/src/gb.web.gui/lib.js create mode 100644 comp/src/gb.web.gui/style.css create mode 100644 comp/src/gb.web/.component create mode 100644 comp/src/gb.web/.directory create mode 100644 comp/src/gb.web/.hidden/Session_opt create mode 100644 comp/src/gb.web/.icon.png create mode 100644 comp/src/gb.web/.project create mode 100644 comp/src/gb.web/.src/Application.module create mode 100644 comp/src/gb.web/.src/CGI.module create mode 100644 comp/src/gb.web/.src/FileSessionManager.class create mode 100644 comp/src/gb.web/.src/Main.module create mode 100644 comp/src/gb.web/.src/Request.module create mode 100644 comp/src/gb.web/.src/Response.module create mode 100644 comp/src/gb.web/.src/Session.module create mode 100644 comp/src/gb.web/.src/SessionManager.class create mode 100644 comp/src/gb.web/.src/SqliteSessionManager.class create mode 100644 comp/src/gb.web/.src/URL.class create mode 100644 comp/src/gb.web/.src/WebPage.class create mode 100644 comp/src/gb.web/.src/Webpage1.class create mode 100644 comp/src/gb.web/.src/Webpage1.webpage create mode 100644 comp/src/gb.web/.src/Webpage2.class create mode 100644 comp/src/gb.web/.src/Webpage2.webpage create mode 100644 comp/src/gb.web/.src/_Request_Get.class create mode 100644 comp/src/gb.web/.src/_Request_Post.class create mode 100644 comp/src/gb.web/.src/_ResponseCache.module create mode 100644 comp/src/gb.web/lang.cache create mode 100644 comp/src/order create mode 100644 component.am create mode 100644 configure.ac create mode 100644 gb.cairo/AUTHORS create mode 120000 gb.cairo/COPYING create mode 100644 gb.cairo/ChangeLog create mode 120000 gb.cairo/INSTALL create mode 100644 gb.cairo/Makefile.am create mode 100644 gb.cairo/NEWS create mode 100644 gb.cairo/README create mode 120000 gb.cairo/acinclude.m4 create mode 120000 gb.cairo/component.am create mode 100644 gb.cairo/configure.ac create mode 120000 gb.cairo/gambas.h create mode 120000 gb.cairo/gb.image.h create mode 120000 gb.cairo/gb_common.h create mode 120000 gb.cairo/m4 create mode 120000 gb.cairo/reconf create mode 100644 gb.cairo/src/Makefile.am create mode 100644 gb.cairo/src/c_cairo.c create mode 100644 gb.cairo/src/c_cairo.h create mode 100644 gb.cairo/src/c_surface.c create mode 100644 gb.cairo/src/c_surface.h create mode 100644 gb.cairo/src/gb.cairo.component create mode 100644 gb.cairo/src/main.c create mode 100644 gb.cairo/src/main.h create mode 100644 gb.compress.bzlib2/AUTHORS create mode 120000 gb.compress.bzlib2/COPYING create mode 100644 gb.compress.bzlib2/ChangeLog create mode 120000 gb.compress.bzlib2/INSTALL create mode 100644 gb.compress.bzlib2/Makefile.am create mode 100644 gb.compress.bzlib2/NEWS create mode 100644 gb.compress.bzlib2/README create mode 120000 gb.compress.bzlib2/acinclude.m4 create mode 120000 gb.compress.bzlib2/component.am create mode 100644 gb.compress.bzlib2/configure.ac create mode 120000 gb.compress.bzlib2/gambas.h create mode 120000 gb.compress.bzlib2/gb.compress.h create mode 120000 gb.compress.bzlib2/gb_common.h create mode 120000 gb.compress.bzlib2/m4 create mode 120000 gb.compress.bzlib2/reconf create mode 100644 gb.compress.bzlib2/src/Makefile.am create mode 100644 gb.compress.bzlib2/src/gb.compress.bzlib2.component create mode 100644 gb.compress.bzlib2/src/main.c create mode 100644 gb.compress.bzlib2/src/main.h create mode 100644 gb.compress.zlib/AUTHORS create mode 120000 gb.compress.zlib/COPYING create mode 100644 gb.compress.zlib/ChangeLog create mode 120000 gb.compress.zlib/INSTALL create mode 100644 gb.compress.zlib/Makefile.am create mode 100644 gb.compress.zlib/NEWS create mode 100644 gb.compress.zlib/README create mode 120000 gb.compress.zlib/acinclude.m4 create mode 120000 gb.compress.zlib/component.am create mode 100644 gb.compress.zlib/configure.ac create mode 120000 gb.compress.zlib/gambas.h create mode 120000 gb.compress.zlib/gb.compress.h create mode 120000 gb.compress.zlib/gb_common.h create mode 120000 gb.compress.zlib/m4 create mode 120000 gb.compress.zlib/reconf create mode 100644 gb.compress.zlib/src/Makefile.am create mode 100644 gb.compress.zlib/src/gb.compress.zlib.component create mode 100644 gb.compress.zlib/src/main.c create mode 100644 gb.compress.zlib/src/main.h create mode 100644 gb.compress.zstd/AUTHORS create mode 120000 gb.compress.zstd/COPYING create mode 100644 gb.compress.zstd/ChangeLog create mode 120000 gb.compress.zstd/INSTALL create mode 100644 gb.compress.zstd/Makefile.am create mode 100644 gb.compress.zstd/NEWS create mode 100644 gb.compress.zstd/README create mode 120000 gb.compress.zstd/acinclude.m4 create mode 120000 gb.compress.zstd/component.am create mode 100644 gb.compress.zstd/configure.ac create mode 120000 gb.compress.zstd/gambas.h create mode 120000 gb.compress.zstd/gb.compress.h create mode 120000 gb.compress.zstd/gb_common.h create mode 120000 gb.compress.zstd/m4 create mode 120000 gb.compress.zstd/reconf create mode 100644 gb.compress.zstd/src/Makefile.am create mode 100644 gb.compress.zstd/src/gb.compress.zstd.component create mode 100644 gb.compress.zstd/src/main.c create mode 100644 gb.compress.zstd/src/main.h create mode 100644 gb.crypt/AUTHORS create mode 120000 gb.crypt/COPYING create mode 100644 gb.crypt/ChangeLog create mode 120000 gb.crypt/INSTALL create mode 100644 gb.crypt/Makefile.am create mode 100644 gb.crypt/NEWS create mode 100644 gb.crypt/README create mode 120000 gb.crypt/acinclude.m4 create mode 120000 gb.crypt/component.am create mode 100644 gb.crypt/configure.ac create mode 120000 gb.crypt/gambas.h create mode 120000 gb.crypt/gb_common.h create mode 120000 gb.crypt/m4 create mode 120000 gb.crypt/reconf create mode 100644 gb.crypt/src/Makefile.am create mode 100644 gb.crypt/src/c_crypt.c create mode 100644 gb.crypt/src/c_crypt.h create mode 100644 gb.crypt/src/gb.crypt.component create mode 100644 gb.crypt/src/main.c create mode 100644 gb.crypt/src/main.h create mode 100644 gb.db.mysql/AUTHORS create mode 120000 gb.db.mysql/COPYING create mode 100644 gb.db.mysql/ChangeLog create mode 120000 gb.db.mysql/INSTALL create mode 100644 gb.db.mysql/Makefile.am create mode 100644 gb.db.mysql/NEWS create mode 100644 gb.db.mysql/README create mode 120000 gb.db.mysql/acinclude.m4 create mode 120000 gb.db.mysql/component.am create mode 100644 gb.db.mysql/configure.ac create mode 120000 gb.db.mysql/gambas.h create mode 120000 gb.db.mysql/gb.db.h create mode 120000 gb.db.mysql/gb.db.proto.h create mode 120000 gb.db.mysql/gb_common.h create mode 120000 gb.db.mysql/m4 create mode 120000 gb.db.mysql/reconf create mode 100755 gb.db.mysql/src/Makefile.am create mode 100644 gb.db.mysql/src/gb.db.mysql.component create mode 100644 gb.db.mysql/src/main.c create mode 100644 gb.db.mysql/src/main.h create mode 100644 gb.db.odbc/AUTHORS create mode 120000 gb.db.odbc/COPYING create mode 100644 gb.db.odbc/ChangeLog create mode 120000 gb.db.odbc/INSTALL create mode 100644 gb.db.odbc/Makefile.am create mode 100644 gb.db.odbc/NEWS create mode 100644 gb.db.odbc/README create mode 120000 gb.db.odbc/acinclude.m4 create mode 120000 gb.db.odbc/component.am create mode 100644 gb.db.odbc/configure.ac create mode 120000 gb.db.odbc/gambas.h create mode 120000 gb.db.odbc/gb.db.h create mode 120000 gb.db.odbc/gb.db.proto.h create mode 120000 gb.db.odbc/gb_common.h create mode 120000 gb.db.odbc/m4 create mode 120000 gb.db.odbc/reconf create mode 100644 gb.db.odbc/src/Makefile.am create mode 100644 gb.db.odbc/src/gb.db.odbc.component create mode 100644 gb.db.odbc/src/main.c create mode 100644 gb.db.odbc/src/main.h create mode 100644 gb.db.postgresql/AUTHORS create mode 100644 gb.db.postgresql/COPYING create mode 100644 gb.db.postgresql/COPYING.GPL create mode 100644 gb.db.postgresql/ChangeLog create mode 120000 gb.db.postgresql/INSTALL create mode 100644 gb.db.postgresql/Makefile.am create mode 100644 gb.db.postgresql/NEWS create mode 100644 gb.db.postgresql/README create mode 120000 gb.db.postgresql/acinclude.m4 create mode 120000 gb.db.postgresql/component.am create mode 100644 gb.db.postgresql/configure.ac create mode 120000 gb.db.postgresql/gambas.h create mode 120000 gb.db.postgresql/gb.db.h create mode 120000 gb.db.postgresql/gb.db.proto.h create mode 120000 gb.db.postgresql/gb_common.h create mode 120000 gb.db.postgresql/m4 create mode 120000 gb.db.postgresql/reconf create mode 100644 gb.db.postgresql/src/Makefile.am create mode 100644 gb.db.postgresql/src/gb.db.postgresql.component create mode 100644 gb.db.postgresql/src/main.c create mode 100644 gb.db.postgresql/src/main.h create mode 100644 gb.db.sqlite2/AUTHORS create mode 120000 gb.db.sqlite2/COPYING create mode 100644 gb.db.sqlite2/ChangeLog create mode 120000 gb.db.sqlite2/INSTALL create mode 100644 gb.db.sqlite2/Makefile.am create mode 100644 gb.db.sqlite2/NEWS create mode 100644 gb.db.sqlite2/README create mode 100644 gb.db.sqlite2/TODO create mode 120000 gb.db.sqlite2/acinclude.m4 create mode 120000 gb.db.sqlite2/component.am create mode 100644 gb.db.sqlite2/configure.ac create mode 120000 gb.db.sqlite2/gambas.h create mode 120000 gb.db.sqlite2/gb.db.h create mode 120000 gb.db.sqlite2/gb.db.proto.h create mode 120000 gb.db.sqlite2/gb_common.h create mode 120000 gb.db.sqlite2/m4 create mode 120000 gb.db.sqlite2/reconf create mode 100755 gb.db.sqlite2/src/Makefile.am create mode 100644 gb.db.sqlite2/src/dataset.cpp create mode 100644 gb.db.sqlite2/src/dataset.h create mode 100644 gb.db.sqlite2/src/gb.db.sqlite2.component create mode 100644 gb.db.sqlite2/src/main.cpp create mode 100644 gb.db.sqlite2/src/main.h create mode 100644 gb.db.sqlite2/src/qry_dat.cpp create mode 100644 gb.db.sqlite2/src/qry_dat.h create mode 100644 gb.db.sqlite2/src/sqlitedataset.cpp create mode 100644 gb.db.sqlite2/src/sqlitedataset.h create mode 100644 gb.db.sqlite2/src/stringhelper.cpp create mode 100644 gb.db.sqlite2/src/stringhelper.h create mode 100644 gb.db.sqlite3/AUTHORS create mode 120000 gb.db.sqlite3/COPYING create mode 100644 gb.db.sqlite3/ChangeLog create mode 120000 gb.db.sqlite3/INSTALL create mode 100644 gb.db.sqlite3/Makefile.am create mode 100644 gb.db.sqlite3/NEWS create mode 100644 gb.db.sqlite3/README create mode 120000 gb.db.sqlite3/acinclude.m4 create mode 120000 gb.db.sqlite3/component.am create mode 100644 gb.db.sqlite3/configure.ac create mode 120000 gb.db.sqlite3/gambas.h create mode 120000 gb.db.sqlite3/gb.db.h create mode 120000 gb.db.sqlite3/gb.db.proto.h create mode 120000 gb.db.sqlite3/gb_common.h create mode 120000 gb.db.sqlite3/m4 create mode 120000 gb.db.sqlite3/reconf create mode 100755 gb.db.sqlite3/src/Makefile.am create mode 100644 gb.db.sqlite3/src/README create mode 100644 gb.db.sqlite3/src/gb.db.sqlite3.component create mode 100644 gb.db.sqlite3/src/gb_buffer.c create mode 100644 gb.db.sqlite3/src/gb_buffer.h create mode 100644 gb.db.sqlite3/src/helper.c create mode 100644 gb.db.sqlite3/src/helper.h create mode 100644 gb.db.sqlite3/src/main.c create mode 100644 gb.db.sqlite3/src/main.h create mode 100644 gb.dbus/AUTHORS create mode 120000 gb.dbus/COPYING create mode 100644 gb.dbus/ChangeLog create mode 120000 gb.dbus/INSTALL create mode 100644 gb.dbus/Makefile.am create mode 100644 gb.dbus/NEWS create mode 100644 gb.dbus/README create mode 120000 gb.dbus/acinclude.m4 create mode 120000 gb.dbus/component.am create mode 100644 gb.dbus/configure.ac create mode 120000 gb.dbus/gambas.h create mode 120000 gb.dbus/gb_common.h create mode 120000 gb.dbus/m4 create mode 120000 gb.dbus/reconf create mode 100644 gb.dbus/src/Makefile.am create mode 100644 gb.dbus/src/c_dbus.c create mode 100644 gb.dbus/src/c_dbus.h create mode 100644 gb.dbus/src/c_dbusconnection.c create mode 100644 gb.dbus/src/c_dbusconnection.h create mode 100644 gb.dbus/src/c_dbusobserver.c create mode 100644 gb.dbus/src/c_dbusobserver.h create mode 100644 gb.dbus/src/c_dbusvariant.c create mode 100644 gb.dbus/src/c_dbusvariant.h create mode 100644 gb.dbus/src/dbus_print_message.c create mode 100644 gb.dbus/src/dbus_print_message.h create mode 100644 gb.dbus/src/gb.dbus.component create mode 100644 gb.dbus/src/gb.dbus/.directory create mode 100644 gb.dbus/src/gb.dbus/.hidden/icon.png create mode 100644 gb.dbus/src/gb.dbus/.icon.png create mode 100644 gb.dbus/src/gb.dbus/.project create mode 100644 gb.dbus/src/gb.dbus/.src/CIntrospection.class create mode 100644 gb.dbus/src/gb.dbus/.src/DBus.class create mode 100644 gb.dbus/src/gb.dbus/.src/DBusApplication.class create mode 100644 gb.dbus/src/gb.dbus/.src/DBusConnection.class create mode 100644 gb.dbus/src/gb.dbus/.src/DBusObject.class create mode 100644 gb.dbus/src/gb.dbus/.src/DBusProxy.class create mode 100644 gb.dbus/src/gb.dbus/.src/DBusSignal.class create mode 100644 gb.dbus/src/gb.dbus/.src/DBusValues.class create mode 100644 gb.dbus/src/gb.dbus/.src/MMain.module create mode 100644 gb.dbus/src/gb.dbus/.src/Test/CTest.class create mode 100644 gb.dbus/src/gb.dbus/.src/Test/CTest2.class create mode 100644 gb.dbus/src/gb.dbus/.src/Test/CTest3.class create mode 100644 gb.dbus/src/gb.dbus/.src/Test/MyObject.class create mode 100644 gb.dbus/src/gb.dbus/.src/Test/MyValue.class create mode 100644 gb.dbus/src/gb.dbus/.src/Test/mpris.class create mode 100644 gb.dbus/src/gb.dbus/.src/_DBusNull.class create mode 100644 gb.dbus/src/helper.c create mode 100644 gb.dbus/src/helper.h create mode 100644 gb.dbus/src/main.c create mode 100644 gb.dbus/src/main.h create mode 100644 gb.desktop.gnome.keyring/AUTHORS create mode 120000 gb.desktop.gnome.keyring/COPYING create mode 100644 gb.desktop.gnome.keyring/ChangeLog create mode 120000 gb.desktop.gnome.keyring/INSTALL create mode 100644 gb.desktop.gnome.keyring/Makefile.am create mode 100644 gb.desktop.gnome.keyring/NEWS create mode 100644 gb.desktop.gnome.keyring/README create mode 120000 gb.desktop.gnome.keyring/acinclude.m4 create mode 120000 gb.desktop.gnome.keyring/component.am create mode 100644 gb.desktop.gnome.keyring/configure.ac create mode 120000 gb.desktop.gnome.keyring/gambas.h create mode 120000 gb.desktop.gnome.keyring/gb_common.h create mode 120000 gb.desktop.gnome.keyring/m4 create mode 120000 gb.desktop.gnome.keyring/reconf create mode 100644 gb.desktop.gnome.keyring/src/Makefile.am create mode 100644 gb.desktop.gnome.keyring/src/gb.desktop.gnome.keyring.component create mode 100644 gb.desktop.gnome.keyring/src/keyring.c create mode 100644 gb.desktop.gnome.keyring/src/keyring.h create mode 100644 gb.desktop.gnome.keyring/src/main.c create mode 100644 gb.desktop.gnome.keyring/src/main.h create mode 100644 gb.desktop.x11/AUTHORS create mode 120000 gb.desktop.x11/COPYING create mode 100644 gb.desktop.x11/ChangeLog create mode 120000 gb.desktop.x11/INSTALL create mode 100644 gb.desktop.x11/Makefile.am create mode 100644 gb.desktop.x11/NEWS create mode 100644 gb.desktop.x11/README create mode 120000 gb.desktop.x11/acinclude.m4 create mode 120000 gb.desktop.x11/component.am create mode 100644 gb.desktop.x11/configure.ac create mode 120000 gb.desktop.x11/gambas.h create mode 120000 gb.desktop.x11/gb.image.h create mode 120000 gb.desktop.x11/gb_common.h create mode 120000 gb.desktop.x11/gb_list.h create mode 120000 gb.desktop.x11/gb_list_temp.h create mode 120000 gb.desktop.x11/m4 create mode 120000 gb.desktop.x11/reconf create mode 100644 gb.desktop.x11/src/Makefile.am create mode 100644 gb.desktop.x11/src/c_x11.c create mode 100644 gb.desktop.x11/src/c_x11.h create mode 100644 gb.desktop.x11/src/c_x11systray.c create mode 100644 gb.desktop.x11/src/c_x11systray.h create mode 100644 gb.desktop.x11/src/gb.desktop.x11.component create mode 100644 gb.desktop.x11/src/gb.desktop.x11/.directory create mode 100644 gb.desktop.x11/src/gb.desktop.x11/.hidden/icon.png create mode 100644 gb.desktop.x11/src/gb.desktop.x11/.icon.png create mode 100644 gb.desktop.x11/src/gb.desktop.x11/.project create mode 100644 gb.desktop.x11/src/gb.desktop.x11/.src/Atom.class create mode 100644 gb.desktop.x11/src/gb.desktop.x11/.src/DesktopWatcher.class create mode 100644 gb.desktop.x11/src/gb.desktop.x11/.src/DesktopWindow.class create mode 100644 gb.desktop.x11/src/gb.desktop.x11/.src/Main.module create mode 100644 gb.desktop.x11/src/gb.desktop.x11/.src/X11.class create mode 100644 gb.desktop.x11/src/gb.desktop.x11/.src/_DesktopVirtual.class create mode 100644 gb.desktop.x11/src/gb.desktop.x11/.src/_Desktop_Windows.class create mode 100644 gb.desktop.x11/src/gb_list.c create mode 100644 gb.desktop.x11/src/main.c create mode 100644 gb.desktop.x11/src/main.h create mode 100644 gb.desktop.x11/src/systray/common.h create mode 100644 gb.desktop.x11/src/systray/debug.c create mode 100644 gb.desktop.x11/src/systray/debug.h create mode 100644 gb.desktop.x11/src/systray/embed.c create mode 100644 gb.desktop.x11/src/systray/embed.h create mode 100644 gb.desktop.x11/src/systray/icons.c create mode 100644 gb.desktop.x11/src/systray/icons.h create mode 100644 gb.desktop.x11/src/systray/kde_tray.c create mode 100644 gb.desktop.x11/src/systray/kde_tray.h create mode 100644 gb.desktop.x11/src/systray/list.h create mode 100644 gb.desktop.x11/src/systray/settings.c create mode 100644 gb.desktop.x11/src/systray/settings.h create mode 100644 gb.desktop.x11/src/systray/systray.c create mode 100644 gb.desktop.x11/src/systray/systray.h create mode 100644 gb.desktop.x11/src/systray/tray.c create mode 100644 gb.desktop.x11/src/systray/tray.h create mode 100644 gb.desktop.x11/src/systray/wmh.c create mode 100644 gb.desktop.x11/src/systray/wmh.h create mode 100644 gb.desktop.x11/src/systray/xembed.c create mode 100644 gb.desktop.x11/src/systray/xembed.h create mode 100644 gb.desktop.x11/src/systray/xutils.c create mode 100644 gb.desktop.x11/src/systray/xutils.h create mode 100644 gb.desktop.x11/src/x11.c create mode 100644 gb.desktop.x11/src/x11.h create mode 100644 gb.form.htmlview/AUTHORS create mode 120000 gb.form.htmlview/COPYING create mode 100644 gb.form.htmlview/ChangeLog create mode 120000 gb.form.htmlview/INSTALL create mode 100644 gb.form.htmlview/Makefile.am create mode 100644 gb.form.htmlview/NEWS create mode 100644 gb.form.htmlview/README create mode 120000 gb.form.htmlview/acinclude.m4 create mode 120000 gb.form.htmlview/component.am create mode 100644 gb.form.htmlview/configure.ac create mode 120000 gb.form.htmlview/gambas.h create mode 120000 gb.form.htmlview/gb.draw.h create mode 120000 gb.form.htmlview/gb.geom.h create mode 120000 gb.form.htmlview/gb.image.h create mode 120000 gb.form.htmlview/gb.paint.h create mode 120000 gb.form.htmlview/gb_common.h create mode 120000 gb.form.htmlview/m4 create mode 120000 gb.form.htmlview/reconf create mode 100644 gb.form.htmlview/src/Makefile.am create mode 100644 gb.form.htmlview/src/c_htmldocument.cpp create mode 100644 gb.form.htmlview/src/c_htmldocument.h create mode 120000 gb.form.htmlview/src/gb.form.htmlview.component create mode 100644 gb.form.htmlview/src/gb.form.htmlview/.component create mode 100644 gb.form.htmlview/src/gb.form.htmlview/.directory create mode 100644 gb.form.htmlview/src/gb.form.htmlview/.hidden/control/htmlview.png create mode 100644 gb.form.htmlview/src/gb.form.htmlview/.hidden/test/desert.jpg create mode 100644 gb.form.htmlview/src/gb.form.htmlview/.hidden/test/test.html create mode 100644 gb.form.htmlview/src/gb.form.htmlview/.hidden/test/test2.html create mode 100644 gb.form.htmlview/src/gb.form.htmlview/.hidden/test/test3.html create mode 100644 gb.form.htmlview/src/gb.form.htmlview/.hidden/test/test4.html create mode 100644 gb.form.htmlview/src/gb.form.htmlview/.hidden/test/test5.html create mode 100644 gb.form.htmlview/src/gb.form.htmlview/.hidden/test/test6.html create mode 100644 gb.form.htmlview/src/gb.form.htmlview/.icon.png create mode 100644 gb.form.htmlview/src/gb.form.htmlview/.project create mode 100644 gb.form.htmlview/src/gb.form.htmlview/.src/FTest.class create mode 100644 gb.form.htmlview/src/gb.form.htmlview/.src/FTest.form create mode 100644 gb.form.htmlview/src/gb.form.htmlview/.src/HtmlView.class create mode 100644 gb.form.htmlview/src/gb.form.htmlview/.src/HtmlViewDocument.class create mode 100644 gb.form.htmlview/src/gb.form.htmlview/.src/Main.module create mode 100644 gb.form.htmlview/src/gb.form.htmlview/fail.png create mode 100644 gb.form.htmlview/src/gb.form.htmlview/master.css create mode 100644 gb.form.htmlview/src/gumbo/LICENSE create mode 100644 gb.form.htmlview/src/gumbo/attribute.c create mode 100644 gb.form.htmlview/src/gumbo/attribute.h create mode 100644 gb.form.htmlview/src/gumbo/char_ref.c create mode 100644 gb.form.htmlview/src/gumbo/char_ref.h create mode 100644 gb.form.htmlview/src/gumbo/char_ref.rl create mode 100644 gb.form.htmlview/src/gumbo/error.c create mode 100644 gb.form.htmlview/src/gumbo/error.h create mode 100644 gb.form.htmlview/src/gumbo/gumbo.h create mode 100644 gb.form.htmlview/src/gumbo/insertion_mode.h create mode 100644 gb.form.htmlview/src/gumbo/parser.c create mode 100644 gb.form.htmlview/src/gumbo/parser.h create mode 100644 gb.form.htmlview/src/gumbo/string_buffer.c create mode 100644 gb.form.htmlview/src/gumbo/string_buffer.h create mode 100644 gb.form.htmlview/src/gumbo/string_piece.c create mode 100644 gb.form.htmlview/src/gumbo/string_piece.h create mode 100644 gb.form.htmlview/src/gumbo/tag.c create mode 100644 gb.form.htmlview/src/gumbo/tag_enum.h create mode 100644 gb.form.htmlview/src/gumbo/tag_gperf.h create mode 100644 gb.form.htmlview/src/gumbo/tag_sizes.h create mode 100644 gb.form.htmlview/src/gumbo/tag_strings.h create mode 100644 gb.form.htmlview/src/gumbo/token_type.h create mode 100644 gb.form.htmlview/src/gumbo/tokenizer.c create mode 100644 gb.form.htmlview/src/gumbo/tokenizer.h create mode 100644 gb.form.htmlview/src/gumbo/tokenizer_states.h create mode 100644 gb.form.htmlview/src/gumbo/utf8.c create mode 100644 gb.form.htmlview/src/gumbo/utf8.h create mode 100644 gb.form.htmlview/src/gumbo/util.c create mode 100644 gb.form.htmlview/src/gumbo/util.h create mode 100644 gb.form.htmlview/src/gumbo/vector.c create mode 100644 gb.form.htmlview/src/gumbo/vector.h create mode 100644 gb.form.htmlview/src/litehtml/LICENSE create mode 100644 gb.form.htmlview/src/litehtml/README.md create mode 100644 gb.form.htmlview/src/litehtml/attributes.h create mode 100644 gb.form.htmlview/src/litehtml/background.cpp create mode 100644 gb.form.htmlview/src/litehtml/background.h create mode 100644 gb.form.htmlview/src/litehtml/borders.h create mode 100644 gb.form.htmlview/src/litehtml/box.cpp create mode 100644 gb.form.htmlview/src/litehtml/box.h create mode 100644 gb.form.htmlview/src/litehtml/codepoint.cpp create mode 100644 gb.form.htmlview/src/litehtml/codepoint.h create mode 100644 gb.form.htmlview/src/litehtml/context.cpp create mode 100644 gb.form.htmlview/src/litehtml/context.h create mode 100644 gb.form.htmlview/src/litehtml/css_length.cpp create mode 100644 gb.form.htmlview/src/litehtml/css_length.h create mode 100644 gb.form.htmlview/src/litehtml/css_margins.h create mode 100644 gb.form.htmlview/src/litehtml/css_offsets.h create mode 100644 gb.form.htmlview/src/litehtml/css_position.h create mode 100644 gb.form.htmlview/src/litehtml/css_selector.cpp create mode 100644 gb.form.htmlview/src/litehtml/css_selector.h create mode 100644 gb.form.htmlview/src/litehtml/document.cpp create mode 100644 gb.form.htmlview/src/litehtml/document.h create mode 100644 gb.form.htmlview/src/litehtml/el_anchor.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_anchor.h create mode 100644 gb.form.htmlview/src/litehtml/el_base.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_base.h create mode 100644 gb.form.htmlview/src/litehtml/el_before_after.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_before_after.h create mode 100644 gb.form.htmlview/src/litehtml/el_body.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_body.h create mode 100644 gb.form.htmlview/src/litehtml/el_break.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_break.h create mode 100644 gb.form.htmlview/src/litehtml/el_cdata.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_cdata.h create mode 100644 gb.form.htmlview/src/litehtml/el_comment.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_comment.h create mode 100644 gb.form.htmlview/src/litehtml/el_div.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_div.h create mode 100644 gb.form.htmlview/src/litehtml/el_font.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_font.h create mode 100644 gb.form.htmlview/src/litehtml/el_image.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_image.h create mode 100644 gb.form.htmlview/src/litehtml/el_li.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_li.h create mode 100644 gb.form.htmlview/src/litehtml/el_link.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_link.h create mode 100644 gb.form.htmlview/src/litehtml/el_para.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_para.h create mode 100644 gb.form.htmlview/src/litehtml/el_script.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_script.h create mode 100644 gb.form.htmlview/src/litehtml/el_space.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_space.h create mode 100644 gb.form.htmlview/src/litehtml/el_style.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_style.h create mode 100644 gb.form.htmlview/src/litehtml/el_table.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_table.h create mode 100644 gb.form.htmlview/src/litehtml/el_td.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_td.h create mode 100644 gb.form.htmlview/src/litehtml/el_text.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_text.h create mode 100644 gb.form.htmlview/src/litehtml/el_title.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_title.h create mode 100644 gb.form.htmlview/src/litehtml/el_tr.cpp create mode 100644 gb.form.htmlview/src/litehtml/el_tr.h create mode 100644 gb.form.htmlview/src/litehtml/element.cpp create mode 100644 gb.form.htmlview/src/litehtml/element.h create mode 100644 gb.form.htmlview/src/litehtml/html.cpp create mode 100644 gb.form.htmlview/src/litehtml/html.h create mode 100644 gb.form.htmlview/src/litehtml/html_tag.cpp create mode 100644 gb.form.htmlview/src/litehtml/html_tag.h create mode 100644 gb.form.htmlview/src/litehtml/iterators.cpp create mode 100644 gb.form.htmlview/src/litehtml/iterators.h create mode 100644 gb.form.htmlview/src/litehtml/media_query.cpp create mode 100644 gb.form.htmlview/src/litehtml/media_query.h create mode 100644 gb.form.htmlview/src/litehtml/num_cvt.cpp create mode 100644 gb.form.htmlview/src/litehtml/num_cvt.h create mode 100644 gb.form.htmlview/src/litehtml/os_types.h create mode 100644 gb.form.htmlview/src/litehtml/strtod.cpp create mode 100644 gb.form.htmlview/src/litehtml/style.cpp create mode 100644 gb.form.htmlview/src/litehtml/style.h create mode 100644 gb.form.htmlview/src/litehtml/stylesheet.cpp create mode 100644 gb.form.htmlview/src/litehtml/stylesheet.h create mode 100644 gb.form.htmlview/src/litehtml/table.cpp create mode 100644 gb.form.htmlview/src/litehtml/table.h create mode 100644 gb.form.htmlview/src/litehtml/tstring_view.cpp create mode 100644 gb.form.htmlview/src/litehtml/tstring_view.h create mode 100644 gb.form.htmlview/src/litehtml/types.h create mode 100644 gb.form.htmlview/src/litehtml/url.cpp create mode 100644 gb.form.htmlview/src/litehtml/url.h create mode 100644 gb.form.htmlview/src/litehtml/url_path.cpp create mode 100644 gb.form.htmlview/src/litehtml/url_path.h create mode 100644 gb.form.htmlview/src/litehtml/utf8_strings.cpp create mode 100644 gb.form.htmlview/src/litehtml/utf8_strings.h create mode 100644 gb.form.htmlview/src/litehtml/web_color.cpp create mode 100644 gb.form.htmlview/src/litehtml/web_color.h create mode 100644 gb.form.htmlview/src/main.cpp create mode 100644 gb.form.htmlview/src/main.h create mode 100644 gb.gmp/AUTHORS create mode 120000 gb.gmp/COPYING create mode 100644 gb.gmp/ChangeLog create mode 120000 gb.gmp/INSTALL create mode 100644 gb.gmp/Makefile.am create mode 100644 gb.gmp/NEWS create mode 100644 gb.gmp/README create mode 120000 gb.gmp/acinclude.m4 create mode 120000 gb.gmp/component.am create mode 100644 gb.gmp/configure.ac create mode 120000 gb.gmp/gambas.h create mode 120000 gb.gmp/gb_common.h create mode 120000 gb.gmp/m4 create mode 120000 gb.gmp/reconf create mode 100644 gb.gmp/src/Makefile.am create mode 100644 gb.gmp/src/c_bigint.c create mode 100644 gb.gmp/src/c_bigint.h create mode 100644 gb.gmp/src/c_rational.c create mode 100644 gb.gmp/src/c_rational.h create mode 100644 gb.gmp/src/gb.gmp.component create mode 100644 gb.gmp/src/main.c create mode 100644 gb.gmp/src/main.h create mode 100644 gb.gsl/AUTHORS create mode 120000 gb.gsl/COPYING create mode 100644 gb.gsl/ChangeLog create mode 120000 gb.gsl/INSTALL create mode 100644 gb.gsl/Makefile.am create mode 100644 gb.gsl/NEWS create mode 100644 gb.gsl/README create mode 100644 gb.gsl/Test/test/.directory create mode 100644 gb.gsl/Test/test/.icon.png create mode 100644 gb.gsl/Test/test/.project create mode 100644 gb.gsl/Test/test/.src/MMain.module create mode 100644 gb.gsl/Test/test/.src/Test.class create mode 100644 gb.gsl/Test/test/.src/TestComplex.class create mode 100644 gb.gsl/Test/test/.src/TestSuite.class create mode 120000 gb.gsl/acinclude.m4 create mode 120000 gb.gsl/component.am create mode 100644 gb.gsl/configure.ac create mode 120000 gb.gsl/gambas.h create mode 120000 gb.gsl/gb_common.h create mode 120000 gb.gsl/m4 create mode 120000 gb.gsl/reconf create mode 100644 gb.gsl/src/Makefile.am create mode 100644 gb.gsl/src/c_complex.c create mode 100644 gb.gsl/src/c_complex.h create mode 100644 gb.gsl/src/c_float_array.c create mode 100644 gb.gsl/src/c_float_array.h create mode 100644 gb.gsl/src/c_gsl.c create mode 100644 gb.gsl/src/c_gsl.h create mode 100644 gb.gsl/src/c_matrix.c create mode 100644 gb.gsl/src/c_matrix.h create mode 100644 gb.gsl/src/c_newtonpolynomial.c create mode 100644 gb.gsl/src/c_newtonpolynomial.h create mode 100644 gb.gsl/src/c_polynomial.c create mode 100644 gb.gsl/src/c_polynomial.h create mode 100644 gb.gsl/src/c_vector.c create mode 100644 gb.gsl/src/c_vector.h create mode 100644 gb.gsl/src/gb.gsl.component create mode 100644 gb.gsl/src/main.c create mode 100644 gb.gsl/src/main.h create mode 100644 gb.gtk/AUTHORS create mode 120000 gb.gtk/COPYING create mode 100644 gb.gtk/ChangeLog create mode 120000 gb.gtk/INSTALL create mode 100644 gb.gtk/Makefile.am create mode 100644 gb.gtk/NEWS create mode 100644 gb.gtk/README create mode 100644 gb.gtk/TODO create mode 120000 gb.gtk/acinclude.m4 create mode 120000 gb.gtk/component.am create mode 100644 gb.gtk/configure.ac create mode 120000 gb.gtk/gambas.h create mode 120000 gb.gtk/gb.draw.h create mode 120000 gb.gtk/gb.geom.h create mode 120000 gb.gtk/gb.gl.h create mode 120000 gb.gtk/gb.image.h create mode 120000 gb.gtk/gb.paint.h create mode 120000 gb.gtk/gb_common.h create mode 120000 gb.gtk/m4 create mode 120000 gb.gtk/reconf create mode 120000 gb.gtk/share create mode 100644 gb.gtk/src/CButton.cpp create mode 100644 gb.gtk/src/CButton.h create mode 100644 gb.gtk/src/CClipboard.cpp create mode 100644 gb.gtk/src/CClipboard.h create mode 100644 gb.gtk/src/CColor.cpp create mode 100644 gb.gtk/src/CColor.h create mode 100644 gb.gtk/src/CConst.cpp create mode 100644 gb.gtk/src/CConst.h create mode 100644 gb.gtk/src/CContainer.cpp create mode 100644 gb.gtk/src/CContainer.h create mode 100644 gb.gtk/src/CDialog.cpp create mode 100644 gb.gtk/src/CDialog.h create mode 100644 gb.gtk/src/CDraw.cpp create mode 100644 gb.gtk/src/CDraw.h create mode 100644 gb.gtk/src/CDrawingArea.cpp create mode 100644 gb.gtk/src/CDrawingArea.h create mode 100644 gb.gtk/src/CFont.cpp create mode 100644 gb.gtk/src/CFont.h create mode 100644 gb.gtk/src/CImage.cpp create mode 100644 gb.gtk/src/CImage.h create mode 100644 gb.gtk/src/CKey.cpp create mode 100644 gb.gtk/src/CKey.h create mode 100644 gb.gtk/src/CMenu.cpp create mode 100644 gb.gtk/src/CMenu.h create mode 100644 gb.gtk/src/CMouse.cpp create mode 100644 gb.gtk/src/CMouse.h create mode 100644 gb.gtk/src/CPanel.cpp create mode 100644 gb.gtk/src/CPanel.h create mode 100644 gb.gtk/src/CPicture.cpp create mode 100644 gb.gtk/src/CPicture.h create mode 100644 gb.gtk/src/CScreen.cpp create mode 100644 gb.gtk/src/CScreen.h create mode 100644 gb.gtk/src/CSlider.cpp create mode 100644 gb.gtk/src/CSlider.h create mode 100644 gb.gtk/src/CStyle.cpp create mode 100644 gb.gtk/src/CStyle.h create mode 100644 gb.gtk/src/CTabStrip.cpp create mode 100644 gb.gtk/src/CTabStrip.h create mode 100644 gb.gtk/src/CTextArea.cpp create mode 100644 gb.gtk/src/CTextArea.h create mode 100644 gb.gtk/src/CTextBox.cpp create mode 100644 gb.gtk/src/CTextBox.h create mode 100644 gb.gtk/src/CTrayIcon.cpp create mode 100644 gb.gtk/src/CTrayIcon.h create mode 100644 gb.gtk/src/CWatcher.cpp create mode 100644 gb.gtk/src/CWatcher.h create mode 100644 gb.gtk/src/CWidget.cpp create mode 100644 gb.gtk/src/CWidget.h create mode 100644 gb.gtk/src/CWindow.cpp create mode 100644 gb.gtk/src/CWindow.h create mode 100644 gb.gtk/src/Makefile.am create mode 100644 gb.gtk/src/canimation.cpp create mode 100644 gb.gtk/src/canimation.h create mode 100644 gb.gtk/src/cpaint_impl.cpp create mode 100644 gb.gtk/src/cpaint_impl.h create mode 100644 gb.gtk/src/cprinter.cpp create mode 100644 gb.gtk/src/cprinter.h create mode 100644 gb.gtk/src/csvgimage.cpp create mode 100644 gb.gtk/src/csvgimage.h create mode 100644 gb.gtk/src/font-parser.cpp create mode 100644 gb.gtk/src/font-parser.h create mode 100644 gb.gtk/src/gapplication.cpp create mode 100644 gb.gtk/src/gapplication.h create mode 100644 gb.gtk/src/gb.gtk.component create mode 100644 gb.gtk/src/gb.gtk.h create mode 100644 gb.gtk/src/gbutton.cpp create mode 100644 gb.gtk/src/gbutton.h create mode 100644 gb.gtk/src/gclipboard.h create mode 100644 gb.gtk/src/gcolor.h create mode 100644 gb.gtk/src/gcontainer.cpp create mode 100644 gb.gtk/src/gcontainer.h create mode 100644 gb.gtk/src/gcontrol.cpp create mode 100644 gb.gtk/src/gcontrol.h create mode 100644 gb.gtk/src/gcursor.cpp create mode 100644 gb.gtk/src/gcursor.h create mode 100644 gb.gtk/src/gdesktop.cpp create mode 100644 gb.gtk/src/gdesktop.h create mode 100644 gb.gtk/src/gdialog.cpp create mode 100644 gb.gtk/src/gdialog.h create mode 100644 gb.gtk/src/gdrag.cpp create mode 100644 gb.gtk/src/gdrag.h create mode 100644 gb.gtk/src/gdrawingarea.cpp create mode 100644 gb.gtk/src/gdrawingarea.h create mode 100644 gb.gtk/src/gfont.cpp create mode 100644 gb.gtk/src/gfont.h create mode 100644 gb.gtk/src/ggambastag.h create mode 100644 gb.gtk/src/gglarea.cpp create mode 100644 gb.gtk/src/gglarea.h create mode 100644 gb.gtk/src/gkey.cpp create mode 100644 gb.gtk/src/gkey.h create mode 100644 gb.gtk/src/gmainwindow.cpp create mode 100644 gb.gtk/src/gmainwindow.h create mode 100644 gb.gtk/src/gmenu.cpp create mode 100644 gb.gtk/src/gmenu.h create mode 100644 gb.gtk/src/gmouse.cpp create mode 100644 gb.gtk/src/gmouse.h create mode 100644 gb.gtk/src/gpanel.cpp create mode 100644 gb.gtk/src/gpanel.h create mode 100644 gb.gtk/src/gpicture.cpp create mode 100644 gb.gtk/src/gpicture.h create mode 100644 gb.gtk/src/gplugin.h create mode 100644 gb.gtk/src/gprinter.cpp create mode 100644 gb.gtk/src/gprinter.h create mode 100644 gb.gtk/src/gscrollbar.h create mode 100644 gb.gtk/src/gshare.h create mode 100644 gb.gtk/src/gsignals.cpp create mode 100644 gb.gtk/src/gslider.cpp create mode 100644 gb.gtk/src/gslider.h create mode 100644 gb.gtk/src/gtabstrip.cpp create mode 100644 gb.gtk/src/gtabstrip.h create mode 100644 gb.gtk/src/gtag.h create mode 100644 gb.gtk/src/gtextarea.cpp create mode 100644 gb.gtk/src/gtextarea.h create mode 100644 gb.gtk/src/gtextbox.cpp create mode 100644 gb.gtk/src/gtextbox.h create mode 100644 gb.gtk/src/gtools.cpp create mode 100644 gb.gtk/src/gtools.h create mode 100644 gb.gtk/src/gtrayicon.cpp create mode 100644 gb.gtk/src/gtrayicon.h create mode 100644 gb.gtk/src/gtree.cpp create mode 100644 gb.gtk/src/gtree.h create mode 100644 gb.gtk/src/kentities.h create mode 100644 gb.gtk/src/main.cpp create mode 100644 gb.gtk/src/main.h create mode 100644 gb.gtk/src/opengl/Makefile.am create mode 100644 gb.gtk/src/opengl/c_glarea.c create mode 100644 gb.gtk/src/opengl/c_glarea.h create mode 100644 gb.gtk/src/opengl/gb.gtk.opengl.component create mode 100644 gb.gtk/src/opengl/main.c create mode 100644 gb.gtk/src/opengl/main.h create mode 100644 gb.gtk/src/sm/bonobo-macros.h create mode 100644 gb.gtk/src/sm/gnome-client.c create mode 100644 gb.gtk/src/sm/gnome-client.h create mode 100644 gb.gtk/src/sm/gnome-ice.c create mode 100644 gb.gtk/src/sm/gnome-ice.h create mode 100644 gb.gtk/src/sm/gnome-macros.h create mode 100644 gb.gtk/src/sm/gnome-marshal.c create mode 100644 gb.gtk/src/sm/gnome-marshal.h create mode 100644 gb.gtk/src/sm/gnome-uidefs.h create mode 100644 gb.gtk/src/sm/gnometypebuiltins.c create mode 100644 gb.gtk/src/sm/gnometypebuiltins.h create mode 100644 gb.gtk/src/sm/libgnomeui.h create mode 100644 gb.gtk/src/sm/libgnomeuiP.h create mode 100644 gb.gtk/src/sm/sm.h create mode 100644 gb.gtk/src/watcher.cpp create mode 100644 gb.gtk/src/watcher.h create mode 100644 gb.gtk/src/widgets.h create mode 120000 gb.gtk/src/x11.c create mode 120000 gb.gtk/src/x11.h create mode 100644 gb.gtk3/AUTHORS create mode 120000 gb.gtk3/COPYING create mode 100644 gb.gtk3/ChangeLog create mode 120000 gb.gtk3/INSTALL create mode 100644 gb.gtk3/Makefile.am create mode 100644 gb.gtk3/NEWS create mode 100644 gb.gtk3/README create mode 100644 gb.gtk3/TODO create mode 120000 gb.gtk3/acinclude.m4 create mode 120000 gb.gtk3/component.am create mode 100644 gb.gtk3/configure.ac create mode 120000 gb.gtk3/gambas.h create mode 120000 gb.gtk3/gb.draw.h create mode 120000 gb.gtk3/gb.geom.h create mode 120000 gb.gtk3/gb.gl.h create mode 120000 gb.gtk3/gb.image.h create mode 120000 gb.gtk3/gb.paint.h create mode 120000 gb.gtk3/gb_common.h create mode 120000 gb.gtk3/m4 create mode 120000 gb.gtk3/reconf create mode 120000 gb.gtk3/share create mode 120000 gb.gtk3/src/CButton.cpp create mode 120000 gb.gtk3/src/CButton.h create mode 120000 gb.gtk3/src/CClipboard.cpp create mode 120000 gb.gtk3/src/CClipboard.h create mode 120000 gb.gtk3/src/CColor.cpp create mode 120000 gb.gtk3/src/CColor.h create mode 120000 gb.gtk3/src/CConst.cpp create mode 120000 gb.gtk3/src/CConst.h create mode 120000 gb.gtk3/src/CContainer.cpp create mode 120000 gb.gtk3/src/CContainer.h create mode 120000 gb.gtk3/src/CDialog.cpp create mode 120000 gb.gtk3/src/CDialog.h create mode 120000 gb.gtk3/src/CDraw.cpp create mode 120000 gb.gtk3/src/CDraw.h create mode 120000 gb.gtk3/src/CDrawingArea.cpp create mode 120000 gb.gtk3/src/CDrawingArea.h create mode 120000 gb.gtk3/src/CFont.cpp create mode 120000 gb.gtk3/src/CFont.h create mode 120000 gb.gtk3/src/CImage.cpp create mode 120000 gb.gtk3/src/CImage.h create mode 120000 gb.gtk3/src/CKey.cpp create mode 120000 gb.gtk3/src/CKey.h create mode 120000 gb.gtk3/src/CMenu.cpp create mode 120000 gb.gtk3/src/CMenu.h create mode 120000 gb.gtk3/src/CMouse.cpp create mode 120000 gb.gtk3/src/CMouse.h create mode 120000 gb.gtk3/src/CPanel.cpp create mode 120000 gb.gtk3/src/CPanel.h create mode 120000 gb.gtk3/src/CPicture.cpp create mode 120000 gb.gtk3/src/CPicture.h create mode 120000 gb.gtk3/src/CScreen.cpp create mode 120000 gb.gtk3/src/CScreen.h create mode 120000 gb.gtk3/src/CSlider.cpp create mode 120000 gb.gtk3/src/CSlider.h create mode 120000 gb.gtk3/src/CStyle.cpp create mode 120000 gb.gtk3/src/CStyle.h create mode 120000 gb.gtk3/src/CTabStrip.cpp create mode 120000 gb.gtk3/src/CTabStrip.h create mode 120000 gb.gtk3/src/CTextArea.cpp create mode 120000 gb.gtk3/src/CTextArea.h create mode 120000 gb.gtk3/src/CTextBox.cpp create mode 120000 gb.gtk3/src/CTextBox.h create mode 120000 gb.gtk3/src/CTrayIcon.cpp create mode 120000 gb.gtk3/src/CTrayIcon.h create mode 120000 gb.gtk3/src/CWatcher.cpp create mode 120000 gb.gtk3/src/CWatcher.h create mode 120000 gb.gtk3/src/CWidget.cpp create mode 120000 gb.gtk3/src/CWidget.h create mode 120000 gb.gtk3/src/CWindow.cpp create mode 120000 gb.gtk3/src/CWindow.h create mode 100644 gb.gtk3/src/Makefile.am create mode 120000 gb.gtk3/src/canimation.cpp create mode 120000 gb.gtk3/src/canimation.h create mode 120000 gb.gtk3/src/cpaint_impl.cpp create mode 120000 gb.gtk3/src/cpaint_impl.h create mode 120000 gb.gtk3/src/cprinter.cpp create mode 120000 gb.gtk3/src/cprinter.h create mode 120000 gb.gtk3/src/csvgimage.cpp create mode 120000 gb.gtk3/src/csvgimage.h create mode 120000 gb.gtk3/src/font-parser.cpp create mode 120000 gb.gtk3/src/font-parser.h create mode 120000 gb.gtk3/src/gapplication.cpp create mode 120000 gb.gtk3/src/gapplication.h create mode 120000 gb.gtk3/src/gb.gtk.h create mode 100644 gb.gtk3/src/gb.gtk.patch.h create mode 100644 gb.gtk3/src/gb.gtk.platform.h create mode 100644 gb.gtk3/src/gb.gtk3.component create mode 120000 gb.gtk3/src/gbutton.cpp create mode 120000 gb.gtk3/src/gbutton.h create mode 120000 gb.gtk3/src/gclipboard.h create mode 120000 gb.gtk3/src/gcolor.h create mode 120000 gb.gtk3/src/gcontainer.cpp create mode 120000 gb.gtk3/src/gcontainer.h create mode 120000 gb.gtk3/src/gcontrol.cpp create mode 120000 gb.gtk3/src/gcontrol.h create mode 120000 gb.gtk3/src/gcursor.cpp create mode 120000 gb.gtk3/src/gcursor.h create mode 120000 gb.gtk3/src/gdesktop.cpp create mode 120000 gb.gtk3/src/gdesktop.h create mode 120000 gb.gtk3/src/gdialog.cpp create mode 120000 gb.gtk3/src/gdialog.h create mode 120000 gb.gtk3/src/gdrag.cpp create mode 120000 gb.gtk3/src/gdrag.h create mode 120000 gb.gtk3/src/gdrawingarea.cpp create mode 120000 gb.gtk3/src/gdrawingarea.h create mode 120000 gb.gtk3/src/gfont.cpp create mode 120000 gb.gtk3/src/gfont.h create mode 120000 gb.gtk3/src/ggambastag.h create mode 120000 gb.gtk3/src/gkey.cpp create mode 120000 gb.gtk3/src/gkey.h create mode 120000 gb.gtk3/src/gmainwindow.cpp create mode 120000 gb.gtk3/src/gmainwindow.h create mode 120000 gb.gtk3/src/gmenu.cpp create mode 120000 gb.gtk3/src/gmenu.h create mode 120000 gb.gtk3/src/gmouse.cpp create mode 120000 gb.gtk3/src/gmouse.h create mode 120000 gb.gtk3/src/gpanel.cpp create mode 120000 gb.gtk3/src/gpanel.h create mode 120000 gb.gtk3/src/gpicture.cpp create mode 120000 gb.gtk3/src/gpicture.h create mode 120000 gb.gtk3/src/gprinter.cpp create mode 120000 gb.gtk3/src/gprinter.h create mode 120000 gb.gtk3/src/gscrollbar.h create mode 120000 gb.gtk3/src/gshare.h create mode 120000 gb.gtk3/src/gsignals.cpp create mode 120000 gb.gtk3/src/gslider.cpp create mode 120000 gb.gtk3/src/gslider.h create mode 120000 gb.gtk3/src/gtabstrip.cpp create mode 120000 gb.gtk3/src/gtabstrip.h create mode 120000 gb.gtk3/src/gtag.h create mode 120000 gb.gtk3/src/gtextarea.cpp create mode 120000 gb.gtk3/src/gtextarea.h create mode 120000 gb.gtk3/src/gtextbox.cpp create mode 120000 gb.gtk3/src/gtextbox.h create mode 120000 gb.gtk3/src/gtools.cpp create mode 120000 gb.gtk3/src/gtools.h create mode 120000 gb.gtk3/src/gtrayicon.cpp create mode 120000 gb.gtk3/src/gtrayicon.h create mode 120000 gb.gtk3/src/gtree.cpp create mode 120000 gb.gtk3/src/gtree.h create mode 120000 gb.gtk3/src/kentities.h create mode 100644 gb.gtk3/src/main.cpp create mode 100644 gb.gtk3/src/main.h create mode 100644 gb.gtk3/src/opengl/Makefile.am create mode 100644 gb.gtk3/src/opengl/c_glarea.c create mode 100644 gb.gtk3/src/opengl/c_glarea.h create mode 100644 gb.gtk3/src/opengl/gb.gtk3.opengl.component create mode 100644 gb.gtk3/src/opengl/main.c create mode 100644 gb.gtk3/src/opengl/main.h create mode 120000 gb.gtk3/src/watcher.cpp create mode 120000 gb.gtk3/src/watcher.h create mode 100644 gb.gtk3/src/wayland/Makefile.am create mode 100644 gb.gtk3/src/wayland/gb.gtk3.wayland.component create mode 100644 gb.gtk3/src/wayland/main.c create mode 100644 gb.gtk3/src/wayland/main.h create mode 100644 gb.gtk3/src/webview/Makefile.am create mode 100644 gb.gtk3/src/webview/c_websettings.c create mode 100644 gb.gtk3/src/webview/c_websettings.h create mode 100644 gb.gtk3/src/webview/c_webview.c create mode 100644 gb.gtk3/src/webview/c_webview.h create mode 100644 gb.gtk3/src/webview/gb.gtk3.webview.component create mode 100644 gb.gtk3/src/webview/main.c create mode 100644 gb.gtk3/src/webview/main.h create mode 120000 gb.gtk3/src/widgets.h create mode 100644 gb.gtk3/src/x11/Makefile.am create mode 100644 gb.gtk3/src/x11/gb.gtk3.x11.component create mode 100644 gb.gtk3/src/x11/main.c create mode 100644 gb.gtk3/src/x11/main.h create mode 120000 gb.gtk3/src/x11/x11.c create mode 120000 gb.gtk3/src/x11/x11.h create mode 100644 gb.httpd/AUTHORS create mode 120000 gb.httpd/COPYING create mode 100644 gb.httpd/ChangeLog create mode 120000 gb.httpd/INSTALL create mode 100644 gb.httpd/Makefile.am create mode 100644 gb.httpd/NEWS create mode 100644 gb.httpd/README create mode 120000 gb.httpd/acinclude.m4 create mode 120000 gb.httpd/component.am create mode 100644 gb.httpd/configure.ac create mode 120000 gb.httpd/gambas.h create mode 120000 gb.httpd/gb_common.h create mode 120000 gb.httpd/m4 create mode 120000 gb.httpd/reconf create mode 100644 gb.httpd/src/Makefile.am create mode 100644 gb.httpd/src/fdwatch.c create mode 100644 gb.httpd/src/fdwatch.h create mode 100644 gb.httpd/src/gb.httpd.component create mode 100644 gb.httpd/src/libhttpd.c create mode 100644 gb.httpd/src/libhttpd.h create mode 100644 gb.httpd/src/main.c create mode 100644 gb.httpd/src/main.h create mode 100644 gb.httpd/src/match.c create mode 100644 gb.httpd/src/match.h create mode 100644 gb.httpd/src/mime_encodings.h create mode 100644 gb.httpd/src/mime_types.h create mode 100644 gb.httpd/src/strerror.c create mode 100644 gb.httpd/src/tdate_parse.c create mode 100644 gb.httpd/src/tdate_parse.h create mode 100644 gb.httpd/src/thttpd.c create mode 100644 gb.httpd/src/thttpd.h create mode 100644 gb.httpd/src/timers.c create mode 100644 gb.httpd/src/timers.h create mode 100644 gb.httpd/src/version.h create mode 100644 gb.image.imlib/AUTHORS create mode 120000 gb.image.imlib/COPYING create mode 100644 gb.image.imlib/ChangeLog create mode 120000 gb.image.imlib/INSTALL create mode 100644 gb.image.imlib/Makefile.am create mode 100644 gb.image.imlib/NEWS create mode 100644 gb.image.imlib/README create mode 120000 gb.image.imlib/acinclude.m4 create mode 120000 gb.image.imlib/component.am create mode 100644 gb.image.imlib/configure.ac create mode 120000 gb.image.imlib/gambas.h create mode 120000 gb.image.imlib/gb.draw.h create mode 120000 gb.image.imlib/gb.image.h create mode 120000 gb.image.imlib/gb_common.h create mode 120000 gb.image.imlib/m4 create mode 120000 gb.image.imlib/reconf create mode 100644 gb.image.imlib/src/Makefile.am create mode 100644 gb.image.imlib/src/c_image.c create mode 100644 gb.image.imlib/src/c_image.h create mode 100644 gb.image.imlib/src/c_imlib.c create mode 100644 gb.image.imlib/src/c_imlib.h create mode 100644 gb.image.imlib/src/gb.image.imlib.component create mode 100644 gb.image.imlib/src/main.c create mode 100644 gb.image.imlib/src/main.h create mode 100644 gb.image.io/AUTHORS create mode 120000 gb.image.io/COPYING create mode 100644 gb.image.io/ChangeLog create mode 120000 gb.image.io/INSTALL create mode 100644 gb.image.io/Makefile.am create mode 100644 gb.image.io/NEWS create mode 100644 gb.image.io/README create mode 120000 gb.image.io/acinclude.m4 create mode 120000 gb.image.io/component.am create mode 100644 gb.image.io/configure.ac create mode 120000 gb.image.io/gambas.h create mode 120000 gb.image.io/gb.image.h create mode 120000 gb.image.io/gb_common.h create mode 120000 gb.image.io/m4 create mode 120000 gb.image.io/reconf create mode 100644 gb.image.io/src/Makefile.am create mode 100644 gb.image.io/src/c_image.c create mode 100644 gb.image.io/src/c_image.h create mode 100644 gb.image.io/src/gb.image.io.component create mode 100644 gb.image.io/src/main.c create mode 100644 gb.image.io/src/main.h create mode 100644 gb.jit.llvm/AUTHORS create mode 120000 gb.jit.llvm/COPYING create mode 100644 gb.jit.llvm/ChangeLog create mode 120000 gb.jit.llvm/INSTALL create mode 100644 gb.jit.llvm/Makefile.am create mode 100644 gb.jit.llvm/NEWS create mode 100644 gb.jit.llvm/README create mode 120000 gb.jit.llvm/acinclude.m4 create mode 120000 gb.jit.llvm/component.am create mode 100644 gb.jit.llvm/configure.ac create mode 120000 gb.jit.llvm/gambas.h create mode 120000 gb.jit.llvm/gb_common.h create mode 120000 gb.jit.llvm/m4 create mode 120000 gb.jit.llvm/reconf create mode 100644 gb.jit.llvm/src/Makefile.am create mode 100644 gb.jit.llvm/src/gb.jit.h create mode 100644 gb.jit.llvm/src/gb.jit.llvm.component create mode 100644 gb.jit.llvm/src/jit.h create mode 100644 gb.jit.llvm/src/jit_api.cpp create mode 100644 gb.jit.llvm/src/jit_codegen.cpp create mode 100644 gb.jit.llvm/src/jit_codegen_conv.h create mode 100644 gb.jit.llvm/src/jit_compile.cpp create mode 100644 gb.jit.llvm/src/jit_conv.cpp create mode 100644 gb.jit.llvm/src/jit_expressions.cpp create mode 100644 gb.jit.llvm/src/jit_gambas_pass.cpp create mode 100644 gb.jit.llvm/src/jit_gambas_pass.h create mode 100644 gb.jit.llvm/src/jit_read.cpp create mode 100644 gb.jit.llvm/src/jit_runtime.c create mode 100644 gb.jit.llvm/src/jit_runtime.h create mode 100644 gb.jit.llvm/src/main.cpp create mode 100644 gb.jit.llvm/src/main.h create mode 100644 gb.libxml/AUTHORS create mode 120000 gb.libxml/COPYING create mode 100644 gb.libxml/ChangeLog create mode 120000 gb.libxml/INSTALL create mode 100644 gb.libxml/Makefile.am create mode 100644 gb.libxml/NEWS create mode 100644 gb.libxml/README create mode 120000 gb.libxml/acinclude.m4 create mode 120000 gb.libxml/component.am create mode 100644 gb.libxml/configure.ac create mode 120000 gb.libxml/gambas.h create mode 120000 gb.libxml/m4 create mode 120000 gb.libxml/reconf create mode 100644 gb.libxml/src/CXMLDocument.c create mode 100644 gb.libxml/src/CXMLDocument.h create mode 100644 gb.libxml/src/CXMLNode.c create mode 100644 gb.libxml/src/CXMLNode.h create mode 100644 gb.libxml/src/CXMLReader.c create mode 100644 gb.libxml/src/CXMLReader.h create mode 100644 gb.libxml/src/CXMLWriter.c create mode 100644 gb.libxml/src/CXMLWriter.h create mode 100644 gb.libxml/src/Makefile.am create mode 100644 gb.libxml/src/gb.libxml.component create mode 100644 gb.libxml/src/libxml.kateproject create mode 100644 gb.libxml/src/main.c create mode 100644 gb.libxml/src/main.h create mode 100644 gb.media/AUTHORS create mode 120000 gb.media/COPYING create mode 100644 gb.media/ChangeLog create mode 120000 gb.media/INSTALL create mode 100644 gb.media/Makefile.am create mode 100644 gb.media/NEWS create mode 100644 gb.media/README create mode 120000 gb.media/acinclude.m4 create mode 120000 gb.media/component.am create mode 100644 gb.media/configure.ac create mode 120000 gb.media/gambas.h create mode 120000 gb.media/gb.image.h create mode 120000 gb.media/gb_common.h create mode 120000 gb.media/m4 create mode 120000 gb.media/reconf create mode 100644 gb.media/src/Makefile.am create mode 100644 gb.media/src/c_media.c create mode 100644 gb.media/src/c_media.h create mode 100644 gb.media/src/c_mediaplayer.c create mode 100644 gb.media/src/c_mediaplayer.h create mode 100644 gb.media/src/c_mediavideo.c create mode 100644 gb.media/src/c_mediavideo.h create mode 100644 gb.media/src/gb.media.component create mode 100644 gb.media/src/main.c create mode 100644 gb.media/src/main.h create mode 100644 gb.mime/AUTHORS create mode 120000 gb.mime/COPYING create mode 100644 gb.mime/ChangeLog create mode 120000 gb.mime/INSTALL create mode 100644 gb.mime/Makefile.am create mode 100644 gb.mime/NEWS create mode 100644 gb.mime/README create mode 120000 gb.mime/acinclude.m4 create mode 120000 gb.mime/component.am create mode 100644 gb.mime/configure.ac create mode 120000 gb.mime/gambas.h create mode 120000 gb.mime/gb_common.h create mode 120000 gb.mime/m4 create mode 120000 gb.mime/reconf create mode 100644 gb.mime/src/Makefile.am create mode 100644 gb.mime/src/c_mime.c create mode 100644 gb.mime/src/c_mime.h create mode 100644 gb.mime/src/c_mimemessage.c create mode 100644 gb.mime/src/c_mimemessage.h create mode 100644 gb.mime/src/c_mimepart.c create mode 100644 gb.mime/src/c_mimepart.h create mode 100644 gb.mime/src/gb.mime.component create mode 100644 gb.mime/src/main.c create mode 100644 gb.mime/src/main.h create mode 100644 gb.ncurses/AUTHORS create mode 120000 gb.ncurses/COPYING create mode 100644 gb.ncurses/ChangeLog create mode 120000 gb.ncurses/INSTALL create mode 100644 gb.ncurses/Makefile.am create mode 100644 gb.ncurses/NEWS create mode 100644 gb.ncurses/README create mode 120000 gb.ncurses/acinclude.m4 create mode 120000 gb.ncurses/component.am create mode 100644 gb.ncurses/configure.ac create mode 120000 gb.ncurses/gambas.h create mode 120000 gb.ncurses/gb_common.h create mode 120000 gb.ncurses/m4 create mode 120000 gb.ncurses/reconf create mode 100644 gb.ncurses/src/Makefile.am create mode 100644 gb.ncurses/src/c_color.c create mode 100644 gb.ncurses/src/c_color.h create mode 100644 gb.ncurses/src/c_input.c create mode 100644 gb.ncurses/src/c_input.h create mode 100644 gb.ncurses/src/c_key.c create mode 100644 gb.ncurses/src/c_key.h create mode 100644 gb.ncurses/src/c_screen.c create mode 100644 gb.ncurses/src/c_screen.h create mode 100644 gb.ncurses/src/c_window.c create mode 100644 gb.ncurses/src/c_window.h create mode 100644 gb.ncurses/src/gb.ncurses.component create mode 100644 gb.ncurses/src/main.c create mode 100644 gb.ncurses/src/main.h create mode 100644 gb.net.curl/AUTHORS create mode 120000 gb.net.curl/COPYING create mode 100644 gb.net.curl/ChangeLog create mode 120000 gb.net.curl/INSTALL create mode 100644 gb.net.curl/Makefile.am create mode 100644 gb.net.curl/NEWS create mode 100644 gb.net.curl/README create mode 120000 gb.net.curl/acinclude.m4 create mode 120000 gb.net.curl/component.am create mode 100644 gb.net.curl/configure.ac create mode 120000 gb.net.curl/gambas.h create mode 120000 gb.net.curl/gb_common.h create mode 120000 gb.net.curl/m4 create mode 120000 gb.net.curl/reconf create mode 100644 gb.net.curl/src/CCurl.c create mode 100644 gb.net.curl/src/CCurl.h create mode 100644 gb.net.curl/src/CFtpClient.c create mode 100644 gb.net.curl/src/CFtpClient.h create mode 100644 gb.net.curl/src/CHttpClient.c create mode 100644 gb.net.curl/src/CHttpClient.h create mode 100644 gb.net.curl/src/CNet.c create mode 100644 gb.net.curl/src/CNet.h create mode 100644 gb.net.curl/src/CProxy.c create mode 100644 gb.net.curl/src/CProxy.h create mode 100644 gb.net.curl/src/Makefile.am create mode 100644 gb.net.curl/src/gb.net.curl.component create mode 100644 gb.net.curl/src/gb.net.curl/.directory create mode 100644 gb.net.curl/src/gb.net.curl/.icon.png create mode 100644 gb.net.curl/src/gb.net.curl/.project create mode 100644 gb.net.curl/src/gb.net.curl/.src/Download.class create mode 100644 gb.net.curl/src/gb.net.curl/.src/DownloadManager.class create mode 100644 gb.net.curl/src/gb.net.curl/.src/HttpForm.class create mode 100644 gb.net.curl/src/gb.net.curl/.src/MMain.module create mode 100644 gb.net.curl/src/gbcurl.c create mode 100644 gb.net.curl/src/gbcurl.h create mode 100644 gb.net.curl/src/main.c create mode 100644 gb.net.curl/src/main.h create mode 100644 gb.net/AUTHORS create mode 120000 gb.net/COPYING create mode 100644 gb.net/ChangeLog create mode 120000 gb.net/INSTALL create mode 100644 gb.net/Makefile.am create mode 100644 gb.net/NEWS create mode 100644 gb.net/README create mode 120000 gb.net/acinclude.m4 create mode 120000 gb.net/component.am create mode 100644 gb.net/configure.ac create mode 120000 gb.net/gambas.h create mode 120000 gb.net/gb_common.h create mode 120000 gb.net/m4 create mode 120000 gb.net/reconf create mode 100644 gb.net/src/CDnsClient.c create mode 100644 gb.net/src/CDnsClient.h create mode 100644 gb.net/src/CNet.c create mode 100644 gb.net/src/CNet.h create mode 100644 gb.net/src/CSerialPort.c create mode 100644 gb.net/src/CSerialPort.h create mode 100644 gb.net/src/CServerSocket.c create mode 100644 gb.net/src/CServerSocket.h create mode 100644 gb.net/src/CSocket.c create mode 100644 gb.net/src/CSocket.h create mode 100644 gb.net/src/CUdpSocket.c create mode 100644 gb.net/src/CUdpSocket.h create mode 100644 gb.net/src/Makefile.am create mode 100644 gb.net/src/doc/README create mode 100644 gb.net/src/doc/changes.txt create mode 100644 gb.net/src/doc/threading.sxw create mode 100644 gb.net/src/gb.net.component create mode 100644 gb.net/src/gb_network.h create mode 100644 gb.net/src/main.c create mode 100644 gb.net/src/main.h create mode 100644 gb.net/src/speed.c create mode 100644 gb.net/src/speed.h create mode 100644 gb.net/src/tools.c create mode 100644 gb.net/src/tools.h create mode 100644 gb.openal/AUTHORS create mode 120000 gb.openal/COPYING create mode 100644 gb.openal/ChangeLog create mode 120000 gb.openal/INSTALL create mode 100644 gb.openal/Makefile.am create mode 100644 gb.openal/NEWS create mode 100644 gb.openal/README create mode 120000 gb.openal/acinclude.m4 create mode 120000 gb.openal/component.am create mode 100644 gb.openal/configure.ac create mode 120000 gb.openal/gambas.h create mode 120000 gb.openal/gb_common.h create mode 120000 gb.openal/m4 create mode 120000 gb.openal/reconf create mode 100644 gb.openal/src/Makefile.am create mode 100644 gb.openal/src/c_al.c create mode 100644 gb.openal/src/c_al.h create mode 100644 gb.openal/src/c_alc.c create mode 100644 gb.openal/src/c_alc.h create mode 100644 gb.openal/src/c_alure.c create mode 100644 gb.openal/src/c_alure.h create mode 100644 gb.openal/src/gb.openal.component create mode 100644 gb.openal/src/main.c create mode 100644 gb.openal/src/main.h create mode 100644 gb.opengl/AUTHORS create mode 120000 gb.opengl/COPYING create mode 100644 gb.opengl/ChangeLog create mode 120000 gb.opengl/INSTALL create mode 100644 gb.opengl/Makefile.am create mode 100644 gb.opengl/NEWS create mode 100644 gb.opengl/README create mode 120000 gb.opengl/acinclude.m4 create mode 120000 gb.opengl/component.am create mode 100644 gb.opengl/configure.ac create mode 120000 gb.opengl/gambas.h create mode 120000 gb.opengl/gb.image.h create mode 120000 gb.opengl/gb_common.h create mode 120000 gb.opengl/m4 create mode 120000 gb.opengl/reconf create mode 100644 gb.opengl/src/GL.c create mode 100644 gb.opengl/src/GL.h create mode 100644 gb.opengl/src/GLclipping.c create mode 100644 gb.opengl/src/GLclipping.h create mode 100644 gb.opengl/src/GLcolorLighting.c create mode 100644 gb.opengl/src/GLcolorLighting.h create mode 100644 gb.opengl/src/GLcoordTransf.c create mode 100644 gb.opengl/src/GLcoordTransf.h create mode 100644 gb.opengl/src/GLdisplayList.c create mode 100644 gb.opengl/src/GLdisplayList.h create mode 100644 gb.opengl/src/GLeval.c create mode 100644 gb.opengl/src/GLeval.h create mode 100644 gb.opengl/src/GLfog.c create mode 100644 gb.opengl/src/GLfog.h create mode 100644 gb.opengl/src/GLframeBufferOps.c create mode 100644 gb.opengl/src/GLframeBufferOps.h create mode 100644 gb.opengl/src/GLinfo.c create mode 100644 gb.opengl/src/GLinfo.h create mode 100644 gb.opengl/src/GLmodesExec.c create mode 100644 gb.opengl/src/GLmodesExec.h create mode 100644 gb.opengl/src/GLpixelOperations.c create mode 100644 gb.opengl/src/GLpixelOperations.h create mode 100644 gb.opengl/src/GLprimitives.c create mode 100644 gb.opengl/src/GLprimitives.h create mode 100644 gb.opengl/src/GLrasterization.c create mode 100644 gb.opengl/src/GLrasterization.h create mode 100644 gb.opengl/src/GLselectFeedback.c create mode 100644 gb.opengl/src/GLselectFeedback.h create mode 100644 gb.opengl/src/GLtextureMapping.c create mode 100644 gb.opengl/src/GLtextureMapping.h create mode 100644 gb.opengl/src/Makefile.am create mode 100644 gb.opengl/src/framebufferobject.c create mode 100644 gb.opengl/src/framebufferobject.h create mode 100644 gb.opengl/src/gb.gl.h create mode 100644 gb.opengl/src/gb.opengl.component create mode 100644 gb.opengl/src/glsl/GL.c create mode 100644 gb.opengl/src/glsl/GL.h create mode 100644 gb.opengl/src/glsl/GLattributes.c create mode 100644 gb.opengl/src/glsl/GLattributes.h create mode 100644 gb.opengl/src/glsl/GLinfo.h create mode 100644 gb.opengl/src/glsl/GLprogram.c create mode 100644 gb.opengl/src/glsl/GLprogram.h create mode 100644 gb.opengl/src/glsl/GLshader.c create mode 100644 gb.opengl/src/glsl/GLshader.h create mode 100644 gb.opengl/src/glsl/GLuniform.c create mode 100644 gb.opengl/src/glsl/GLuniform.h create mode 100644 gb.opengl/src/glsl/Makefile.am create mode 100644 gb.opengl/src/glsl/gb.opengl.glsl.component create mode 100644 gb.opengl/src/glsl/main.c create mode 100644 gb.opengl/src/glsl/main.h create mode 100644 gb.opengl/src/glu/GLU.c create mode 100644 gb.opengl/src/glu/GLU.h create mode 100644 gb.opengl/src/glu/GLUcoordTransf.c create mode 100644 gb.opengl/src/glu/GLUcoordTransf.h create mode 100644 gb.opengl/src/glu/GLUnurb.c create mode 100644 gb.opengl/src/glu/GLUnurb.h create mode 100644 gb.opengl/src/glu/GLUproject.c create mode 100644 gb.opengl/src/glu/GLUproject.h create mode 100644 gb.opengl/src/glu/GLUquadratic.c create mode 100644 gb.opengl/src/glu/GLUquadratic.h create mode 100644 gb.opengl/src/glu/GLUtextureImage.c create mode 100644 gb.opengl/src/glu/GLUtextureImage.h create mode 100644 gb.opengl/src/glu/Makefile.am create mode 100644 gb.opengl/src/glu/cglunurb.c create mode 100644 gb.opengl/src/glu/cglunurb.h create mode 100644 gb.opengl/src/glu/cgluquadric.c create mode 100644 gb.opengl/src/glu/cgluquadric.h create mode 100644 gb.opengl/src/glu/gb.opengl.glu.component create mode 100644 gb.opengl/src/glu/main.c create mode 100644 gb.opengl/src/glu/main.h create mode 100644 gb.opengl/src/main.c create mode 100644 gb.opengl/src/main.h create mode 100644 gb.opengl/src/sge/Makefile.am create mode 100644 gb.opengl/src/sge/cmd2model.c create mode 100644 gb.opengl/src/sge/cmd2model.h create mode 100644 gb.opengl/src/sge/cmd2object.c create mode 100644 gb.opengl/src/sge/cmd2object.h create mode 100644 gb.opengl/src/sge/gb.opengl.sge.component create mode 100644 gb.opengl/src/sge/main.c create mode 100644 gb.opengl/src/sge/main.h create mode 100644 gb.openssl/AUTHORS create mode 100644 gb.openssl/COPYING create mode 100644 gb.openssl/COPYING.GPL create mode 100644 gb.openssl/ChangeLog create mode 120000 gb.openssl/INSTALL create mode 100644 gb.openssl/Makefile.am create mode 100644 gb.openssl/NEWS create mode 100644 gb.openssl/README create mode 120000 gb.openssl/acinclude.m4 create mode 120000 gb.openssl/component.am create mode 100644 gb.openssl/configure.ac create mode 120000 gb.openssl/gambas.h create mode 120000 gb.openssl/gb_common.h create mode 120000 gb.openssl/m4 create mode 100644 gb.openssl/openssl-test/.directory create mode 100644 gb.openssl/openssl-test/.icon.png create mode 100644 gb.openssl/openssl-test/.project create mode 100644 gb.openssl/openssl-test/.src/Main.module create mode 120000 gb.openssl/reconf create mode 100644 gb.openssl/src/Makefile.am create mode 100644 gb.openssl/src/c_cipher.c create mode 100644 gb.openssl/src/c_cipher.h create mode 100644 gb.openssl/src/c_digest.c create mode 100644 gb.openssl/src/c_digest.h create mode 100644 gb.openssl/src/c_hmac.c create mode 100644 gb.openssl/src/c_hmac.h create mode 100644 gb.openssl/src/c_openssl.c create mode 100644 gb.openssl/src/c_openssl.h create mode 100644 gb.openssl/src/gb.openssl.component create mode 100644 gb.openssl/src/main.c create mode 100644 gb.openssl/src/main.h create mode 100644 gb.pcre/AUTHORS create mode 120000 gb.pcre/COPYING create mode 100644 gb.pcre/ChangeLog create mode 120000 gb.pcre/INSTALL create mode 100644 gb.pcre/Makefile.am create mode 100644 gb.pcre/NEWS create mode 100644 gb.pcre/README create mode 120000 gb.pcre/acinclude.m4 create mode 120000 gb.pcre/component.am create mode 100644 gb.pcre/configure.ac create mode 120000 gb.pcre/gambas.h create mode 120000 gb.pcre/gb_common.h create mode 120000 gb.pcre/m4 create mode 120000 gb.pcre/reconf create mode 100644 gb.pcre/src/Makefile.am create mode 100644 gb.pcre/src/README create mode 100644 gb.pcre/src/gb.pcre.component create mode 100644 gb.pcre/src/gb.pcre.h create mode 100644 gb.pcre/src/main.c create mode 100644 gb.pcre/src/main.h create mode 100644 gb.pcre/src/regexp.c create mode 100644 gb.pcre/src/regexp.h create mode 100644 gb.pcre/src/regexp2.c create mode 100644 gb.pcre/src/regexp2.h create mode 100644 gb.pdf/AUTHORS create mode 120000 gb.pdf/COPYING create mode 100644 gb.pdf/ChangeLog create mode 120000 gb.pdf/INSTALL create mode 100644 gb.pdf/Makefile.am create mode 100644 gb.pdf/NEWS create mode 100644 gb.pdf/README create mode 120000 gb.pdf/acinclude.m4 create mode 120000 gb.pdf/component.am create mode 100644 gb.pdf/configure.ac create mode 120000 gb.pdf/gambas.h create mode 120000 gb.pdf/gb.gtk.h create mode 120000 gb.pdf/gb.image.h create mode 120000 gb.pdf/gb_common.h create mode 120000 gb.pdf/m4 create mode 120000 gb.pdf/reconf create mode 100644 gb.pdf/src/CPdfDocument.cpp create mode 100644 gb.pdf/src/CPdfDocument.h create mode 100644 gb.pdf/src/Makefile.am create mode 100644 gb.pdf/src/gb.pdf.component create mode 100644 gb.pdf/src/main.cpp create mode 100644 gb.pdf/src/main.h create mode 100644 gb.poppler/AUTHORS create mode 120000 gb.poppler/COPYING create mode 100644 gb.poppler/ChangeLog create mode 120000 gb.poppler/INSTALL create mode 100644 gb.poppler/Makefile.am create mode 100644 gb.poppler/NEWS create mode 100644 gb.poppler/README create mode 120000 gb.poppler/acinclude.m4 create mode 120000 gb.poppler/component.am create mode 100644 gb.poppler/configure.ac create mode 120000 gb.poppler/gambas.h create mode 120000 gb.poppler/gb.geom.h create mode 120000 gb.poppler/gb.image.h create mode 120000 gb.poppler/gb_common.h create mode 120000 gb.poppler/m4 create mode 120000 gb.poppler/reconf create mode 100644 gb.poppler/src/Makefile.am create mode 100644 gb.poppler/src/c_pdf_document.cpp create mode 100644 gb.poppler/src/c_pdf_document.h create mode 100644 gb.poppler/src/gb.poppler.component create mode 100644 gb.poppler/src/main.cpp create mode 100644 gb.poppler/src/main.h create mode 100644 gb.qt4/AUTHORS create mode 120000 gb.qt4/COPYING create mode 100644 gb.qt4/ChangeLog create mode 120000 gb.qt4/INSTALL create mode 100644 gb.qt4/Makefile.am create mode 100644 gb.qt4/NEWS create mode 100644 gb.qt4/README create mode 120000 gb.qt4/acinclude.m4 create mode 120000 gb.qt4/component.am create mode 100644 gb.qt4/configure.ac create mode 120000 gb.qt4/gambas.h create mode 120000 gb.qt4/gb.draw.h create mode 120000 gb.qt4/gb.eval.h create mode 120000 gb.qt4/gb.geom.h create mode 120000 gb.qt4/gb.gl.h create mode 120000 gb.qt4/gb.image.h create mode 120000 gb.qt4/gb.paint.h create mode 100644 gb.qt4/gb.qt.am create mode 120000 gb.qt4/gb_common.h create mode 120000 gb.qt4/gbc_read_common.h create mode 120000 gb.qt4/m4 create mode 120000 gb.qt4/reconf create mode 100644 gb.qt4/share/gb.form.action.h create mode 100644 gb.qt4/share/gb.form.arrangement.h create mode 100644 gb.qt4/share/gb.form.const.h create mode 100644 gb.qt4/share/gb.form.font.h create mode 100644 gb.qt4/share/gb.form.print.h create mode 100644 gb.qt4/share/gb.form.properties.h create mode 100644 gb.qt4/share/gb.form.trayicon.h create mode 100644 gb.qt4/share/gb.form.trayicon.large.h create mode 100644 gb.qt4/src/CButton.cpp create mode 100644 gb.qt4/src/CButton.h create mode 100644 gb.qt4/src/CCheckBox.cpp create mode 100644 gb.qt4/src/CCheckBox.h create mode 100644 gb.qt4/src/CClipboard.cpp create mode 100644 gb.qt4/src/CClipboard.h create mode 100644 gb.qt4/src/CColor.cpp create mode 100644 gb.qt4/src/CColor.h create mode 100644 gb.qt4/src/CConst.cpp create mode 100644 gb.qt4/src/CConst.h create mode 100644 gb.qt4/src/CContainer.cpp create mode 100644 gb.qt4/src/CContainer.h create mode 100644 gb.qt4/src/CDialog.cpp create mode 100644 gb.qt4/src/CDialog.h create mode 100644 gb.qt4/src/CDraw.cpp create mode 100644 gb.qt4/src/CDraw.h create mode 100644 gb.qt4/src/CDrawingArea.cpp create mode 100644 gb.qt4/src/CDrawingArea.h create mode 100644 gb.qt4/src/CEmbedder.cpp create mode 100644 gb.qt4/src/CEmbedder.h create mode 100644 gb.qt4/src/CFont.cpp create mode 100644 gb.qt4/src/CFont.h create mode 100644 gb.qt4/src/CImage.cpp create mode 100644 gb.qt4/src/CImage.h create mode 100644 gb.qt4/src/CKey.cpp create mode 100644 gb.qt4/src/CKey.h create mode 100644 gb.qt4/src/CMenu.cpp create mode 100644 gb.qt4/src/CMenu.h create mode 100644 gb.qt4/src/CMouse.cpp create mode 100644 gb.qt4/src/CMouse.h create mode 100644 gb.qt4/src/CPanel.cpp create mode 100644 gb.qt4/src/CPanel.h create mode 100644 gb.qt4/src/CPicture.cpp create mode 100644 gb.qt4/src/CPicture.h create mode 100644 gb.qt4/src/CRadioButton.cpp create mode 100644 gb.qt4/src/CRadioButton.h create mode 100644 gb.qt4/src/CScreen.cpp create mode 100644 gb.qt4/src/CScreen.h create mode 100644 gb.qt4/src/CScrollBar.cpp create mode 100644 gb.qt4/src/CScrollBar.h create mode 100644 gb.qt4/src/CSlider.cpp create mode 100644 gb.qt4/src/CSlider.h create mode 100644 gb.qt4/src/CStyle.cpp create mode 100644 gb.qt4/src/CStyle.h create mode 100644 gb.qt4/src/CTabStrip.cpp create mode 100644 gb.qt4/src/CTabStrip.h create mode 100644 gb.qt4/src/CTextArea.cpp create mode 100644 gb.qt4/src/CTextArea.h create mode 100644 gb.qt4/src/CTextBox.cpp create mode 100644 gb.qt4/src/CTextBox.h create mode 100644 gb.qt4/src/CWatch.cpp create mode 100644 gb.qt4/src/CWatch.h create mode 100644 gb.qt4/src/CWatcher.cpp create mode 100644 gb.qt4/src/CWatcher.h create mode 100644 gb.qt4/src/CWidget.cpp create mode 100644 gb.qt4/src/CWidget.h create mode 100644 gb.qt4/src/CWindow.cpp create mode 100644 gb.qt4/src/CWindow.h create mode 100644 gb.qt4/src/Makefile.am create mode 100644 gb.qt4/src/canimation.cpp create mode 100644 gb.qt4/src/canimation.h create mode 100644 gb.qt4/src/cpaint_impl.cpp create mode 100644 gb.qt4/src/cpaint_impl.h create mode 100644 gb.qt4/src/cprinter.cpp create mode 100644 gb.qt4/src/cprinter.h create mode 100644 gb.qt4/src/csvgimage.cpp create mode 100644 gb.qt4/src/csvgimage.h create mode 100644 gb.qt4/src/ctrayicon.cpp create mode 100644 gb.qt4/src/ctrayicon.h create mode 100644 gb.qt4/src/desktop.c create mode 100644 gb.qt4/src/desktop.h create mode 100644 gb.qt4/src/ext/CDial.cpp create mode 100644 gb.qt4/src/ext/CDial.h create mode 100644 gb.qt4/src/ext/CEditor.cpp create mode 100644 gb.qt4/src/ext/CEditor.h create mode 100644 gb.qt4/src/ext/CLCDNumber.cpp create mode 100644 gb.qt4/src/ext/CLCDNumber.h create mode 100644 gb.qt4/src/ext/CTextEdit.cpp create mode 100644 gb.qt4/src/ext/CTextEdit.h create mode 100644 gb.qt4/src/ext/Makefile.am create mode 100644 gb.qt4/src/ext/garray.cpp create mode 100644 gb.qt4/src/ext/garray.h create mode 100644 gb.qt4/src/ext/gb.qt4.ext.component create mode 100644 gb.qt4/src/ext/gdocument.cpp create mode 100644 gb.qt4/src/ext/gdocument.h create mode 100644 gb.qt4/src/ext/gstring.cpp create mode 100644 gb.qt4/src/ext/gstring.h create mode 100644 gb.qt4/src/ext/gview.cpp create mode 100644 gb.qt4/src/ext/gview.h create mode 100644 gb.qt4/src/ext/main.cpp create mode 100644 gb.qt4/src/ext/main.h create mode 100644 gb.qt4/src/fix_style.cpp create mode 100644 gb.qt4/src/fix_style.h create mode 100644 gb.qt4/src/gb.qt.h create mode 100644 gb.qt4/src/gb.qt4.component create mode 100644 gb.qt4/src/main.cpp create mode 100644 gb.qt4/src/main.h create mode 100644 gb.qt4/src/opengl/CGLarea.cpp create mode 100644 gb.qt4/src/opengl/CGLarea.h create mode 100644 gb.qt4/src/opengl/Makefile.am create mode 100644 gb.qt4/src/opengl/gb.qt4.opengl.component create mode 100644 gb.qt4/src/opengl/main.cpp create mode 100644 gb.qt4/src/opengl/main.h create mode 100644 gb.qt4/src/trayicon.xpm create mode 100644 gb.qt4/src/webkit/Makefile.am create mode 100644 gb.qt4/src/webkit/ccookiejar.cpp create mode 100644 gb.qt4/src/webkit/ccookiejar.h create mode 100644 gb.qt4/src/webkit/control/webview.png create mode 100644 gb.qt4/src/webkit/cwebdownload.cpp create mode 100644 gb.qt4/src/webkit/cwebdownload.h create mode 100644 gb.qt4/src/webkit/cwebelement.cpp create mode 100644 gb.qt4/src/webkit/cwebelement.h create mode 100644 gb.qt4/src/webkit/cwebframe.cpp create mode 100644 gb.qt4/src/webkit/cwebframe.h create mode 100644 gb.qt4/src/webkit/cwebhittest.cpp create mode 100644 gb.qt4/src/webkit/cwebhittest.h create mode 100644 gb.qt4/src/webkit/cwebsettings.cpp create mode 100644 gb.qt4/src/webkit/cwebsettings.h create mode 100644 gb.qt4/src/webkit/cwebview.cpp create mode 100644 gb.qt4/src/webkit/cwebview.h create mode 100644 gb.qt4/src/webkit/gb.qt4.webkit.component create mode 100644 gb.qt4/src/webkit/main.cpp create mode 100644 gb.qt4/src/webkit/main.h create mode 100644 gb.qt4/src/webview/Makefile.am create mode 100644 gb.qt4/src/webview/c_websettings.cpp create mode 100644 gb.qt4/src/webview/c_websettings.h create mode 100644 gb.qt4/src/webview/c_webview.cpp create mode 100644 gb.qt4/src/webview/c_webview.h create mode 100644 gb.qt4/src/webview/gb.qt4.webview.component create mode 100644 gb.qt4/src/webview/jsonwriter.cpp create mode 100644 gb.qt4/src/webview/jsonwriter.h create mode 100644 gb.qt4/src/webview/main.cpp create mode 100644 gb.qt4/src/webview/main.h create mode 100644 gb.qt4/src/x11.c create mode 100644 gb.qt4/src/x11.h create mode 100644 gb.qt5/AUTHORS create mode 120000 gb.qt5/COPYING create mode 100644 gb.qt5/ChangeLog create mode 120000 gb.qt5/INSTALL create mode 100644 gb.qt5/Makefile.am create mode 100644 gb.qt5/NEWS create mode 100644 gb.qt5/README create mode 120000 gb.qt5/acinclude.m4 create mode 120000 gb.qt5/component.am create mode 100644 gb.qt5/configure.ac create mode 120000 gb.qt5/gambas.h create mode 120000 gb.qt5/gb.draw.h create mode 120000 gb.qt5/gb.eval.h create mode 120000 gb.qt5/gb.geom.h create mode 120000 gb.qt5/gb.gl.h create mode 120000 gb.qt5/gb.image.h create mode 120000 gb.qt5/gb.paint.h create mode 100644 gb.qt5/gb.qt.am create mode 120000 gb.qt5/gb_common.h create mode 120000 gb.qt5/m4 create mode 120000 gb.qt5/reconf create mode 120000 gb.qt5/share create mode 120000 gb.qt5/src/CButton.cpp create mode 120000 gb.qt5/src/CButton.h create mode 120000 gb.qt5/src/CCheckBox.cpp create mode 120000 gb.qt5/src/CCheckBox.h create mode 120000 gb.qt5/src/CClipboard.cpp create mode 120000 gb.qt5/src/CClipboard.h create mode 120000 gb.qt5/src/CColor.cpp create mode 120000 gb.qt5/src/CColor.h create mode 120000 gb.qt5/src/CConst.cpp create mode 120000 gb.qt5/src/CConst.h create mode 120000 gb.qt5/src/CContainer.cpp create mode 120000 gb.qt5/src/CContainer.h create mode 120000 gb.qt5/src/CDialog.cpp create mode 120000 gb.qt5/src/CDialog.h create mode 120000 gb.qt5/src/CDraw.cpp create mode 120000 gb.qt5/src/CDraw.h create mode 120000 gb.qt5/src/CDrawingArea.cpp create mode 120000 gb.qt5/src/CDrawingArea.h create mode 120000 gb.qt5/src/CFont.cpp create mode 120000 gb.qt5/src/CFont.h create mode 120000 gb.qt5/src/CImage.cpp create mode 120000 gb.qt5/src/CImage.h create mode 120000 gb.qt5/src/CKey.cpp create mode 120000 gb.qt5/src/CKey.h create mode 120000 gb.qt5/src/CMenu.cpp create mode 120000 gb.qt5/src/CMenu.h create mode 120000 gb.qt5/src/CMouse.cpp create mode 120000 gb.qt5/src/CMouse.h create mode 120000 gb.qt5/src/CPanel.cpp create mode 120000 gb.qt5/src/CPanel.h create mode 120000 gb.qt5/src/CPicture.cpp create mode 120000 gb.qt5/src/CPicture.h create mode 120000 gb.qt5/src/CRadioButton.cpp create mode 120000 gb.qt5/src/CRadioButton.h create mode 120000 gb.qt5/src/CScreen.cpp create mode 120000 gb.qt5/src/CScreen.h create mode 120000 gb.qt5/src/CScrollBar.cpp create mode 120000 gb.qt5/src/CScrollBar.h create mode 120000 gb.qt5/src/CSlider.cpp create mode 120000 gb.qt5/src/CSlider.h create mode 120000 gb.qt5/src/CStyle.cpp create mode 120000 gb.qt5/src/CStyle.h create mode 120000 gb.qt5/src/CTabStrip.cpp create mode 120000 gb.qt5/src/CTabStrip.h create mode 120000 gb.qt5/src/CTextArea.cpp create mode 120000 gb.qt5/src/CTextArea.h create mode 120000 gb.qt5/src/CTextBox.cpp create mode 120000 gb.qt5/src/CTextBox.h create mode 120000 gb.qt5/src/CWatch.cpp create mode 120000 gb.qt5/src/CWatch.h create mode 120000 gb.qt5/src/CWatcher.cpp create mode 120000 gb.qt5/src/CWatcher.h create mode 120000 gb.qt5/src/CWidget.cpp create mode 120000 gb.qt5/src/CWidget.h create mode 120000 gb.qt5/src/CWindow.cpp create mode 120000 gb.qt5/src/CWindow.h create mode 100644 gb.qt5/src/Makefile.am create mode 120000 gb.qt5/src/canimation.cpp create mode 120000 gb.qt5/src/canimation.h create mode 120000 gb.qt5/src/cpaint_impl.cpp create mode 120000 gb.qt5/src/cpaint_impl.h create mode 120000 gb.qt5/src/cprinter.cpp create mode 120000 gb.qt5/src/cprinter.h create mode 120000 gb.qt5/src/csvgimage.cpp create mode 120000 gb.qt5/src/csvgimage.h create mode 120000 gb.qt5/src/ctrayicon.cpp create mode 120000 gb.qt5/src/ctrayicon.h create mode 120000 gb.qt5/src/ext/CDial.cpp create mode 120000 gb.qt5/src/ext/CDial.h create mode 120000 gb.qt5/src/ext/CLCDNumber.cpp create mode 120000 gb.qt5/src/ext/CLCDNumber.h create mode 120000 gb.qt5/src/ext/CTextEdit.cpp create mode 120000 gb.qt5/src/ext/CTextEdit.h create mode 100644 gb.qt5/src/ext/Makefile.am create mode 100644 gb.qt5/src/ext/gb.qt5.ext.component create mode 100644 gb.qt5/src/ext/main.cpp create mode 100644 gb.qt5/src/ext/main.h create mode 120000 gb.qt5/src/fix_style.cpp create mode 120000 gb.qt5/src/fix_style.h create mode 120000 gb.qt5/src/gb.qt.h create mode 100644 gb.qt5/src/gb.qt.platform.h create mode 100644 gb.qt5/src/gb.qt5.component create mode 100644 gb.qt5/src/main.cpp create mode 100644 gb.qt5/src/main.h create mode 100644 gb.qt5/src/opengl/CGLarea.cpp create mode 100644 gb.qt5/src/opengl/CGLarea.h create mode 100644 gb.qt5/src/opengl/COldGLarea.cpp create mode 100644 gb.qt5/src/opengl/COldGLarea.h create mode 100644 gb.qt5/src/opengl/Makefile.am create mode 100644 gb.qt5/src/opengl/gb.qt5.opengl.component create mode 100644 gb.qt5/src/opengl/main.cpp create mode 100644 gb.qt5/src/opengl/main.h create mode 120000 gb.qt5/src/trayicon.xpm create mode 100644 gb.qt5/src/wayland/Makefile.am create mode 100644 gb.qt5/src/wayland/gb.qt5.wayland.component create mode 100644 gb.qt5/src/wayland/main.cpp create mode 100644 gb.qt5/src/wayland/main.h create mode 100644 gb.qt5/src/webkit/Makefile.am create mode 120000 gb.qt5/src/webkit/ccookiejar.cpp create mode 120000 gb.qt5/src/webkit/ccookiejar.h create mode 100644 gb.qt5/src/webkit/control/webview.png create mode 120000 gb.qt5/src/webkit/cwebdownload.cpp create mode 120000 gb.qt5/src/webkit/cwebdownload.h create mode 120000 gb.qt5/src/webkit/cwebelement.cpp create mode 120000 gb.qt5/src/webkit/cwebelement.h create mode 120000 gb.qt5/src/webkit/cwebframe.cpp create mode 120000 gb.qt5/src/webkit/cwebframe.h create mode 120000 gb.qt5/src/webkit/cwebhittest.cpp create mode 120000 gb.qt5/src/webkit/cwebhittest.h create mode 120000 gb.qt5/src/webkit/cwebsettings.cpp create mode 120000 gb.qt5/src/webkit/cwebsettings.h create mode 120000 gb.qt5/src/webkit/cwebview.cpp create mode 120000 gb.qt5/src/webkit/cwebview.h create mode 100644 gb.qt5/src/webkit/gb.qt5.webkit.component create mode 120000 gb.qt5/src/webkit/main.cpp create mode 120000 gb.qt5/src/webkit/main.h create mode 100644 gb.qt5/src/webview/Makefile.am create mode 100644 gb.qt5/src/webview/c_websettings.cpp create mode 100644 gb.qt5/src/webview/c_websettings.h create mode 100644 gb.qt5/src/webview/c_webview.cpp create mode 100644 gb.qt5/src/webview/c_webview.h create mode 100644 gb.qt5/src/webview/gb.qt5.webview.component create mode 100644 gb.qt5/src/webview/main.cpp create mode 100644 gb.qt5/src/webview/main.h create mode 100644 gb.qt5/src/x11/Makefile.am create mode 100644 gb.qt5/src/x11/gb.qt5.x11.component create mode 100644 gb.qt5/src/x11/main.cpp create mode 100644 gb.qt5/src/x11/main.h create mode 120000 gb.qt5/src/x11/x11.c create mode 120000 gb.qt5/src/x11/x11.h create mode 100644 gb.sdl.sound/AUTHORS create mode 120000 gb.sdl.sound/COPYING create mode 100644 gb.sdl.sound/ChangeLog create mode 120000 gb.sdl.sound/INSTALL create mode 100644 gb.sdl.sound/Makefile.am create mode 100644 gb.sdl.sound/NEWS create mode 100644 gb.sdl.sound/README create mode 120000 gb.sdl.sound/acinclude.m4 create mode 120000 gb.sdl.sound/component.am create mode 100644 gb.sdl.sound/configure.ac create mode 120000 gb.sdl.sound/gambas.h create mode 120000 gb.sdl.sound/gb_common.h create mode 120000 gb.sdl.sound/m4 create mode 120000 gb.sdl.sound/reconf create mode 100644 gb.sdl.sound/src/Makefile.am create mode 100644 gb.sdl.sound/src/cdrom.c create mode 100644 gb.sdl.sound/src/cdrom.h create mode 100644 gb.sdl.sound/src/gb.sdl.sound.component create mode 100644 gb.sdl.sound/src/main.c create mode 100644 gb.sdl.sound/src/main.h create mode 100644 gb.sdl.sound/src/sound.c create mode 100644 gb.sdl.sound/src/sound.h create mode 100644 gb.sdl/AUTHORS create mode 120000 gb.sdl/COPYING create mode 100644 gb.sdl/ChangeLog create mode 120000 gb.sdl/INSTALL create mode 100644 gb.sdl/Makefile.am create mode 100644 gb.sdl/NEWS create mode 100644 gb.sdl/README create mode 120000 gb.sdl/acinclude.m4 create mode 120000 gb.sdl/component.am create mode 100644 gb.sdl/configure.ac create mode 120000 gb.sdl/gambas.h create mode 120000 gb.sdl/gb.image.h create mode 120000 gb.sdl/gb_common.h create mode 120000 gb.sdl/m4 create mode 120000 gb.sdl/reconf create mode 100644 gb.sdl/src/Cconst.cpp create mode 100644 gb.sdl/src/Cconst.h create mode 100644 gb.sdl/src/Cdesktop.cpp create mode 100644 gb.sdl/src/Cdesktop.h create mode 100644 gb.sdl/src/Cdraw.cpp create mode 100644 gb.sdl/src/Cdraw.h create mode 100644 gb.sdl/src/Cfont.cpp create mode 100644 gb.sdl/src/Cfont.h create mode 100644 gb.sdl/src/Cimage.cpp create mode 100644 gb.sdl/src/Cimage.h create mode 100644 gb.sdl/src/Cjoystick.cpp create mode 100644 gb.sdl/src/Cjoystick.h create mode 100644 gb.sdl/src/Ckey.cpp create mode 100644 gb.sdl/src/Ckey.h create mode 100644 gb.sdl/src/Cmouse.cpp create mode 100644 gb.sdl/src/Cmouse.h create mode 100644 gb.sdl/src/Cwindow.cpp create mode 100644 gb.sdl/src/Cwindow.h create mode 100644 gb.sdl/src/Makefile.am create mode 100644 gb.sdl/src/SDL_h.h create mode 100644 gb.sdl/src/SDLapp.cpp create mode 100644 gb.sdl/src/SDLapp.h create mode 100644 gb.sdl/src/SDLcore.cpp create mode 100644 gb.sdl/src/SDLcore.h create mode 100644 gb.sdl/src/SDLcursor.cpp create mode 100644 gb.sdl/src/SDLcursor.h create mode 100644 gb.sdl/src/SDLdebug.cpp create mode 100644 gb.sdl/src/SDLdebug.h create mode 100644 gb.sdl/src/SDLerror.cpp create mode 100644 gb.sdl/src/SDLerror.h create mode 100644 gb.sdl/src/SDLfont.cpp create mode 100644 gb.sdl/src/SDLfont.h create mode 100644 gb.sdl/src/SDLgfx.cpp create mode 100644 gb.sdl/src/SDLgfx.h create mode 100644 gb.sdl/src/SDLosrender.cpp create mode 100644 gb.sdl/src/SDLosrender.h create mode 100644 gb.sdl/src/SDLsurface.cpp create mode 100644 gb.sdl/src/SDLsurface.h create mode 100644 gb.sdl/src/SDLtexture.cpp create mode 100644 gb.sdl/src/SDLtexture.h create mode 100644 gb.sdl/src/SDLwindow.cpp create mode 100644 gb.sdl/src/SDLwindow.h create mode 100644 gb.sdl/src/default_font.h create mode 100644 gb.sdl/src/gb.sdl.component create mode 100644 gb.sdl/src/main.cpp create mode 100644 gb.sdl/src/main.h create mode 100644 gb.sdl2/AUTHORS create mode 120000 gb.sdl2/COPYING create mode 100644 gb.sdl2/ChangeLog create mode 120000 gb.sdl2/INSTALL create mode 100644 gb.sdl2/Makefile.am create mode 100644 gb.sdl2/NEWS create mode 100644 gb.sdl2/README create mode 120000 gb.sdl2/acinclude.m4 create mode 120000 gb.sdl2/component.am create mode 100644 gb.sdl2/configure.ac create mode 120000 gb.sdl2/gambas.h create mode 120000 gb.sdl2/gb.geom.h create mode 120000 gb.sdl2/gb.image.h create mode 120000 gb.sdl2/gb_common.h create mode 120000 gb.sdl2/gb_list.h create mode 120000 gb.sdl2/gb_list_temp.h create mode 120000 gb.sdl2/m4 create mode 120000 gb.sdl2/reconf create mode 100644 gb.sdl2/src/Makefile.am create mode 100644 gb.sdl2/src/audio/Makefile.am create mode 100644 gb.sdl2/src/audio/c_channel.c create mode 100644 gb.sdl2/src/audio/c_channel.h create mode 100644 gb.sdl2/src/audio/c_music.c create mode 100644 gb.sdl2/src/audio/c_music.h create mode 100644 gb.sdl2/src/audio/c_sound.c create mode 100644 gb.sdl2/src/audio/c_sound.h create mode 100644 gb.sdl2/src/audio/gb.sdl2.audio.component create mode 100644 gb.sdl2/src/audio/main.c create mode 100644 gb.sdl2/src/audio/main.h create mode 100644 gb.sdl2/src/c_draw.c create mode 100644 gb.sdl2/src/c_draw.h create mode 100644 gb.sdl2/src/c_font.c create mode 100644 gb.sdl2/src/c_font.h create mode 100644 gb.sdl2/src/c_image.c create mode 100644 gb.sdl2/src/c_image.h create mode 100644 gb.sdl2/src/c_key.c create mode 100644 gb.sdl2/src/c_key.h create mode 100644 gb.sdl2/src/c_mouse.c create mode 100644 gb.sdl2/src/c_mouse.h create mode 100644 gb.sdl2/src/c_window.c create mode 100644 gb.sdl2/src/c_window.h create mode 100644 gb.sdl2/src/default_font.c create mode 100644 gb.sdl2/src/default_font.h create mode 100644 gb.sdl2/src/default_font_data.h create mode 100644 gb.sdl2/src/gb.sdl2.component create mode 100644 gb.sdl2/src/main.c create mode 100644 gb.sdl2/src/main.h create mode 100644 gb.v4l/AUTHORS create mode 120000 gb.v4l/COPYING create mode 100644 gb.v4l/ChangeLog create mode 120000 gb.v4l/INSTALL create mode 100644 gb.v4l/Makefile.am create mode 100644 gb.v4l/NEWS create mode 100644 gb.v4l/README create mode 120000 gb.v4l/acinclude.m4 create mode 120000 gb.v4l/component.am create mode 100644 gb.v4l/configure.ac create mode 120000 gb.v4l/gambas.h create mode 120000 gb.v4l/gb.image.h create mode 120000 gb.v4l/gb_common.h create mode 120000 gb.v4l/m4 create mode 100644 gb.v4l/orig/video-capture-0.2.tar.gz create mode 120000 gb.v4l/reconf create mode 100644 gb.v4l/src/CConverters.c create mode 100644 gb.v4l/src/CWebcam.c create mode 100644 gb.v4l/src/CWebcam.h create mode 100644 gb.v4l/src/Makefile.am create mode 100644 gb.v4l/src/gb.v4l.component create mode 100644 gb.v4l/src/gv4l2.c create mode 100644 gb.v4l/src/main.c create mode 100644 gb.v4l/src/main.h create mode 100644 gb.v4l/src/videodev.h create mode 100755 gb.xml/AUTHORS create mode 120000 gb.xml/COPYING create mode 100755 gb.xml/ChangeLog create mode 120000 gb.xml/INSTALL create mode 100755 gb.xml/Makefile.am create mode 100755 gb.xml/NEWS create mode 100755 gb.xml/README create mode 100644 gb.xml/TODO create mode 120000 gb.xml/acinclude.m4 create mode 120000 gb.xml/component.am create mode 100644 gb.xml/configure.ac create mode 120000 gb.xml/gambas.h create mode 120000 gb.xml/gb_common.h create mode 120000 gb.xml/m4 create mode 120000 gb.xml/reconf create mode 100755 gb.xml/src/.directory create mode 100644 gb.xml/src/CDocument.cpp create mode 100644 gb.xml/src/CDocument.h create mode 100644 gb.xml/src/CElement.cpp create mode 100644 gb.xml/src/CElement.h create mode 100644 gb.xml/src/CExplorer.cpp create mode 100644 gb.xml/src/CExplorer.h create mode 100644 gb.xml/src/CNode.cpp create mode 100644 gb.xml/src/CNode.h create mode 100644 gb.xml/src/CReader.cpp create mode 100644 gb.xml/src/CReader.h create mode 100644 gb.xml/src/CTextNode.cpp create mode 100644 gb.xml/src/CTextNode.h create mode 100644 gb.xml/src/Makefile.am create mode 100644 gb.xml/src/document.cpp create mode 100644 gb.xml/src/document.h create mode 100644 gb.xml/src/element.cpp create mode 100644 gb.xml/src/element.h create mode 100644 gb.xml/src/explorer.cpp create mode 100644 gb.xml/src/explorer.h create mode 100755 gb.xml/src/gb.xml.component create mode 100644 gb.xml/src/gb.xml.h create mode 100644 gb.xml/src/gb.xml/.component create mode 100644 gb.xml/src/gb.xml/.directory create mode 100644 gb.xml/src/gb.xml/.icon.png create mode 100644 gb.xml/src/gb.xml/.project create mode 100644 gb.xml/src/gb.xml/.src/MTest.module create mode 100644 gb.xml/src/gb.xml/.src/MTest2.module create mode 100644 gb.xml/src/gb.xml/.src/XmlReader.class create mode 100644 gb.xml/src/gb.xml/.src/XmlWriter.class create mode 100644 gb.xml/src/gb.xml/.src/_XmlWriterDTD.class create mode 100644 gb.xml/src/gb.xml/text.xml create mode 100644 gb.xml/src/gbinterface.h create mode 100644 gb.xml/src/html/CHTMLDocument.cpp create mode 100644 gb.xml/src/html/CHTMLDocument.h create mode 100644 gb.xml/src/html/CHTMLElement.cpp create mode 100644 gb.xml/src/html/CHTMLElement.h create mode 100644 gb.xml/src/html/Makefile.am create mode 100644 gb.xml/src/html/cssfilter.cpp create mode 100644 gb.xml/src/html/cssfilter.h create mode 100755 gb.xml/src/html/gb.xml.html.component create mode 100644 gb.xml/src/html/gb.xml.html.h create mode 100644 gb.xml/src/html/htmldocument.cpp create mode 100644 gb.xml/src/html/htmldocument.h create mode 100644 gb.xml/src/html/htmlelement.cpp create mode 100644 gb.xml/src/html/htmlelement.h create mode 100644 gb.xml/src/html/htmlmain.cpp create mode 100644 gb.xml/src/html/htmlmain.h create mode 100644 gb.xml/src/html/htmlparser.cpp create mode 100644 gb.xml/src/html/htmlparser.h create mode 100644 gb.xml/src/html/htmlserializer.cpp create mode 100644 gb.xml/src/html/htmlserializer.h create mode 100644 gb.xml/src/main.cpp create mode 100644 gb.xml/src/main.h create mode 100644 gb.xml/src/node.cpp create mode 100644 gb.xml/src/node.h create mode 100644 gb.xml/src/parser.cpp create mode 100644 gb.xml/src/parser.h create mode 100644 gb.xml/src/reader.cpp create mode 100644 gb.xml/src/reader.h create mode 100644 gb.xml/src/rpc/Makefile.am create mode 120000 gb.xml/src/rpc/gb.xml.rpc.component create mode 100644 gb.xml/src/rpc/gb.xml.rpc/.component create mode 100644 gb.xml/src/rpc/gb.xml.rpc/.directory create mode 100644 gb.xml/src/rpc/gb.xml.rpc/.icon.png create mode 100644 gb.xml/src/rpc/gb.xml.rpc/.project create mode 100644 gb.xml/src/rpc/gb.xml.rpc/.src/RpcArray.class create mode 100644 gb.xml/src/rpc/gb.xml.rpc/.src/RpcAtom.class create mode 100644 gb.xml/src/rpc/gb.xml.rpc/.src/RpcClient.class create mode 100644 gb.xml/src/rpc/gb.xml.rpc/.src/RpcFunction.class create mode 100644 gb.xml/src/rpc/gb.xml.rpc/.src/RpcServer.class create mode 100644 gb.xml/src/rpc/gb.xml.rpc/.src/RpcStruct.class create mode 100644 gb.xml/src/rpc/gb.xml.rpc/.src/RpcType.class create mode 100644 gb.xml/src/rpc/gb.xml.rpc/.src/Test/CXMLRPC.class create mode 100644 gb.xml/src/rpc/gb.xml.rpc/.src/Test/MMain.module create mode 100644 gb.xml/src/rpc/gb.xml.rpc/.src/Test/MTest.module create mode 100644 gb.xml/src/rpc/gb.xml.rpc/.src/Tools.module create mode 100644 gb.xml/src/rpc/gb.xml.rpc/.src/XmlRpc.class create mode 100644 gb.xml/src/rpc/gb.xml.rpc/.src/hPost.class create mode 100644 gb.xml/src/rpc/gb.xml.rpc/.src/miniServer.class create mode 100644 gb.xml/src/serializer.cpp create mode 100644 gb.xml/src/serializer.h create mode 100644 gb.xml/src/textnode.cpp create mode 100644 gb.xml/src/textnode.h create mode 100644 gb.xml/src/utils.cpp create mode 100644 gb.xml/src/utils.h create mode 100644 gb.xml/src/xslt/CXSLT.cpp create mode 100644 gb.xml/src/xslt/CXSLT.h create mode 100755 gb.xml/src/xslt/Makefile.am create mode 100755 gb.xml/src/xslt/gb.xml.xslt.component create mode 100644 gb.xml/src/xslt/main.cpp create mode 100644 gb.xml/src/xslt/main.h create mode 100644 gb.xml/src/xslt/xslt.pro create mode 100644 logo/gambas-ide.svg create mode 100644 logo/gambas.svg create mode 100644 m4/ax_compare_version.m4 create mode 100644 m4/gb_cflags_gcc_option.m4 create mode 100644 m4/gb_httpd.m4 create mode 100644 m4/gb_sdl.m4 create mode 100644 main/AUTHORS create mode 120000 main/COPYING create mode 120000 main/ChangeLog create mode 100644 main/INSTALL create mode 100644 main/Makefile.am create mode 100644 main/NEWS create mode 100644 main/README create mode 100644 main/TODO create mode 120000 main/acinclude.m4 create mode 120000 main/component.am create mode 100644 main/configure.ac create mode 120000 main/gb.pcre.h create mode 100644 main/gbc/Makefile.am create mode 100644 main/gbc/gb_alloc.c create mode 100644 main/gbc/gb_array.c create mode 100644 main/gbc/gb_buffer.c create mode 100644 main/gbc/gb_common.c create mode 100644 main/gbc/gb_error.c create mode 100644 main/gbc/gb_error.h create mode 100644 main/gbc/gb_file.c create mode 100644 main/gbc/gb_file.h create mode 100644 main/gbc/gb_str.c create mode 100644 main/gbc/gb_str.h create mode 100644 main/gbc/gb_table.c create mode 100644 main/gbc/gba.c create mode 100644 main/gbc/gbc.c create mode 100644 main/gbc/gbc_arch.c create mode 100644 main/gbc/gbc_archive.c create mode 100644 main/gbc/gbc_archive.h create mode 100644 main/gbc/gbc_chown.c create mode 100644 main/gbc/gbc_chown.h create mode 100644 main/gbc/gbc_class.c create mode 100644 main/gbc/gbc_class.h create mode 100644 main/gbc/gbc_code.c create mode 100644 main/gbc/gbc_compile.c create mode 100644 main/gbc/gbc_compile.h create mode 100644 main/gbc/gbc_dump.c create mode 100644 main/gbc/gbc_form.c create mode 100644 main/gbc/gbc_form.h create mode 100644 main/gbc/gbc_form_webpage.c create mode 100644 main/gbc/gbc_header.c create mode 100644 main/gbc/gbc_header.h create mode 100644 main/gbc/gbc_help.c create mode 100644 main/gbc/gbc_help.h create mode 100644 main/gbc/gbc_output.c create mode 100644 main/gbc/gbc_output.h create mode 100644 main/gbc/gbc_pcode.c create mode 100644 main/gbc/gbc_preprocess.c create mode 100644 main/gbc/gbc_preprocess.h create mode 100644 main/gbc/gbc_read.c create mode 100644 main/gbc/gbc_read.h create mode 100644 main/gbc/gbc_reserved.c create mode 100644 main/gbc/gbc_reserved_make.c create mode 100644 main/gbc/gbc_trans.c create mode 100644 main/gbc/gbc_trans.h create mode 100644 main/gbc/gbc_trans_code.c create mode 100644 main/gbc/gbc_trans_const.c create mode 100644 main/gbc/gbc_trans_ctrl.c create mode 100644 main/gbc/gbc_trans_expr.c create mode 100644 main/gbc/gbc_trans_subr.c create mode 100644 main/gbc/gbc_trans_tree.c create mode 100644 main/gbc/gbc_type.c create mode 100644 main/gbc/gbc_type.h create mode 100644 main/gbc/gbi.c create mode 100644 main/gbx/Makefile.am create mode 100644 main/gbx/gb.jit.h create mode 100644 main/gbx/gb_alloc.c create mode 100644 main/gbx/gb_array.c create mode 100644 main/gbx/gb_buffer.c create mode 100644 main/gbx/gb_common.c create mode 100644 main/gbx/gb_common_check.h create mode 100644 main/gbx/gb_error.c create mode 100644 main/gbx/gb_error.h create mode 100644 main/gbx/gb_file.c create mode 100644 main/gbx/gb_file.h create mode 100644 main/gbx/gb_hash.c create mode 100644 main/gbx/gb_list.c create mode 100644 main/gbx/gb_table.c create mode 100644 main/gbx/gbx.c create mode 100644 main/gbx/gbx.h create mode 100644 main/gbx/gbx_api.c create mode 100644 main/gbx/gbx_api.h create mode 100644 main/gbx/gbx_archive.c create mode 100644 main/gbx/gbx_archive.h create mode 100644 main/gbx/gbx_c_application.c create mode 100644 main/gbx/gbx_c_application.h create mode 100644 main/gbx/gbx_c_array.c create mode 100644 main/gbx/gbx_c_array.h create mode 100644 main/gbx/gbx_c_class.c create mode 100644 main/gbx/gbx_c_class.h create mode 100644 main/gbx/gbx_c_collection.c create mode 100644 main/gbx/gbx_c_collection.h create mode 100644 main/gbx/gbx_c_enum.c create mode 100644 main/gbx/gbx_c_enum.h create mode 100644 main/gbx/gbx_c_error.c create mode 100644 main/gbx/gbx_c_error.h create mode 100644 main/gbx/gbx_c_file.c create mode 100644 main/gbx/gbx_c_file.h create mode 100644 main/gbx/gbx_c_gambas.c create mode 100644 main/gbx/gbx_c_gambas.h create mode 100644 main/gbx/gbx_c_observer.c create mode 100644 main/gbx/gbx_c_observer.h create mode 100644 main/gbx/gbx_c_process.c create mode 100644 main/gbx/gbx_c_process.h create mode 100644 main/gbx/gbx_c_string.c create mode 100644 main/gbx/gbx_c_string.h create mode 100644 main/gbx/gbx_c_system.c create mode 100644 main/gbx/gbx_c_system.h create mode 100644 main/gbx/gbx_c_task.c create mode 100644 main/gbx/gbx_c_task.h create mode 100644 main/gbx/gbx_c_timer.c create mode 100644 main/gbx/gbx_c_timer.h create mode 100644 main/gbx/gbx_class.c create mode 100644 main/gbx/gbx_class.h create mode 100644 main/gbx/gbx_class_desc.h create mode 100644 main/gbx/gbx_class_info.c create mode 100644 main/gbx/gbx_class_init.c create mode 100644 main/gbx/gbx_class_load.c create mode 100644 main/gbx/gbx_class_load.h create mode 100644 main/gbx/gbx_class_native.c create mode 100644 main/gbx/gbx_compare.c create mode 100644 main/gbx/gbx_compare.h create mode 100644 main/gbx/gbx_component.c create mode 100644 main/gbx/gbx_component.h create mode 100644 main/gbx/gbx_date.c create mode 100644 main/gbx/gbx_date.h create mode 100644 main/gbx/gbx_debug.c create mode 100644 main/gbx/gbx_debug.h create mode 100644 main/gbx/gbx_eval.c create mode 100644 main/gbx/gbx_eval.h create mode 100644 main/gbx/gbx_event.c create mode 100644 main/gbx/gbx_event.h create mode 100644 main/gbx/gbx_exec.c create mode 100644 main/gbx/gbx_exec.h create mode 100644 main/gbx/gbx_exec_enum.c create mode 100644 main/gbx/gbx_exec_loop.c create mode 100644 main/gbx/gbx_exec_operator.c create mode 100644 main/gbx/gbx_exec_pop.c create mode 100644 main/gbx/gbx_exec_push.c create mode 100644 main/gbx/gbx_expression.h create mode 100644 main/gbx/gbx_extern.c create mode 100644 main/gbx/gbx_extern.h create mode 100644 main/gbx/gbx_info.h create mode 100644 main/gbx/gbx_jit.c create mode 100644 main/gbx/gbx_jit.h create mode 100644 main/gbx/gbx_library.c create mode 100644 main/gbx/gbx_library.h create mode 100644 main/gbx/gbx_local.c create mode 100644 main/gbx/gbx_local.h create mode 100644 main/gbx/gbx_math.c create mode 100644 main/gbx/gbx_math.h create mode 100644 main/gbx/gbx_number.c create mode 100644 main/gbx/gbx_number.h create mode 100644 main/gbx/gbx_object.c create mode 100644 main/gbx/gbx_object.h create mode 100644 main/gbx/gbx_project.c create mode 100644 main/gbx/gbx_project.h create mode 100644 main/gbx/gbx_regexp.c create mode 100644 main/gbx/gbx_regexp.h create mode 100644 main/gbx/gbx_replace.c create mode 100644 main/gbx/gbx_signal.c create mode 100644 main/gbx/gbx_signal.h create mode 100644 main/gbx/gbx_split.c create mode 100644 main/gbx/gbx_split.h create mode 100644 main/gbx/gbx_stack.c create mode 100644 main/gbx/gbx_stack.h create mode 100644 main/gbx/gbx_stream.c create mode 100644 main/gbx/gbx_stream.h create mode 100644 main/gbx/gbx_stream_arch.c create mode 100644 main/gbx/gbx_stream_buffer.c create mode 100644 main/gbx/gbx_stream_direct.c create mode 100644 main/gbx/gbx_stream_lock.c create mode 100644 main/gbx/gbx_stream_memory.c create mode 100644 main/gbx/gbx_stream_null.c create mode 100644 main/gbx/gbx_stream_pipe.c create mode 100644 main/gbx/gbx_stream_process.c create mode 100644 main/gbx/gbx_stream_string.c create mode 100644 main/gbx/gbx_string.c create mode 100644 main/gbx/gbx_string.h create mode 100644 main/gbx/gbx_struct.c create mode 100644 main/gbx/gbx_struct.h create mode 100644 main/gbx/gbx_subr.c create mode 100644 main/gbx/gbx_subr.h create mode 100644 main/gbx/gbx_subr_conv.c create mode 100644 main/gbx/gbx_subr_extern.c create mode 100644 main/gbx/gbx_subr_file.c create mode 100644 main/gbx/gbx_subr_math.c create mode 100644 main/gbx/gbx_subr_math_temp.h create mode 100644 main/gbx/gbx_subr_misc.c create mode 100644 main/gbx/gbx_subr_string.c create mode 100644 main/gbx/gbx_subr_test.c create mode 100644 main/gbx/gbx_subr_test_temp.h create mode 100644 main/gbx/gbx_subr_time.c create mode 100644 main/gbx/gbx_test.c create mode 100644 main/gbx/gbx_test.h create mode 100644 main/gbx/gbx_type.c create mode 100644 main/gbx/gbx_type.h create mode 100644 main/gbx/gbx_value.c create mode 100644 main/gbx/gbx_value.h create mode 100644 main/gbx/gbx_variant.h create mode 100644 main/gbx/gbx_watch.c create mode 100644 main/gbx/gbx_watch.h create mode 100644 main/lib/Makefile.am create mode 100644 main/lib/clipper/LICENSE create mode 100644 main/lib/clipper/Makefile.am create mode 100644 main/lib/clipper/c_clipper.cpp create mode 100644 main/lib/clipper/c_clipper.h create mode 100644 main/lib/clipper/clipper.cpp create mode 100644 main/lib/clipper/clipper.hpp create mode 100644 main/lib/clipper/gb.clipper.component create mode 120000 main/lib/clipper/gb.geom.h create mode 100644 main/lib/clipper/main.cpp create mode 100644 main/lib/clipper/main.h create mode 100644 main/lib/complex/Makefile.am create mode 100644 main/lib/complex/ccomplex.c create mode 100644 main/lib/complex/ccomplex.h create mode 100644 main/lib/complex/gb.complex.component create mode 100644 main/lib/complex/main.c create mode 100644 main/lib/complex/main.h create mode 100644 main/lib/compress/CCompress.c create mode 100644 main/lib/compress/CCompress.h create mode 100644 main/lib/compress/CUncompress.c create mode 100644 main/lib/compress/CUncompress.h create mode 100644 main/lib/compress/Makefile.am create mode 100644 main/lib/compress/gb.compress.component create mode 100644 main/lib/compress/gb.compress.h create mode 100644 main/lib/compress/main.c create mode 100644 main/lib/compress/main.h create mode 100644 main/lib/data/Makefile.am create mode 100644 main/lib/data/TODO create mode 100644 main/lib/data/c_avltree.c create mode 100644 main/lib/data/c_avltree.h create mode 100644 main/lib/data/c_circular.c create mode 100644 main/lib/data/c_circular.h create mode 100644 main/lib/data/c_deque.c create mode 100644 main/lib/data/c_deque.h create mode 100644 main/lib/data/c_graph.c create mode 100644 main/lib/data/c_graph.h create mode 100644 main/lib/data/c_graphmatrix.c create mode 100644 main/lib/data/c_graphmatrix.h create mode 100644 main/lib/data/c_heap.c create mode 100644 main/lib/data/c_heap.h create mode 100644 main/lib/data/c_list.c create mode 100644 main/lib/data/c_list.h create mode 100644 main/lib/data/c_trie.c create mode 100644 main/lib/data/c_trie.h create mode 100644 main/lib/data/gb.data.component create mode 100644 main/lib/data/gb.data/.component create mode 100644 main/lib/data/gb.data/.directory create mode 100644 main/lib/data/gb.data/.icon.png create mode 100644 main/lib/data/gb.data/.project create mode 100644 main/lib/data/gb.data/.src/MMain.module create mode 100644 main/lib/data/gb.data/.src/PrioSet.class create mode 100644 main/lib/data/gb.data/.src/_PrioSet_Entry.class create mode 100644 main/lib/data/list.h create mode 100644 main/lib/data/lookup3.h create mode 100644 main/lib/data/main.c create mode 100644 main/lib/data/main.h create mode 100644 main/lib/data/string_compare.h create mode 100644 main/lib/data/trie.c create mode 100644 main/lib/data/trie.h create mode 100644 main/lib/db/CConnection.c create mode 100644 main/lib/db/CConnection.h create mode 100644 main/lib/db/CDatabase.c create mode 100644 main/lib/db/CDatabase.h create mode 100644 main/lib/db/CField.c create mode 100644 main/lib/db/CField.h create mode 100644 main/lib/db/CIndex.c create mode 100644 main/lib/db/CIndex.h create mode 100644 main/lib/db/CResult.c create mode 100644 main/lib/db/CResult.h create mode 100644 main/lib/db/CResultField.c create mode 100644 main/lib/db/CResultField.h create mode 100644 main/lib/db/CTable.c create mode 100644 main/lib/db/CTable.h create mode 100644 main/lib/db/CUser.c create mode 100644 main/lib/db/CUser.h create mode 100644 main/lib/db/Makefile.am create mode 100644 main/lib/db/c_subcollection.c create mode 100644 main/lib/db/c_subcollection.h create mode 100644 main/lib/db/deletemap.c create mode 100644 main/lib/db/deletemap.h create mode 100644 main/lib/db/gb.db.component create mode 100644 main/lib/db/gb.db.h create mode 100644 main/lib/db/gb.db.proto.h create mode 100644 main/lib/db/gb.db/.component create mode 100644 main/lib/db/gb.db/.directory create mode 100644 main/lib/db/gb.db/.icon.png create mode 100644 main/lib/db/gb.db/.project create mode 100644 main/lib/db/gb.db/.src/Connection.class create mode 100644 main/lib/db/gb.db/.src/Connections.class create mode 100644 main/lib/db/gb.db/.src/Main.module create mode 100644 main/lib/db/gb.db/.src/SQLRequest.class create mode 100644 main/lib/db/gb_barray.h create mode 100644 main/lib/db/main.c create mode 100644 main/lib/db/main.h create mode 100644 main/lib/db/sqlite.c create mode 100644 main/lib/db/sqlite.h create mode 100644 main/lib/debug/CDebug.c create mode 100644 main/lib/debug/CDebug.h create mode 100644 main/lib/debug/Makefile.am create mode 100644 main/lib/debug/debug.c create mode 100644 main/lib/debug/debug.h create mode 100644 main/lib/debug/gb.debug.component create mode 100644 main/lib/debug/gb.debug.h create mode 100644 main/lib/debug/main.c create mode 100644 main/lib/debug/main.h create mode 100644 main/lib/debug/print.c create mode 100644 main/lib/debug/print.h create mode 100644 main/lib/debug/profile.c create mode 100644 main/lib/debug/profile.h create mode 100644 main/lib/draw/Makefile.am create mode 100644 main/lib/draw/cdraw.c create mode 100644 main/lib/draw/cdraw.h create mode 100644 main/lib/draw/cpaint.c create mode 100644 main/lib/draw/cpaint.h create mode 100644 main/lib/draw/gb.draw.h create mode 120000 main/lib/draw/gb.geom.h create mode 120000 main/lib/draw/gb.image.h create mode 100644 main/lib/draw/gb.paint.h create mode 100644 main/lib/draw/gb_list.c create mode 100644 main/lib/draw/main.c create mode 100644 main/lib/draw/main.h create mode 100644 main/lib/draw/matrix.c create mode 100644 main/lib/draw/matrix.h create mode 100644 main/lib/eval/Makefile.am create mode 100644 main/lib/eval/c_expression.c create mode 100644 main/lib/eval/c_expression.h create mode 100644 main/lib/eval/c_highlight.c create mode 100644 main/lib/eval/c_highlight.h create mode 100644 main/lib/eval/c_system.c create mode 100644 main/lib/eval/c_system.h create mode 100644 main/lib/eval/eval.c create mode 100644 main/lib/eval/eval.h create mode 100644 main/lib/eval/eval_analyze.c create mode 100644 main/lib/eval/eval_analyze.h create mode 100644 main/lib/eval/eval_code.c create mode 100644 main/lib/eval/eval_code.h create mode 100644 main/lib/eval/eval_read.c create mode 100644 main/lib/eval/eval_read.h create mode 100644 main/lib/eval/eval_reserved.c create mode 100644 main/lib/eval/eval_trans.c create mode 100644 main/lib/eval/eval_trans.h create mode 100644 main/lib/eval/eval_trans_expr.c create mode 100644 main/lib/eval/eval_trans_tree.c create mode 100644 main/lib/eval/gb.eval.component create mode 100644 main/lib/eval/gb.eval.h create mode 100644 main/lib/eval/gb_alloc_override.h create mode 100644 main/lib/eval/gb_array.c create mode 100644 main/lib/eval/gb_error.c create mode 100644 main/lib/eval/gb_error.h create mode 100644 main/lib/eval/gb_table.c create mode 100644 main/lib/eval/main.c create mode 100644 main/lib/eval/main.h create mode 100644 main/lib/gb.component create mode 100644 main/lib/geom/Makefile.am create mode 100644 main/lib/geom/cpoint.c create mode 100644 main/lib/geom/cpoint.h create mode 100644 main/lib/geom/cpoint_temp.h create mode 100644 main/lib/geom/crect.c create mode 100644 main/lib/geom/crect.h create mode 100644 main/lib/geom/crect_temp.h create mode 100644 main/lib/geom/gb.geom.component create mode 100644 main/lib/geom/gb.geom.h create mode 100644 main/lib/geom/main.c create mode 100644 main/lib/geom/main.h create mode 100644 main/lib/gui.opengl/Makefile.am create mode 100644 main/lib/gui.opengl/gb.gui.opengl.component create mode 100644 main/lib/gui.opengl/main.c create mode 100644 main/lib/gui.opengl/main.h create mode 100644 main/lib/gui.qt.opengl/Makefile.am create mode 100644 main/lib/gui.qt.opengl/gb.gui.qt.opengl.component create mode 100644 main/lib/gui.qt.opengl/main.c create mode 100644 main/lib/gui.qt.opengl/main.h create mode 100644 main/lib/gui.qt.webkit/Makefile.am create mode 100644 main/lib/gui.qt.webkit/gb.gui.qt.webkit.component create mode 100644 main/lib/gui.qt.webkit/main.c create mode 100644 main/lib/gui.qt.webkit/main.h create mode 100644 main/lib/gui.qt/Makefile.am create mode 100644 main/lib/gui.qt/gb.gui.qt.component create mode 120000 main/lib/gui.qt/gb_gui_test_temp.h create mode 100644 main/lib/gui.qt/main.c create mode 100644 main/lib/gui.qt/main.h create mode 100644 main/lib/gui.trayicon/Makefile.am create mode 100644 main/lib/gui.trayicon/cfaketrayicon.c create mode 100644 main/lib/gui.trayicon/cfaketrayicon.h create mode 100644 main/lib/gui.trayicon/gb.gui.trayicon.component create mode 100644 main/lib/gui.trayicon/main.c create mode 100644 main/lib/gui.trayicon/main.h create mode 100644 main/lib/gui.webview/Makefile.am create mode 100644 main/lib/gui.webview/gb.gui.webview.component create mode 100644 main/lib/gui.webview/main.c create mode 100644 main/lib/gui.webview/main.h create mode 100644 main/lib/gui/Makefile.am create mode 100644 main/lib/gui/gb.gui.component create mode 100644 main/lib/gui/gb_gui_test_temp.h create mode 100644 main/lib/gui/main.c create mode 100644 main/lib/gui/main.h create mode 100644 main/lib/hash/Makefile.am create mode 100644 main/lib/hash/c_hash.c create mode 100644 main/lib/hash/c_hash.h create mode 100644 main/lib/hash/gb.hash.component create mode 100644 main/lib/hash/gb.hash.h create mode 100644 main/lib/hash/hash.c create mode 100644 main/lib/hash/hash.h create mode 100644 main/lib/hash/main.c create mode 100644 main/lib/hash/main.h create mode 100644 main/lib/hash/platform.h create mode 100644 main/lib/image.effect/CImage.cpp create mode 100644 main/lib/image.effect/CImage.h create mode 100644 main/lib/image.effect/Makefile.am create mode 100644 main/lib/image.effect/effect.cpp create mode 100644 main/lib/image.effect/effect.h create mode 100644 main/lib/image.effect/gb.image.effect.component create mode 100644 main/lib/image.effect/kcpuinfo.cpp create mode 100644 main/lib/image.effect/kcpuinfo.h create mode 100644 main/lib/image.effect/kimageeffect.cpp create mode 100644 main/lib/image.effect/kimageeffect.h create mode 100644 main/lib/image.effect/main.cpp create mode 100644 main/lib/image.effect/main.h create mode 100644 main/lib/image.effect/qcolor.cpp create mode 100644 main/lib/image.effect/qcolor.h create mode 100644 main/lib/image.effect/qimage.cpp create mode 100644 main/lib/image.effect/qimage.h create mode 100644 main/lib/image.effect/qpoint.cpp create mode 100644 main/lib/image.effect/qpoint.h create mode 100644 main/lib/image.effect/qrect.cpp create mode 100644 main/lib/image.effect/qrect.h create mode 100644 main/lib/image.effect/qsize.cpp create mode 100644 main/lib/image.effect/qsize.h create mode 100644 main/lib/image.effect/qt.h create mode 100644 main/lib/image/CImage.c create mode 100644 main/lib/image/CImage.h create mode 100644 main/lib/image/CImageStat.c create mode 100644 main/lib/image/CImageStat.h create mode 100644 main/lib/image/Makefile.am create mode 100644 main/lib/image/c_color.c create mode 100644 main/lib/image/c_color.h create mode 100644 main/lib/image/gb.image.component create mode 100644 main/lib/image/gb.image.h create mode 100644 main/lib/image/image.c create mode 100644 main/lib/image/image.h create mode 100644 main/lib/image/image_stat.c create mode 100644 main/lib/image/image_stat.h create mode 100644 main/lib/image/main.c create mode 100644 main/lib/image/main.h create mode 100644 main/lib/inotify/Makefile.am create mode 100644 main/lib/inotify/TODO create mode 100644 main/lib/inotify/c_watch.c create mode 100644 main/lib/inotify/c_watch.h create mode 100644 main/lib/inotify/gb.inotify.component create mode 100644 main/lib/inotify/gb_list.c create mode 100644 main/lib/inotify/main.c create mode 100644 main/lib/inotify/main.h create mode 100644 main/lib/jit/Makefile.am create mode 100644 main/lib/jit/gb.jit.component create mode 100644 main/lib/jit/gb.jit/.component create mode 100644 main/lib/jit/gb.jit/.directory create mode 100644 main/lib/jit/gb.jit/.hidden/icon.png create mode 100644 main/lib/jit/gb.jit/.icon.png create mode 100644 main/lib/jit/gb.jit/.project create mode 100644 main/lib/jit/gb.jit/.src/CCompilation.class create mode 100644 main/lib/jit/gb.jit/.src/Jit.module create mode 100644 main/lib/jit/gb.jit/.src/Main.module create mode 100644 main/lib/jit/gb.jit/.src/_ClassStat.class create mode 120000 main/lib/jit/gb.jit/gambas.h create mode 120000 main/lib/jit/gb.jit/gb.jit.h create mode 120000 main/lib/jit/gb.jit/gb_error_common.h create mode 120000 main/lib/jit/gb.jit/gb_overflow.h create mode 100644 main/lib/jit/gb.jit/jit.h create mode 100644 main/lib/jit/gb.jit/jit_after.h create mode 100644 main/lib/jit/gb_str.c create mode 100644 main/lib/jit/gb_str.h create mode 100644 main/lib/jit/gbc_reserved.c create mode 100644 main/lib/jit/jit.c create mode 100644 main/lib/jit/jit.h create mode 100644 main/lib/jit/jit_body.c create mode 100644 main/lib/jit/main.c create mode 100644 main/lib/jit/main.h create mode 100755 main/lib/option/Makefile.am create mode 100755 main/lib/option/gb.option.component create mode 100644 main/lib/option/getoptions.c create mode 100644 main/lib/option/getoptions.h create mode 100644 main/lib/option/main.c create mode 100644 main/lib/option/main.h create mode 100644 main/lib/signal/Makefile.am create mode 100644 main/lib/signal/csignal.c create mode 100644 main/lib/signal/csignal.h create mode 100644 main/lib/signal/gb.signal.component create mode 100644 main/lib/signal/main.c create mode 100644 main/lib/signal/main.h create mode 100644 main/lib/term/Makefile.am create mode 100644 main/lib/term/cterm.c create mode 100644 main/lib/term/cterm.h create mode 100644 main/lib/term/gb.term.component create mode 100644 main/lib/term/main.c create mode 100644 main/lib/term/main.h create mode 100644 main/lib/test/Makefile.am create mode 100644 main/lib/test/gb.test.component create mode 100644 main/lib/test/gb.test/.component create mode 100644 main/lib/test/gb.test/.directory create mode 100644 main/lib/test/gb.test/.hidden/CHANGELOG create mode 100644 main/lib/test/gb.test/.hidden/flowchart.fodg create mode 100644 main/lib/test/gb.test/.hidden/flowchart.svg create mode 100644 main/lib/test/gb.test/.hidden/gb.test.png create mode 100644 main/lib/test/gb.test/.hidden/summary-example.txt create mode 100644 main/lib/test/gb.test/.icon.png create mode 100644 main/lib/test/gb.test/.lang/de.po create mode 100644 main/lib/test/gb.test/.lang/it.po create mode 100644 main/lib/test/gb.test/.lang/pt_BR.po create mode 100644 main/lib/test/gb.test/.project create mode 100644 main/lib/test/gb.test/.src/Helper.module create mode 100644 main/lib/test/gb.test/.src/Tap/TapContext.class create mode 100644 main/lib/test/gb.test/.src/Tap/TapParser.class create mode 100644 main/lib/test/gb.test/.src/Tap/TapPrinter.class create mode 100644 main/lib/test/gb.test/.src/TestAssertion.class create mode 100644 main/lib/test/gb.test/.src/TestMyself/MustFail.test create mode 100644 main/lib/test/gb.test/.src/TestMyself/TAllAsserts.test create mode 100644 main/lib/test/gb.test/.src/TestMyself/TBailout.test create mode 100644 main/lib/test/gb.test/.src/TestMyself/TCrashes.test create mode 100644 main/lib/test/gb.test/.src/TestMyself/TElse.test create mode 100644 main/lib/test/gb.test/.src/TestMyself/TEmpty.test create mode 100644 main/lib/test/gb.test/.src/TestMyself/TIntendedFailures.test create mode 100644 main/lib/test/gb.test/.src/TestMyself/TInternals.test create mode 100644 main/lib/test/gb.test/.src/TestMyself/TParser.test create mode 100644 main/lib/test/gb.test/.src/TestMyself/TSetup.test create mode 100644 main/lib/test/gb.test/.src/TestMyself/TSkipAll.test create mode 100644 main/lib/test/gb.test/.src/TestMyself/TSummary.test create mode 100644 main/lib/test/gb.test/.src/TestMyself/TWrongPlan.test create mode 100644 main/lib/test/gb.test/.src/TestRunner.module create mode 100644 main/lib/test/gb.test/.src/TestStats.class create mode 100644 main/lib/test/gb.test/.src/TestSuite/Assert.module create mode 100644 main/lib/test/gb.test/.src/TestSuite/Test.module create mode 100644 main/lib/test/gb.test/.src/TestSuite/TestCase.class create mode 100644 main/lib/test/gb.test/.src/TestSuite/TestCommand.class create mode 100644 main/lib/test/gb.test/.src/TestSuite/TestSuite.class create mode 100644 main/lib/test/gb.test/.src/ZzzDoSth.module create mode 100644 main/lib/test/gb.test/.test create mode 100644 main/lib/test/gb.test/LICENSE create mode 100644 main/lib/test/gb.test/README.md create mode 100644 main/lib/test/gb.test/taskell.md create mode 100755 main/lib/test/gb.test/test.sh create mode 100644 main/lib/test/gb.test/unittesthelloworld-1.0.0.tar.gz create mode 100644 main/lib/test/main.c create mode 100644 main/lib/test/main.h create mode 100644 main/lib/vb/Makefile.am create mode 100644 main/lib/vb/gb.vb.component create mode 100644 main/lib/vb/main.c create mode 100644 main/lib/vb/main.h create mode 100644 main/lib/vb/vb.c create mode 100644 main/lib/vb/vb.h create mode 100644 main/lib/vb/vbdate.c create mode 100644 main/lib/vb/vbdate.h create mode 120000 main/m4 create mode 100644 main/man/Makefile.am create mode 100644 main/man/gba3.1 create mode 100644 main/man/gbc3.1 create mode 100644 main/man/gbh3.1 create mode 100644 main/man/gbi3.1 create mode 100644 main/man/gbr3.1 create mode 100644 main/man/gbx3.1 create mode 100644 main/mime/application-x-gambas3-48.png create mode 100644 main/mime/application-x-gambas3.png create mode 100644 main/mime/application-x-gambas3.xml create mode 120000 main/reconf create mode 100644 main/share/Makefile.am create mode 100644 main/share/gambas.h create mode 100644 main/share/gb_alloc.h create mode 100644 main/share/gb_alloc_temp.h create mode 100644 main/share/gb_arch.h create mode 100644 main/share/gb_arch_temp.h create mode 100644 main/share/gb_array.h create mode 100644 main/share/gb_array_temp.h create mode 100644 main/share/gb_buffer.h create mode 100644 main/share/gb_buffer_temp.h create mode 100644 main/share/gb_class_desc_common.h create mode 100644 main/share/gb_code.h create mode 100644 main/share/gb_code_temp.h create mode 100644 main/share/gb_common.h create mode 100644 main/share/gb_common_buffer.h create mode 100644 main/share/gb_common_buffer_temp.h create mode 100644 main/share/gb_common_case.h create mode 100644 main/share/gb_common_case_temp.h create mode 100644 main/share/gb_common_string.h create mode 100644 main/share/gb_common_string_temp.h create mode 100644 main/share/gb_common_swap.h create mode 100644 main/share/gb_common_swap_temp.h create mode 100644 main/share/gb_component.h create mode 100644 main/share/gb_error_common.h create mode 100644 main/share/gb_file_share.h create mode 100644 main/share/gb_file_temp.h create mode 100644 main/share/gb_hash.h create mode 100644 main/share/gb_hash_temp.h create mode 100644 main/share/gb_limit.h create mode 100644 main/share/gb_list.h create mode 100644 main/share/gb_list_temp.h create mode 100644 main/share/gb_magic.h create mode 100644 main/share/gb_overflow.h create mode 100644 main/share/gb_pcode.h create mode 100644 main/share/gb_pcode_temp.h create mode 100644 main/share/gb_replace.h create mode 100644 main/share/gb_replace_temp.h create mode 100644 main/share/gb_reserved.h create mode 100644 main/share/gb_reserved_keyword.h create mode 100644 main/share/gb_reserved_temp.h create mode 100644 main/share/gb_system.h create mode 100644 main/share/gb_system_temp.h create mode 100644 main/share/gb_table.h create mode 100644 main/share/gb_table_temp.h create mode 100644 main/share/gb_type_common.h create mode 100644 main/share/gbc_read_common.h create mode 100644 main/share/gbc_read_temp.h create mode 100644 main/share/gbc_trans_common.h create mode 100644 main/share/gbx_subr_common.h create mode 100644 main/tools/gbh3/.directory create mode 100644 main/tools/gbh3/.icon.png create mode 100644 main/tools/gbh3/.project create mode 100644 main/tools/gbh3/.src/MMain.module create mode 100644 main/tools/gbh3/.src/MOldMain.module create mode 100644 main/tools/gbh3/README create mode 100644 main/tools/gbh3/icon.png create mode 100644 main/tools/gbh3/license create mode 100644 main/tools/gbh3/usage create mode 100755 reconf create mode 100755 reconf-all create mode 100755 test-fast create mode 100644 version.m4 diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..cf5051fa --- /dev/null +++ b/.gitignore @@ -0,0 +1,49 @@ +Makefile +Makefile.in +libtool +ltmain.sh +stamp-h1 +warnings.log +.deps/ +aclocal.m4 +config.guess +config.log +config.sub +configure +install-sh +autom4te.cache +config.h +config.h.in +config.status +config.cache +compile +depcomp +missing +/m4/libtool.m4 +/m4/ltoptions.m4 +/m4/ltsugar.m4 +/m4/ltversion.m4 +/m4/lt~obsolete.m4 +/m4/pkg.m4 +.libs/ +*.la +*.lo +*.o +*.a +.dirstamp +*_moc.cpp +*.pot +*.mo +*.gambas +main/gb*/gb*3 +DISABLED* +.startup +.settings +.info +.list +.action/ +.jit/ +**/.gitignore +app/other/MakeWebSite/gambas.sourceforge.net/*/ +*~ +.fuse_hidden* diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..cc3fe14d --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,242 @@ +build:archlinux: + image: archlinux:base + before_script: + - > + pacman -Syu --needed --noconfirm + alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git + glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 gtkglext imlib2 + intltool libffi libgl libgnome-keyring libmariadbclient librsvg libsm + libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre + - > + pacman -Syu --needed --noconfirm + pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg + qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net + sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils + zlib gettext qt5-webengine webkit2gtk + script: + - ./reconf-all + - GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit + - make -j$(nproc) + - make install + + +build:archlinux-clang: + image: archlinux:base + before_script: + - > + pacman -Syu --needed --noconfirm + alure autoconf automake bzip2 zstd coreutils curl dbus clang gdk-pixbuf2 git + glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 gtkglext imlib2 + intltool libffi libgl libgnome-keyring libmariadbclient librsvg libsm + libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre + - > + pacman -Syu --needed --noconfirm + pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg + qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net + sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils + zlib gettext qt5-webengine webkit2gtk + script: + - ./reconf-all + - GAMBAS_CONFIG_FAILURE=1 ./configure CC=clang CXX=clang++ -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit + - make -j$(nproc) + - make install + + +build:debian-oldstable: + image: debian:oldstable + before_script: + - > + apt-get update && apt-get install -y build-essential g++ automake + autoconf libbz2-dev libzstd-dev default-libmysqlclient-dev unixodbc-dev libpq-dev + libsqlite3-dev libglib2.0-dev + libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev + libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev + libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-glib-dev + libpoppler-private-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev + libffi-dev libglew-dev + libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgdk-pixbuf2.0-dev + linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev + libcairo2-dev libgsl-dev libncurses5-dev libgmime-3.0-dev libalure-dev + libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev + libsdl2-image-dev sane-utils libdumb1-dev libqt5opengl5-dev + libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev qtbase5-dev + qtwebengine5-dev libwebkit2gtk-4.0-dev git libssl-dev + script: + - ./reconf-all + - GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-keyring --disable-sqlite2 --disable-qt4 --disable-qtwebkit + - make -j$(nproc) + - make install + +build:debian-stable: + image: debian:stable + before_script: + - > + apt-get update && apt-get install -y build-essential g++ automake + autoconf libbz2-dev libzstd-dev default-libmysqlclient-dev unixodbc-dev libpq-dev + libsqlite3-dev libglib2.0-dev + libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev + libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev + libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-glib-dev + libpoppler-private-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev + libffi-dev libglew-dev + libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgdk-pixbuf2.0-dev + linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev + libcairo2-dev libgsl-dev libncurses5-dev libgmime-3.0-dev libalure-dev + libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev + libsdl2-image-dev sane-utils libdumb1-dev libqt5opengl5-dev + libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev qtbase5-dev + qtwebengine5-dev libwebkit2gtk-4.0-dev git libssl-dev + script: + - ./reconf-all + - GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-keyring --disable-sqlite2 --disable-qt4 --disable-qtwebkit + - make -j$(nproc) + - make install + +build:debian-testing: + image: debian:testing + before_script: + - > + apt-get update && apt-get install -y build-essential g++ automake + autoconf libbz2-dev libzstd-dev default-libmysqlclient-dev unixodbc-dev libpq-dev + libsqlite3-dev libglib2.0-dev + libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev + libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev + libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-glib-dev + libpoppler-private-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev + libffi-dev libglew-dev + libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgdk-pixbuf2.0-dev + linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev + libcairo2-dev libgsl-dev libncurses5-dev libgmime-3.0-dev libalure-dev + libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev + libsdl2-image-dev sane-utils libdumb1-dev libqt5opengl5-dev + libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev qtbase5-dev + qtwebengine5-dev libwebkit2gtk-4.0-dev git libssl-dev + script: + - ./reconf-all + - GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-keyring --disable-sqlite2 --disable-qt4 --disable-qtwebkit + - make -j$(nproc) + - make install + + +build:debian-unstable: + image: debian:unstable + before_script: + - > + apt-get update && apt-get install -y build-essential g++ automake autoconf libbz2-dev libzstd-dev default-libmysqlclient-dev unixodbc-dev libpq-dev libsqlite3-dev libglib2.0-dev libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-glib-dev libpoppler-private-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev libffi-dev libglew-dev libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgdk-pixbuf2.0-dev linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcairo2-dev libgsl-dev libncurses5-dev libgmime-3.0-dev libalure-dev libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-image-dev sane-utils libdumb1-dev libqt5opengl5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev qtbase5-dev qtwebengine5-dev libwebkit2gtk-4.0-dev git libssl-dev + script: + - ./reconf-all + - GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-keyring --disable-qt4 --disable-sqlite2 + - make -j$(nproc) + - make install + +build:ubuntu-kinetic: + image: ubuntu:kinetic + before_script: + - > + apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential g++ automake autoconf libtool libbz2-dev libzstd-dev libmysqlclient-dev unixodbc-dev libpq-dev libsqlite0-dev libsqlite3-dev libglib2.0-dev libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-private-dev libpoppler-glib-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev libffi-dev libglew-dev libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgdk-pixbuf2.0-dev linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcairo2-dev libgsl-dev libncurses5-dev libgmime-3.0-dev llvm-dev llvm libalure-dev libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-image-dev sane-utils libdumb1-dev libssl-dev libqt5opengl5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev qtbase5-dev qtwebengine5-dev libwebkit2gtk-4.0-dev git + + script: + - ./reconf-all + - GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-keyring --disable-qt4 + - make -j$(nproc) + - make install + +build:ubuntu-jammy: + image: ubuntu:jammy + before_script: + - > + apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential g++ automake autoconf libtool libbz2-dev libzstd-dev libmysqlclient-dev unixodbc-dev libpq-dev libsqlite0-dev libsqlite3-dev libglib2.0-dev libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-private-dev libpoppler-glib-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev libffi-dev libglew-dev libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgdk-pixbuf2.0-dev linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcairo2-dev libgsl-dev libncurses5-dev libgmime-3.0-dev llvm-dev llvm libalure-dev libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-image-dev sane-utils libdumb1-dev libssl-dev libqt5opengl5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev qtbase5-dev qtwebengine5-dev libwebkit2gtk-4.0-dev git + + script: + - ./reconf-all + - GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-keyring --disable-qt4 + - make -j$(nproc) + - make install + +build:ubuntu-focal: + image: ubuntu:focal + before_script: + - > + apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential g++ automake autoconf libtool libbz2-dev libzstd-dev libmysqlclient-dev unixodbc-dev libpq-dev libsqlite0-dev libsqlite3-dev libglib2.0-dev libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-private-dev libpoppler-glib-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev libffi-dev libglew-dev libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgdk-pixbuf2.0-dev linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcairo2-dev libgsl-dev libncurses5-dev libgmime-2.6-dev llvm-dev llvm libalure-dev libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-image-dev sane-utils libdumb1-dev libssl-dev libqt5opengl5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev qtbase5-dev qtwebengine5-dev libwebkit2gtk-4.0-dev git + + script: + - ./reconf-all + - GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-keyring --disable-qt4 + - make -j$(nproc) + - make install + +build:ubuntu-bionic: + image: ubuntu:bionic + before_script: + - > + apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential g++ automake autoconf libtool libbz2-dev libzstd-dev libmysqlclient-dev unixodbc-dev libpq-dev libsqlite0-dev libsqlite3-dev libglib2.0-dev libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-private-dev libpoppler-glib-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev libffi-dev libqt4-dev libqtwebkit-dev libqt4-opengl-dev libglew-dev libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgdk-pixbuf2.0-dev linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcairo2-dev libgsl-dev libncurses5-dev libgmime-2.6-dev llvm-dev llvm libalure-dev libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-image-dev sane-utils libdumb1-dev libssl-dev libqt5opengl5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev qtbase5-dev qtwebengine5-dev libwebkit2gtk-4.0-dev + + script: + - ./reconf-all + - GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-keyring + - make -j$(nproc) + - make install + +build:ubuntu-xenial: + image: ubuntu:xenial + before_script: + - > + apt-get update && apt-get install -y build-essential g++ automake autoconf libtool libbz2-dev libmysqlclient-dev unixodbc-dev libpq-dev libsqlite0-dev libsqlite3-dev libglib2.0-dev libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-glib-dev libpoppler-private-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev libffi-dev libqt4-dev libqtwebkit-dev libqt4-opengl-dev libglew-dev libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgnome-keyring-dev libgdk-pixbuf2.0-dev linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcairo2-dev libgsl-dev libncurses5-dev libgmime-2.6-dev llvm-dev llvm libalure-dev libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-image-dev sane-utils libdumb1-dev libssl-dev libqt5opengl5-dev libqt5svg5-dev libqt5webkit5-dev libqt5x11extras5-dev qtbase5-dev libwebkit2gtk-3.0-dev + + script: + - ./reconf-all + - GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-gtk3webview --disable-qt5webview --disable-zstd + - make -j$(nproc) + - make install + +build:ubuntu-trusty: + image: ubuntu:trusty + before_script: + - > + apt-get update && apt-get install -y build-essential g++ automake autoconf libtool libbz2-dev libmysqlclient-dev unixodbc-dev libpq-dev libsqlite0-dev libsqlite3-dev libglib2.0-dev libgtk2.0-dev libcurl4-gnutls-dev libgtkglext1-dev libpcre3-dev libsdl-sound1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libxml2-dev libxslt1-dev librsvg2-dev libpoppler-dev libpoppler-glib-dev libpoppler-private-dev libpoppler-cpp-dev libasound2-dev libdirectfb-dev libxtst-dev libffi-dev libqt4-dev libqtwebkit-dev libqt4-opengl-dev libglew-dev libimlib2-dev libv4l-dev libsdl-ttf2.0-dev libgnome-keyring-dev libgdk-pixbuf2.0-dev linux-libc-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcairo2-dev libgsl0-dev libncurses5-dev libgmime-2.6-dev llvm-dev llvm libalure-dev libgmp-dev libgtk-3-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-image-dev sane-utils libdumb1-dev libssl-dev git libglu1-mesa-dev libglu1-mesa-dev libglew1.10 libglu1-mesa libgles2-mesa-dev libwebkit2gtk-3.0-dev + + script: + - ./reconf-all + - GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-qt5 --disable-gtk3webview --disable-gtk3opengl --disable-zstd + - make -j$(nproc) + - make install + +build:alpine: + image: alpine + before_script: + - > + apk add --no-progress -q + autoconf automake libtool curl-dev dbus-dev g++ gdk-pixbuf-dev git gmp-dev + glew-dev glib-dev gmime-dev gsl-dev gst-plugins-base-dev gstreamer-dev gtk+2.0-dev gtk+3.0-dev + imlib2-dev gettext-dev libffi-dev mesa-dev mariadb-dev librsvg-dev + libsm-dev libxcursor-dev libxml2-dev libxslt-dev libxtst-dev make ncurses-dev pcre-dev pkgconf + poppler-dev postgresql-dev qt5-qtsvg-dev qt5-qtx11extras-dev qt5-qtwebengine-dev + sdl2-dev sdl2_image-dev sdl2_mixer-dev sdl2_ttf-dev sqlite-dev unixodbc-dev xdg-utils + zlib-dev webkit2gtk-dev + script: + - ./reconf-all + - GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-openal --disable-qt4 --disable-sdl --disable-sdlsound --disable-sqlite2 --disable-v4l --disable-gtkopengl --disable-zstd --disable-qt5webkit --disable-pdf --disable-keyring + - make -j$(nproc) + - make install + +build:fedora-latest: + image: fedora:latest + before_script: + - > + dnf install -y libtool libtool-ltdl-devel gcc make autoconf dumb-devel gmime-devel gmime30-devel libffi-devel mariadb-devel postgresql-devel unixODBC-devel sqlite2-devel libsqlite3x-devel libxslt-devel libv4l-devel glew-devel poppler-devel poppler-glib-devel poppler-cpp-devel qt-devel qt5-qtbase-devel qt5-qtbase-private-devel qt5-qtwebengine-devel qt5-qtx11extras-devel qt5-qtsvg-devel SDL_ttf-devel SDL_mixer-devel SDL-devel SDL2_ttf-devel SDL2_mixer-devel SDL2_image-devel SDL2-devel cairo-devel gtk2-devel gtk3-devel imlib2-devel librsvg2-devel qt-webkit-devel qt5-qtwebkit qt5-qtwebkit-devel openal-soft-devel libjpeg-turbo-devel gtkglext-devel gmp-devel libxml2-devel libXtst-devel gsl-devel pcre-devel dbus-devel libcurl-devel alure-devel gstreamermm-devel libgnome-keyring-devel bzip2-devel libzstd-devel webkit2gtk3-devel ncurses-devel + script: + - ./reconf-all + - GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-pdf + - make -j$(nproc) + - make install + +build:opensuse-tumbleweed: + image: opensuse/tumbleweed + before_script: + - > + zypper update -y && zypper install -y libtool gcc glew-devel gmime-devel gtk2-devel gtk3-devel libqt5-qtx11extras-devel libqt5-qtwebengine-devel libQt5Xml-devel libQt5Sql-devel libqt5-qtsvg-devel libQt5Gui-devel libQt5Core-devel libQt5Sql5-postgresql libQt5Sql5-unixODBC libQt5Sql5-mysql libQt5Sql5-sqlite webkit2gtk3-devel libICE-devel libSM-devel unixODBC-devel libzip-devel libzstd-devel libmariadb-devel gsl-devel libopenssl-devel alure-devel postgresql-devel libcurl-devel libSDL_ttf-devel libSDL_mixer-devel libSDL-devel libSDL2_ttf-devel libSDL2_mixer-devel libSDL2_image-devel libSDL2-devel libxslt-devel libv4l-devel librsvg-devel gtkglext-devel libgnome-keyring-devel libjpeg62-devel libpoppler-devel libpoppler-glib-devel imlib2-devel gmp-devel gstreamermm-devel + script: + - ./reconf-all + - GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-qt4 --disable-sqlite2 --disable-qt5webkit --disable-pdf + - make -j$(nproc) + - make install diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 00000000..8dea5f8f --- /dev/null +++ b/AUTHORS @@ -0,0 +1,311 @@ +# +# GAMBAS AUTHORS FILE +# +# This file should list all people that have written code or done translations for Gambas. +# +# If you want to add or fix anything, please write on the mailing-list, or submit a merge +# request with GitLab. +# +# I apologize by advance for any mistake or omission. +# +# The format of that file is the following: +# +# [Name of the author] ([Country]) <[mail address]> +# [Description in Gambas markup syntax] +# ... +# +# [Name of another author] ({Country]) <[mail address]> +# [Description in Gambas markup syntax] +# ... +# +# Void lines and lines beginning with '#' are ignored. +# + +Fabien Bodard (France) + IDE file/project/picture selector and mascot redesign. + The reporting components. + The 'gb.chart' component. + The 'gb.map' component. + The 'gb.scanner' component. + +Brandon Bergren (USA) + Porting Gambas on Cygwin. + +Tobias Boege (Germany) + The 'gb.data' component. + The 'gb.inotify' component. + The 'gb.ncurses' component. + The 'gb.openssl' component. + The 'gb.test' component (co-author). + Sometimes German translation. + +Andrea Bortolan (Italy) + The ODBC database driver. + +Bruce Bruen (Australia) + IDE Packager wizard enhancements. + +David Villalobos Cambronero (Costa Rica) + The 'gb.mysql' MySQL specific component. + Spanish translation. + +Daniel Campos (Spain) + The networking component + The compression component + The old XML component + The GTK+ component. + The now deprecated VideoForLinux component + The PDF component. + Spanish translation. + +Laurent Carlier (France) + The SDL component. + The OpenGL component. + ArchLinux support. + +Paul Gardner-Stephen (Australia) + Porting Gambas on Solaris. + +Bastian Germann (Germany) + Cygwin package. + Debian package. + pkgsrc package. + Porting on NetBSD and OpenBSD. + Portability fixes for Cygwin. + +Nigel Gerrard (United Kingdom) + The [MySQL database driver](http://mysql.com) + The now deprecated QT extended component. + The old SQLite database driver. + +Rob Kudla (USA) + The old Gambas Wiki hosting. + Mandriva RPM packages maintainer. + The 'gb.pcre' component. + +Sebastian Kulesz + Spanish translation. + Gambas Debian/Ubuntu packaging. + The 'gb.logging' component. + The 'gb.memcached' component. + The 'gb.net.pop3' component. + +Jussi Lahtinen + Gambas self-test program. + +Emil Lenngren (Sweden) + The deprecated old Just-In-Time compiler. + +Alexey Loginov (Russia) + Russian translation. + Mageia RPM packages maintainer. + +Marcelo López (Argentina) + ODBC driver enhancements. + +Benoît Minisini (France) + French translation. + Main developer. + Benevolent dictator. + +Randall Morgan + The 'gb.gsl' GNU Scientific Library component. + +Ronald Onstenk (Netherlands) + The find list in the 1.0 Development Environnement + +Carlos F. A. Paniago (Brazil) + Porting Gambas on FreeBSD. + +Adrien Prokopowicz (France) + The rewritten 'gb.xml' component. + The 'gb.xml.html' component. + +José L. Redrejo Rodríguez (Spain) + Let Gambas compile on all Debian architectures. + Allowed the Gambas IDE to make Debian packages. + Debian and Linex package maintainer. + Spanish translation. + +Robert Rowe (USA) + Development environment enhancements. + +Philippe Séraphin (France) + IDE Packager wizard enhancements. + +Bruce Steers (UK) + Shell highlighting. + TerminalView window commands support. + +Christof Thalhofer (Germany) + Unit test framework. + Gambas self-test program. + Mailing-list manager. + +Brian Grindley (USA) + Scripter enhancements. + +# +# List of people who are just doing example programs +# + +Jairo Alonso Badillo Bedoya (Columnia) + Concent game example. + +Gareth Bult (United Kingdom) + WebCam video example. + +Iman Karim (Germany) + Gravity example. + GameOfLife example. + +Timothy Marshal-Nichols (United Kingdom) + PictureDatabase example. + Printing example. + +Pablo Mileti (Argentina) + GNUBoxWorld and Puzzle1To8 examples. + +# +# List of people who are just doing translations +# + +Ahmad Kamal + Arabic translation. + +Daif Al-Otaibi + Arabic translation. + +Dimitri Bellini (Italy) + Italian translation. + +Vincenzo Virgilio (Italy) + Italian translation. + +Maurizio Pozzobon (Italy) + Italian translation + +Jordi Sayol (Andorra) + Catalan translation + +Kazutaka Harada (Japan) + Japanese translation + +Yizhou He + Simplified Chinese translation. + +Knut Berg + Norwegian translation. + +Chunchi Lin + Traditional Chinese translation. + +Wojciech Saltarski (Poland) + Polish translation. + +Radoslav Dejanovic (Croatia) + Croatian translation. + +Luis Minero (Portugal) + Portuguese translation. + +Iuri Matias (Portugal) + Portuguese translation. + +Peter Cernoch (Czech Republic) + Czech translation. + +Nelson Ferraz + Brazilian Portuguese translation. + +Fermyno Gutierrez + Brazilian Portuguese translation. + +Ronald Onstenk (Netherlands) + Dutch translation. + +Fabrice Mous (Netherlands) + Dutch translation. + +Sergey Irupin (Russia) + Russian translation. + +Nima Mohammadi (Iran) + Farsi translation. + +Miha Ambroz + Slovenian translation. + +David Cendal Lago + Galician translation. + +Peter Landgren + Swedish translation. + +Marco Bauer (Germany) + German translation. + +Klaus-Peter Richter (Germany) + German translation. + +Fatih Asici (Turkey) + Turkish translation. + +Balázs Bárány + Hungarian translation. + +Kevin Donnelly + Welsh translation. + +Sahatma Petrus Dolok Marupa Siagian (Indonesia) + Indonesian translation. + +Rizky Tahara Shita + Indonesian translation + +Stefano Palmeri (Italy) + Italian translation. + +Alexander Kazancev (Russia) + Russian translation. + +Peter Mathijssen + Dutch translation. + +Liang Wei (China) + Simplified Chinese translation. + +Alexandros Prekates (Greece) + Greek translation. + +Stefan Lang (Germany) + German translation. + +Radek Fryšták (Czech Republic) + Czech translation. + +Mathias Ebermann (Germany) + German translation. + +Florin Iacob (Romania) + Romanian translation. + +Josef Kubíček (Czech Republic) + Czech translation. + +Regimantas Baublys (Lithuania) + Lithuanian translation. + +Edison Henrique Andreassy (Brazil) + Brazilian Portuguese translation. + +Paul Wheeler (USA) + English Grammar Check & Clarifications to Wiki entries. + +Willy Raets (Netherlands) + Dutch translation. + +Gianluigi Gradaschi + Italian translation. + + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..74bf15c7 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,149 @@ +# How To Contribute + +This guide provides a step-by-step tutorial on how to contribute to the Gambas source code and translations. + +It will cover the sources' organization, some contributing guidelines and how to use Git and GitLab in order to submit your contribution. + +## Using Git and GitLab + +The Gambas source code is managed by a Git repository, hosted on [GitLab.com](https://gitlab.com/gambas/gambas). + +To handle new contributions, we use the [Project forking workflow](https://docs.gitlab.com/ce/workflow/forking_workflow.html) : +since contributors do not have the permission to write to the Gambas source code directly, you will have to create a separate repository containing your changes, and then create a merge request asking the Gambas developers to merge your changes into the main repository. + +While this might sound complex to new contributors, this document is made to guide through this process, step by step. + +If you are having trouble with the steps mentioned here, or if you have any question regarding a contribution, you can [ask on the mailing-list](http://gambaswiki.org/wiki/doc/forum). + +### Creating a GitLab account + +First, you will need a [GitLab account](https://gitlab.com/users/sign_in) in order to submit any changes. + +We also recommend you [use SSH to work with Git repositories](https://docs.gitlab.com/ce/ssh/README.html), instead of HTTPS. +Not only you won't have to enter your GitLab username and password every time you want to interact with the repository, but it is also more secure as your password is never sent through the network. + +You can also [use GPG to sign your commits](https://docs.gitlab.com/ee/user/project/gpg_signed_commits/index.html), although it is not required. + +### Forking the Gambas Repository + +Now that your GitLab account is set up, we can now [fork the Gambas repository](https://docs.gitlab.com/ce/gitlab-basics/fork-project.html). +This will create a copy of the Gambas repository, but it will belong to you, so you can make any change you want. + +To do this, just go over to the [Gambas project page](https://gitlab.com/gambas/gambas), and click the "Fork" button. + +You will then be asked where to put the forked repository. Once complete, the new repository will appear under your account. + +You can then clone the repository to your local machine, using the following command (replace `` with your GitLab username): + + git clone git@gitlab.com:/gambas.git + +### Making changes to your repository + +Once the cloning is complete, you can make changes to your local copy, which will then have to be commited and pushed. + +First, you can check which files you changed with the `git status`. It's always good to check before commiting ! +You can also view the full diff with the `git diff` command. + +Once everything is done, you will have to select which files you want to commit next using the [git add](https://git-scm.com/docs/git-add) command. + +You can either select specific files or directories using `git add file1.c file2.c main/gbx`, or just select everything using `git add -A`. + +You can then make your commit using the `git commit` command. +This command will open an editor to let you write your commit message. + +For some guidelines on how to write commit messages, see the Writing commit messages section. + +This command will start the default editor (usually `vi`), but you can change this by setting the `EDITOR` environment variable to the command starting your favorite editor. + +Now that the commit is done, you can push it to your GitLab repository using the `git push` command. + +### Creating the merge request + +With your changes now pushed to the GitLab repository, the final step is to create a [Merge Request](https://docs.gitlab.com/ee/user/project/merge_requests/index.html), +kindly asking the Gambas developers to merge your changes to the main Gambas repository. + +Since this process is entirerly made through GitLab, [use the following instructions to create your merge requests](https://docs.gitlab.com/ee/gitlab-basics/add-merge-request.html). + +Its is probable that your changes won't be accepted right away, and you will be asked by the Gambas maintainers to make some changes. + +In this case, you can make your changes, commit them and then push them. +The Merge request on GitLab will be automatically updated, you won't have to recreate it. + +### Keeping your repository up to date + +During the time you make changes to your version of the Gambas source code, or while your request is being reviewed, it is likely that the Gambas repository will receive some updates. + +Since a forked repository is basically a clone, the official version and your version are completely separate, it will not receive newer commits automatically. + +However, you can setup your local repository to connect to both repositories, so you can pull changes from the official Gambas repository, merge them with your changes locally, and then push them to your forked repository. + +First, we will setup your local Git repository by adding the original Gambas repository as a second remote : + + git remote add upstream https://gitlab.com/gambas/gambas.git + +We now have added a new remote named `upstream` to the local repository, pointing to the original Gambas repository. +(You can list all the remotes with the `git remote -v` command.) + +This means Git can now pull changes from the original Gambas repository using the following command : + + git pull upstream master + +This command will take the changes from the `master` branch of the `upstream` remote. + +If you made commits to your version of the repository, it will merge them with the new changes, creating a new merge commit. + +When the merge is complete, you can simply use `git push` to push all these changes to your version of the repository. If you have any Merge Request pending, they will get updated automatically. + + +## Writing commit messages + +In order to automatically generate changelogs for each release, commits in the Gambas repository have to follow a very specific format. + +Here is an example : + + This commit contains things, adds stuff and has lots of fluff. + (but this won't go in the changelog) + + [GB.QT4] + * NEW: Added things to the component. + * BUG: Fixed a bug in the Foo function. + * NEW: Added this very long modification... + ...and it takes more than one Line To Write it. + + This won't go into the changelog either. + + [COMPILER] + * BUG: What an awful bug! + * OPT: Make things go faster. + + [GB.GTK3] + * NEW: The component is now complete! + +As per the Git commit message convention, the first line of each commit is a short description of what it contains. +This line does not end up in the changelog, but it appears in git logs, as well as in the GitLab interface. + +Then, the commit message consists of the following parts : + +* A slot, between square brackets (e.g. `[GB.QT4]`) +* One or more modifications, each prefixed with a tag, which is either `* NEW: `, `* BUG: `, or `* OPT: `, with a space at the end. + +The slot's name is the one of the component modified (in uppercase), or one of these if the changes do not affect a component : +* `[INTERPRETER]` for changes in the interpreter (gbx3). +* `[COMPILER]` for changes in the compiler (gbc3). +* `[ARCHIVER]` for changes in the archiver (gba3). +* `[INFORMER]` for changes in the informer (gbi3). +* `[DEVELOPMENT ENVIRONMENT]` for changes in the IDE (gambas3). +* `[CONFIGURATION]` for changes in the automake/autoconf configuration process +* `[WIKI CGI SCRIPT]` for changes in the wiki CGI script. +* `[WEB SITE MAKER]` for changes in the Gambas web site generator. +* `[EXAMPLES]` for changes in any example. + +The tag's name is one of the following: + +* `NEW` is for new features or translations, updates or other improvements; +* `BUG` is for bug fixes and other corrections +* `OPT` is for optimizations + +Things without an impact for the user (such as refactorings or code cleanups) should not end up in the Changelog. + +All lines without a tag will not appear in the changelog, but if you want a modification to span across multiple lines, you will have to prefix it with two spaces. diff --git a/COPYING b/COPYING new file mode 100644 index 00000000..d159169d --- /dev/null +++ b/COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 00000000..e69de29b diff --git a/INSTALL b/INSTALL new file mode 100644 index 00000000..2060dfa5 --- /dev/null +++ b/INSTALL @@ -0,0 +1 @@ +Visit https://gambaswiki.org/wiki/install diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 00000000..f0d2d3a7 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,62 @@ +SUBDIRS = \ + main \ + @bzlib2_dir@ \ + @zlib_dir@ \ + @zstd_dir@ \ + @mysql_dir@ \ + @odbc_dir@ \ + @postgresql_dir@ \ + @sqlite2_dir@ \ + @sqlite3_dir@ \ + @net_dir@ \ + @curl_dir@ \ + @mime_dir@ \ + @pcre_dir@ \ + @sdl_dir@ \ + @sdlsound_dir@ \ + @sdl2_dir@ \ + @libxml_dir@ \ + @xml_dir@ \ + @v4l_dir@ \ + @crypt_dir@ \ + @qt4_dir@ \ + @qt5_dir@ \ + @gtk_dir@ \ + @gtk3_dir@ \ + @opengl_dir@ \ + @x11_dir@ \ + @keyring_dir@ \ + @pdf_dir@ \ + @poppler_dir@ \ + @cairo_dir@ \ + @imageio_dir@ \ + @imageimlib_dir@ \ + @dbus_dir@ \ + @gsl_dir@ \ + @gmp_dir@ \ + @ncurses_dir@ \ + @media_dir@ \ + @httpd_dir@ \ + @openssl_dir@ \ + @openal_dir@ \ + comp \ + @htmlview_dir@ \ + app \ + . + +EXTRA_DIST = component.am README README.*[^~] TODO TEMPLATE reconf reconf-all VERSION + +am__tar = ${AMTAR} cof - "$$tardir" + +install-exec-local: + @if test -s $(srcdir)/warnings.log; then \ + echo ; \ + echo "||" ; \ + cat $(srcdir)/warnings.log ; \ + echo "||" ; \ + echo ; \ + fi + @rm -f $(srcdir)/warnings.log + +dist-hook: + @(cd $(distdir); rm -rf `find . -name ".gambas" -o -name ".lock" -o -name ".xvpics" -o -name "*~" -o -name "*.out" -o -name "*.pot" -o -name "*.gambas" -o -name "core.*" -o -name "vgcore.*" -o -name ".kdbg*" -o -name ".svn"`;) diff --git a/NEWS b/NEWS new file mode 100644 index 00000000..e69de29b diff --git a/README b/README new file mode 100644 index 00000000..c16917a4 --- /dev/null +++ b/README @@ -0,0 +1,54 @@ +WELCOME TO GAMBAS! + +GAMBAS is a free implementation of a graphical development environment +based on a BASIC interpreter and a full development platform. It is very +inspired by Visual Basic and Java. + +Go to http://gambas.sourceforge.net to get more information: how to compile +and install it, where to find binary packages, how to report a bug... + +Go to http://gambaswiki.org for language documentation. + +The following pieces of code were borrowed and adapted: + +- The natural string comparison algorithme was adapted from the algorithm + made by Martin Pol. See http://sourcefrog.net/projects/natsort/ for more + details. + +- The hash table implementation was adapted from the glib one. + +- The HTML entities parsing in 'gb.gtk' comes from KHTML sources. + +- The 'gb.image.effect' sources are adapted from KDE 3 image effect routines. + +- The 'gb.clipper' library embeds the Clipper library. See + http://www.angusj.com/delphi/clipper.php for mode details. + +- The function that computes the easter day of a specific year uses an + algorithm made by Aloysius Lilius And Christophorus Clavius. + +- The blurring algoritm is based on the 'StackBlur' algorithm made by Mario + Klingemann. See http://incubator.quasimondo.com/processing/fast_blur_deluxe.php + for more details. + +- The javascript automatic completion is done with 'autoComplete' from Simon + Steinberger / Pixabay, and is published under the MIT license. + See https://github.com/Pixabay/JavaScript-autoComplete for more details. + +- The 'gb.form.htmlview' component embeds the 'litehtml' library from Yuri + Kobets. See http://www.litehtml.com for more details. + +- The 'gb.hash' component embeds the code of the hashing routines of BusyBox made + by Denys Vlasenko and Bernhard Reutner-Fischer. See https://www.busybox.net/ + for more details. + +- The stock icons flags were generated from SVG files taken from + https://github.com/smucode/react-world-flags. They are published under the MIT + license. + +If I forget some borrowed code in the list above, just tell me. + +Enjoy Gambas! + +-- +Benoît diff --git a/README.commit b/README.commit new file mode 100644 index 00000000..3e4f88fe --- /dev/null +++ b/README.commit @@ -0,0 +1,60 @@ +STANDARD FORMAT FOR COMMIT MESSAGES +----------------------------------- + +This message is for all developers that will commit something +into the git repository. + +I want to have a standard way to write commit messages, so that ChangeLog can +be almost automatically generated. + +The format is the following: + +- One line that will be a summary of the changes displayed next to the commit + in GitLab. + +- A ChangeLog slot, between '[' & ']' + + Slots are the name of the component, in uppercase if possible, or some other + slots like [INTERPRETER], [COMPILER]... + +- A ChangeLog modification: a '*', a space, the word 'BUG','NEW' or 'OPT', a + colon, a space, and the text. + + 'BUG' is for a fix, 'NEW' for a new feature, and 'OPT' for an optimization. + + If a changelog modification is more than one line, you must use a two space + indent. + +- Other ChangeLog modifications for the same slot. + +- Other slots. + +- Void lines are ignored. + +- All other lines won't go into the changelog. + +For example: + +--8<----------- +I did this thing, and this will be the summary displayed in GitLab. + +[GB.QT5] +* BUG: I fixed this bug. +* NEW: I made this very long modification.... +  and it takes more than one line to write it. + +This won't go into the changelog too. + +[GB.SDL2] +* BUG: What an awful bug! + +[GB.GTK3] +* NEW: I finally finished the component :-) + +--8<----------- + +You should really try hard to follow this scheme, otherwise generating the +release notes becomes truly a pain for me. Be nice! + +-- +Benoît. diff --git a/README.md b/README.md new file mode 100644 index 00000000..3cf279ed --- /dev/null +++ b/README.md @@ -0,0 +1,60 @@ + + + +# Gambas Almost Means BASIC + +WELCOME TO GAMBAS! + +GAMBAS is a free implementation of a graphical development environment +based on a BASIC interpreter and a full development platform. It is very +inspired by Visual Basic and Java. + +Go to http://gambas.sourceforge.net to get more information: how to compile +and install it, where to find binary packages, how to report a bug... + +Go to http://gambaswiki.org for language documentation. + +The following pieces of code were borrowed and adapted: + +- The natural string comparison algorithme was adapted from the algorithm + made by Martin Pol. See http://sourcefrog.net/projects/natsort/ for more + details. + +- The hash table implementation was adapted from the glib one. + +- The HTML entities parsing in 'gb.gtk' comes from KHTML sources. + +- The 'gb.image.effect' sources are adapted from KDE 3 image effect routines. + +- The 'gb.clipper' library embeds the Clipper library. See + http://www.angusj.com/delphi/clipper.php for mode details. + +- The function that computes the easter day of a specific year uses an + algorithm made by Aloysius Lilius And Christophorus Clavius. + +- The blurring algoritm is based on the 'StackBlur' algorithm made by Mario + Klingemann. See http://incubator.quasimondo.com/processing/fast_blur_deluxe.php + for more details. + +- The javascript automatic completion is done with 'autoComplete' from Simon + Steinberger / Pixabay, and is published under the MIT license. + See https://github.com/Pixabay/JavaScript-autoComplete for more details. + +- The 'gb.form.htmlview' component embeds the 'litehtml' library from Yuri + Kobets. See http://www.litehtml.com for more details. + +- The 'gb.hash' component embeds the code of the hashing routines of BusyBox made + by Denys Vlasenko and Bernhard Reutner-Fischer. See https://www.busybox.net/ + for more details. + +- The stock icons flags were generated from SVG files taken from + https://github.com/smucode/react-world-flags. They are published under the MIT + license. + +If I forget some borrowed code in the list above, just tell me. + +Enjoy Gambas! + +-- +Benoît diff --git a/TEMPLATE/README b/TEMPLATE/README new file mode 100644 index 00000000..aa13e0fb --- /dev/null +++ b/TEMPLATE/README @@ -0,0 +1,34 @@ +COMPONENT DIRECTORY TEMPLATE + +Here you will find the 'make-component' script, that creates a initial +component source directory from a configuration file located in the +'conf' directory. + +BE CAREFUL! This template only works inside the complete gambas source +package structure. + +For example, let suppose you want to make a component named 'gb.test', +based on the well known 'test' library: + +1) Copy the file 'TEMPLATE.conf' in the 'conf' directory, and rename it + as 'gb.test.conf' + +2) Open a terminal, with the current directory being the one where + the 'make-component' script is located. This is important, because + otherwise the script won't work. + +3) Edit the file 'gb.test.conf', and replaces the value of each + '#define' directive by the appropriate ones. Each directive has + a commentary that explains its role. + +4) Once done, run './make-component gb.test'. + +5) If everything is ok, you will find a new component directory in the + parent directory named gb.test, with all needed files and symbolic + links ready to be build: configure.ac, Makefile.am, ... + +If something is weird, tell me on the gambas mailing-list! + +Benoît. + + diff --git a/TEMPLATE/TEMPLATE.c b/TEMPLATE/TEMPLATE.c new file mode 100644 index 00000000..99c76741 --- /dev/null +++ b/TEMPLATE/TEMPLATE.c @@ -0,0 +1,28 @@ +$/$*************************************************************************** +## + __SOURCE_NAME##.c +## + __COMPONENT component +## + __COPYRIGHT __AUTHOR __EMAIL +## + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 1, or (at your option) + any later version. +## + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +## + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. +## +***************************************************************************/ +## +$#$define _##_##__SOURCE_UNAME##_C +## +$#$include $:$##__SOURCE_NAME##.h$:$ diff --git a/TEMPLATE/TEMPLATE.conf b/TEMPLATE/TEMPLATE.conf new file mode 100644 index 00000000..92d4351c --- /dev/null +++ b/TEMPLATE/TEMPLATE.conf @@ -0,0 +1,79 @@ +/* Copyrights */ +#define __COPYRIGHT (c) 2012 +#define __AUTHOR Joe Smith +#define __EMAIL + +/* Name of the component */ +#define __COMPONENT gb.test + +/* Name of the component with points replaced by dashes */ +#define __COMPONENT_DASH gb-test + +/* Name of the component with points replaced by underscore */ +#define __COMPONENT_UNDERSCORE gb_test + +/* Short name of the component */ +#define __NAME test + +/* Short name of the component in uppercase */ +#define __UNAME TEST + +/* Description of the component */ +#define __DESCRIPTION Testing component + +/* If the component detection uses pkg-config */ +#define __USE_PKGCONFIG 0 + +#if __USE_PKGCONFIG + + /* Name of the package for pkg-config */ + #define __PKGCONFIG_NAME test-1.0 + + /* Minimum version needed */ + #define __PKGCONFIG_VERSION 1.2.8 + +#else /* __USE_PKGCONFIG */ + + /* If your component uses C */ + #define __USE_C 1 + + /* If your component uses C++ */ + #define __USE_CPLUSPLUS 1 + + /* If your component uses multi-threading */ + #define __USE_THREAD 1 + + /* If your component uses X-Window */ + #define __USE_XWINDOW 1 + + /* Includes to search for */ + #define __SEARCH_INCLUDE test.h test2.h + + /* Includes directories search path */ + #define __SEARCH_INCLUDE_PATH /usr/local/lib /usr/local /usr/lib /usr + + /* Includes sub-directories search */ + #define __SEARCH_INCLUDE_DIR test/include include test*/include test/*/include + + /* Libraries to search for */ + #define __SEARCH_LIBRARY libtest.$SHLIBEXT libjpeg.$SHLIBEXT libpng.$SHLIBEXT + + /* Libraries directories search path */ + #define __SEARCH_LIBRARY_PATH /usr/local /usr + + /* Libraries sub-directories search path */ + #define __SEARCH_LIBRARY_DIR lib + + /* Libraries to link with */ + #define __LIBRARY -ljpeg -lpng -ltest + + /* Includes to link with */ + #define __INCLUDE -ljpeg -lpng -ltest + +#endif /* __USE_PKGCONFIG */ + +/* Source file list */ +#define __SOURCES main.c main.h test.c test.h + +/* Main C/C++ source basename in uppercase */ +#define __MAIN_UNAME MAIN diff --git a/TEMPLATE/TEMPLATE.cpp b/TEMPLATE/TEMPLATE.cpp new file mode 100644 index 00000000..828c73ad --- /dev/null +++ b/TEMPLATE/TEMPLATE.cpp @@ -0,0 +1,28 @@ +$/$*************************************************************************** +## + __SOURCE_NAME##.c +## + __COMPONENT component +## + __COPYRIGHT __AUTHOR __EMAIL +## + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 1, or (at your option) + any later version. +## + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +## + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. +## +***************************************************************************/ +## +$#$define _##_##__SOURCE_UNAME##_C +## +$#$include $:$##__SOURCE_NAME##.h##$:$ diff --git a/TEMPLATE/TEMPLATE.h b/TEMPLATE/TEMPLATE.h new file mode 100644 index 00000000..894fd805 --- /dev/null +++ b/TEMPLATE/TEMPLATE.h @@ -0,0 +1,35 @@ +$/$*************************************************************************** +## + __SOURCE_NAME##.h +## + __COMPONENT component +## + __COPYRIGHT __AUTHOR __EMAIL +## + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 1, or (at your option) + any later version. +## + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +## + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. +## +***************************************************************************/ +## +$#$ifndef _##_##__SOURCE_UNAME##_H +$#$define _##_##__SOURCE_UNAME##_H +## +$#$include "gambas.h" +## +$#$ifndef _##_##__MAIN_UNAME##_C +extern GB_INTERFACE GB; +$#$endif +## +$#$endif $/$* _##_##__SOURCE_UNAME##_H */ diff --git a/TEMPLATE/conf/gb.cairo.conf b/TEMPLATE/conf/gb.cairo.conf new file mode 100644 index 00000000..33c6c173 --- /dev/null +++ b/TEMPLATE/conf/gb.cairo.conf @@ -0,0 +1,76 @@ +/* Copyrights */ +#define __COPYRIGHT (c) 2009 +#define __AUTHOR Benoît Minisini +#define __EMAIL + +/* Name of the component */ +#define __COMPONENT gb.cairo + +/* Name of the component with points replaced by underscore */ +#define __COMPONENT_UNDERSCORE gb_cairo + +/* Short name of the component */ +#define __NAME cairo + +/* Short name of the component in uppercase */ +#define __UNAME CAIRO + +/* Description of the component */ +#define __DESCRIPTION Cairo library + +/* If the component detection uses pkg-config */ +#define __USE_PKGCONFIG 1 + +#if __USE_PKGCONFIG + + /* Name of the package for pkg-config */ + #define __PKGCONFIG_NAME cairo + + /* Minimum version needed */ + #define __PKGCONFIG_VERSION 1.8.0 + +#else /* __USE_PKGCONFIG */ + + /* If your component uses C */ + #define __USE_C 1 + + /* If your component uses C++ */ + #define __USE_CPLUSPLUS 1 + + /* If your component uses multi-threading */ + #define __USE_THREAD 1 + + /* If your component uses X-Window */ + #define __USE_XWINDOW 1 + + /* Includes to search for */ + #define __SEARCH_INCLUDE test.h test2.h + + /* Includes directories search path */ + #define __SEARCH_INCLUDE_PATH /usr/local/lib /usr/local /usr/lib /usr + + /* Includes sub-directories search */ + #define __SEARCH_INCLUDE_DIR test/include include test*/include test/*/include + + /* Libraries to search for */ + #define __SEARCH_LIBRARY libtest.$SHLIBEXT libjpeg.$SHLIBEXT libpng.$SHLIBEXT + + /* Libraries directories search path */ + #define __SEARCH_LIBRARY_PATH /usr/local /usr + + /* Libraries sub-directories search path */ + #define __SEARCH_LIBRARY_DIR lib + + /* Libraries to link with */ + #define __LIBRARY -ljpeg -lpng -ltest + + /* Includes to link with */ + #define __INCLUDE -ljpeg -lpng -ltest + +#endif /* __USE_PKGCONFIG */ + +/* Source file list */ +#define __SOURCES main.c main.h + +/* Main C/C++ source basename in uppercase */ +#define __MAIN_UNAME MAIN diff --git a/TEMPLATE/conf/gb.dbus.conf b/TEMPLATE/conf/gb.dbus.conf new file mode 100644 index 00000000..828e9f1e --- /dev/null +++ b/TEMPLATE/conf/gb.dbus.conf @@ -0,0 +1,76 @@ +/* Copyrights */ +#define __COPYRIGHT (c) 2009 +#define __AUTHOR Benoît Minisini +#define __EMAIL + +/* Name of the component */ +#define __COMPONENT gb.dbus + +/* Name of the component with points replaced by underscore */ +#define __COMPONENT_UNDERSCORE gb_dbus + +/* Short name of the component */ +#define __NAME dbus + +/* Short name of the component in uppercase */ +#define __UNAME DBUS + +/* Description of the component */ +#define __DESCRIPTION DBUS management + +/* If the component detection uses pkg-config */ +#define __USE_PKGCONFIG 1 + +#if __USE_PKGCONFIG + +/* Name of the package for pkg-config */ +#define __PKGCONFIG_NAME dbus-1 + +/* Minimum version needed */ +//#define __PKGCONFIG_VERSION 2.14.3 + +#else /* __USE_PKGCONFIG */ + +/* If your component uses C */ +#define __USE_C 1 + +/* If your component uses C++ */ +#define __USE_CPLUSPLUS 0 + +/* If your component uses multi-threading */ +#define __USE_THREAD 0 + +/* If your component uses X-Window */ +#define __USE_XWINDOW 0 + +/* Includes to search for */ +#define __SEARCH_INCLUDE + +/* Includes directories search path */ +#define __SEARCH_INCLUDE_PATH + +/* Includes sub-directories search */ +#define __SEARCH_INCLUDE_DIR + +/* Libraries to search for */ +#define __SEARCH_LIBRARY + +/* Libraries directories search path */ +#define __SEARCH_LIBRARY_PATH + +/* Libraries sub-directories search path */ +#define __SEARCH_LIBRARY_DIR + +/* Libraries to link with */ +#define __LIBRARY + +/* Includes to look for */ +#define __INCLUDE + +#endif /* __USE_PKGCONFIG */ + +/* Source file list */ +#define __SOURCES main.c main.h cdbus.c cdbus.h + +/* Main C/C++ source basename in uppercase */ +#define __MAIN_UNAME MAIN diff --git a/TEMPLATE/conf/gb.desktop.conf b/TEMPLATE/conf/gb.desktop.conf new file mode 100644 index 00000000..d76ed3d9 --- /dev/null +++ b/TEMPLATE/conf/gb.desktop.conf @@ -0,0 +1,76 @@ +/* Copyrights */ +#define __COPYRIGHT (c) 2007 +#define __AUTHOR Benoît Minisini +#define __EMAIL + +/* Name of the component */ +#define __COMPONENT gb.desktop + +/* Name of the component with points replaced by underscore */ +#define __COMPONENT_UNDERSCORE gb_desktop + +/* Short name of the component */ +#define __NAME desktop + +/* Short name of the component in uppercase */ +#define __UNAME DESKTOP + +/* Description of the component */ +#define __DESCRIPTION Desktop-neutral routines + +/* If the component detection uses pkg-config */ +#define __USE_PKGCONFIG 0 + +#if __USE_PKGCONFIG + +/* Name of the package for pkg-config */ +#define __PKGCONFIG_NAME glib-2.0 + +/* Minimum version needed */ +#define __PKGCONFIG_VERSION + +#else /* __USE_PKGCONFIG */ + +/* If your component uses C */ +#define __USE_C 1 + +/* If your component uses C++ */ +#define __USE_CPLUSPLUS 0 + +/* If your component uses multi-threading */ +#define __USE_THREAD 1 + +/* If your component uses X-Window */ +#define __USE_XWINDOW 1 + +/* Includes to search for */ +#define __SEARCH_INCLUDE + +/* Includes directories search path */ +#define __SEARCH_INCLUDE_PATH + +/* Includes sub-directories search */ +#define __SEARCH_INCLUDE_DIR + +/* Libraries to search for */ +#define __SEARCH_LIBRARY + +/* Libraries directories search path */ +#define __SEARCH_LIBRARY_PATH + +/* Libraries sub-directories search path */ +#define __SEARCH_LIBRARY_DIR + +/* Libraries to link with */ +#define __LIBRARY + +/* Includes to look for */ +#define __INCLUDE + +#endif /* __USE_PKGCONFIG */ + +/* Source file list */ +#define __SOURCES main.c main.h + +/* Main C/C++ source basename in uppercase */ +#define __MAIN_UNAME MAIN diff --git a/TEMPLATE/conf/gb.form.htmlview.conf b/TEMPLATE/conf/gb.form.htmlview.conf new file mode 100644 index 00000000..7271353f --- /dev/null +++ b/TEMPLATE/conf/gb.form.htmlview.conf @@ -0,0 +1,80 @@ +/* Copyrights */ +#define __COPYRIGHT (c) +#define __AUTHOR Benoît Minisini +#define __EMAIL + +/* Name of the component */ +#define __COMPONENT gb.form.htmlview + +/* Name of the component with points replaced by dashes */ +#define __COMPONENT_DASH gb-form-htmlview + + +/* Name of the component with points replaced by underscore */ +#define __COMPONENT_UNDERSCORE gb_form_htmlview + +/* Short name of the component */ +#define __NAME htmlview + +/* Short name of the component in uppercase */ +#define __UNAME HTMLVIEW + +/* Description of the component */ +#define __DESCRIPTION HTML viewer based on the litehtml library + +/* If the component detection uses pkg-config */ +#define __USE_PKGCONFIG 0 + +#if __USE_PKGCONFIG + +/* Name of the package for pkg-config */ +#define __PKGCONFIG_NAME test-1.0 + +/* Minimum version needed */ +#define __PKGCONFIG_VERSION 1.2.8 + +#else /* __USE_PKGCONFIG */ + +/* If your component uses C */ +#define __USE_C 0 + +/* If your component uses C++ */ +#define __USE_CPLUSPLUS 1 + +/* If your component uses multi-threading */ +#define __USE_THREAD 0 + +/* If your component uses X-Window */ +#define __USE_XWINDOW 0 + +/* Includes to search for */ +#define __SEARCH_INCLUDE + +/* Includes directories search path */ +#define __SEARCH_INCLUDE_PATH + +/* Includes sub-directories search */ +#define __SEARCH_INCLUDE_DIR + +/* Libraries to search for */ +#define __SEARCH_LIBRARY + +/* Libraries directories search path */ +#define __SEARCH_LIBRARY_PATH + +/* Libraries sub-directories search path */ +#define __SEARCH_LIBRARY_DIR + +/* Libraries to link with */ +#define __LIBRARY + +/* Includes to look for */ +#define __INCLUDE + +#endif /* __USE_PKGCONFIG */ + +/* Source file list */ +#define __SOURCES main.cpp main.h + +/* Main C/C++ source basename in uppercase */ +#define __MAIN_UNAME MAIN diff --git a/TEMPLATE/conf/gb.gmp.conf b/TEMPLATE/conf/gb.gmp.conf new file mode 100644 index 00000000..70af8182 --- /dev/null +++ b/TEMPLATE/conf/gb.gmp.conf @@ -0,0 +1,76 @@ +/* Copyrights */ +#define __COPYRIGHT (c) 2012 +#define __AUTHOR Benoît Minisini +#define __EMAIL + +/* Name of the component */ +#define __COMPONENT gb.gmp + +/* Name of the component with points replaced by underscore */ +#define __COMPONENT_UNDERSCORE gb_gmp + +/* Short name of the component */ +#define __NAME gmp + +/* Short name of the component in uppercase */ +#define __UNAME GMP + +/* Description of the component */ +#define __DESCRIPTION GNU multi-precision arithmetic library component + +/* If the component detection uses pkg-config */ +#define __USE_PKGCONFIG 0 + +#if __USE_PKGCONFIG + + /* Name of the package for pkg-config */ + #define __PKGCONFIG_NAME gsl + + /* Minimum version needed */ + #define __PKGCONFIG_VERSION + +#else /* __USE_PKGCONFIG */ + + /* If your component uses C */ + #define __USE_C 1 + + /* If your component uses C++ */ + #define __USE_CPLUSPLUS 0 + + /* If your component uses multi-threading */ + #define __USE_THREAD 0 + + /* If your component uses X-Window */ + #define __USE_XWINDOW 0 + + /* Includes to search for */ + #define __SEARCH_INCLUDE gmp.h + + /* Includes directories search path */ + #define __SEARCH_INCLUDE_PATH /usr/local /usr + + /* Includes sub-directories search */ + #define __SEARCH_INCLUDE_DIR include + + /* Libraries to search for */ + #define __SEARCH_LIBRARY libgmp.$SHLIBEXT + + /* Libraries directories search path */ + #define __SEARCH_LIBRARY_PATH /usr/local /usr + + /* Libraries sub-directories search path */ + #define __SEARCH_LIBRARY_DIR lib/* lib + + /* Libraries to link with */ + #define __LIBRARY -lgmp + + /* Includes to link with */ + #define __INCLUDE + +#endif /* __USE_PKGCONFIG */ + +/* Source file list */ +#define __SOURCES main.c main.h + +/* Main C/C++ source basename in uppercase */ +#define __MAIN_UNAME MAIN diff --git a/TEMPLATE/conf/gb.gsl.conf b/TEMPLATE/conf/gb.gsl.conf new file mode 100644 index 00000000..9dc4a603 --- /dev/null +++ b/TEMPLATE/conf/gb.gsl.conf @@ -0,0 +1,76 @@ +/* Copyrights */ +#define __COPYRIGHT (c) 2012 +#define __AUTHOR Randall Morgan +#define __EMAIL + +/* Name of the component */ +#define __COMPONENT gb.gsl + +/* Name of the component with points replaced by underscore */ +#define __COMPONENT_UNDERSCORE gb_gsl + +/* Short name of the component */ +#define __NAME gsl + +/* Short name of the component in uppercase */ +#define __UNAME GSL + +/* Description of the component */ +#define __DESCRIPTION GNU Scientific Library component + +/* If the component detection uses pkg-config */ +#define __USE_PKGCONFIG 1 + +#if __USE_PKGCONFIG + + /* Name of the package for pkg-config */ + #define __PKGCONFIG_NAME gsl + + /* Minimum version needed */ + #define __PKGCONFIG_VERSION + +#else /* __USE_PKGCONFIG */ + + /* If your component uses C */ + #define __USE_C 1 + + /* If your component uses C++ */ + #define __USE_CPLUSPLUS 1 + + /* If your component uses multi-threading */ + #define __USE_THREAD 0 + + /* If your component uses X-Window */ + #define __USE_XWINDOW 0 + + /* Includes to search for */ + #define __SEARCH_INCLUDE + + /* Includes directories search path */ + #define __SEARCH_INCLUDE_PATH /usr/local/lib /usr/local /usr/lib /usr + + /* Includes sub-directories search */ + #define __SEARCH_INCLUDE_DIR /usr/local/include gsl/include include gsl*/include gsl/*/include + + /* Libraries to search for */ + #define __SEARCH_LIBRARY libgsl.$SHLIBEXT + + /* Libraries directories search path */ + #define __SEARCH_LIBRARY_PATH /usr/local /usr + + /* Libraries sub-directories search path */ + #define __SEARCH_LIBRARY_DIR local/lib lib + + /* Libraries to link with */ + #define __LIBRARY libgsl + + /* Includes to link with */ + #define __INCLUDE libgsl + +#endif /* __USE_PKGCONFIG */ + +/* Source file list */ +#define __SOURCES main.c main.h c_gsl.c c_gsl.h + +/* Main C/C++ source basename in uppercase */ +#define __MAIN_UNAME MAIN diff --git a/TEMPLATE/conf/gb.image.io.conf b/TEMPLATE/conf/gb.image.io.conf new file mode 100644 index 00000000..a38c7cf8 --- /dev/null +++ b/TEMPLATE/conf/gb.image.io.conf @@ -0,0 +1,76 @@ +/* Copyrights */ +#define __COPYRIGHT (c) 2009 +#define __AUTHOR Benoît Minisini +#define __EMAIL + +/* Name of the component */ +#define __COMPONENT gb.image.io + +/* Name of the component with points replaced by underscore */ +#define __COMPONENT_UNDERSCORE gb_image_io + +/* Short name of the component */ +#define __NAME image_io + +/* Short name of the component in uppercase */ +#define __UNAME IMAGE_IO + +/* Description of the component */ +#define __DESCRIPTION Image loading and saving + +/* If the component detection uses pkg-config */ +#define __USE_PKGCONFIG 1 + +#if __USE_PKGCONFIG + +/* Name of the package for pkg-config */ +#define __PKGCONFIG_NAME gdk-pixbuf-2.0 + +/* Minimum version needed */ +#define __PKGCONFIG_VERSION 2.14.3 + +#else /* __USE_PKGCONFIG */ + +/* If your component uses C */ +#define __USE_C 1 + +/* If your component uses C++ */ +#define __USE_CPLUSPLUS 0 + +/* If your component uses multi-threading */ +#define __USE_THREAD 0 + +/* If your component uses X-Window */ +#define __USE_XWINDOW 0 + +/* Includes to search for */ +#define __SEARCH_INCLUDE + +/* Includes directories search path */ +#define __SEARCH_INCLUDE_PATH + +/* Includes sub-directories search */ +#define __SEARCH_INCLUDE_DIR + +/* Libraries to search for */ +#define __SEARCH_LIBRARY + +/* Libraries directories search path */ +#define __SEARCH_LIBRARY_PATH + +/* Libraries sub-directories search path */ +#define __SEARCH_LIBRARY_DIR + +/* Libraries to link with */ +#define __LIBRARY + +/* Includes to look for */ +#define __INCLUDE + +#endif /* __USE_PKGCONFIG */ + +/* Source file list */ +#define __SOURCES main.c main.h CImage.c CImage.h + +/* Main C/C++ source basename in uppercase */ +#define __MAIN_UNAME MAIN diff --git a/TEMPLATE/conf/gb.media.conf b/TEMPLATE/conf/gb.media.conf new file mode 100644 index 00000000..31b75bd0 --- /dev/null +++ b/TEMPLATE/conf/gb.media.conf @@ -0,0 +1,76 @@ +/* Copyrights */ +#define __COPYRIGHT (c) 2012 +#define __AUTHOR Benoît Minisini +#define __EMAIL + +/* Name of the component */ +#define __COMPONENT gb.media + +/* Name of the component with points replaced by underscore */ +#define __COMPONENT_UNDERSCORE gb_media + +/* Short name of the component */ +#define __NAME media + +/* Short name of the component in uppercase */ +#define __UNAME MEDIA + +/* Description of the component */ +#define __DESCRIPTION GStreamer component + +/* If the component detection uses pkg-config */ +#define __USE_PKGCONFIG 1 + +#if __USE_PKGCONFIG + +/* Name of the package for pkg-config */ +#define __PKGCONFIG_NAME gstreamer-0.10 + +/* Minimum version needed */ +//#define __PKGCONFIG_VERSION 2.14.3 + +#else /* __USE_PKGCONFIG */ + +/* If your component uses C */ +#define __USE_C 1 + +/* If your component uses C++ */ +#define __USE_CPLUSPLUS 0 + +/* If your component uses multi-threading */ +#define __USE_THREAD 0 + +/* If your component uses X-Window */ +#define __USE_XWINDOW 0 + +/* Includes to search for */ +#define __SEARCH_INCLUDE + +/* Includes directories search path */ +#define __SEARCH_INCLUDE_PATH + +/* Includes sub-directories search */ +#define __SEARCH_INCLUDE_DIR + +/* Libraries to search for */ +#define __SEARCH_LIBRARY + +/* Libraries directories search path */ +#define __SEARCH_LIBRARY_PATH + +/* Libraries sub-directories search path */ +#define __SEARCH_LIBRARY_DIR + +/* Libraries to link with */ +#define __LIBRARY + +/* Includes to look for */ +#define __INCLUDE + +#endif /* __USE_PKGCONFIG */ + +/* Source file list */ +#define __SOURCES main.c main.h + +/* Main C/C++ source basename in uppercase */ +#define __MAIN_UNAME MAIN diff --git a/TEMPLATE/conf/gb.mime.conf b/TEMPLATE/conf/gb.mime.conf new file mode 100644 index 00000000..2866478c --- /dev/null +++ b/TEMPLATE/conf/gb.mime.conf @@ -0,0 +1,76 @@ +/* Copyrights */ +#define __COPYRIGHT (c) 2012 +#define __AUTHOR Benoît Minisini +#define __EMAIL + +/* Name of the component */ +#define __COMPONENT gb.mime + +/* Name of the component with points replaced by underscore */ +#define __COMPONENT_UNDERSCORE gb_mime + +/* Short name of the component */ +#define __NAME mime + +/* Short name of the component in uppercase */ +#define __UNAME MIME + +/* Description of the component */ +#define __DESCRIPTION MIME message management based on gmime library + +/* If the component detection uses pkg-config */ +#define __USE_PKGCONFIG 1 + +#if __USE_PKGCONFIG + + /* Name of the package for pkg-config */ + #define __PKGCONFIG_NAME gmime-2.6 + + /* Minimum version needed */ + #define __PKGCONFIG_VERSION + +#else /* __USE_PKGCONFIG */ + + /* If your component uses C */ + #define __USE_C 1 + + /* If your component uses C++ */ + #define __USE_CPLUSPLUS 0 + + /* If your component uses multi-threading */ + #define __USE_THREAD 0 + + /* If your component uses X-Window */ + #define __USE_XWINDOW 0 + + /* Includes to search for */ + #define __SEARCH_INCLUDE gmp.h + + /* Includes directories search path */ + #define __SEARCH_INCLUDE_PATH /usr/local /usr + + /* Includes sub-directories search */ + #define __SEARCH_INCLUDE_DIR include + + /* Libraries to search for */ + #define __SEARCH_LIBRARY libgmp.$SHLIBEXT + + /* Libraries directories search path */ + #define __SEARCH_LIBRARY_PATH /usr/local /usr + + /* Libraries sub-directories search path */ + #define __SEARCH_LIBRARY_DIR lib/* lib + + /* Libraries to link with */ + #define __LIBRARY -lgmp + + /* Includes to link with */ + #define __INCLUDE + +#endif /* __USE_PKGCONFIG */ + +/* Source file list */ +#define __SOURCES main.c main.h + +/* Main C/C++ source basename in uppercase */ +#define __MAIN_UNAME MAIN diff --git a/TEMPLATE/conf/gb.net.pop3.conf b/TEMPLATE/conf/gb.net.pop3.conf new file mode 100644 index 00000000..2ecaafcd --- /dev/null +++ b/TEMPLATE/conf/gb.net.pop3.conf @@ -0,0 +1,76 @@ +/* Copyrights */ +#define __COPYRIGHT (c) 2006 +#define __AUTHOR Benoît Minisini +#define __EMAIL + +/* Name of the component */ +#define __COMPONENT gb.image + +/* Name of the component with points replaced by underscore */ +#define __COMPONENT_UNDERSCORE gb_image + +/* Short name of the component */ +#define __NAME image + +/* Short name of the component in uppercase */ +#define __UNAME IMAGE + +/* Description of the component */ +#define __DESCRIPTION Image processing component + +/* If the component detection uses pkg-config */ +#define __USE_PKGCONFIG 0 + +#if __USE_PKGCONFIG + +/* Name of the package for pkg-config */ +#define __PKGCONFIG_NAME test-1.0 + +/* Minimum version needed */ +#define __PKGCONFIG_VERSION 1.2.8 + +#else /* __USE_PKGCONFIG */ + +/* If your component uses C */ +#define __USE_C 0 + +/* If your component uses C++ */ +#define __USE_CPLUSPLUS 1 + +/* If your component uses multi-threading */ +#define __USE_THREAD 1 + +/* If your component uses X-Window */ +#define __USE_XWINDOW 0 + +/* Includes to search for */ +#define __SEARCH_INCLUDE + +/* Includes directories search path */ +#define __SEARCH_INCLUDE_PATH + +/* Includes sub-directories search */ +#define __SEARCH_INCLUDE_DIR + +/* Libraries to search for */ +#define __SEARCH_LIBRARY + +/* Libraries directories search path */ +#define __SEARCH_LIBRARY_PATH + +/* Libraries sub-directories search path */ +#define __SEARCH_LIBRARY_DIR + +/* Libraries to link with */ +#define __LIBRARY + +/* Includes to look for */ +#define __INCLUDE + +#endif /* __USE_PKGCONFIG */ + +/* Source file list */ +#define __SOURCES main.cpp main.h + +/* Main C/C++ source basename in uppercase */ +#define __MAIN_UNAME MAIN diff --git a/TEMPLATE/conf/gb.net.smtp.conf b/TEMPLATE/conf/gb.net.smtp.conf new file mode 100644 index 00000000..7e074c17 --- /dev/null +++ b/TEMPLATE/conf/gb.net.smtp.conf @@ -0,0 +1,76 @@ +/* Copyrights */ +#define __COPYRIGHT (c) 2006 +#define __AUTHOR Benoît Minisini +#define __EMAIL + +/* Name of the component */ +#define __COMPONENT gb.net.smtp + +/* Name of the component with points replaced by underscore */ +#define __COMPONENT_UNDERSCORE gb_net_smtp + +/* Short name of the component */ +#define __NAME smtp + +/* Short name of the component in uppercase */ +#define __UNAME SMTP + +/* Description of the component */ +#define __DESCRIPTION SMTP client component + +/* If the component detection uses pkg-config */ +#define __USE_PKGCONFIG 1 + +#if __USE_PKGCONFIG + +/* Name of the package for pkg-config */ +#define __PKGCONFIG_NAME glib-2.0 + +/* Minimum version needed */ +#define __PKGCONFIG_VERSION + +#else /* __USE_PKGCONFIG */ + +/* If your component uses C */ +#define __USE_C 0 + +/* If your component uses C++ */ +#define __USE_CPLUSPLUS 1 + +/* If your component uses multi-threading */ +#define __USE_THREAD 1 + +/* If your component uses X-Window */ +#define __USE_XWINDOW 0 + +/* Includes to search for */ +#define __SEARCH_INCLUDE + +/* Includes directories search path */ +#define __SEARCH_INCLUDE_PATH + +/* Includes sub-directories search */ +#define __SEARCH_INCLUDE_DIR + +/* Libraries to search for */ +#define __SEARCH_LIBRARY + +/* Libraries directories search path */ +#define __SEARCH_LIBRARY_PATH + +/* Libraries sub-directories search path */ +#define __SEARCH_LIBRARY_DIR + +/* Libraries to link with */ +#define __LIBRARY + +/* Includes to look for */ +#define __INCLUDE + +#endif /* __USE_PKGCONFIG */ + +/* Source file list */ +#define __SOURCES main.cpp main.h + +/* Main C/C++ source basename in uppercase */ +#define __MAIN_UNAME MAIN diff --git a/TEMPLATE/conf/gb.openal.conf b/TEMPLATE/conf/gb.openal.conf new file mode 100644 index 00000000..e5f03861 --- /dev/null +++ b/TEMPLATE/conf/gb.openal.conf @@ -0,0 +1,76 @@ +/* Copyrights */ +#define __COPYRIGHT (c) 2013 +#define __AUTHOR Benoît Minisini +#define __EMAIL + +/* Name of the component */ +#define __COMPONENT gb.openal + +/* Name of the component with points replaced by underscore */ +#define __COMPONENT_UNDERSCORE gb_openal + +/* Short name of the component */ +#define __NAME openal + +/* Short name of the component in uppercase */ +#define __UNAME OPENAL + +/* Description of the component */ +#define __DESCRIPTION Open AL library + +/* If the component detection uses pkg-config */ +#define __USE_PKGCONFIG 1 + +#if __USE_PKGCONFIG + + /* Name of the package for pkg-config */ + #define __PKGCONFIG_NAME openal + + /* Minimum version needed */ + #define __PKGCONFIG_VERSION 1.14 + +#else /* __USE_PKGCONFIG */ + + /* If your component uses C */ + #define __USE_C 1 + + /* If your component uses C++ */ + #define __USE_CPLUSPLUS 1 + + /* If your component uses multi-threading */ + #define __USE_THREAD 1 + + /* If your component uses X-Window */ + #define __USE_XWINDOW 1 + + /* Includes to search for */ + #define __SEARCH_INCLUDE test.h test2.h + + /* Includes directories search path */ + #define __SEARCH_INCLUDE_PATH /usr/local/lib /usr/local /usr/lib /usr + + /* Includes sub-directories search */ + #define __SEARCH_INCLUDE_DIR test/include include test*/include test/*/include + + /* Libraries to search for */ + #define __SEARCH_LIBRARY libtest.$SHLIBEXT libjpeg.$SHLIBEXT libpng.$SHLIBEXT + + /* Libraries directories search path */ + #define __SEARCH_LIBRARY_PATH /usr/local /usr + + /* Libraries sub-directories search path */ + #define __SEARCH_LIBRARY_DIR lib + + /* Libraries to link with */ + #define __LIBRARY -ljpeg -lpng -ltest + + /* Includes to link with */ + #define __INCLUDE -ljpeg -lpng -ltest + +#endif /* __USE_PKGCONFIG */ + +/* Source file list */ +#define __SOURCES main.c main.h + +/* Main C/C++ source basename in uppercase */ +#define __MAIN_UNAME MAIN diff --git a/TEMPLATE/conf/gb.poppler.conf b/TEMPLATE/conf/gb.poppler.conf new file mode 100644 index 00000000..b927e928 --- /dev/null +++ b/TEMPLATE/conf/gb.poppler.conf @@ -0,0 +1,79 @@ +/* Copyrights */ +#define __COPYRIGHT (c) +#define __AUTHOR Benoît Minisini +#define __EMAIL + +/* Name of the component */ +#define __COMPONENT gb.poppler + +/* Name of the component with points replaced by dashes */ +#define __COMPONENT_DASH gb-poppler + +/* Name of the component with points replaced by underscore */ +#define __COMPONENT_UNDERSCORE gb_poppler + +/* Short name of the component */ +#define __NAME poppler + +/* Short name of the component in uppercase */ +#define __UNAME POPPLER + +/* Description of the component */ +#define __DESCRIPTION Pdf reader based on poppler library + +/* If the component detection uses pkg-config */ +#define __USE_PKGCONFIG 1 + +#if __USE_PKGCONFIG + + /* Name of the package for pkg-config */ + #define __PKGCONFIG_NAME poppler-cpp + + /* Minimum version needed */ + //#define __PKGCONFIG_VERSION 1.2.8 + +#else /* __USE_PKGCONFIG */ + + /* If your component uses C */ + #define __USE_C 1 + + /* If your component uses C++ */ + #define __USE_CPLUSPLUS 1 + + /* If your component uses multi-threading */ + #define __USE_THREAD 1 + + /* If your component uses X-Window */ + #define __USE_XWINDOW 1 + + /* Includes to search for */ + #define __SEARCH_INCLUDE poppler.h test2.h + + /* Includes directories search path */ + #define __SEARCH_INCLUDE_PATH /usr/local/lib /usr/local /usr/lib /usr + + /* Includes sub-directories search */ + #define __SEARCH_INCLUDE_DIR poppler/include include poppler*/include poppler/*/include + + /* Libraries to search for */ + #define __SEARCH_LIBRARY libtest.$SHLIBEXT libjpeg.$SHLIBEXT libpng.$SHLIBEXT + + /* Libraries directories search path */ + #define __SEARCH_LIBRARY_PATH /usr/local /usr + + /* Libraries sub-directories search path */ + #define __SEARCH_LIBRARY_DIR lib + + /* Libraries to link with */ + #define __LIBRARY -ljpeg -lpng -ltest + + /* Includes to link with */ + #define __INCLUDE -ljpeg -lpng -ltest + +#endif /* __USE_PKGCONFIG */ + +/* Source file list */ +#define __SOURCES main.c main.h + +/* Main C/C++ source basename in uppercase */ +#define __MAIN_UNAME MAIN diff --git a/TEMPLATE/make-component b/TEMPLATE/make-component new file mode 100755 index 00000000..c49eb522 --- /dev/null +++ b/TEMPLATE/make-component @@ -0,0 +1,64 @@ +#!/bin/bash + +if test -d ../$1; then + echo "$0: error: This component already exists"; + exit 1; +fi + +if test ! -e ./conf/$1.conf; then + echo "$0: error: The configuration file for this component does not exist"; + exit 1; +fi + +if test x`which cpp` == x; then + echo "$0: error: cpp was not found"; + exit 1; +fi + +echo "Creating component directory $1..." +cp -R template ../$1 +rm -rf ../$1/.svn ../$1/*/.svn + +echo "Applying template..." +for i in ../$1/* ../$1/*/*; do + if test ! -h $i && test ! -d $i; then + cpp -P -include ./conf/$1.conf -o $i.out $i; + rm -f $i; + cat $i.out | sed s/"\\$\/\\$"/"\/"/g | sed s/"\\$'\\$"/"\""/g | sed s/"\\$:\\$"/"\""/g | sed s/"\\$\#\\$"/"\#"/g | sed s/"\#@\#"/"@"/g | sed s/"\#\#"/""/g > $i; + rm -f $i.out; + fi +done + +echo "Creating source files..." +for i in `cat ../$1/SOURCES`; do + BASENAME=`basename $i`; + SOURCE=../$1/src/$i; + if test ! `basename $i .h` = $BASENAME; then + cpp -P -include ./conf/$1.conf -D__SOURCE_NAME=`basename $i .h` -D__SOURCE_UNAME=`basename $i .h | tr '[:lower:]' '[:upper:]'` -o $SOURCE TEMPLATE.h; + elif test ! `basename $i .c` = $BASENAME; then + cpp -P -include ./conf/$1.conf -D__SOURCE_NAME=`basename $i .c` -D__SOURCE_UNAME=`basename $i .c | tr '[:lower:]' '[:upper:]'` -o $SOURCE TEMPLATE.c; + elif test ! `basename $i .cpp` = $BASENAME; then + cpp -P -include ./conf/$1.conf -D__SOURCE_NAME=`basename $i .cpp` -D__SOURCE_UNAME=`basename $i .cpp | tr '[:lower:]' '[:upper:]'` -o $SOURCE TEMPLATE.cpp; + fi + cat $SOURCE | sed s/"\\$\/\\$"/"\/"/g | sed s/"\\$'\\$"/"\""/g | sed s/"\\$:\\$"/"\""/g | sed s/"\\$\#\\$"/"\#"/g | sed s/"\#@\#"/"@"/g | sed s/"\#\#"/""/g > $SOURCE.tmp; + rm -f $SOURCE; + mv $SOURCE.tmp $SOURCE; +done +rm -f ../$1/SOURCES + +echo "Creating symbolic links..." +pushd . > /dev/null +cd ../$1 +rm -f `find . -name \*~` +for i in ../acinclude.m4 ../component.am ../main/share/gambas.h ../main/share/gb_common.h ../reconf ../INSTALL ../COPYING ../missing ../m4; do + ln -s $i; +done +popd > /dev/null + +pushd . > /dev/null +cd ../$1 +(source ./make-component) +rm -f make-component +popd > /dev/null + + diff --git a/TEMPLATE/template/AUTHORS b/TEMPLATE/template/AUTHORS new file mode 100644 index 00000000..e69de29b diff --git a/TEMPLATE/template/ChangeLog b/TEMPLATE/template/ChangeLog new file mode 100644 index 00000000..e69de29b diff --git a/TEMPLATE/template/Makefile.am b/TEMPLATE/template/Makefile.am new file mode 100644 index 00000000..008b94a7 --- /dev/null +++ b/TEMPLATE/template/Makefile.am @@ -0,0 +1,3 @@ +ACLOCAL_AMFLAGS = -I m4 --install +SUBDIRS = @__UNAME##_DIR@ +EXTRA_DIST = reconf gambas.h gb*.h diff --git a/TEMPLATE/template/NEWS b/TEMPLATE/template/NEWS new file mode 100644 index 00000000..e69de29b diff --git a/TEMPLATE/template/README b/TEMPLATE/template/README new file mode 100644 index 00000000..e69de29b diff --git a/TEMPLATE/template/SOURCES b/TEMPLATE/template/SOURCES new file mode 100644 index 00000000..7e45e083 --- /dev/null +++ b/TEMPLATE/template/SOURCES @@ -0,0 +1,2 @@ +__SOURCES + diff --git a/TEMPLATE/template/configure.ac b/TEMPLATE/template/configure.ac new file mode 100644 index 00000000..b4e99781 --- /dev/null +++ b/TEMPLATE/template/configure.ac @@ -0,0 +1,72 @@ +dnl ---- configure.ac for __COMPONENT + +m4_include([../version.m4]) +AC_INIT(gambas3-__COMPONENT_DASH, GB_VERSION, GB_MAIL, [], GB_URL) +AC_CONFIG_MACRO_DIR([m4]) + +GB_INIT(__COMPONENT) +AC_PROG_LIBTOOL + +#if __USE_XWINDOW || __USE_QT +GB_CHECK_XWINDOW +#endif + +#if __USE_QT +GB_FIND_QT_MOC +#endif + +#if __USE_PKGCONFIG + +GB_COMPONENT_PKG_CONFIG( + __NAME, + __UNAME, + __COMPONENT, + [src], + __PKGCONFIG_NAME) + +#else + +#if __USE_C +#define __LIBRARY_C $C_LIB +#else +#define __LIBRARY_C +#endif +#if __USE_CPP +#define __LIBRARY_CPP $CXX_LIB +#else +#define __LIBRARY_CPP +#endif +#if __USE_THREAD +#define __LIBRARY_THREAD $THREAD_LIB +#define __INCLUDE_THREAD $THREAD_INC +#else +#define __LIBRARY_THREAD +#define __INCLUDE_THREAD +#endif + +GB_COMPONENT( + __NAME, + __UNAME, + __COMPONENT, + [src], +#ifdef __SEARCH_INCLUDE + [GB_FIND(__SEARCH_INCLUDE, __SEARCH_INCLUDE_PATH, __SEARCH_INCLUDE_DIR)], +#else + [], +#endif +#ifdef __SEARCH_LIBRARY + [GB_FIND(__SEARCH_LIBRARY, __SEARCH_LIBRARY_PATH, __SEARCH_LIBRARY_DIR)], +#else + [], +#endif + [__LIBRARY_C __LIBRARY_CPP __LIBRARY_THREAD __LIBRARY], + [__INCLUDE_THREAD __INCLUDE]) + +#endif + +AC_OUTPUT( \ +Makefile \ +src/Makefile \ +) + +GB_PRINT_MESSAGES diff --git a/TEMPLATE/template/make-component b/TEMPLATE/template/make-component new file mode 100755 index 00000000..ddce91cd --- /dev/null +++ b/TEMPLATE/template/make-component @@ -0,0 +1,3 @@ +$#$!/bin/sh +cd src +mv .component __COMPONENT.component diff --git a/TEMPLATE/template/src/.component b/TEMPLATE/template/src/.component new file mode 100644 index 00000000..10e636c3 --- /dev/null +++ b/TEMPLATE/template/src/.component @@ -0,0 +1,3 @@ +[Component] +Author= +Alpha=1 diff --git a/TEMPLATE/template/src/Makefile.am b/TEMPLATE/template/src/Makefile.am new file mode 100644 index 00000000..29c457f4 --- /dev/null +++ b/TEMPLATE/template/src/Makefile.am @@ -0,0 +1,12 @@ +COMPONENT = __COMPONENT +include $(top_srcdir)/component.am + +gblib_LTLIBRARIES = __COMPONENT.la + +__COMPONENT_UNDERSCORE##_la_LIBADD = #@#__UNAME##_LIB@ +__COMPONENT_UNDERSCORE##_la_LDFLAGS = -module @LD_FLAGS@ #@#__UNAME##_LDFLAGS@ +__COMPONENT_UNDERSCORE##_la_CPPFLAGS = #@#__UNAME##_INC@ + +__COMPONENT_UNDERSCORE##_la_SOURCES = __SOURCES + + diff --git a/TODO b/TODO new file mode 100644 index 00000000..b541cdb5 --- /dev/null +++ b/TODO @@ -0,0 +1,74 @@ +TODO list: always incomplete :-) +-------------------------------- + +COMPILER + +- Compilation error must always indicate the column, not sometimes only the line. + +INTERPRETER + +- A special syntax to make variable writable once only (for controls variables). +- Add global parameters for each component. Or no, a global configuration repository, to + tell, for example, which socket the mysql component must use... +- Make objects printable, with a "_print" hidden method or something else. +- Type mismatch error: print the mismatched values. +- Special runtime debugging commands for dumping all the variables for example. +- A new debugging compilation option to only put line number information in the output files. +- If project compilation version < compiler version then => compile all +- Catch kill signal to remove temporary files. +- MOD with floats. +- Make the error information associated with the current stack frame. +- Timer.TimeLeft. +- OPEN ... LOCK. True lock while reading/writing a file. +- select() system call can fail if a watched file descriptor is in error. But how can I know + the offending file descriptor? Maybe by using poll() instead. + +DEBUGGER + +- Add/Remove a breakpoint without pausing the program! + +DEVELOPMENT ENVIRONMENT + +- Manage Object properties in IDE. +- Make a visual control clipboard. +- Generates an index control->component to suggest components for missing controls. +- Be able to open a .tar.gz project, and compress it back when the project is closed. +- Conditional breakpoints. +- Define a control order somewhere for the toolbox. +- An option to interpret "." and "," when reading float in a CSV import. +- Class template files. +- Redesign the source code navigator (F2 and SHIFT+F2). + +GUI RELATED STUFF + +- Deleting a currently expanding item in TreeView crashes. +- ValueBox.Value should be visible in the IDE. +- ListView and GridView selection interface should be the same. +- More clever vertical toolbar. + +DESKTOP COMPONENT + +- Detect an already running application. + +DATABASE COMPONENT + +- Add Views support in database component. +- Changeable client Charset in database driver. +- Returns the number of records affected by a query. +- A new database driver model. +- Copy a result line into another one. + +DOCUMENTATION WIKI + +- Mass rename command. +- Fix last changes: only those in one language. +- A documentation page to explain the Gambas syntax. +- User comments on documentation pages. + +NETWORK COMPONENT + +- Do a big cleanup. + +COMPONENTS + +- Put version number in *.component files, and use it when making dependencies in the IDE. diff --git a/VERSION b/VERSION new file mode 100644 index 00000000..a7d1e793 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +3.18.3 diff --git a/acinclude.m4 b/acinclude.m4 new file mode 100644 index 00000000..7b5fe050 --- /dev/null +++ b/acinclude.m4 @@ -0,0 +1,1728 @@ +####################################################################################### +## +## The following macros are specific to Gambas. +## Some of them are made by me (Benoît Minisini) +## Feel free to use these macros as you need ! +## +## IMPORTANT: This file is shared by all Gambas +## source packages +## +####################################################################################### + +## --------------------------------------------------------------------------- +## GB_MESSAGE +## Prints a message, and stores it in a summay file to print it later +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_MESSAGE], +[ + echo "|| $1" >> $srcdir/warnings.log +]) + +## --------------------------------------------------------------------------- +## GB_MESSAGE +## Prints a warning message, and stores it in a summay file to print it later +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_WARNING], +[ + AC_MSG_WARN($1) + GB_MESSAGE([$1]) +]) + +## --------------------------------------------------------------------------- +## GB_CLEAR_MESSAGES +## Clear summary +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_CLEAR_MESSAGES], +[ + rm -f $srcdir/warnings.log + touch $srcdir/warnings.log +]) + +## --------------------------------------------------------------------------- +## GB_PRINT_MESSAGES +## Print summary +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_PRINT_MESSAGES], +[ + if test -s $srcdir/warnings.log; then + echo + echo "||" + cat $srcdir/warnings.log + echo "||" + echo + fi + + rm -f $srcdir/warnings.log.before; + + if test -e FAILED && test "x${GAMBAS_CONFIG_FAILURE}" != "x"; then + AC_MSG_ERROR([Failed to configure $3]) + fi +]) + +## --------------------------------------------------------------------------- +## GB_INIT_AUTOMAKE +## automake initialization with common version number +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_INIT_AUTOMAKE], +[ + AM_INIT_AUTOMAKE([subdir-objects]) + m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)]) + AC_CONFIG_HEADERS([config.h]) + AC_PREFIX_DEFAULT(/usr) + MAKEFLAGS=--silent + AC_SUBST(MAKEFLAGS) + + GAMBAS_VERSION=GB_VERSION_MAJOR + GAMBAS_MINOR_VERSION=GB_VERSION_MINOR + + AC_SUBST(GAMBAS_VERSION) + AC_SUBST(GAMBAS_MINOR_VERSION) + + AC_DEFINE(GAMBAS_VERSION, GB_VERSION_MAJOR, Gambas version) + AC_DEFINE(GAMBAS_MINOR_VERSION, GB_VERSION_MINOR, Gambas minor version) + + AC_DEFINE(GAMBAS_VERSION_STRING, "GB_VERSION_MAJOR", Gambas version string) + AC_DEFINE(GAMBAS_FULL_VERSION_STRING, "GB_VERSION_MAJOR.GB_VERSION_MINOR", Gambas full version string) + + AC_DEFINE(GAMBAS_FULL_VERSION, GB_VERSION_FULL, [Full Gambas version]) + AC_DEFINE(GAMBAS_PCODE_VERSION, GB_PCODE_VERSION, [Gambas bytecode version]) + AC_DEFINE(GAMBAS_PCODE_VERSION_MIN, GB_PCODE_VERSION_MIN, [Minimum Gambas bytecode version]) + + GB_CLEAR_MESSAGES +]) + +## --------------------------------------------------------------------------- +## GB_TRUNK_VERSION +## detect version and branch (svn and git supported) +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_TRUNK_VERSION], +[ + gb_detect_git=`which git 2> /dev/null` + gb_vcs_hash="" + gb_vcs_branch="" + gb_vcs_version="" + + AC_MSG_CHECKING(for vcs revision) + + if test "x${gb_detect_git}" != "x"; then + gb_vcs_branch=`git rev-parse --abbrev-ref HEAD 2> /dev/null` + gb_vcs_hash=`git rev-parse --short HEAD 2> /dev/null` + else + gb_detect_svn=`which svn 2> /dev/null` + if test "x${gb_detect_svn}" != "x"; then + gb_vcs_hash=`svn info --show-item last-changed-revision 2> /dev/null` + fi + fi + + if test "x${gb_vcs_branch}" != "x"; then + gb_vcs_version="${gb_vcs_hash} (${gb_vcs_branch})" + else + if test "x${gb_vcs_hash}" != "x"; then + gb_vcs_version="r${gb_vcs_hash}" + fi + fi + + if test "x${gb_vcs_version}" != "x"; then + AC_DEFINE_UNQUOTED(TRUNK_VERSION, "${gb_vcs_version}", [vcs revision]) + AC_MSG_RESULT([$gb_vcs_version]) + else + AC_MSG_RESULT(not found) + fi +]) + +## --------------------------------------------------------------------------- +## GB_CONFIG_SUBDIRS +## configuration of a component sub-directory, with a flag for disabling it +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_CONFIG_SUBDIRS], +[ + AC_ARG_ENABLE( + $1, + [ --enable-$1 enable $1 component (default: yes)], + gb_enable_$1=$enableval, + gb_enable_$1=yes + ) + + if test "$gb_enable_$1" = "yes"; then + if test -d $srcdir/$2; then + AC_CONFIG_SUBDIRS($2) + $1_dir=$2 + fi + else + GB_WARNING([$1 component is disabled by configure option]) + $1_dir="" + fi + + AC_SUBST($1_dir) +]) + +## --------------------------------------------------------------------------- +## GB_INIT_SHORT GB_INIT GB_LIBTOOL +## configure.ac initialization +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_INIT_SHORT], +[ + AC_CONFIG_SRCDIR([configure.ac]) + AM_MAINTAINER_MODE + + COMPONENT=$1 + + GB_INIT_AUTOMAKE + + AC_CANONICAL_HOST + + gbbindir=$bindir/gambas$GAMBAS_VERSION + AC_SUBST(gbbindir) + gblibdir=$libdir/gambas$GAMBAS_VERSION + AC_SUBST(gblibdir) + gbdatadir=$datadir/gambas$GAMBAS_VERSION + AC_SUBST(gbdatadir) + + AC_PROG_INSTALL + AC_PROG_LN_S +]) + +AC_DEFUN([GB_LIBTOOL], +[ + dnl AC_LIBTOOL_DLOPEN + dnl AC_LIBTOOL_WIN32_DLL + AC_DISABLE_STATIC + + AC_SUBST(INCLTDL) + AC_SUBST(LIBLTDL) + + dnl LD_FLAGS="-Wl,-O1" + if test $SYSTEM == "CYGWIN"; then + LD_FLAGS="$LD_FLAGS -no-undefined" + fi + AC_SUBST(LD_FLAGS) + + AM_LIBTOOLFLAGS="--silent" + AC_SUBST(AM_LIBTOOLFLAGS) +]) + +AC_DEFUN([GB_INIT], +[ + GB_INIT_SHORT($1) + GB_SYSTEM + GB_LIBTOOL + + dnl ---- Checks for headers needed by the following tests + + AC_CHECK_HEADERS(unistd.h) + + dnl ---- Checks for header files. + + dnl AC_HEADER_DIRENT + dnl AC_HEADER_SYS_WAIT + + dnl ---- Checks for typedefs, structures, and compiler characteristics. + + dnl AC_C_CONST + dnl AC_TYPE_PID_T + dnl AC_TYPE_SIZE_T + dnl AC_CHECK_HEADERS_ONCE([sys/time.h]) + + dnl AC_STRUCT_TM + + AC_TYPE_LONG_DOUBLE_WIDER + ac_cv_c_long_double=$ac_cv_type_long_double_wider + if test $ac_cv_c_long_double = yes; then + AC_DEFINE([HAVE_LONG_DOUBLE],[1],[Define to 1 if the type `long double' works and has more range or + precision than `double'.]) + fi + + dnl ---- Checks for library functions. + + dnl AC_FUNC_ALLOCA + dnl AC_PROG_GCC_TRADITIONAL + dnl AC_FUNC_STRCOLL + dnl AC_FUNC_STRFTIME + dnl AC_FUNC_VPRINTF + dnl AC_FUNC_WAIT3 + dnl AC_CHECK_FUNCS(getcwd gettimeofday mkdir rmdir select socket strdup strerror strtod strtol sysinfo) + + AC_CHECK_FUNCS(setenv unsetenv getdomainname getpt cfmakeraw fstatat) + + dnl ---- Checks for libraries + + dnl AC_CHECK_LIB(m, main, echo) + dnl AC_CHECK_LIB(z, main, echo) + + GB_LIBC + + dnl ---- Check for C++ libraries + + AC_CHECK_LIB(gcc_s, main, CXX_LIB="$CXX_LIB -lgcc_s") + AC_CHECK_LIB(stdc++, main, CXX_LIB="$CXX_LIB -lstdc++") + + AC_SUBST(CXX_LIB) + + dnl ---- Check for shared library extension + + GB_SHARED_LIBRARY_EXT() + + dnl ---- Check for threading + + GB_THREAD() + + dnl ---- Check for mathematic libraries + + GB_MATH() + + dnl ---- Check for gettext library + + GB_GETTEXT() + + dnl ---- Check for inotify library + + GB_INOTIFY() + + dnl ---- Check for monotonic clock + + GB_MONOTONIC() + + dnl ---- Support for colorgcc + dnl ---- WARNING: libtool does not support colorgcc! + + dnl AC_PATH_PROG(COLORGCC, colorgcc) + + if test x"$COLORGCC" != x; then + if test "$gambas_colorgcc" = "yes"; then + CC="colorgcc" + CXX="g++" + fi + fi + + dnl ---- Support for ccache + + AC_ARG_ENABLE( + ccache, + [ --enable-ccache use ccache if present (default: yes)], + gambas_ccache=$enableval, + gambas_ccache=yes + ) + + AC_PATH_PROG(CCACHE, ccache) + + if test "$gambas_colorgcc" = "yes"; then + if test x"$CCACHE" != x; then + + CC="ccache $CC" + CXX="ccache $CXX" + + if test x"$COLORGCC" != x; then + if test "$gambas_colorgcc" = "yes"; then + CC="colorgcc" + CXX="colorgcc" + fi + fi + + fi + fi + + dnl ---- debug option + + AC_ARG_ENABLE( + debug, + [ --enable-debug compile for debugging (default: yes)], + gambas_debug=$enableval, + gambas_debug=yes + ) + + AM_CONDITIONAL(DEBUG, test "$gambas_debug" = yes) + + dnl ---- optimization option + + AC_ARG_ENABLE( + optimization, + [ --enable-optimization compile with optimizations (default: yes)], + gambas_optimization=$enableval, + gambas_optimization=yes + ) + + AM_CONDITIONAL(OPTIMIZE, test "$gambas_optimization" = yes) + + AM_CFLAGS="$AM_CFLAGS -pipe -Wall -Wno-unused-value -fsigned-char" + if test $SYSTEM = "MACOSX"; then + AM_CFLAGS="$AM_CFLAGS -fnested-functions" + fi + + AM_CXXFLAGS="$AM_CXXFLAGS -pipe -Wall -fno-exceptions -Wno-unused-value -fsigned-char" + + dnl ---- Check for gcc visibility flag + + have_gcc_visibility=no + + if test $SYSTEM != "CYGWIN"; then + GB_CFLAGS_GCC_OPTION([-fvisibility=hidden],, + [ + AM_CFLAGS="$AM_CFLAGS -fvisibility=hidden" + AM_CXXFLAGS="$AM_CXXFLAGS -fvisibility=hidden" + have_gcc_visibility=yes]) + fi + + if test "$have_gcc_visibility" = "yes"; then + AC_DEFINE(HAVE_GCC_VISIBILITY, 1, [Whether gcc supports -fvisibility=hidden]) + fi + + dnl ---- check for -flto compiler flag + + GB_CFLAGS_GCC_OPTION([-flto],, + [ + GB_CFLAGS_LTO=" -flto" + have_gcc_lto=yes + ]) + + AC_ARG_ENABLE( + lto, + [ --enable-lto enable link time optimization (default: no)], + gambas_lto=$enableval, + gambas_lto=no + ) + + if test "$gambas_lto" = "no"; then + have_gcc_lto=no; + GB_CFLAGS_LTO=""; + fi + + if test "$have_gcc_lto" = "yes"; then + AC_DEFINE(HAVE_GCC_LTO, 1, [Whether gcc supports -flto]) + fi + + dnl ---- check for -std=c++11 compiler flag + + GB_CXXFLAGS_GCC_OPTION([-std=c++11],, + [ + GB_CXXFLAGS_STD_CPP11=" -std=c++11" + have_gcc_std_cpp11x=yes + ]) + + if test "$have_gcc_std_cpp11" = "yes"; then + AC_DEFINE(HAVE_GCC_STD_CPP11, 1, [Whether g++ supports -std=c++11]) + fi + + dnl ---- check for -std=c++17 compiler flag + + GB_CXXFLAGS_GCC_OPTION([-std=c++17],, + [ + GB_CXXFLAGS_STD_CPP17=" -std=c++17" + have_gcc_std_cpp17x=yes + ]) + + if test "$have_gcc_std_cpp17" = "yes"; then + AC_DEFINE(HAVE_GCC_STD_CPP17, 1, [Whether g++ supports -std=c++17]) + fi + + dnl ---- Debug flags + + if test "$gambas_debug" = "yes"; then + AM_CFLAGS="$AM_CFLAGS -g -ggdb" + AM_CXXFLAGS="$AM_CXXFLAGS -g -ggdb" + fi + + dnl ---- Optimization flags + + if test "x$gambas_optimization" = "xyes"; then + AM_CFLAGS_OPT="$AM_CFLAGS -O3" + AM_CFLAGS="$AM_CFLAGS -O2" + AM_CXXFLAGS_OPT="$AM_CXXFLAGS -O3 -fno-omit-frame-pointer" + AM_CXXFLAGS="$AM_CXXFLAGS -O2 -fno-omit-frame-pointer" + else + AM_CFLAGS_OPT="$AM_CFLAGS -O0" + AM_CFLAGS="$AM_CFLAGS -O0" + AM_CXXFLAGS_OPT="$AM_CXXFLAGS -O0" + AM_CXXFLAGS="$AM_CXXFLAGS -O0" + fi + + dnl ---- Checks for programs + + save_CFLAGS=$CFLAGS + AC_PROG_CPP + AC_PROG_CXX + AC_PROG_CC + AC_PROG_MAKE_SET + CFLAGS=$save_CFLAGS + + AC_SUBST(AM_CFLAGS) + AC_SUBST(AM_CFLAGS_OPT) + AC_SUBST(AM_CXXFLAGS) + AC_SUBST(AM_CXXFLAGS_OPT) + AC_SUBST(GB_CFLAGS_LTO) + AC_SUBST(GB_CXXFLAGS_STD_CPP11) + AC_SUBST(GB_CXXFLAGS_STD_CPP17) + + rm -f DISABLED DISABLED.* FAILED +]) + + +## --------------------------------------------------------------------------- +## GB_THREAD +## Detect threading compiler options +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_THREAD], +[ + case "${host}" in + *-*-freebsd* | *-*-netbsd* | *-*-darwin* ) + THREAD_LIB="" + THREAD_INC="-pthread -D_REENTRANT" + GBX_THREAD_LIB="" + GBX_THREAD_INC="-pthread -D_REENTRANT" + GBX_THREAD_LDFLAGS="" + ;; + *-*-haiku* ) + THREAD_LIB="" + THREAD_INC="" + GBX_THREAD_LIB="" + GBX_THREAD_INC="" + GBX_THREAD_LDFLAGS="" + ;; + *) + THREAD_LIB="-lpthread" + THREAD_INC="-D_REENTRANT" + GBX_THREAD_LIB="-lpthread" + GBX_THREAD_INC="-D_REENTRANT" + GBX_THREAD_LDFLAGS="-Wl,--no-as-needed" + ;; + esac + + AC_MSG_CHECKING(for threading compiler options) + AC_MSG_RESULT($THREAD_INC) + AC_MSG_CHECKING(for threading linker options) + AC_MSG_RESULT($THREAD_LIB) + + AC_SUBST(THREAD_LIB) + AC_SUBST(THREAD_INC) + AC_SUBST(GBX_THREAD_LIB) + AC_SUBST(GBX_THREAD_INC) + AC_SUBST(GBX_THREAD_LDFLAGS) +]) + + +## --------------------------------------------------------------------------- +## GB_LIBC +## Detect C library +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_LIBC], +[ + case "${host}" in + *-*-haiku* ) + dnl Haiku has implicit C library in libroot. + C_LIB="" + ;; + *) + C_LIB="-lc" + ;; + esac + + AC_MSG_CHECKING(for C library) + AC_MSG_RESULT($C_LIB) + + AC_SUBST(C_LIB) +]) + + +## --------------------------------------------------------------------------- +## GB_MATH +## Detect mathematic libraries +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_MATH], +[ + case "${host}" in + *-*-haiku* ) + MATH_LIB="" + ;; + *) + MATH_LIB="-lm" + ;; + esac + + AC_MSG_CHECKING(for mathematic libraries) + AC_MSG_RESULT($MATH_LIB) + + AC_SUBST(MATH_LIB) +]) + + +## --------------------------------------------------------------------------- +## GB_CHECK_MATH_FUNC +## Check a specific mathematical function +## +## $1 = name of the function +## $2 = macro to define +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_CHECK_MATH_FUNC], +[AC_CACHE_CHECK(for $1, + gb_cv_math_$1, + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #define _ISOC9X_SOURCE 1 + #define _ISOC99_SOURCE 1 + #define _GNU_SOURCE 1 + #define __USE_ISOC99 1 + #define __USE_ISOC9X 1 + #include + ]], [[ + int value = $1 (1.0); + ]])],[gb_cv_math_$1=yes],[gb_cv_math_$1=no + ])]) + + if test $gb_cv_math_$1 = yes; then + AC_DEFINE(HAVE_$2, 1, [Define if you have $1 function.]) + fi +]) + +## --------------------------------------------------------------------------- +## GB_MATH_FUNC +## Detect which mathematical functions are available +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_MATH_FUNC], +[ + ac_save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -$MATH_LIB" + + GB_CHECK_MATH_FUNC(exp10, EXP10) + GB_CHECK_MATH_FUNC(exp2, EXP2) + GB_CHECK_MATH_FUNC(log2, LOG2) + + LDFLAGS=$ac_save_LDFLAGS +]) + + +## --------------------------------------------------------------------------- +## GB_SYSTEM +## Detects the target system and its architecture +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_SYSTEM], +[ + AC_MSG_CHECKING(target system) + + case "${host}" in + *-*-linux*-gnu* ) + SYSTEM=LINUX + AC_DEFINE(OS_GNU, 1, [Target system is of GNU family]) + AC_DEFINE(OS_LINUX, 1, [Target system is Linux]) + AC_DEFINE(SYSTEM, "Linux", [Operating system]) + ;; + *-*-linux* ) + SYSTEM=LINUX + AC_DEFINE(OS_LINUX, 1, [Target system is Linux]) + AC_DEFINE(SYSTEM, "Linux", [Operating system]) + ;; + *-*-freebsd* ) + SYSTEM=FREEBSD + AC_DEFINE(OS_BSD, 1, [Target system is of BSD family]) + AC_DEFINE(OS_FREEBSD, 1, [Target system is FreeBSD]) + AC_DEFINE(SYSTEM, "FreeBSD", [Operating system]) + ;; + *-*-netbsd* ) + SYSTEM=NETBSD + AC_DEFINE(OS_BSD, 1, [Target system is of BSD family]) + AC_DEFINE(OS_NETBSD, 1, [Target system is NetBSD]) + AC_DEFINE(SYSTEM, "NetBSD", [Operating system]) + ;; + *-*-openbsd* ) + SYSTEM=OPENBSD + AC_DEFINE(OS_BSD, 1, [Target system is of BSD family]) + AC_DEFINE(OS_OPENBSD, 1, [Target system is OpenBSD]) + AC_DEFINE(SYSTEM, "OpenBSD", [Operating system]) + ;; + *-*-cygwin* ) + SYSTEM=CYGWIN + AC_DEFINE(OS_CYGWIN, 1, [Target system is Cygwin/Windows]) + AC_DEFINE(SYSTEM, "Cygwin", [Operating system]) + ;; + *-*-darwin* | *-*-rhapsody* ) + SYSTEM=MACOSX + AC_DEFINE(OS_BSD, 1, [Target system is of BSD family]) + AC_DEFINE(OS_FREEBSD, 1, [Target system is FreeBSD]) + AC_DEFINE(OS_MACOSX, 1, [Target system is MacOS X]) + AC_DEFINE(SYSTEM, "MacOSX", [Operating system]) + ;; + *-*-solaris* ) + SYSTEM=SOLARIS + AC_DEFINE(OS_SOLARIS, 1, [Target system is Solaris]) + AC_DEFINE(SYSTEM, "Solaris", [Operating system]) + ;; + *-*-k*bsd*-gnu* ) + SYSTEM=KFREEBSD + AC_DEFINE(OS_BSD, 1, [Target system is of BSD family]) + AC_DEFINE(OS_GNU, 1, [Target system is of GNU family]) + AC_DEFINE(OS_KFREEBSD, 1, [Target system is kFREEBSD]) + AC_DEFINE(SYSTEM, "kFreeBSD", [Operating system]) + ;; + *-gnu* ) + SYSTEM=HURD + AC_DEFINE(OS_GNU, 1, [Target system is of GNU family]) + AC_DEFINE(OS_HURD, 1, [Target system is Hurd]) + AC_DEFINE(SYSTEM, "Hurd", [Operating system]) + ;; + *-*-haiku* ) + SYSTEM=HAIKU + dnl AC_DEFINE(OS_GNU, 1, [Target system is of GNU family]) + AC_DEFINE(OS_HAIKU, 1, [Target system is Haiku]) + AC_DEFINE(SYSTEM, "Haiku", [Operating system]) + ;; + * ) + SYSTEM=UNKNOWN + AC_DEFINE(SYSTEM, "unknown", [Operating system]) + GB_MESSAGE([System is unknown]) + ;; + esac + + AC_MSG_RESULT($SYSTEM) + + AC_MSG_CHECKING(target architecture) + + case "${host}" in + i*86-*-* ) + ARCH=X86 + AC_DEFINE(ARCH_X86, 1, [Target architecture is x86]) + AC_DEFINE(ARCHITECTURE, "x86", [Architecture]) + ;; + x86_64-*-* | amd64-* | ia64-* ) + ARCH=X86_64 + AC_DEFINE(ARCH_X86_64, 1, [Target architecture is x86_64]) + AC_DEFINE(ARCHITECTURE, "x86_64", [Architecture]) + ;; + arm*-*-* ) + ARCH=ARM + AC_DEFINE(ARCH_ARM, 1, [Target architecture is ARM]) + AC_DEFINE(ARCHITECTURE, "arm", [Architecture]) + ;; + aarch64*-*-* ) + ARCH=AARCH64 + AC_DEFINE(ARCH_AARCH64, 1, [Target architecture is AARCH64]) + AC_DEFINE(ARCHITECTURE, "aarch64", [Architecture]) + ;; + powerpc*-*-* ) + ARCH=PPC + AC_DEFINE(ARCH_PPC, 1, [Target architecture is PowerPC]) + AC_DEFINE(ARCHITECTURE, "powerpc", [Architecture]) + ;; + *) + ARCH=UNKNOWN + AC_DEFINE(ARCHITECTURE, "unknown", [Architecture]) + GB_MESSAGE([Architecture is unknown]) + ;; + esac + + AC_MSG_RESULT($ARCH) +]) + + +## --------------------------------------------------------------------------- +## GB_SHARED_LIBRARY_EXT +## Detects shared library extension +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_SHARED_LIBRARY_EXT], +[ + AC_MSG_CHECKING(which extension is used for shared libraries) + + case "${host}" in + *-*-cygwin* ) + SHLIBEXT="dll.a" + AC_DEFINE(SHARED_LIBRARY_EXT, "dll", [Shared library extension is '.dll.a']) + ;; + *-*-darwin* ) + SHLIBEXT="dylib" + AC_DEFINE(SHARED_LIBRARY_EXT, "dylib", [Shared library extension is '.dylib']) + ;; + *) + SHLIBEXT="so" + AC_DEFINE(SHARED_LIBRARY_EXT, "so", [Shared library extension is '.so']) + ;; + esac + + AC_SUBST(SHLIBEXT) + + AC_MSG_RESULT([.$SHLIBEXT]) +]) + + +## --------------------------------------------------------------------------- +## GB_GETTEXT +## Detects if we must link to an external gettext library +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_GETTEXT], +[ + AC_MSG_CHECKING(for external gettext library) + + case "${host}" in + *-*-openbsd* ) + GETTEXT_LIB=-llibgettext + ;; + *) + GETTEXT_LIB= + ;; + esac + + AC_SUBST(GETTEXT_LIB) + AC_SUBST(GETTEXT_LDFLAGS) + + AC_MSG_RESULT($GETTEXT_LIB) +]) + + +## --------------------------------------------------------------------------- +## GB_INOTIFY +## Detects if we must link to an external inotify library +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_INOTIFY], +[ + AC_MSG_CHECKING(for external inotify library) + + case "${host}" in + *-*-linux* ) + GB_INOTIFY_LIB= + ;; + *) + GB_INOTIFY_LIB=-linotify + ;; + esac + + AC_SUBST(GB_INOTIFY_LIB) + AC_MSG_RESULT($GB_INOTIFY_LIB) +]) + + +## --------------------------------------------------------------------------- +## GB_MONOTONIC +## Detect monotonic clock +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_MONOTONIC], +[ + AC_CACHE_CHECK(for monotonic clock, gb_cv_monotonic_clock, + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include + #ifdef HAVE_UNISTD_H + #include + #endif + ]], [[ + #if !defined(_POSIX_MONOTONIC_CLOCK) || _POSIX_MONOTONIC_CLOCK < 0 || !defined(CLOCK_MONOTONIC) + #error Either _POSIX_MONOTONIC_CLOCK or CLOCK_MONOTONIC not defined + #endif + ]])],[ + gb_cv_monotonic_clock=yes + ],[ + gb_cv_monotonic_clock=no + ]) + ) + + if test "$gb_cv_monotonic_clock" = "yes"; then + + AC_DEFINE(HAVE_MONOTONIC_CLOCK,1,[Have a monotonic clock]) + + ac_save_LIBS="$LIBS" + AC_SEARCH_LIBS(clock_gettime, rt) + RT_LIB=$LIBS + LIBS=$ac_save_LIBS + + fi + + AC_SUBST(RT_LIB) + AC_SUBST(RT_LDFLAGS) +]) + + + + +## --------------------------------------------------------------------------- +## GB_FIND +## Find files in directories +## +## $1 = Files to search +## $2 = Directories +## $3 = Sub-directories patterns +## +## Returns a path list in $gb_val +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_FIND], +[ +dnl echo "Searching $1, $2, $3" +gb_val="" +gb_save=`pwd` +gb_file_list="$1" + +gb_main_dir_list="$2" +gb_sub_dir_list="$3" + +gb_sub_dir_list_64=`echo "$gb_sub_dir_list" | sed s/"lib"/"lib64"/g` + +if test $SYSTEM == "HAIKU"; then + gb_arch="`getarch`" + gb_main_dir_list="$gb_main_dir_list `findpaths -c' ' -a "$gb_arch" B_FIND_PATH_DEVELOP_DIRECTORY`" + gb_arch_inc_subdir=headers + gb_arch_lib_subdir=lib + if test "$gb_arch" != "`getarch -p`"; then + gb_arch_inc_subdir="headers/$gb_arch" + gb_arch_lib_subdir="lib/$gb_arch" + fi + gb_sub_dir_list=`echo "$gb_sub_dir_list" | sed "s:include:$gb_arch_inc_subdir:g;s:lib:$gb_arch_lib_subdir:g"` +fi + +## if there is 'lib' inside sub-directories, then we decide to search "lib64" first. + +if test "$gb_sub_dir_list_64" != "$gb_sub_dir_list"; then + gb_sub_dir_list="$gb_sub_dir_list_64 $gb_sub_dir_list"; + + gb_main_dir_list_64=`echo "$gb_main_dir_list" | sed s/"lib"/"lib64"/g` + + if test "$gb_main_dir_list_64" != "$gb_main_dir_list"; then + gb_main_dir_list="$gb_main_dir_list_64 $gb_main_dir_list"; + fi + +fi + +for gb_main_dir in $gb_main_dir_list; do + dnl echo "search $gb_main_dir" + if test -d $gb_main_dir; then + cd $gb_main_dir + for gb_search_dir in $gb_sub_dir_list; do + for gb_dir in $gb_search_dir/ $gb_search_dir/*/ $gb_search_dir/*/*/ $gb_search_dir/*/*/*/; do + + dnl echo "search subdir $gb_dir" + gb_new_file_list="" + gb_find_dir="" + + for gb_file in $gb_file_list; do + + dnl echo "search file $gb_file" + gb_find=no + if test -r "$gb_main_dir/$gb_dir/$gb_file" || test -d "$gb_main_dir/$gb_dir/$gb_file"; then + + ifelse($4,[], + + gb_find=yes, + + for gb_test in $4; do + gb_output=`ls -la $gb_main_dir/$gb_dir/$gb_file | grep "$gb_test"` + if test "x$gb_output" != "x"; then + gb_find=yes + fi + done + ) + + fi + + if test "$gb_find" = "yes"; then + dnl echo "FOUND!" + if test "x$gb_find_dir" = "x"; then + if test "x$gb_val" = "x"; then + gb_val="$gb_main_dir/$gb_dir" + else + gb_val="$gb_val $gb_main_dir/$gb_dir" + fi + fi + gb_find_dir=yes + else + gb_new_file_list="$gb_new_file_list $gb_file" + fi + + done + + gb_file_list=$gb_new_file_list + + if test "x$gb_file_list" = "x " || test "x$gb_file_list" = "x"; then + break 3 + fi + + done + done + fi +done + +if test "x$gb_file_list" != "x " && test "x$gb_file_list" != "x"; then + gb_val=no +fi + +cd $gb_save +]) + + +## --------------------------------------------------------------------------- +## GB_COMPONENT_PKG_CONFIG +## Component detection macro based on pkg-config +## +## $1 = Component key in lower case (ex: pgsql) +## $2 = Component key in upper case (ex: PGSQL) +## $3 = Component name (ex: gb.db.postgresql) +## $4 = Sub-directory name +## $5 = pkg-config module(s) name(s) with optional required version(s) +## $6 = Warning message (optional) +## +## => defines HAVE_*_COMPONENT (to know if you can compile the component) +## *_INC (for the compiler) and *_LIB / *_LDFLAGS (for the linker) +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_COMPONENT_PKG_CONFIG], +[ + AC_REQUIRE([PKG_PROG_PKG_CONFIG]) + AC_ARG_ENABLE( + $1, + [ --enable-$1 enable $3 (default: yes)], + gb_enable_$1=$enableval, + gb_enable_$1=yes + ) + + dnl AC_ARG_WITH($1-includes, + dnl [ --with-$1-includes where the $3 headers are located. ], + dnl [ gb_inc_$1="$withval" ]) + + dnl AC_ARG_WITH($1-libraries, + dnl [ --with-$1-libraries where the $3 libraries are located. ], + dnl [ gb_lib_$1="$withval" ]) + + cp warnings.log warnings.log.before + + have_$1=no + + if test "$gb_enable_$1" = "yes" && test ! -e DISABLED && test ! -e DISABLED.$3; then + + AC_MSG_CHECKING(for $3 component with pkg-config) + + gb_inc_$1="" + gb_lib_$1="" + gb_ldflags_$1="" + have_$1=yes + gb_testval="" + + $PKG_CONFIG --silence-errors --exists $5 + if test $? -eq "0"; then + + ## Checking for headers + + $2_INC="`$PKG_CONFIG --cflags $5`" + + ## Checking for libraries + + $2_LIB="`$PKG_CONFIG --libs-only-l $5`" + $2_LDFLAGS="`$PKG_CONFIG --libs-only-L $5` `$PKG_CONFIG --libs-only-other $5`" + $2_DIR=$4 + + else + + have_$1=no + + fi + + fi + + if test "$have_$1" = "no"; then + + if test "$gb_in_component_search" != "yes"; then + touch DISABLED.$3 + if test "$gb_enable_$1" = "yes"; then + touch FAILED + fi + fi + + if test "$gb_enable_$1" = "yes"; then + AC_MSG_RESULT(failed) + fi + + for pkgcmp in $5 + do + + $PKG_CONFIG --silence-errors --exists $pkgcmp + if test $? -eq "1"; then + GB_WARNING([Unable to met pkg-config requirement: $pkgcmp]) + fi + + done + + else + + AC_DEFINE(HAVE_$2_COMPONENT, 1, [Have $3 component]) + + AC_MSG_RESULT(OK) + + fi + + if test "$have_$1" = "no"; then + + $2_INC="" + $2_LIB="" + $2_LDFLAGS="" + $2_DIR="" + if test "$gb_in_component_search" != "yes"; then + if test x"$6" = x; then + GB_MESSAGE([$3 is disabled]) + else + GB_MESSAGE([$6]) + fi + fi + + fi + + AC_SUBST($2_INC) + AC_SUBST($2_LIB) + AC_SUBST($2_LDFLAGS) + AC_SUBST($2_DIR) +]) + + +## --------------------------------------------------------------------------- +## GB_COMPONENT_PKG_CONFIG_AGAIN +## Try again a component detection macro based on pkg-config +## +## $1 = Component key in lower case (ex: pgsql) +## $2 = Component key in upper case (ex: PGSQL) +## $3 = Component name (ex: gb.db.postgresql) +## $4 = Sub-directory name +## $5 = pkg-config module(s) name(s) with optional required version(s) +## $6 = Try again message +## $7 = Warning message (optional) +## +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_COMPONENT_PKG_CONFIG_AGAIN], +[ + if test "$have_$1" != "yes"; then + + AC_MSG_WARN([$6...]) + rm DISABLED.$3 FAILED; + cp warnings.log.before warnings.log; + + GB_COMPONENT_PKG_CONFIG($1, $2, $3, $4, $5, $7) + + fi +]) + + +## --------------------------------------------------------------------------- +## GB_COMPONENT +## Component detection macro that searches for files +## +## $1 = Component key in lower case (ex: postgresql) +## $2 = Component key in upper case (ex: POSTGRESQL) +## $3 = Component name (ex: gb.db.postgresql) +## $4 = Sub-directory name +## $5 = How to get include path (must return it in gb_val) +## $6 = How to get library path (must return it in gb_val) +## $7 = Libraries +## $8 = Compiler flags (optional) +## $9 = Warning message (optional) +## +## => defines HAVE_*_COMPONENT (to know if you can compile the component) +## *_INC (for the compiler) and *_LIB (for the linker) +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_COMPONENT], +[ + AC_ARG_ENABLE( + $1, + [ --enable-$1 enable $3 (default: yes)], + gb_enable_$1=$enableval, + gb_enable_$1=yes + ) + + gb_inc_$1=no + gb_lib_$1=no + + if test "$gb_enable_$1" = "yes" && test ! -e DISABLED && test ! -e DISABLED.$3; then + + ## Checking for headers + + AC_MSG_CHECKING(for $3 headers) + + AC_ARG_WITH($1-includes, + [ --with-$1-includes where the $3 headers are located. ], + [ gb_inc_$1="$withval" ]) + + AC_CACHE_VAL(gb_cv_header_$1, [ + + if test "$gb_inc_$1" = no; then + gb_val="" + $5 + gb_inc_$1=$gb_val + fi + + gb_cv_header_$1=$gb_inc_$1 + ]) + + AC_MSG_RESULT([$gb_cv_header_$1]) + + if test "$gb_cv_header_$1" = "no"; then + for gb_result in $gb_file_list; do + GB_WARNING([Unable to find file: $gb_result]) + done + fi + + $2_INC="" + + for gb_dir in $gb_cv_header_$1; do + if test "$gb_dir" != "/usr/include"; then + if test "$gb_dir" != "/usr/include/"; then + $2_INC="$$2_INC -I$gb_dir" + fi + fi + done + + if test "x$8" != "x"; then + $2_INC="$$2_INC $8" + fi + + if test "$gb_cv_header_$1" = no; then + have_inc_$1="no" + $2_INC="" + else + have_inc_$1="yes" + fi + + ## Checking for libraries + + AC_MSG_CHECKING(for $3 libraries) + + AC_ARG_WITH($1-libraries, + [ --with-$1-libraries where the $3 libraries are located. ], + [ gb_lib_$1="$withval" ]) + + AC_CACHE_VAL(gb_cv_lib_$1, [ + + if test "$gb_lib_$1" = no; then + gb_val="" + $6 + gb_lib_$1=$gb_val + fi + + gb_cv_lib_$1=$gb_lib_$1 + ]) + + if test "$gb_cv_lib_$1" = no; then + have_lib_$1="no" + else + have_lib_$1="yes" + fi + + AC_MSG_RESULT([$gb_cv_lib_$1]) + + if test "$gb_cv_lib_$1" = "no"; then + for gb_result in $gb_file_list; do + GB_WARNING([Unable to find file: $gb_result]) + done + fi + + $2_LIB="" + $2_LDFLAGS="" + $2_PATH="" + + for gb_dir in $gb_cv_lib_$1; do + if test "x$$2_PATH" = "x"; then + $2_PATH="$gb_dir/.." + fi + if test "$gb_dir" != "/lib" && test "$gb_dir" != "/lib/"&& test "$gb_dir" != "/usr/lib" && test "$gb_dir" != "/usr/lib/"; then + $2_LDFLAGS="$$2_LDFLAGS -L$gb_dir"; + fi + done + + $2_LIB="$$2_LIB $7" + + fi + + if test "$have_inc_$1" = "yes" && test "$have_lib_$1" = "yes"; then + + have_$1=yes + $2_DIR=$4 + AC_DEFINE(HAVE_$2_COMPONENT, 1, Have $3) + + else + + have_$1=no + touch DISABLED.$3 + if test "$gb_enable_$1" = "yes"; then + touch FAILED + fi + + fi + + if test "$have_$1" = "no"; then + + $2_INC="" + $2_LIB="" + $2_DIR="" + $2_LDFLAGS="" + if test x"$9" = x; then + GB_WARNING([$3 is disabled]) + else + GB_WARNING([$9]) + fi + + fi + + AC_SUBST($2_INC) + AC_SUBST($2_LIB) + AC_SUBST($2_LDFLAGS) + AC_SUBST($2_DIR) + AC_SUBST($2_PATH) + +]) + + +## --------------------------------------------------------------------------- +## GB_COMPONENT_SEARCH +## Component detection macro that uses GB_COMPONENT_PKG_CONFIG first, and +## then GB_COMPONENT. +## +## $1 = Component key in lower case (ex: postgresql) +## $2 = Component key in upper case (ex: POSTGRESQL) +## $3 = Component name (ex: PostgreSQL) +## $4 = Sub-directory name +## $5 = pkg-config module name (optional) +## $6 = How to get include path (must return it in gb_val) +## $7 = How to get library path (must return it in gb_val) +## $8 = Libraries +## $9 = Compiler flags (optional) +## $10 = Warning message (optional) +## +## => defines HAVE_*_COMPONENT (to know if you can compile the component) +## *_INC (for the compiler) and *_LIB (for the linker) +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_COMPONENT_SEARCH], +[ +gb_in_component_search=yes + GB_COMPONENT_PKG_CONFIG( + $1, + $2, + $3, + $4, + $5, + $10 + ) +gb_in_component_search=no + if test -z "${$2_LIB}"; then + GB_COMPONENT( + $1, + $2, + $3, + $4, + $6, + $7, + $8, + $9, + $10 + ) + fi +]) + + +## --------------------------------------------------------------------------- +## GB_COMPONENT_SEARCH_BOTH +## Component detection macro that uses GB_COMPONENT_PKG_CONFIG and +## GB_COMPONENT. both having to succeed +## +## $1 = Component key in lower case (ex: postgresql) +## $2 = Component key in upper case (ex: POSTGRESQL) +## $3 = Component name (ex: gb.db.postgresql) +## $4 = Sub-directory name +## $5 = pkg-config module name (optional) +## $6 = How to get include path (must return it in gb_val) +## $7 = How to get library path (must return it in gb_val) +## $8 = Libraries +## $9 = Compiler flags (optional) +## $10 = Warning message (optional) +## +## => defines HAVE_*_COMPONENT (to know if you can compile the component) +## *_INC (for the compiler) and *_LIB (for the linker) +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_COMPONENT_SEARCH_BOTH], +[ + GB_COMPONENT_PKG_CONFIG( + $1, + $2, + $3, + $4, + $5, + $10 + ) + if test ! -e DISABLED.$3; then + GB_COMPONENT( + $1, + $2, + $3, + $4, + $6, + $7, + $8, + $9, + $10 + ) + fi +]) + + +## --------------------------------------------------------------------------- +## GB_FIND_QT_MOC +## Find QT moc compiler +## +## $1 = QT version +## $2 = components to disable +## +## Returns a path list in $gb_val +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_FIND_QT_MOC], +[ + gb_path_qt_moc=no + if test x$1 = x; then + gb_qt_version=3 + else + gb_qt_version=$1 + fi + + AC_ARG_WITH(moc, + [ --with-moc The path to the QT moc compiler. ], + [ gb_path_qt_moc="$withval" ]) + + AC_MSG_CHECKING(for QT meta-object compiler) + + AC_CACHE_VAL(gb_cv_path_qt_moc, [ + + gb_val="" + if test "$gb_path_qt_moc" = no; then + + for gb_dir in $QTDIR /usr/lib/qt$gb_qt_version /usr/lib/qt/$gb_qt_version /usr/local/lib/qt$gb_qt_version /usr/local/lib/qt/$gb_qt_version /usr/local/qt$gb_qt_version /usr/local/qt/$gb_qt_version /usr/share/qt$gb_qt_version /usr/qt/$gb_qt_version /usr/pkg/qt$gb_qt_version /usr/pkg /usr; do + + gb_dir=$gb_dir/bin + + if test -r "$gb_dir/moc"; then + if test "x`$gb_dir/moc -v 2>&1 | grep " $gb_qt_version\."`" != x; then + gb_val=$gb_dir/moc + break + fi + fi + + done + + gb_path_qt_moc=$gb_val + fi + + gb_cv_path_qt_moc=$gb_path_qt_moc + ]) + + AC_MSG_RESULT([$gb_cv_path_qt_moc]) + + if test x"$gb_cv_path_qt_moc" = x; then + GB_WARNING([QT moc compiler not found. Try --with-moc option.]) + MOC="" + touch DISABLED + else + MOC=$gb_cv_path_qt_moc + fi + + AC_SUBST(MOC) +]) + +## --------------------------------------------------------------------------- +## GB_CHECK_XWINDOW +## Check the X-Window system installation +## +## $1 = components to disable +## --------------------------------------------------------------------------- + +AC_DEFUN([GB_CHECK_XWINDOW], +[ + AC_PATH_XTRA + + if test x"$have_x" = xyes; then + if test -z `echo $X_LIBS | grep "\-lX11"`; then + X_LIBS="$X_LIBS -lX11" + fi + if test -z `echo $X_LIBS | grep "\-lXext"`; then + X_LIBS="$X_LIBS -lXext" + fi + X_LIBS="$X_PRE_LIBS $X_LIBS" + else + touch DISABLED + fi + +]) + +## --------------------------------------------------------------------------- +## Some macros +## --------------------------------------------------------------------------- + +dnl Like AC_CHECK_HEADER, but it uses the already-computed -I directories. + +AC_DEFUN([AC_CHECK_X_HEADER], [ + ac_save_CPPFLAGS="$CPPFLAGS" + if test \! -z "$includedir" ; then + CPPFLAGS="$CPPFLAGS -I$includedir" + fi + CPPFLAGS="$CPPFLAGS $X_CFLAGS" + AC_CHECK_HEADER([$1],[$2],[$3]) + CPPFLAGS="$ac_save_CPPFLAGS" +]) + +dnl Like AC_CHECK_LIB, but it used the -L dirs set up by the X checks. + +AC_DEFUN([AC_CHECK_X_LIB], [ + ac_save_CPPFLAGS="$CPPFLAGS" + ac_save_LDFLAGS="$LDFLAGS" + + if test \! -z "$includedir" ; then + CPPFLAGS="$CPPFLAGS -I$includedir" + fi + + dnl note: $X_CFLAGS includes $x_includes + CPPFLAGS="$CPPFLAGS $X_CFLAGS" + + if test \! -z "$libdir" ; then + LDFLAGS="$LDFLAGS -L$libdir" + fi + + dnl note: $X_LIBS includes $x_libraries + + LDFLAGS="$LDFLAGS $X_LIBS" + AC_CHECK_LIB([$1], [$2], [$3], [$4], [$5]) + CPPFLAGS="$ac_save_CPPFLAGS" + LDFLAGS="$ac_save_LDFLAGS"] +) + +dnl Check if it is possible to turn off run time type information (RTTI) +AC_DEFUN([AC_PROG_CXX_FNO_RTTI], +[AC_CACHE_CHECK(whether ${CXX-g++} accepts -fno-rtti, ac_cv_prog_cxx_fno_rtti, +[echo 'void f(){}' > conftest.cc +if test -z "`${CXX-g++} -fno-rtti -c conftest.cc 2>&1`"; then + ac_cv_prog_cxx_fno_rtti=yes + CXXFLAGS="${CXXFLAGS} -fno-rtti" +else + ac_cv_prog_cxx_fno_rtti=no +fi +rm -f conftest* +])]) + +dnl Check if the type socklen_t is defined anywhere +AC_DEFUN([AC_C_SOCKLEN_T], +[AC_CACHE_CHECK(for socklen_t, ac_cv_c_socklen_t, +[ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include +#include +]], [[ +socklen_t foo; +]])],[ + ac_cv_c_socklen_t=yes +],[ + ac_cv_c_socklen_t=no + AC_DEFINE(socklen_t,int) +])])]) + +dnl Check for sys_errlist[] and sys_nerr, check for declaration +dnl Check nicked from aclocal.m4 from GNU bash 2.01 +AC_DEFUN([AC_SYS_ERRLIST], +[AC_MSG_CHECKING([for sys_errlist and sys_nerr]) +AC_CACHE_VAL(ac_cv_sys_errlist, +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[extern char *sys_errlist[]; + extern int sys_nerr; + char *msg = sys_errlist[sys_nerr - 1];]])],[ac_cv_sys_errlist=yes],[ac_cv_sys_errlist=no])])dnl +AC_MSG_RESULT($ac_cv_sys_errlist) +if test $ac_cv_sys_errlist = yes; then +AC_DEFINE(HAVE_SYS_ERRLIST) +fi +]) + +dnl @synopsis AX_CFLAGS_GCC_OPTION (optionflag [,[shellvar][,[A][,[NA]]]) +dnl +dnl AX_CFLAGS_GCC_OPTION(-fvomit-frame) would show a message as like +dnl "checking CFLAGS for gcc -fvomit-frame ... yes" and adds the +dnl optionflag to CFLAGS if it is understood. You can override the +dnl shellvar-default of CFLAGS of course. The order of arguments stems +dnl from the explicit macros like AX_CFLAGS_WARN_ALL. +dnl +dnl The cousin AX_CXXFLAGS_GCC_OPTION would check for an option to add +dnl to CXXFLAGS - and it uses the autoconf setup for C++ instead of C +dnl (since it is possible to use different compilers for C and C++). +dnl +dnl The macro is a lot simpler than any special AX_CFLAGS_* macro (or +dnl ac_cxx_rtti.m4 macro) but allows to check for arbitrary options. +dnl However, if you use this macro in a few places, it would be great +dnl if you would make up a new function-macro and submit it to the +dnl ac-archive. +dnl +dnl - $1 option-to-check-for : required ("-option" as non-value) +dnl - $2 shell-variable-to-add-to : CFLAGS (or CXXFLAGS in the other case) +dnl - $3 action-if-found : add value to shellvariable +dnl - $4 action-if-not-found : nothing +dnl +dnl note: in earlier versions, $1-$2 were swapped. We try to detect the +dnl situation and accept a $2=~/-/ as being the old +dnl option-to-check-for. +dnl +dnl also: there are other variants that emerged from the original macro +dnl variant which did just test an option to be possibly added. +dnl However, some compilers accept an option silently, or possibly for +dnl just another option that was not intended. Therefore, we have to do +dnl a generic test for a compiler family. For gcc we check "-pedantic" +dnl being accepted which is also understood by compilers who just want +dnl to be compatible with gcc even when not being made from gcc +dnl sources. +dnl +dnl see also: +dnl +dnl AX_CFLAGS_SUN_OPTION AX_CFLAGS_HPUX_OPTION +dnl AX_CFLAGS_AIX_OPTION AX_CFLAGS_IRIX_OPTION +dnl +dnl @category C +dnl @author Guido Draheim +dnl @version 2003-11-04 +dnl @license GPLWithACException + +AC_DEFUN([AX_CFLAGS_GCC_OPTION_OLD], [dnl +AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl +AS_VAR_PUSHDEF([VAR],[ac_cv_cflags_gcc_option_$2])dnl +AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for gcc m4_ifval($2,$2,-option)], +VAR,[VAR="no, unknown" + AC_LANG_SAVE + AC_LANG([C]) + ac_save_[]FLAGS="$[]FLAGS" +for ac_arg dnl +in "-pedantic % m4_ifval($2,$2,-option)" dnl GCC + # +do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break],[]) +done + FLAGS="$ac_save_[]FLAGS" + AC_LANG_RESTORE +]) +case ".$VAR" in + .ok|.ok,*) m4_ifvaln($3,$3) ;; + .|.no|.no,*) m4_ifvaln($4,$4) ;; + *) m4_ifvaln($3,$3,[ + if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null + then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR]) + else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"]) + m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR" + fi ]) ;; +esac +AS_VAR_POPDEF([VAR])dnl +AS_VAR_POPDEF([FLAGS])dnl +]) + + +dnl the only difference - the LANG selection... and the default FLAGS + +AC_DEFUN([AX_CXXFLAGS_GCC_OPTION_OLD], [dnl +AS_VAR_PUSHDEF([FLAGS],[CXXFLAGS])dnl +AS_VAR_PUSHDEF([VAR],[ac_cv_cxxflags_gcc_option_$2])dnl +AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for gcc m4_ifval($2,$2,-option)], +VAR,[VAR="no, unknown" + AC_LANG_SAVE + AC_LANG_CXX + ac_save_[]FLAGS="$[]FLAGS" +for ac_arg dnl +in "-pedantic % m4_ifval($2,$2,-option)" dnl GCC + # +do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break],[]) +done + FLAGS="$ac_save_[]FLAGS" + AC_LANG_RESTORE +]) +case ".$VAR" in + .ok|.ok,*) m4_ifvaln($3,$3) ;; + .|.no|.no,*) m4_ifvaln($4,$4) ;; + *) m4_ifvaln($3,$3,[ + if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null + then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR]) + else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"]) + m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR" + fi ]) ;; +esac +AS_VAR_POPDEF([VAR])dnl +AS_VAR_POPDEF([FLAGS])dnl +]) + +dnl ------------------------------------------------------------------------- + +AC_DEFUN([AX_CFLAGS_GCC_OPTION_NEW], [dnl +AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl +AS_VAR_PUSHDEF([VAR],[ac_cv_cflags_gcc_option_$1])dnl +AC_CACHE_CHECK([m4_ifval($2,$2,FLAGS) for gcc m4_ifval($1,$1,-option)], +VAR,[VAR="no, unknown" + AC_LANG_SAVE + AC_LANG([C]) + ac_save_[]FLAGS="$[]FLAGS" +for ac_arg dnl +in "-pedantic % m4_ifval($1,$1,-option)" dnl GCC + # +do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break],[]) +done + FLAGS="$ac_save_[]FLAGS" + AC_LANG_RESTORE +]) +case ".$VAR" in + .ok|.ok,*) m4_ifvaln($3,$3) ;; + .|.no|.no,*) m4_ifvaln($4,$4) ;; + *) m4_ifvaln($3,$3,[ + if echo " $[]m4_ifval($2,$2,FLAGS) " | grep " $VAR " 2>&1 >/dev/null + then AC_RUN_LOG([: m4_ifval($2,$2,FLAGS) does contain $VAR]) + else AC_RUN_LOG([: m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) $VAR"]) + m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) $VAR" + fi ]) ;; +esac +AS_VAR_POPDEF([VAR])dnl +AS_VAR_POPDEF([FLAGS])dnl +]) + + +dnl the only difference - the LANG selection... and the default FLAGS + +AC_DEFUN([AX_CXXFLAGS_GCC_OPTION_NEW], [dnl +AS_VAR_PUSHDEF([FLAGS],[CXXFLAGS])dnl +AS_VAR_PUSHDEF([VAR],[ac_cv_cxxflags_gcc_option_$1])dnl +AC_CACHE_CHECK([m4_ifval($2,$2,FLAGS) for gcc m4_ifval($1,$1,-option)], +VAR,[VAR="no, unknown" + AC_LANG_SAVE + AC_LANG_CXX + ac_save_[]FLAGS="$[]FLAGS" +for ac_arg dnl +in "-pedantic % m4_ifval($1,$1,-option)" dnl GCC + # +do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break],[]) +done + FLAGS="$ac_save_[]FLAGS" + AC_LANG_RESTORE +]) +case ".$VAR" in + .ok|.ok,*) m4_ifvaln($3,$3) ;; + .|.no|.no,*) m4_ifvaln($4,$4) ;; + *) m4_ifvaln($3,$3,[ + if echo " $[]m4_ifval($2,$2,FLAGS) " | grep " $VAR " 2>&1 >/dev/null + then AC_RUN_LOG([: m4_ifval($2,$2,FLAGS) does contain $VAR]) + else AC_RUN_LOG([: m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) $VAR"]) + m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) $VAR" + fi ]) ;; +esac +AS_VAR_POPDEF([VAR])dnl +AS_VAR_POPDEF([FLAGS])dnl +]) + +AC_DEFUN([AX_CFLAGS_GCC_OPTION],[ifelse(m4_bregexp([$2],[-]),-1, +[AX_CFLAGS_GCC_OPTION_NEW($@)],[AX_CFLAGS_GCC_OPTION_OLD($@)])]) + +AC_DEFUN([AX_CXXFLAGS_GCC_OPTION],[ifelse(m4_bregexp([$2],[-]),-1, +[AX_CXXFLAGS_GCC_OPTION_NEW($@)],[AX_CXXFLAGS_GCC_OPTION_OLD($@)])]) + + diff --git a/app/AUTHORS b/app/AUTHORS new file mode 100644 index 00000000..e69de29b diff --git a/app/COPYING b/app/COPYING new file mode 120000 index 00000000..012065c8 --- /dev/null +++ b/app/COPYING @@ -0,0 +1 @@ +../COPYING \ No newline at end of file diff --git a/app/ChangeLog b/app/ChangeLog new file mode 100644 index 00000000..e69de29b diff --git a/app/INSTALL b/app/INSTALL new file mode 100644 index 00000000..64d33306 --- /dev/null +++ b/app/INSTALL @@ -0,0 +1,231 @@ + +REQUIREMENTS +============ + +Read the IMPORTANT NOTES in the README file. + + +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. + + +Gambas Options +============== + + --with-intl-includes where the internationalization headers are located. + --with-intl-libraries where the internationalization libraries are located. + --with-qt-includes where the QT component headers are located. + --with-qt-libraries where the QT component libraries are located. + --with-kde-includes where the KDE 3.x component headers are located. + --with-kde-libraries where the KDE 3.x component libraries are located. + --with-net-includes where the Networking component headers are located. + --with-net-libraries where the Networking component libraries are located. + --with-postgresql-includes where the PostgreSQL driver headers are located. + --with-postgresql-libraries where the PostgreSQL driver libraries are located. + --with-mysql-includes where the MySQL driver headers are located. + --with-mysql-libraries where the MySQL driver libraries are located. + --with-sdl-includes where the SDL component headers are located. + --with-sdl-libraries where the SDL component libraries are located. + +--disable-debug Remove debug information from binary files. + +--enable-optimization Enable optimization during compilation. + +--disable-preloading Disable the preloading of components. + +--disable-qt-component Do not compile the QT component. + + +Component options +================= + +XXX is a component or library name: + + intl internationalization library + kde KDE component + mysql MySQL driver + net Network component + postgresql PostgreSQL driver + qt QT component + sdl SDL component + +--with-XXX-libraries Where the libraries are located. + +--with-XXX-includes Where the headers are located. + +Use these options if the configure script cannot detect the +location of librairies and/or headers. + +The components or libraries that are not detected are automatically disables, +and then not compiled. + +That's all ! Good luck... diff --git a/app/Makefile.am b/app/Makefile.am new file mode 100644 index 00000000..480dee47 --- /dev/null +++ b/app/Makefile.am @@ -0,0 +1,86 @@ +EXTRA_DIST = reconf src spec mime desktop template +SUBDIRS = . man + +install-exec-local: + @if test "x$(ROOT)" != "x"; then \ + echo "[Installing with ROOT=$(ROOT)]"; \ + fi + @if test "x$(DESTDIR)" != "x"; then \ + echo "[Installing with DESTDIR=$(DESTDIR)]"; \ + ROOT=$DESTDIR; \ + fi + + @echo "Installing the development environment..." + @(cd $(srcdir)/src; d=`pwd`; \ + for p in `cat INSTALL`; do \ + echo "Compiling $$p..."; cd $$d/$$p; \ + $(DESTDIR)$(bindir)/gbc$(GAMBAS_VERSION) -agt -r $(DESTDIR)$(prefix); \ + if test $$? -eq 0; then \ + $(DESTDIR)$(bindir)/gba$(GAMBAS_VERSION); \ + rm -rf .gambas; \ + echo "Installing $$p..."; \ + $(INSTALL) $$p.gambas $(DESTDIR)$(bindir); \ + else \ + echo "|| Unable to compile $$p" >> ../../../warnings.log; \ + fi \ + done) + ##@if test "$(bindir)" != "$(ROOT)/usr/bin" && test "$(bindir)" != "$(ROOT)/usr/bin/"; then + @$(LN_S) -f gambas$(GAMBAS_VERSION).gambas $(DESTDIR)$(bindir)/gambas$(GAMBAS_VERSION) || true + @if test x"$(XDG_UTILS)" != x; then \ + echo "Installing IDE application icon..."; \ + xdg-icon-resource install --novendor --context apps --size 256 $(srcdir)/desktop/gambas3.png gambas3; \ + xdg-icon-resource install --novendor --context apps --size 48 $(srcdir)/desktop/gambas3-48.png gambas3; \ + echo "Installing IDE application menu..."; \ + $(INSTALL) -d $(DESTDIR)$(datarootdir)/desktop-directories; \ + xdg-desktop-menu install --novendor $(srcdir)/desktop/gambas3.desktop; \ + rmdir $(DESTDIR)$(datarootdir)/desktop-directories >/dev/null 2>&1 || true; \ + fi + + @echo "Installing the scripter..." + @$(LN_S) -f gbs$(GAMBAS_VERSION).gambas $(DESTDIR)$(bindir)/gbs$(GAMBAS_VERSION) || true + @$(LN_S) -f gbs$(GAMBAS_VERSION).gambas $(DESTDIR)$(bindir)/gbw$(GAMBAS_VERSION) || true + @if test x"$(XDG_UTILS)" != x; then \ + echo "Registering Gambas script mimetype..."; \ + xdg-icon-resource install --context mimetypes --size 256 $(srcdir)/mime/application-x-gambasscript.png application-x-gambasscript; \ + xdg-icon-resource install --context mimetypes --size 48 $(srcdir)/mime/application-x-gambasscript-48.png application-x-gambasscript; \ + xdg-mime install $(srcdir)/mime/application-x-gambasscript.xml; \ + echo "Registering Gambas server page mimetype..."; \ + xdg-icon-resource install --context mimetypes --size 256 $(srcdir)/mime/application-x-gambasserverpage.png application-x-gambasserverpage; \ + xdg-icon-resource install --context mimetypes --size 48 $(srcdir)/mime/application-x-gambasserverpage-48.png application-x-gambasserverpage; \ + xdg-mime install $(srcdir)/mime/application-x-gambasserverpage.xml; \ + fi + + @echo "Installing the Gambas appdata file..." + @$(INSTALL) -d $(DESTDIR)$(datarootdir)/appdata; + @$(INSTALL) $(srcdir)/desktop/gambas3.appdata.xml $(DESTDIR)$(datarootdir)/appdata; + @$(INSTALL) -d $(DESTDIR)$(datarootdir)/metainfo; + @$(INSTALL) $(srcdir)/desktop/gambas3.appdata.xml $(DESTDIR)$(datarootdir)/metainfo; + + @echo "Installing the Gambas template projects..." + @$(INSTALL) -d $(DESTDIR)$(gbdatadir)/template; + @cp -R $(srcdir)/template/* $(DESTDIR)$(gbdatadir)/template; + +uninstall-local: + @echo "Uninstalling the development environment..." + @rm -f $(DESTDIR)$(bindir)/gambas$(GAMBAS_VERSION) + @rm -f $(DESTDIR)$(bindir)/gbs$(GAMBAS_VERSION) + @rm -f $(DESTDIR)$(bindir)/gbw$(GAMBAS_VERSION) + @(cd $(srcdir)/src; for p in `cat INSTALL`; do rm -f $(DESTDIR)$(bindir)/$$p.gambas; done) + @if test x"$(XDG_UTILS)" != x; then \ + xdg-mime uninstall $(srcdir)/mime/application-x-gambasscript.xml; \ + xdg-mime uninstall $(srcdir)/mime/application-x-gambasserverpage.xml; \ + xdg-icon-resource uninstall --context mimetypes --size 256 application-x-gambasscript; \ + xdg-icon-resource uninstall --context mimetypes --size 256 application-x-gambasserverpage; \ + xdg-icon-resource uninstall --context apps --size 256 gambas3; \ + fi + @rm -rf $(DESTDIR)$(datarootdir)/metainfo/gambas3.appdata.xml + @rm -rf $(DESTDIR)$(datarootdir)/appdata/gambas3.appdata.xml + @rm -rf $(DESTDIR)$(gbdatadir)/template + @rmdir $(DESTDIR)$(datarootdir)/metainfo >/dev/null 2>&1 || true + @rmdir $(DESTDIR)$(datarootdir)/appdata >/dev/null 2>&1 || true + @rmdir $(DESTDIR)$(gbdatadir) >/dev/null 2>&1 || true + +dist-hook: + @(cd $(distdir)/src; \ + rm -rf `find . -name ".gambas" -o -name ".action" -o -name ".lock" -o -name ".xvpics" -o -name "*~" -o -name "*.out" -o -name "*.pot" -o -name "*.gambas" -o -name "core*" -o -name ".kdbg*" -o -name ".svn"`;) + diff --git a/app/NEWS b/app/NEWS new file mode 100644 index 00000000..e69de29b diff --git a/app/README b/app/README new file mode 100644 index 00000000..e69de29b diff --git a/app/TODO b/app/TODO new file mode 100644 index 00000000..e69de29b diff --git a/app/acinclude.m4 b/app/acinclude.m4 new file mode 120000 index 00000000..d84c32a3 --- /dev/null +++ b/app/acinclude.m4 @@ -0,0 +1 @@ +../acinclude.m4 \ No newline at end of file diff --git a/app/configure.ac b/app/configure.ac new file mode 100644 index 00000000..d817617c --- /dev/null +++ b/app/configure.ac @@ -0,0 +1,21 @@ +dnl ---- configure.ac for Gambas development environment + +dnl ---- Initialization + +m4_include([../version.m4]) +AC_INIT([gambas3-ide],[GB_VERSION],[GB_MAIL],[],[GB_URL]) +GB_INIT_SHORT(ide) + +dnl ---- Check for Portland scripts + +AC_CHECK_PROGS(XDG_UTILS, [xdg-mime xdg-icon-resource], []) + +dnl ---- Create makefiles + +AC_CONFIG_FILES([\ +Makefile \ +man/Makefile \ +]) +AC_OUTPUT + +GB_PRINT_MESSAGES diff --git a/app/desktop/gambas3-48.png b/app/desktop/gambas3-48.png new file mode 100644 index 0000000000000000000000000000000000000000..8aac3aeb3d9220b590f1ea2c4972ffa5e275c387 GIT binary patch literal 1864 zcmX9;dpy(o8=tIlDP1|PM?*gwBArvyi8ASANE$^_aY_lv?I^L&ccw+mW${BPcgvBI zOA8?@xg1ToM4QW8Hbc?ITzByszt8LSJkR^{yx#Bk^ZfC7eI7VFo!qLVsRV<;wqosU zak9F9EfnNs*=s=YwX7%x*_{uC!Bm>oLhirDDq1ku2DY=K>xq*=j$@J9JfJs@*W*Q~ zuYom;kO3ZEhlfY}|0>I?Hw|R{ae!Eb!PaRAnS=vr@c@FmE|JX{kJ9C?a|XlKOk}DF zybky7xZF~PF@#=f~dcts9fNY13Y}7IBwJ)E`D8z z*FzC%P=x9U=ogvoI<7$yYLHNEByyxBWt-6jytgjj2x)F@l~6F4N5NNkenrZKgmss4$0bT^m3xFSBDOm~0Mx(|AN z7sz>Z{X8#bz zRey`E?px+`@nTGTq5Ho$Y=-X15o(@K)nP`R!}kb z=K^D7<`_i%`68GEZW$431Pd$UKz~InNvdNBmqb?zK4s7c^IL~!=9h7q&BA4oL?X?6 zKX{bfc&Dt(KCOw;&_4q9rquUW0c;z4dYrBcuAw(O7W>qQJq5`B5JqYId) z1Mlz`U8(Q-OFKAz)DCmf+Yks){~evA9Dm)-GlMFh17{A<7jnK zq>BJ^5Y0x<4SmX5O!uzxD!Ne+UU}%8QR0ii9;cV*90&LN`9Fj2MBemRd>M1;w2wlV z*O&ZD`-IKu*R0j1vwlw>%gT)L==h-Q|G)7}F(LmJfd@ z{%Tfg{_2*Q`K9VCfGuEZX5zORTL6izNv3MsLP3;r)vLk4X!S*{$@>F5 zNjY}gt!y(x@}%!dfj{clkgmlC@f!?LJwTCb!AY3d8A-^3jGVWi{13khz3Le(P2K*! zRY}1hBxlzA;l%`bYxA_=4F}<>VL?SRrj>4p&ZlRtV3LM$SU5;1?%}qS5o|Y8wbXv7 z5y$P*NsvmJdKT3<(|p&?X$}7;hJyDr+?|LCC7M2UU(5{SQ7lRCPI;@c@~PBEIrB_1T*<&a`}0(EJ3%4W!B{v_`HNhz;wFiMZo|)w*2Hl6;pC&l zy?y14*%~U1NUNnqw$;ZCo11kAc2@AY4VS#4kJvXL16a3hGSqgLbL0UQxk7YEvx(^v zp=qZao@g8FjckwzEgwZnHbEw%%KQ!c>mT)cZKdgqE&bD%B+Ac9akh*Y8RIPSTV2}u z?t%d?+?OW;)r*OVqPE0jQxCLTE7FwWnUJe%iMoD&BK|U{-4+w(dgfS<2Ki zJs;{>wVKAFgOg&b$2evCZmi(9Pz0&1A|+7AtjN$bx6|yRwziGhtKIfK4tK*)2`BDO zsUWVrqf%WOYDn(nBi;0S``(8CdD4(~iuqmtMzN9O)&_bVRc)P{FCv077Oo2b4lYw9%3B+Wj=blDAkCUh6G z`Dp3alCS<1`S}M{uZhLd(#L_BDewE$rqvTDTJGg7;W}FlSZc + + gambas3.desktop + CC0-1.0 + GPL-2.0+ + IDE for the Gambas language + +

Gambas is a free development environment and a full powerful development platform based on a Basic interpreter with object extensions, as easy as Visual Basic. This application provides a graphical IDE, with a database manager, an image editor, and a report designer, to assist in the creation of programs with Gambas.

+
+ + + http://gambas.sourceforge.net/2014-07-26.png + The Gambas 3 development environment + + + Benoît Minisini + g4mba5@gmail.com + gambas3.desktop + http://gambas.sourceforge.net/ + http://gambaswiki.org/bugtracker + http://gambas.sourceforge.net/ + http://gambas.sourceforge.net/ + + basic + interpreter + visual + graphical + object language + development environment + +
diff --git a/app/desktop/gambas3.desktop b/app/desktop/gambas3.desktop new file mode 100644 index 00000000..075c2e0a --- /dev/null +++ b/app/desktop/gambas3.desktop @@ -0,0 +1,30 @@ +[Desktop Entry] +Name=Gambas 3 +Exec=gambas3 +GenericName=Gambas 3 IDE +GenericName[fr]=EDI Gambas 3 +GenericName[ru]=Gambas 3 IDE(ИСР) +Comment=Gambas3 Integrated Development Environment +Comment[fr]=Environnement de développement intégré Gambas 3 +Comment[ru]=Gambas 3 IDE(ИСР) - альтернатива для Visual Basic +Icon=gambas3 +Terminal=false +Type=Application +Categories=Development;IDE; +StartupNotify=true +Actions=QT4;QT5;GTK3 + +[Desktop Action QT4] +Name=Run with QT 4 +Name[fr]=Exécuter avec QT 4 +Exec=env GB_GUI=gb.qt4 gambas3 + +[Desktop Action QT5] +Name=Run with QT 5 +Name[fr]=Exécuter avec QT 5 +Exec=env GB_GUI=gb.qt5 gambas3 + +[Desktop Action GTK3] +Name=Run with GTK+ 3 +Name[fr]=Exécuter avec GTK+ 3 +Exec=env GB_GUI=gb.gtk3 gambas3 diff --git a/app/desktop/gambas3.png b/app/desktop/gambas3.png new file mode 100644 index 0000000000000000000000000000000000000000..420a1c77bc3700382f2e2b1e56f2a2c5cd7c7aef GIT binary patch literal 6834 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%0A$04Kd+QVy$i8=pj3(8eu?#$2BIH$xDwicnW zWlo7zU(p!~L`n!VOJUb(wR7GTlKT+cbBHgMv{`LD@em)e8!e7<4mJ2>uoCZ-RDnhb zvHlWTq0772Y%1|4c)`R05Xd<5S5m{& z*l+|V-)f0kobLog($YF5{ySBptEGm(h_9xmrr1v9@3Xn!*&8^PtbZ1BmgzHi zmVR^tmwngLJY*a}v_oK*+Vi59zu9*l(Uc&o0hLOZ_#A~@k2vYa_oQ%lKKCe&m;L=%!9 zp28qiwEJyf|Z7K^O}!d($rr>g?WfZta!G8GtoDiwUi9j97vD4mU8@ z4Hx2$SfguyxV7FMTLdLuu!wFbKE%MaRsWvK{?b$!j;?x@?4&IE$ox>qzpIUCAH=w4 zXv|g`?>-4mF|D`}H`nbq8S^MB4r$T;Nl`VKu)k*odWX9mR^oDa8I!Ft>%QxyQ(;x! zfU?_8e>JH;-|*A}IxzaN5%<2q^JDWcecQhwsz(QvnxJb)+TL__#97;>@mQGS>5$s>OdY|}~ z;!9E~ci?~y-*Kx>lhn06(jh5;Zb1bfVBYO^&}hvo!=kah-q_=*k@V_2NBwgLyTqlel`%EccNxx9llR9FR*-2a4N@WWzmF zS~#Kk!k{r`EIJpyx|gPoB)&TsZLjG4YLWTJ6D|^@QIiLb-^n{+j(?bUmFfHMsn0R2 zCX3GVH}+Veld^N1 zTtUbAoPVoJ&9()gSp%^ez}2eWAGCW6V4nt26~_DTMv=?eJFrcMpOM6#JP96OuIm(| zjd5-L;yF%HJhSzrn}8F0Q~zf(H~xT%;$0ileb^(iq<0ia4&J}&kWa<-~b3upe^gNi25b*8O^kY z+-U7-&7T;9QNhO{=Bup@bbHvEo4)DQKdX;frUcLAo(Ww0@leKwxm3xv@*Lry(JBcf z+7YYTxP^KRBYsoe(P>A`jn6(_>s9CC!Kis&dUu!v)x1&BT9OtjA1-RJQ^Zv;hc;FW z3!d+Z{dklNNDp+&i3h1FB#Cg%RLz|nAMr6Tdfc-6cBy7v+E9geQ#gl4A1W-v{~c+| zy)V$lYYVr`XJKf&5?YgUg%%w#OZ#mlD_g=6?hDE;Ol>-DqBHg;H}$fJ!DN}jYwbd` zDgCoU2g9HE2vZb!ESb3$M7?t2u<)Fv{fDvlIupt#m5$JIKxDr5a@ZH)44OUXmJf9Y z>*lo!j_E|ckj64^<qPiAE<5`2tGKtw9{dJ38Kl1 z@_9Z+ANXU*RPF@B6JeJ5y~wET5VVX*OPA*|byH7Vjm}{LcO69G?lFw8^#W z)t@MznBIVPuXd#&Ws=0dX=kh(t$yU8_x*szl-{6}_;4~2!NJ#wbzXn-#!R$AT1)!& zZm&x|&S*-oV+MK3I#5Mj*WWT``(#nrotz}@x3!HQj2CLz-uECGJy4ZNWP?7H9#XWHQ<7n-YFjoBP=uc}*o-KINpN_X zTce_(r1A~t{oy_BCD|Bt!1_8rW#OVT{{WM3vl%`Cerm6v?_}9|Ts|~8X$ver-u%bT o#=^oZ{)|gh@`FOsmg5b8XtUE8q@O9c`&$R8DQPK|DVPQPA7goEE&u=k literal 0 HcmV?d00001 diff --git a/app/desktop/gambas3.svg b/app/desktop/gambas3.svg new file mode 100644 index 00000000..9133c355 --- /dev/null +++ b/app/desktop/gambas3.svg @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + image/svg+xml + + + 15/09/2008 + + + Fabien Bodard + + + + + Common Creative + + + + + Fabien Bodard + + + gbFBodard150908 + http://gambas.sf.net + + + gambas3 logo basic shrimp + + + A pretty shrimp, a malicious new gambas logo... we got the power ! + + + Fabien Bodard + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/examples/Basic/Blights/.directory b/app/examples/Basic/Blights/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Basic/Blights/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Basic/Blights/.icon.png b/app/examples/Basic/Blights/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0c1982e11033bafde2fa4e869e77992384b3512e GIT binary patch literal 4209 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 Hu0mjfPqr0Z literal 0 HcmV?d00001 diff --git a/app/examples/Basic/Blights/.lang/ca.po b/app/examples/Basic/Blights/.lang/ca.po new file mode 100644 index 00000000..05b8bc79 --- /dev/null +++ b/app/examples/Basic/Blights/.lang/ca.po @@ -0,0 +1,28 @@ +# Catalan translation of Blights +# Copyright (C) 2000-2010 Benoît Minisini. +# This file is distributed under the same license as the Blights package. +# Jordi Sayol , 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: Blights\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2010-12-16 23:31+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: win1.form:16 +msgid "Blinkenlights" +msgstr "Llums perpallejants" + +#: .project:1 +msgid "Blinking lights example" +msgstr "Enemple del Llums perpallejants" + diff --git a/app/examples/Basic/Blights/.lang/cs.po b/app/examples/Basic/Blights/.lang/cs.po new file mode 100644 index 00000000..dd532b12 --- /dev/null +++ b/app/examples/Basic/Blights/.lang/cs.po @@ -0,0 +1,20 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Blinking lights example" +msgstr "Příklad blikajícíh světel" + +#: win1.form:16 +msgid "Blinkenlights" +msgstr "Blikající světla" diff --git a/app/examples/Basic/Blights/.lang/de.po b/app/examples/Basic/Blights/.lang/de.po new file mode 100644 index 00000000..de41ad66 --- /dev/null +++ b/app/examples/Basic/Blights/.lang/de.po @@ -0,0 +1,21 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Blinking lights example" +msgstr "Beispiel für blinkende Lichter" + +#: win1.form:16 +msgid "Blinkenlights" +msgstr "blinkende Lichter" + diff --git a/app/examples/Basic/Blights/.lang/es.po b/app/examples/Basic/Blights/.lang/es.po new file mode 100644 index 00000000..7445bc3c --- /dev/null +++ b/app/examples/Basic/Blights/.lang/es.po @@ -0,0 +1,20 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2014-11-11 23:48 UTC\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Blinking lights example" +msgstr "Ejemplo de luces parpadeantes" + +#: win1.form:16 +msgid "Blinkenlights" +msgstr "Luces parpadeantes" diff --git a/app/examples/Basic/Blights/.lang/fr.po b/app/examples/Basic/Blights/.lang/fr.po new file mode 100644 index 00000000..0ce4e3df --- /dev/null +++ b/app/examples/Basic/Blights/.lang/fr.po @@ -0,0 +1,3 @@ +#: win1.class:54 +msgid "Blinkenlights" +msgstr "" diff --git a/app/examples/Basic/Blights/.lang/nl.po b/app/examples/Basic/Blights/.lang/nl.po new file mode 100644 index 00000000..60cc291d --- /dev/null +++ b/app/examples/Basic/Blights/.lang/nl.po @@ -0,0 +1,20 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2014-09-23 01:15+0100\n" +"Last-Translator: Willy Raets \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Blinking lights example" +msgstr "Blinking lights voorbeeld" + +#: win1.form:16 +msgid "Blinkenlights" +msgstr "Blinkenlights" + diff --git a/app/examples/Basic/Blights/.lang/ru.po b/app/examples/Basic/Blights/.lang/ru.po new file mode 100644 index 00000000..0701404c --- /dev/null +++ b/app/examples/Basic/Blights/.lang/ru.po @@ -0,0 +1,34 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Basic/Blights/.project:17 +msgid "Blinking lights example" +msgstr "Пример мигающих огней" + +#: app/examples/Basic/Blights/.src/win1.form:5 +msgid "Blinkenlights" +msgstr "Мигающие огни" + diff --git a/app/examples/Basic/Blights/.lang/sv.po b/app/examples/Basic/Blights/.lang/sv.po new file mode 100644 index 00000000..ba0558c1 --- /dev/null +++ b/app/examples/Basic/Blights/.lang/sv.po @@ -0,0 +1,15 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: win1.class:54 +msgid "Blinkenlights" +msgstr "Blinkande lampor" diff --git a/app/examples/Basic/Blights/.project b/app/examples/Basic/Blights/.project new file mode 100644 index 00000000..c9afd747 --- /dev/null +++ b/app/examples/Basic/Blights/.project @@ -0,0 +1,16 @@ +# Gambas Project File 3.0 +Title=Blinking lights example +Startup=win1 +Icon=ampoule.png +Version=3.11.90 +VersionFile=1 +Component=gb.image +Component=gb.gui +TabSize=2 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence +Packager=1 diff --git a/app/examples/Basic/Blights/.src/win1.class b/app/examples/Basic/Blights/.src/win1.class new file mode 100644 index 00000000..910404ca --- /dev/null +++ b/app/examples/Basic/Blights/.src/win1.class @@ -0,0 +1,36 @@ +' Gambas class file + + +Public Sub Timer1_Timer() + + Dim diode As PictureBox + Dim l As Integer + + For Each diode In [l1, l2, l3, l4, l5, l6, l7, l8] + l = Rnd() * 2 + If l = 0 Then + diode.Picture = Picture["bloff.xpm"] + Else + diode.Picture = Picture["blon.xpm"] + Endif + Next + +End + + + +Public Sub Form_Open() + + Dim hPict As Picture + Dim diode As PictureBox + + hPict = Picture["blon.xpm"] + + For Each diode In [l1, l2, l3, l4, l5, l6, l7, l8] + diode.Resize(hPict.Width, hPict.Height) + diode.Background = Color.DarkGreen + Next + + Me.Resize(hPict.W * 8 + Me.W - Me.ClientW, hPict.H + Me.H - Me.ClientH) + +End diff --git a/app/examples/Basic/Blights/.src/win1.form b/app/examples/Basic/Blights/.src/win1.form new file mode 100644 index 00000000..2a3bcfa5 --- /dev/null +++ b/app/examples/Basic/Blights/.src/win1.form @@ -0,0 +1,53 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(20,29.5714,65,7) + Text = ("Blinkenlights") + Icon = Picture["blon.xpm"] + Resizable = False + Arrangement = Arrange.Horizontal + { l1 PictureBox + MoveScaled(0,0,7,7) + Picture = Picture["bloff.xpm"] + Alignment = Align.Center + } + { l2 PictureBox + MoveScaled(7,0,7,7) + Picture = Picture["bloff.xpm"] + Alignment = Align.Center + } + { l3 PictureBox + MoveScaled(14,0,7,7) + Picture = Picture["bloff.xpm"] + Alignment = Align.Center + } + { l4 PictureBox + MoveScaled(21,0,7,7) + Picture = Picture["bloff.xpm"] + Alignment = Align.Center + } + { l5 PictureBox + MoveScaled(28,0,7,7) + Picture = Picture["bloff.xpm"] + Alignment = Align.Center + } + { l6 PictureBox + MoveScaled(35,0,7,7) + Picture = Picture["bloff.xpm"] + Alignment = Align.Center + } + { l7 PictureBox + MoveScaled(42,0,7,7) + Picture = Picture["bloff.xpm"] + Alignment = Align.Center + } + { l8 PictureBox + MoveScaled(49,0,7,7) + Picture = Picture["blon.xpm"] + Alignment = Align.Center + } + { Timer1 #Timer + Enabled = True + Delay = 200 + } +} diff --git a/app/examples/Basic/Blights/ampoule.png b/app/examples/Basic/Blights/ampoule.png new file mode 100644 index 0000000000000000000000000000000000000000..169097084b60f2331cd91695f23bc6d8f92d9650 GIT binary patch literal 1543 zcmV+i2Kf1jP)2L`6zl35iHZ2t*%1s1;SI z+7c>0BDF73gqjB)nyBKTO-YIfML2Z}PD&D+&4s4___JTPekD2&o&;CgOOL(@BV6c|3hCx?$``+7l;s8I@ku#c!pih^RM%- zlbSfaRJGl2?R`G+#(zX$^2nzSh3?z@>%p%)joR~RP&b26!L@uhq4E*9<(6qKra$J! zsh_a8l>5%U7Z#2K&OH;j`tk!KN@U%+?O#8P-1!g$1^^q}YNI=OsLa-%-C(6moS8Gf zWa7r+!{0ob{)>0WG6AWbNMy-8}vn;RBVH zHQ<&SzfQ@^KvUF>wXWc}t^#xdffWhlO3wAZvH`{OU|t7x2S}l1@wvr1A(m>wZVL|J zlowgZT80lUuc(2uljeKh-tZA_WfwvzKy?A6Fh~(kw|7cVE9ENpi3s8>rFi?2Io-Uu zC4pyN%ilVhb&U zi#-zPjUwd0${_7bS%>Qeuoh-`^=$4BKncjRESR>9$UgAW?LSV>mEN%8*T8LVFvYfw z$IFy}zylz4Ve3iWJ^#=5e|5HW9Wa2U`V2_z=~H<2wc?RmbIG`yne#|Ac(Kk4fDLjd zsDlvP22uxhT4&+f`^hJdrGF1(fux^-J1Jc0GLnFv=N=2~fA+D^(csY5Fd@H*Dg7Wt zJwOovx#w;rq!T1#XOmz2LHyXP?xcWe;O{;W=U%Vl0I=Z~hqNc2KB)bifqn?7{-!X5 zc6zP4Ss#fBQrAY4!#~U%`&f4}z$`EYq-ynF%Y#G%HoyK<_ry4SWvxho64)4ox4o-Cs~|Wgzjyk>YX7Mt<~j#&@kg6-AR! zGzqzU4oT`mXrF=1MN*gEUKP9{*n4@B`FiLAwq}n-F5Q-F0-A)P36zi^pb2km!tc&m z?;QAP;my^+*YqazO+Iz%l%;7JrfE_r6v*Xr7=}SMn?+SsB9RFBe4g>~@!yP&j{X>! zZx{JmN>DSqyStl_kr6D*BAd+;kH@)kj$vVZ@65{U#CE?ltu(%GvWDy@!t zH){aLaj-0lN~LnwKFhK+pqHk{$0sIG4{qBw)oK;XvS==&ZQB8$gSuO2=_ zGiMM&kj-XEr_;>M&7tc$(P)$tCr*$^B-RwnnlccJ#STtQP0fZvA!J!b2!X1qsH#dh z9AUZ>6GCwF=1r!jr-{X4OiWC0^5jV_U%rfC81wmj z{w7f59z?jN5&$_()683T^vV84US37Vmji_cld-m-4(#Xijk1WgTG) c #5A301D", +", c #64331B", +"' c #65341B", +") c #6C341C", +"! c #6C321A", +"~ c #6B371D", +"{ c #68361F", +"] c #6D371C", +"^ c #73381D", +"/ c #79381D", +"( c #813C1A", +"_ c #753B1C", +": c #713A1D", +"< c #6E371D", +"[ c #6F391E", +"} c #7E3D19", +"| c #7B3E1C", +"1 c #6E371C", +"2 c #68351F", +"3 c #60311E", +"4 c #4E2C1C", +"5 c #4A2B1D", +"6 c #502D1C", +"7 c #582D1D", +"8 c #63301D", +"9 c #78391C", +"0 c #7A391A", +"a c #763619", +"b c #773A1B", +"c c #76391A", +"d c #76381A", +"e c #77381B", +"f c #773A1C", +"g c #733719", +"h c #743A1A", +"i c #76381B", +"j c #6F3719", +"k c #72391A", +"l c #73381A", +"m c #743619", +"n c #743518", +"o c #743517", +"p c #723719", +"q c #77391B", +"r c #6F3418", +"s c #68321D", +"t c #552D1B", +"u c #4F2C1B", +"v c #502C1B", +"w c #512D1B", +"x c #5B2F1B", +"y c #5F301B", +"z c #66361E", +"A c #6D381C", +"B c #6F391B", +"C c #6D381B", +"D c #6D351B", +"E c #743C1C", +"F c #753C1D", +"G c #823C1A", +"H c #793C1B", +"I c #793B1C", +"J c #773C1C", +"K c #783D1B", +"L c #86461C", +"M c #793E1C", +"N c #793F1C", +"O c #833D1A", +"P c #7A3C1C", +"Q c #77391C", +"R c #70381C", +"S c #66351B", +"T c #6B341B", +"U c #68351B", +"V c #67361C", +"W c #613119", +"X c #643119", +"Y c #63341B", +"Z c #60301A", +"` c #64311A", +" . c #65321A", +".. c #6A371C", +"+. c #61321A", +"@. c #5F301D", +"#. c #61331F", +"$. c #5E331D", +"%. c #5C321D", +"&. c #592F1E", +"*. c #62311B", +"=. c #693119", +"-. c #713519", +";. c #75381A", +">. c #69351E", +",. c #6D381D", +"'. c #62341D", +"). c #60331D", +"!. c #5D301C", +"~. c #5B311C", +"{. c #5C2F1B", +"]. c #62311C", +"^. c #6B361E", +"/. c #6C351A", +"(. c #6B351A", +"_. c #6E351A", +":. c #74381B", +"<. c #7B3B1B", +"[. c #7E3918", +"}. c #833D18", +"|. c #773B1B", +"1. c #713A1C", +"2. c #6C381D", +"3. c #69341B", +"4. c #6C371E", +"5. c #6C361E", +"6. c #6C351E", +"7. c #73391D", +"8. c #77381D", +"9. c #81401B", +"0. c #88451B", +"a. c #80411B", +"b. c #723A1B", +"c. c #703A1D", +"d. c #6A371E", +"e. c #68351D", +"f. c #65341E", +"g. c #6C341D", +"h. c #70351C", +"i. c #6F371F", +"j. c #6E3720", +"k. c #6F371A", +"l. c #6C341A", +"m. c #6B381C", +"n. c #6B391C", +"o. c #68341A", +"p. c #67321A", +"q. c #622D18", +"r. c #612C19", +"s. c #612D19", +"t. c #612E1A", +"u. c #64331C", +"v. c #66361F", +"w. c #6B3720", +"x. c #6F351E", +"y. c #76371A", +"z. c #6F371D", +"A. c #65351E", +"B. c #63321C", +"C. c #6A321A", +"D. c #6C351B", +"E. c #6C361C", +"F. c #6C341B", +"G. c #63341D", +"H. c #66351D", +"I. c #6E361A", +"J. c #72361A", +"K. c #773B1A", +"L. c #733A1B", +"M. c #6B351B", +"N. c #6E381C", +"O. c #743A1C", +"P. c #7A3F1C", +"Q. c #793B1A", +"R. c #72381B", +"S. c #71391B", +"T. c #6B391D", +"U. c #6D371B", +"V. c #6B351C", +"W. c #6A3A1E", +"X. c #6B381D", +"Y. c #6A381E", +"Z. c #6E391C", +"`. c #70361A", +" + c #73351A", +".+ c #6B341C", +"++ c #69341D", +"@+ c #64341D", +"#+ c #62321C", +"$+ c #65351C", +"%+ c #62341C", +"&+ c #57301D", +"*+ c #562E1C", +"=+ c #592E1E", +"-+ c #5C321E", +";+ c #582E1D", +">+ c #572E1E", +",+ c #572E1D", +"'+ c #562E1E", +")+ c #55301E", +"!+ c #5B341E", +"~+ c #5F341E", +"{+ c #61341E", +"]+ c #6A361F", +"^+ c #65331D", +"/+ c #69361E", +"(+ c #60321A", +"_+ c #60321B", +":+ c #5E341C", +"<+ c #6A361E", +"[+ c #6A331D", +"}+ c #70371C", +"|+ c #6B361C", +"1+ c #6C371C", +"2+ c #763B1A", +"3+ c #743C1D", +"4+ c #6F3B1E", +"5+ c #713B1D", +"6+ c #703C1E", +"7+ c #6F3A1D", +"8+ c #6B371B", +"9+ c #69371D", +"0+ c #71371A", +"a+ c #7D3C1B", +"b+ c #803B19", +"c+ c #853D18", +"d+ c #83411A", +"e+ c #803F1A", +"f+ c #7C3D1A", +"g+ c #773A19", +"h+ c #733B1C", +"i+ c #6C391C", +"j+ c #78391B", +"k+ c #7E3A19", +"l+ c #813A18", +"m+ c #7C3A1A", +"n+ c #7E3B1A", +"o+ c #7C3B1A", +"p+ c #71371B", +"q+ c #6D361B", +"r+ c #733B1E", +"s+ c #71381D", +"t+ c #6F351B", +"u+ c #6C351C", +"v+ c #69351B", +"w+ c #69351A", +"x+ c #6A3419", +"y+ c #6B341A", +"z+ c #6F361B", +"A+ c #6E311A", +"B+ c #6F341B", +"C+ c #6C351F", +"D+ c #69331A", +"E+ c #68321A", +"F+ c #5D301A", +"G+ c #5E301B", +"H+ c #64341B", +"I+ c #66321B", +"J+ c #5F311B", +"K+ c #5C301B", +"L+ c #67341C", +"M+ c #672F1B", +"N+ c #66341C", +"O+ c #6C361D", +"P+ c #6E381D", +"Q+ c #733C1C", +"R+ c #6B381E", +"S+ c #67351D", +"T+ c #6A361B", +"U+ c #71391C", +"V+ c #71381C", +"W+ c #763B1C", +"X+ c #61341C", +"Y+ c #58311C", +"Z+ c #532D1B", +"`+ c #533323", +" @ c #513729", +".@ c #503A2D", +"+@ c #4F392C", +"@@ c #4F3627", +"#@ c #50301F", +"$@ c #552E1B", +"%@ c #60331B", +"&@ c #6A341A", +"*@ c #68331B", +"=@ c #70361B", +"-@ c #74381A", +";@ c #723819", +">@ c #743719", +",@ c #75371A", +"'@ c #73371A", +")@ c #6E371B", +"!@ c #6F381C", +"~@ c #71371C", +"{@ c #70371A", +"]@ c #71381B", +"^@ c #6F381A", +"/@ c #69341A", +"(@ c #64321A", +"_@ c #65301A", +":@ c #6A331B", +"<@ c #5E2F1B", +"[@ c #8A3F17", +"}@ c #883E17", +"|@ c #813B18", +"1@ c #7B3818", +"2@ c #783919", +"3@ c #743A1B", +"4@ c #73391A", +"5@ c #6F371B", +"6@ c #733B1B", +"7@ c #72391B", +"8@ c #733A1C", +"9@ c #73391B", +"0@ c #75381C", +"a@ c #6D3A1C", +"b@ c #6F381B", +"c@ c #5F321C", +"d@ c #3F281D", +"e@ c #40342F", +"f@ c #4F4B49", +"g@ c #5E5E5E", +"h@ c #6B6B6B", +"i@ c #757575", +"j@ c #7B7B7B", +"k@ c #787878", +"l@ c #6F6F6F", +"m@ c #646464", +"n@ c #565554", +"o@ c #48413D", +"p@ c #3C2C25", +"q@ c #4A2B1C", +"r@ c #66321A", +"s@ c #68321B", +"t@ c #6C361B", +"u@ c #723B1B", +"v@ c #783C1A", +"w@ c #7E3C1A", +"x@ c #7F3E1A", +"y@ c #853E19", +"z@ c #854019", +"A@ c #894219", +"B@ c #843E18", +"C@ c #823D18", +"D@ c #803D18", +"E@ c #7C3818", +"F@ c #823C17", +"G@ c #823E18", +"H@ c #6A381C", +"I@ c #64341C", +"J@ c #6F3519", +"K@ c #793919", +"L@ c #853F18", +"M@ c #8C4419", +"N@ c #8C4217", +"O@ c #8A4017", +"P@ c #853C17", +"Q@ c #813A17", +"R@ c #7D3C19", +"S@ c #763718", +"T@ c #743819", +"U@ c #793D1B", +"V@ c #69341C", +"W@ c #6B371E", +"X@ c #733B1D", +"Y@ c #743B1B", +"Z@ c #68371E", +"`@ c #3A2921", +" # c #353433", +".# c #5B5A5A", +"+# c #6D6D6D", +"@# c #767676", +"## c #7F7F7F", +"$# c #858585", +"%# c #8B8B8B", +"&# c #8F8F8F", +"*# c #8D8D8D", +"=# c #878787", +"-# c #808080", +";# c #7A7A7A", +"># c #707070", +",# c #666666", +"'# c #484746", +")# c #2C2724", +"!# c #4F2E1E", +"~# c #6C3519", +"{# c #6F3619", +"]# c #763919", +"^# c #773819", +"/# c #7E3C19", +"(# c #7E3B19", +"_# c #77391A", +":# c #6F381D", +"<# c #6B361B", +"[# c #69361A", +"}# c #66341B", +"|# c #64351C", +"1# c #65331A", +"2# c #5F341C", +"3# c #58321D", +"4# c #592E1B", +"5# c #5D311B", +"6# c #703A1B", +"7# c #80421B", +"8# c #82401A", +"9# c #8B4017", +"0# c #873E17", +"a# c #833E18", +"b# c #7D3A18", +"c# c #773718", +"d# c #753719", +"e# c #502E1D", +"f# c #272727", +"g# c #444444", +"h# c #646363", +"i# c #696969", +"j# c #7C7C7C", +"k# c #818181", +"l# c #868686", +"m# c #888888", +"n# c #828282", +"o# c #7E7E7E", +"p# c #717171", +"q# c #5A5A5A", +"r# c #333333", +"s# c #372821", +"t# c #60301B", +"u# c #61321B", +"v# c #66341E", +"w# c #5F321D", +"x# c #62331D", +"y# c #65341C", +"z# c #6C3518", +"A# c #6D361C", +"B# c #6C351D", +"C# c #6D3319", +"D# c #70391B", +"E# c #83421C", +"F# c #833F1A", +"G# c #7C3B1B", +"H# c #763819", +"I# c #68361C", +"J# c #5C321C", +"K# c #592D1A", +"L# c #5D2F1A", +"M# c #63311A", +"N# c #64351B", +"O# c #6A341B", +"P# c #71361A", +"Q# c #763A1A", +"R# c #7B3A19", +"S# c #7A3919", +"T# c #7E3A17", +"U# c #482D1F", +"V# c #2A2A2A", +"W# c #484848", +"X# c #5F5F5F", +"Y# c #6C6C6C", +"Z# c #727272", +"`# c #797979", +" $ c #7D7D7D", +".$ c #747474", +"+$ c #6E6E6E", +"@$ c #686868", +"#$ c #616161", +"$$ c #535353", +"%$ c #373737", +"&$ c #312824", +"*$ c #6A351C", +"=$ c #6E361C", +"-$ c #72381A", +";$ c #70371B", +">$ c #6F361C", +",$ c #703619", +"'$ c #6E381E", +")$ c #6B391E", +"!$ c #6E361B", +"~$ c #733819", +"{$ c #743618", +"]$ c #78381A", +"^$ c #793819", +"/$ c #7F3D18", +"($ c #7F3C18", +"_$ c #864019", +":$ c #853F19", +"<$ c #803D1A", +"[$ c #7D3F1C", +"}$ c #713B1C", +"|$ c #6C381C", +"1$ c #60321C", +"2$ c #5C2E1A", +"3$ c #5C2F1A", +"4$ c #613019", +"5$ c #6E3519", +"6$ c #813E19", +"7$ c #873F18", +"8$ c #432C20", +"9$ c #282828", +"0$ c #414141", +"a$ c #504F4F", +"b$ c #555555", +"c$ c #5D5D5D", +"d$ c #6A6A6A", +"e$ c #777777", +"f$ c #585858", +"g$ c #525151", +"h$ c #4A4949", +"i$ c #2F2F2F", +"j$ c #2D2724", +"k$ c #7E3718", +"l$ c #753519", +"m$ c #7B3C1B", +"n$ c #783418", +"o$ c #773418", +"p$ c #773A1A", +"q$ c #6F3A1C", +"r$ c #6C3A1D", +"s$ c #6E381B", +"t$ c #6D3419", +"u$ c #66351C", +"v$ c #5F351E", +"w$ c #512F1E", +"x$ c #4B2A1B", +"y$ c #4F2B1C", +"z$ c #532D1C", +"A$ c #5E321D", +"B$ c #3E2D22", +"C$ c #252525", +"D$ c #323232", +"E$ c #464545", +"F$ c #4D4D4D", +"G$ c #545454", +"H$ c #5C5C5C", +"I$ c #636363", +"J$ c #737373", +"K$ c #656565", +"L$ c #565656", +"M$ c #4F4F4F", +"N$ c #494949", +"O$ c #3F3E3E", +"P$ c #2F2824", +"Q$ c #6F3B1D", +"R$ c #813F1B", +"S$ c #7F3C1A", +"T$ c #7B3B19", +"U$ c #783A19", +"V$ c #733919", +"W$ c #6D351A", +"X$ c #68371D", +"Y$ c #67361E", +"Z$ c #69361D", +"`$ c #6E391D", +" % c #81431B", +".% c #81441C", +"+% c #7B3F1B", +"@% c #703C1D", +"#% c #703C1C", +"$% c #6D361A", +"%% c #72371A", +"&% c #763B1B", +"*% c #7A3B1A", +"=% c #813D19", +"-% c #883F18", +";% c #56331F", +">% c #272726", +",% c #383838", +"'% c #4B4B4B", +")% c #5B5B5B", +"!% c #626262", +"~% c #4E4E4E", +"{% c #464646", +"]% c #3F3F3F", +"^% c #2C2C2C", +"/% c #362923", +"(% c #5D311C", +"_% c #5B321D", +":% c #582D1A", +"<% c #542B1A", +"[% c #532B1B", +"}% c #502B1C", +"|% c #552D1C", +"1% c #572E1B", +"2% c #783E1C", +"3% c #7C3E1A", +"4% c #7E3B1B", +"5% c #79381B", +"6% c #7F3C1B", +"7% c #843C18", +"8% c #833D17", +"9% c #833C17", +"0% c #823A17", +"a% c #7F3D19", +"b% c #823E1A", +"c% c #803D19", +"d% c #853F1A", +"e% c #863E17", +"f% c #863D18", +"g% c #2A2725", +"h% c #262625", +"i% c #292929", +"j% c #4A4A4A", +"k% c #676767", +"l% c #454545", +"m% c #3C3C3C", +"n% c #303030", +"o% c #4C2D1F", +"p% c #74371A", +"q% c #753A1C", +"r% c #7A3E1C", +"s% c #7E3D1B", +"t% c #894119", +"u% c #914518", +"v% c #954417", +"w% c #8C461B", +"x% c #61351E", +"y% c #63331C", +"z% c #67351B", +"A% c #763C1B", +"B% c #793E1B", +"C% c #7D421B", +"D% c #5F311C", +"E% c #542D1C", +"F% c #332722", +"G% c #262626", +"H% c #252524", +"I% c #404040", +"J% c #3B3B3B", +"K% c #272625", +"L% c #753517", +"M% c #723618", +"N% c #6B3318", +"O% c #663018", +"P% c #673018", +"Q% c #652E19", +"R% c #632F19", +"S% c #633019", +"T% c #592F1A", +"U% c #5A311B", +"V% c #5D341D", +"W% c #5E351D", +"X% c #8F3F17", +"Y% c #874018", +"Z% c #803C19", +"`% c #823C19", +" & c #833E19", +".& c #863E18", +"+& c #8C4117", +"@& c #8B3F17", +"#& c #893E17", +"$& c #61301A", +"%& c #4F2C1C", +"&& c #353535", +"*& c #606060", +"=& c #595959", +"-& c #3A3A3A", +";& c #2E2E2E", +">& c #452C20", +",& c #7D3718", +"'& c #7D3918", +")& c #853B17", +"!& c #843B17", +"~& c #843E19", +"{& c #833F19", +"]& c #873E16", +"^& c #8A3E17", +"/& c #6F3A1B", +"(& c #783A1A", +"_& c #783B1B", +":& c #753819", +"<& c #7E3B18", +"[& c #813C17", +"}& c #7E3917", +"|& c #7D3B1A", +"1& c #4B2E20", +"2& c #2B2B2B", +"3& c #343434", +"4& c #505050", +"5& c #575757", +"6& c #525252", +"7& c #4C4C4C", +"8& c #393939", +"9& c #68341B", +"0& c #65331B", +"a& c #65361C", +"b& c #67361D", +"c& c #68381D", +"d& c #693A1E", +"e& c #6A391E", +"f& c #6A3921", +"g& c #6D391D", +"h& c #68351E", +"i& c #68351C", +"j& c #69381C", +"k& c #723619", +"l& c #773818", +"m& c #793918", +"n& c #302824", +"o& c #2D2D2D", +"p& c #515151", +"q& c #424242", +"r& c #472C1F", +"s& c #562C1A", +"t& c #562E1B", +"u& c #5C311C", +"v& c #5A311C", +"w& c #592F1B", +"x& c #58301C", +"y& c #5E341D", +"z& c #65361D", +"A& c #673821", +"B& c #6E371A", +"C& c #6F361A", +"D& c #70351B", +"E& c #6E3419", +"F& c #3E3E3E", +"G& c #474747", +"H& c #382921", +"I& c #6C371A", +"J& c #6B3419", +"K& c #693419", +"L& c #6A361A", +"M& c #6A351B", +"N& c #6A361C", +"O& c #6E3A1B", +"P& c #71351A", +"Q& c #6D361D", +"R& c #70351A", +"S& c #753B1A", +"T& c #52311F", +"U& c #3D3D3D", +"V& c #65311B", +"W& c #6A361D", +"X& c #753A1B", +"Y& c #6E3A1D", +"Z& c #70391C", +"`& c #6F371C", +" * c #6C371D", +".* c #6D361E", +"+* c #783F1D", +"@* c #402C22", +"#* c #2B2624", +"$* c #67331C", +"%* c #6F391C", +"&* c #6D3A1E", +"** c #75391A", +"=* c #853D17", +"-* c #7D3D1B", +";* c #723E1D", +">* c #703B1C", +",* c #70381B", +"'* c #66361C", +")* c #382A23", +"!* c #434343", +"~* c #313131", +"{* c #2B2725", +"]* c #75391B", +"^* c #70381A", +"/* c #7C401C", +"(* c #7F421B", +"_* c #874119", +":* c #6A371B", +"<* c #6C391D", +"[* c #793D1A", +"}* c #783D1C", +"|* c #743B1D", +"1* c #6B371C", +"2* c #342822", +"3* c #292625", +"4* c #57331F", +"5* c #66361D", +"6* c #713618", +"7* c #723A1C", +"8* c #713A1B", +"9* c #6B3B1D", +"0* c #63331F", +"a* c #63341F", +"b* c #673620", +"c* c #63331B", +"d* c #803A18", +"e* c #7F3919", +"f* c #7D3A19", +"g* c #6D341A", +"h* c #372922", +"i* c #292624", +"j* c #5D3221", +"k* c #6B3521", +"l* c #62321F", +"m* c #833E1A", +"n* c #2B2625", +"o* c #462B1E", +"p* c #363636", +"q* c #372A23", +"r* c #282524", +"s* c #4D3020", +"t* c #83401A", +"u* c #7E3E1B", +"v* c #472E21", +"w* c #6A391D", +"x* c #86421B", +"y* c #763E1D", +"z* c #733D1D", +"A* c #6F3C1D", +"B* c #3C2C23", +"C* c #773B1C", +"D* c #67331B", +"E* c #3A2B23", +"F* c #67341D", +"G* c #72381C", +"H* c #68361D", +"I* c #61331B", +"J* c #62321A", +"K* c #67341B", +"L* c #61331C", +"M* c #462D20", +"N* c #68331C", +"O* c #6E391E", +"P* c #72371B", +"Q* c #6D381A", +"R* c #5D301B", +"S* c #59301C", +"T* c #59311D", +"U* c #512B1B", +"V* c #512A1B", +"W* c #5D2F1B", +"X* c #62311A", +"Y* c #3A2A22", +"Z* c #322823", +"`* c #6C3419", +" = c #69351C", +".= c #683820", +"+= c #65371E", +"@= c #69381E", +"#= c #65371D", +"$= c #62321B", +"%= c #5F341D", +"&= c #61341D", +"*= c #63311B", +"== c #66331B", +"-= c #6C3319", +";= c #352923", +">= c #5F331D", +",= c #733618", +"'= c #77381A", +")= c #76391B", +"!= c #6D371A", +"~= c #6B3A1E", +"{= c #853E18", +"]= c #823F1A", +"^= c #823F19", +"/= c #823A18", +"(= c #7D3818", +"_= c #7C3718", +":= c #78371A", +"<= c #7E3818", +"[= c #472B1E", +"}= c #8A4218", +"|= c #863C17", +"1= c #813C19", +"2= c #873E18", +"3= c #8E3E16", +"4= c #8E3E17", +"5= c #57331E", +"6= c #522E1C", +"7= c #532C1B", +"8= c #5D2D1A", +"9= c #5D2C19", +"0= c #5F2D19", +"a= c #612F19", +"b= c #642F19", +"c= c #6A3318", +"d= c #6E3318", +"e= c #6F3419", +"f= c #84411B", +"g= c #382A22", +"h= c #43291E", +"i= c #7A401B", +"j= c #743D1B", +"k= c #753D1C", +"l= c #6E381A", +"m= c #6E3A1C", +"n= c #62331C", +"o= c #5B351E", +"p= c #944316", +"q= c #884219", +"r= c #823F1B", +"s= c #7A3E1D", +"t= c #753E1D", +"u= c #723A1E", +"v= c #713C1E", +"w= c #6C391E", +"x= c #75361A", +"y= c #75381B", +"z= c #63301A", +"A= c #512A1A", +"B= c #332621", +"C= c #262524", +"D= c #2F2723", +"E= c #88421A", +"F= c #823E1B", +"G= c #7F3D1B", +"H= c #803B1A", +"I= c #844019", +"J= c #7B3C1C", +"K= c #813D1C", +"L= c #813D1B", +"M= c #8A441A", +"N= c #984717", +"O= c #63321B", +"P= c #5F2F1D", +"Q= c #592C1B", +"R= c #572C1B", +"S= c #4D2A1B", +"T= c #4D291B", +"U= c #4F291A", +"V= c #53291A", +"W= c #532A1A", +"X= c #57301C", +"Y= c #5A301B", +"Z= c #68331A", +"`= c #4B2C1C", +" - c #2E2621", +".- c #2B2523", +"+- c #422A1E", +"@- c #743818", +"#- c #853D16", +"$- c #713619", +"%- c #6C381B", +"&- c #6B3A1C", +"*- c #6E3B1D", +"=- c #763D1B", +"-- c #82441C", +";- c #7E411B", +">- c #793B19", +",- c #7E3E1A", +"'- c #67381E", +")- c #63371E", +"!- c #64381E", +"~- c #65361E", +"{- c #63351D", +"]- c #66351A", +"^- c #703719", +"/- c #7F3F1B", +"(- c #78391A", +"_- c #763618", +":- c #693217", +"<- c #602D16", +"[- c #5A2914", +"}- c #432012", +"|- c #2D1C15", +"1- c #241E1B", +"2- c #23211F", +"3- c #291C16", +"4- c #402313", +"5- c #5F3015", +"6- c #723C18", +"7- c #6A351A", +"8- c #4E2B1B", +"9- c #502A1B", +"0- c #532E1D", +"a- c #5C331D", +"b- c #6D3A1D", +"c- c #703519", +"d- c #6A3A1F", +"e- c #743519", +"f- c #783519", +"g- c #773719", +"h- c #763419", +"i- c #763519", +"j- c #7A3618", +"k- c #7F3918", +"l- c #7A3719", +"m- c #79381A", +"n- c #7A3716", +"o- c #733313", +"p- c #602B10", +"q- c #4A220E", +"r- c #351A0B", +"s- c #261309", +"t- c #21150E", +"u- c #211A17", +"v- c #221E1C", +"w- c #232120", +"x- c #242322", +"y- c #23201E", +"z- c #211C19", +"A- c #211712", +"B- c #22120A", +"C- c #2C160A", +"D- c #3F1D0B", +"E- c #59290E", +"F- c #6F3212", +"G- c #7D3815", +"H- c #7C3A18", +"I- c #6E3418", +"J- c #5B2E1A", +"K- c #5A2E1A", +"L- c #6B361D", +"M- c #813F1A", +"N- c #843F1A", +"O- c #7E3D1A", +"P- c #743B1C", +"Q- c #773B1D", +"R- c #6C371F", +"S- c #6E381F", +"T- c #6F351C", +"U- c #703419", +"V- c #713419", +"W- c #703319", +"X- c #6B351E", +"Y- c #633119", +"Z- c #653219", +"`- c #5F2F18", +" ; c #532A16", +".; c #472613", +"+; c #3A1E10", +"@; c #321A0E", +"#; c #2C170C", +"$; c #28160B", +"%; c #25140A", +"&; c #241209", +"*; c #231208", +"=; c #241308", +"-; c #271409", +";; c #2B150A", +">; c #30170A", +",; c #371B0C", +"'; c #3E1E0D", +"); c #4C2410", +"!; c #602D12", +"~; c #703414", +"{; c #773615", +"]; c #763818", +"^; c #6C361A", +"/; c #5D321D", +"(; c #65351D", +"_; c #703B1E", +":; c #7A401D", +"<; c #7F421D", +"[; c #80411C", +"}; c #773D1C", +"|; c #73371C", +"1; c #63321D", +"2; c #61321C", +"3; c #61331D", +"4; c #61321D", +"5; c #60311A", +"6; c #552D1A", +"7; c #542D19", +"8; c #4C2917", +"9; c #452415", +"0; c #3F2214", +"a; c #3C2012", +"b; c #3A2012", +"c; c #3C2011", +"d; c #3B2013", +"e; c #3E2010", +"f; c #401F0F", +"g; c #3F2012", +"h; c #432212", +"i; c #482613", +"j; c #4C2714", +"k; c #582B15", +"l; c #652F15", +"m; c #6B3317", +"n; c #743718", +"o; c #863F18", +"p; c #883F17", +"q; c #893F18", +"r; c #813C18", +"s; c #763918", +"t; c #64301A", +"u; c #5D331D", +"v; c #5C341D", +"w; c #6F3618", +"x; c #803B18", +"y; c #803C18", +"z; c #7D3C18", +"A; c #753919", +"B; c #733718", +"C; c #663218", +"D; c #623118", +"E; c #613117", +"F; c #5D2E17", +"G; c #5B2E18", +"H; c #5A2E17", +"I; c #592F16", +"J; c #542C16", +"K; c #552D16", +"L; c #572B14", +"M; c #592B15", +"N; c #5A2D15", +"O; c #5E2E15", +"P; c #623017", +"Q; c #652F18", +"R; c #693318", +"S; c #6F3819", +"T; c #773918", +"U; c #7B391A", +"V; c #8A3E16", +"W; c #8D4117", +"X; c #8D4218", +"Y; c #68371C", +"Z; c #813D18", +"`; c #803E19", +" > c #723B1C", +".> c #67321B", +"+> c #6E3619", +"@> c #673319", +"#> c #653118", +"$> c #6A3217", +"%> c #6B3218", +"&> c #6A341C", +"*> c #70391D", +"=> c #79361A", +"-> c #7A371A", +";> c #803917", +">> c #883D17", +",> c #7D3B19", +"'> c #72391C", +")> c #6F391D", +"!> c #7A381A", +"~> c #72391D", +"{> c #71371D", +"]> c #77371A", +"^> c #69371C", +"/> c #67371E", +"(> c #67331D", +"_> c #5C301C", +":> c #61301C", +"<> c #69321B", +"[> c #6D341B", +"}> c #67321E", +"|> c #60321D", +"1> c #66331A", +"2> c #64331A", +"3> c #74371B", +"4> c #7C391A", +"5> c #7B391B", +"6> c #74381C", +"7> c #7B3A1A", +"8> c #66341D", +"9> c #62361D", +"0> c #5F311A", +"a> c #60311B", +"b> c #68341D", +"c> c #60331F", +"d> c #60331E", +"e> c #5B2E1C", +"f> c #562D1C", +"g> c #582F1E", +"h> c #582F1D", +"i> c #542E1C", +"j> c #59301D", +"k> c #60311C", +"l> c #6A381D", +"m> c #65321D", +"n> c #65341D", +"o> c #6C3219", +"p> c #6B3119", +"q> c #693019", +"r> c #64321C", +"s> c #62311D", +"t> c #64351F", +"u> c #6B3721", +"v> c #693921", +"w> c #62341F", +"x> c #5A2D1B", +"y> c #592D1B", +"z> c #592F1C", +"A> c #5F2E1A", +"B> c #69391D", +"C> c #6D3621", +"D> c #70351E", +"E> c #6E3620", +"F> c #66331E", +"G> c #61321E", +"H> c #5B311D", +"I> c #5D311D", +"J> c #6A351F", +"K> c #6B3620", +"L> c #6B361F", +"M> c #6E3621", +"N> c #69371E", +". + @ # $ % % & * = - ; > = , ' ) ! ~ { ] ^ / ( _ : < < [ } | ^ / ( _ : < < [ 1 2 3 @ 4 5 6 7 8 1 9 0 a b c d e f g h i ", +"j k l m n n o p q r s t u v w x y z A B C D E F G H I J K L L M N M O P Q R S T ! U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.", +"= >.,.'.).; !.~.{.].^.' /./.(._.:.<.[.}.|.1.2.3.4.5.6.7.8.9.0.a.K b.c.d.e.f.g.h.i.j.T _.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.", +"A.A.B.C.D.E.F.G.H.I.J.K.L.M.M.1 N.O.P.Q.R.S.T.e.1 M.U.V.A f.W.X.Y.X.Z./.`. +F..+++@+#+$+%+&+*+> =+-+;+>+,+,+'+)+!+~+{+]+", +"^+/+^.+.(+_+(+:+#+<+[+T }+Z.|+1+2+3+4+5+6+7+8+N.9+0+a+b+c+d+e+f+g+h+i+b.Q.j+k+l+m+d q n+o+p+q+r+s+t+u+v+w+x+y+z+! A+B+C+", +"+ D+E+F+G+H+I+J+K+L+M+N+e.O+P+Q+M R+^+S+T+U+V+W+V+X+Y+Z+`+ @.@+@@@#@$@%@&@*@=@-@J.;@p >@,@'@)@!@U+!@~@{@]@^@/@(@' _@:@<@", +"[@[@}@|@1@2@3@4@5@1 D 6@7@b.8@9@0@V+p+J.a@!@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@D.R ] *@t@u@v@w@x@y@z@A@B@C@D@E@F@G@}.k+", +"n.H@I@J@K@L@M@N@O@P@Q@R@S@T@U@l V@W@X@Y@,.Z@`@ #.#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#/#(#_#:#:#:#<#[#}#' ' D.3.1+}#|#", +"R.T 1#2#3#4#5#6#7#8#9#0#B@a#b#c#d#'@;@p e#f#g#h#i#l@@#j#k#l#m#l#n#o#k@p#h@m@q#r#s#{.t#u#v#N+, H+w#x#y#z#A#B#M.>@g C#3.D#", +"E#F#G#H#]@I#J#K#L#M#N#O#P#Q#R#S#o+T#R#U#V#W#.#X#,#Y#Z#`# $-#n#k#o#;#.$+$@$#$.#$$%$&${.*$=$V+-$`.;$>$D.,$'$)$R+!$~${$]$^$", +"D@/$($_$:$<$[$P.}$|$1$2$3$3$4$5$6$7$8$9$0$a$b$c$m@d$p#@#`#j# $j#;#e$Z#+#,#X#f$g$h$i$j$B.k$l$>@d#b m$S#n$o$a c#Q#p$_#c 2@", +"M.t@q$r$T.] s$t$u$v$w$x$y$z$A$<#2+B$C$D$E$F$G$H$I$i#+$J$@#k@`#`#e$.$>#h@K$g@L$M$N$O$C$P$Q$R$S$T$U$V$W$e.X$Y$* N+L+Z$* `$", +" %.%+%@%#%q$A $%-${@%%&%*%=%:$-%;%C$>%,%g#'%G$)%!%@$+#>#J$.$i@i@.$Z#+$i#m@g@L$~%{%]%^%C$/%L#(%_%:%<%[%}%y$|%1%x E+z+2%3%", +"4%5%6%7%8%9%0%a%b%c%d%L@e%f%<$T+g%h%i%,%0$j%$$)%!%k%d$+#l@>#p#p#>#+$h@@$I$c$L$~%l%m%n%C$C$o%p%y.,@N.7+U+;$q%r%s%t%u%v%w%", +"x%; G+y%z%n.a@^@A%B%C%&%<#D%E%F%G%H%i%%$I%j%$$q#X#I$k%i#d$Y#Y#Y#d$i#@$m@#$H$L$~%g#J%n%H%C$K%t$L%M%N%O%P%Q%R%S%T%U%V%W%p.", +"X%Y%P@Z%`% &b%.&+&@&#&Z%J@$&%&K%C$G%i%&&I%j%$$f$c$*&!%m@,#,#k%k%,#m@I$*&c$=&b$F$g#-&;&f#h%C$>&,&'&*%l+)&!&~&{&{&F#7$]&^&", +"s$/&Q+W+(&_&:&^#<&[&}&|&p$_#1&C$h%9$2&3&]%N$4&b$=&)%c$*&#$!%I$!%#$*&g@H$q#5&6&7&g#8&;&9$G%C$C$` + (@o.9&0&a&u.b&c&d&e&C ", +"f&g&q+h&i&j&}#/.M%p k&:&l&m&n&C$G%9$o&&&]%W#F$p&G$5&=&)%H$c$c$c$H$)%=&f$b$6&~%j%q&8&n%V#f#h%C$r&K#s&t&x u&v&w&x&v&y&z&A&", +"i+B&C&B&{@]@D&0+Y@X@O+++E&I#C$G%f#V#n%%$F&l%N$F$M$6&b$5&f$f$f$f$5&L$L$$$4&F$'%G&0$-&r#^%9$G%C$H&k.I&x+J&K&o.L&M&N&A O&j&", +"R 5@/.-.P&C&Q&7@R&=$] ]@S&T&C$h%9$2&D$8&]%g#l%W#'%~%M$p&6&$$$$$$6&p&4&~%7&N$G&g#q&U&&&;&i%f#G%j$V&V&i&1+v+W$z+..W&V+X&R ", +"L.Y&..Z&`& *|+U..*$+X.+*_ @*C$G%9$o&3&m%0$g#l%l%G&N$j%'%F$F$F$F$F$7&'%N$W#{%g#g#q&F&%$i$V#f#G%#*Y$t@J+$*..%*A#&*Y&b.c **", +"=*-*{@..q+$%Y&;*Q$>*L.,*'*)*C$G%9$;&&&U&q&l%g#l%l%{%{%G&W#W#W#W#W#G&{%{%l%{%g#l%!*]%8&~*V#f#G%{*D.K@q ]*8+* U.^*Y@/*(*_*", +":*<#N&%*' <*1.=@[*}*|* *1*2*G%f#i%;&&&U&q&g#l%l%{%l%l%l%{%{%{%{%l%l%l%l%{%{%l%l%!*I%8&~*V#f#G%3*4*5*6*k&`&7*z%g&8*;$S.9*", +"b%0*a*b*c*z&Q$X&d*e*f*p+g*h*C$G%i%;&&&m%q&l%l%l%{%{%{%{%l%l%l%l%l%{%{%{%l%{%g#g#!*I%8&~*V#f#G%i*j*k*l*0*a*b*c*z&Q$X&d*m*", +"| ^ / ( _ : < < [ 1 2 3 @ 2*C$G%9$^%3&m%q&!*l%l%{%{%{%{%{%{%{%{%{%{%{%l%{%l%l%g#!*]%,%n%V#f#h%n*~+{ ] ^ / ( _ : < < [ } ", +"L M N M O P Q R S T ! U V o*C$h%9$2&D$-&I%!*l%g#l%{%{%{%{%{%{%{%{%{%l%{%l%l%l%g#0$U&p*;&i%f#h%#*..B C D E F G H I J K L ", +"0.a.K b.c.d.e.f.g.h.i.j.T D%C$h%f#V#n%%$F&q&g#l%l%{%l%{%{%{%{%{%{%{%{%l%l%g#l%g#I%J%r#^%9$G%G%q*[.}.|.1.2.3.4.5.6.7.8.9.", +"W.X.Y.X.Z./.`. +F..+++@+#+%+r*C$G%i%;&&&m%0$!*g#l%l%{%{%l%{%{%{%{%l%{%g#g#l%g#q&F&%$~*2&f#G%C$s*P.Q.R.S.T.e.1 M.U.V.A f.", +"t*u*Q.h+i+b.Q.j+k+l+m+d q m+v*C$h%f#2&D$8&F&q&!*l%l%g#l%l%l%{%{%l%l%g#l%l%g#q&I%J%3&o&i%f#G%C$w*4+5+6+7+8+N.9+0+a+b+.&x*", +"y*z*A*Z.1+N.M.*@=@-@J.;@p >@w#h%C$f#i%;&3&-&]%0$!*l%l%g#g#l%l%l%l%g#l%g#g#q&0$m%%$n%2&f#h%C$B*R+^+S+T+U+V+W+V+9+X.C&|.J ", +"C*P+m.7*] E.N&i&D*s@D.R ] *@z%E*C$G%f#V#i$&&J%]%q&!*g#l%g#g#g#g#l%g#l%g#!*I%U&,%~*^%9$G%C$C$F*V+p+J.a@!@b@G*5@F.U.U.b@|.", +"Y&H*y#%+I*0&J*(+c*K*~#{#]#^#/#L*3*H%G%9$2&n%&&J%F&0$!*!*g#l%l%l%g#g#!*q&I%m%,%D$o&9$f#H%C$M*N*W@X@Y@,.O*R D#s$P*Q*Z&B q+", +"; R*S*x&x&T*1%U*V*<%W*X*t#u#v#N+Y*C$H%h%9$2&i$3&8&U&]%0$q&q&q&q&q&0$I%U&-&%$D$o&9$f#H%G%Z*`*d#'@;@p ~#9&l.M.D.T =.=+=Y ", +"@=#=$=%=&=|#' c*J+*===<#-=*$=$V+k.;=G%H%h%9$2&;&D$&&8&J%m%F&F&F&U&m%-&%$3&n%^%i%G%H%C$3*>=S#o+T#Z%/#g+,=S@'=)=3+%*B&!=~=", +".&{=C@]=^=0%/=(=n _=(=0 :=<=k$l$>@/.q*G%H%h%f#i%2&;&~*r#&&%$%$%$p*3&D$n%o&V#9$f#h%C$G%[=4$5$6$7$[@}=.&f%|=7%1=P@2=3=4==*", +"5=6=7=2$8=9=0=a=b=c=d=e=n c%f=R$S$T$k.g=C$C$G%f#f#i%V#o&o&;&i$i$;&^%2&V#9$f#f#H%C$G%h=z$A$<#2+i=j=k=l=m=m.'*%+V&n=}#i&o=", +"p=q=r=s=t=u=v=w=t@'@x=]$y=-$T z=(%_%:%A=B=C=C$C$h%G%f#9$9$i%i%i%9$9$f#f#h%h%C$h%D=a&*%=%:$-%E=r=} F=G=H=G I=b%J=K=L=M=N=", +"h+O=P=Q=R=S=T=U=V=W=t X=Y=*=Z=E&p%y.,@N.7+`= -h%G%G%h%G%G%G%f#G%G%G%h%C$G%G%.-+-@-L@#-f%<$/#v@-$P&g $-%-&-*-*-=---;->-,-", +"'-)-)-!-~-~-{-]-U.^-H#b (&/-|&(-_-L%M%:-<-[-}-|-1-H%f#f#G%G%G%G%G%G%f#G%2-3-4-5-6-k 7-D%*+8-9-0-a-y#y+q$S.b-<*1 c--=A d-", +")=S@S@M%$-e-_-f-(-g-h-i-j-k-<=l-m-,&'&U$n-o-p-q-r-s-t-u-v-w-x-w-y-z-A-B-C-D-E-F-G-H-I-$&J-:%K-y L-S.&%M-N-_$N-O-{&,-P-Q-", +"0+^#i-U.R-S-)@M&.*T-U-V-W-t+X-:@&@p.+ Y-Z-`- ;.;+;@;#;$;%;&;*;=;-;;;>;,;';);!;~;{;R#p$(&)=];^;I@G.W*{./;(;_;C*:;<;[;};!$", +"O#|;_#/@U N&T+= 1;2;3;L*= v#a*4;` 5;K#s&6;:%7;8;9;0;a;b;c;d;a;e;f;g;h;i;j;k;l;m;r n;l&H-a#o;p;}@q;r;s;t;K-u;v;+.O#q+1+V.", +"U 9&T K*}#K*[#w;6*-$U+;.x;y;(#z;A;B;k.I&x+c=C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;Z&V.++E&X&T@T;m$U;/=V;W;X;D@}* =L*I#Y;c*9&", +"a#C@E@Z;C@o;M@~&Z%`;*%h >9&0&] G*)@.>V&i&1+o.J&l.S 0&(.+>o.o.@>#>$>%>J&&>^*e==$] ]@S&b.b.L.3+*>5@c-p%=>->;>0%>>@&^&,>}.", +"*=|#|#K*I&5@5@R.'>Z&)>X&!>i ~>{>]>c 7.t@J+$*..%*A#&*Y&b.c **L.Y&..Z&`& *|+U..*$+X.+*_ ^>/>/+(>, '.u&_>:>z&x y <>[>}>|>0&", +"<>O#E.1>2>2>0&v+q+Z&u=_.3>4>5>i 6>7>l+K@q ]*8+* U.^*Y@/*(*_*=*-*{@..q+$%Y&;*Q$>*L.,*'*u$1 `&9&8>9>1$5#0>a>5;(+u$b>s Z$<>", +"c>d>e>,+f>f>,+,+g>h>h>i>j>2;k>c@>=(>l>5*6*k&`&7*z%g&8*;$S.9*:*<#N&%*' <*1.=@[*}*|* *1*3.t@L.L.-$F.m>n>[>o>p>q>r>r>s>@+t>", +"u>v>w>>=x>y>z>A>I#B>B>..T E.M.B#C>D>E>k*l*0*a*b*c*z&Q$X&d*m*b%0*a*b*c*z&Q$X&d*e*f*p+g*3.3.M&V@F>G>H>I>4;'.&={+J>K>L>M>N>"}; diff --git a/app/examples/Basic/Blights/blon.xpm b/app/examples/Basic/Blights/blon.xpm new file mode 100644 index 00000000..dee0b520 --- /dev/null +++ b/app/examples/Basic/Blights/blon.xpm @@ -0,0 +1,1503 @@ +/* XPM */ +static char * blon_xpm[] = { +"60 48 1452 2", +" c None", +". c #70341A", +"+ c #65321B", +"@ c #5C301D", +"# c #63311C", +"$ c #642E19", +"% c #642D19", +"& c #642E1A", +"* c #69381D", +"= c #65331C", +"- c #64311B", +"; c #5E321C", +"> c #5A301D", +", c #64331B", +"' c #65341B", +") c #6C341C", +"! c #6C321A", +"~ c #6B371D", +"{ c #68361F", +"] c #6D371C", +"^ c #73381D", +"/ c #79381D", +"( c #813C1A", +"_ c #753B1C", +": c #713A1D", +"< c #6E371D", +"[ c #6F391E", +"} c #7E3D19", +"| c #7B3E1C", +"1 c #6E371C", +"2 c #68351F", +"3 c #60311E", +"4 c #4E2C1C", +"5 c #4A2B1D", +"6 c #502D1C", +"7 c #582D1D", +"8 c #63301D", +"9 c #78391C", +"0 c #7A391A", +"a c #763619", +"b c #773A1B", +"c c #76391A", +"d c #76381A", +"e c #77381B", +"f c #773A1C", +"g c #733719", +"h c #743A1A", +"i c #76381B", +"j c #6F3719", +"k c #72391A", +"l c #73381A", +"m c #743619", +"n c #743518", +"o c #743517", +"p c #723719", +"q c #77391B", +"r c #6F3418", +"s c #68321D", +"t c #552D1B", +"u c #4F2C1B", +"v c #502C1B", +"w c #512D1B", +"x c #5B2F1B", +"y c #5F301B", +"z c #66361E", +"A c #6D381C", +"B c #6F391B", +"C c #6D381B", +"D c #6D351B", +"E c #743C1C", +"F c #753C1D", +"G c #823C1A", +"H c #793C1B", +"I c #793B1C", +"J c #773C1C", +"K c #783D1B", +"L c #86461C", +"M c #793E1C", +"N c #793F1C", +"O c #833D1A", +"P c #7A3C1C", +"Q c #77391C", +"R c #70381C", +"S c #66351B", +"T c #6B341B", +"U c #68351B", +"V c #67361C", +"W c #613119", +"X c #643119", +"Y c #63341B", +"Z c #60301A", +"` c #64311A", +" . c #65321A", +".. c #6A371C", +"+. c #61321A", +"@. c #5F301D", +"#. c #61331F", +"$. c #5E331D", +"%. c #5C321D", +"&. c #592F1E", +"*. c #62311B", +"=. c #693119", +"-. c #713519", +";. c #75381A", +">. c #69351E", +",. c #6D381D", +"'. c #62341D", +"). c #60331D", +"!. c #5D301C", +"~. c #5B311C", +"{. c #5C2F1B", +"]. c #62311C", +"^. c #6B361E", +"/. c #6C351A", +"(. c #6B351A", +"_. c #6E351A", +":. c #74381B", +"<. c #7B3B1B", +"[. c #7E3918", +"}. c #833D18", +"|. c #773B1B", +"1. c #713A1C", +"2. c #6C381D", +"3. c #69341B", +"4. c #6C371E", +"5. c #6C361E", +"6. c #6C351E", +"7. c #73391D", +"8. c #77381D", +"9. c #81401B", +"0. c #88451B", +"a. c #80411B", +"b. c #723A1B", +"c. c #703A1D", +"d. c #6A371E", +"e. c #68351D", +"f. c #65341E", +"g. c #6C341D", +"h. c #70351C", +"i. c #6F371F", +"j. c #6E3720", +"k. c #6F371A", +"l. c #6C341A", +"m. c #6B381C", +"n. c #6B391C", +"o. c #68341A", +"p. c #67321A", +"q. c #622D18", +"r. c #612C19", +"s. c #612D19", +"t. c #612E1A", +"u. c #64331C", +"v. c #66361F", +"w. c #6B3720", +"x. c #6F351E", +"y. c #76371A", +"z. c #6F371D", +"A. c #65351E", +"B. c #63321C", +"C. c #6A321A", +"D. c #6C351B", +"E. c #6C361C", +"F. c #6C341B", +"G. c #63341D", +"H. c #66351D", +"I. c #6E361A", +"J. c #72361A", +"K. c #773B1A", +"L. c #733A1B", +"M. c #6B351B", +"N. c #6E381C", +"O. c #743A1C", +"P. c #7A3F1C", +"Q. c #793B1A", +"R. c #72381B", +"S. c #71391B", +"T. c #6B391D", +"U. c #6D371B", +"V. c #6B351C", +"W. c #6A3A1E", +"X. c #6B381D", +"Y. c #6A381E", +"Z. c #6E391C", +"`. c #70361A", +" + c #73351A", +".+ c #6B341C", +"++ c #69341D", +"@+ c #64341D", +"#+ c #62321C", +"$+ c #65351C", +"%+ c #62341C", +"&+ c #57301D", +"*+ c #562E1C", +"=+ c #592E1E", +"-+ c #5C321E", +";+ c #582E1D", +">+ c #572E1E", +",+ c #572E1D", +"'+ c #562E1E", +")+ c #55301E", +"!+ c #5B341E", +"~+ c #5F341E", +"{+ c #61341E", +"]+ c #6A361F", +"^+ c #65331D", +"/+ c #69361E", +"(+ c #60321A", +"_+ c #60321B", +":+ c #5E341C", +"<+ c #6A361E", +"[+ c #6A331D", +"}+ c #70371C", +"|+ c #6B361C", +"1+ c #6C371C", +"2+ c #763B1A", +"3+ c #743C1D", +"4+ c #6F3B1E", +"5+ c #713B1D", +"6+ c #703C1E", +"7+ c #6F3A1D", +"8+ c #6B371B", +"9+ c #69371D", +"0+ c #71371A", +"a+ c #7D3C1B", +"b+ c #803B19", +"c+ c #883E18", +"d+ c #89431B", +"e+ c #87411A", +"f+ c #823F1B", +"g+ c #7C3B1A", +"h+ c #743B1C", +"i+ c #6C391C", +"j+ c #78391B", +"k+ c #7E3A19", +"l+ c #813A18", +"m+ c #7C3A1A", +"n+ c #7E3B1A", +"o+ c #71371B", +"p+ c #6D361B", +"q+ c #733B1E", +"r+ c #71381D", +"s+ c #6F351B", +"t+ c #6C351C", +"u+ c #69351B", +"v+ c #69351A", +"w+ c #6A3419", +"x+ c #6B341A", +"y+ c #6F361B", +"z+ c #6E311A", +"A+ c #6F341B", +"B+ c #6C351F", +"C+ c #69331A", +"D+ c #68321A", +"E+ c #5D301A", +"F+ c #5E301B", +"G+ c #64341B", +"H+ c #66321B", +"I+ c #5F311B", +"J+ c #5C301B", +"K+ c #67341C", +"L+ c #672F1B", +"M+ c #66341C", +"N+ c #6C361D", +"O+ c #6E381D", +"P+ c #733C1C", +"Q+ c #6B381E", +"R+ c #67351D", +"S+ c #6A361B", +"T+ c #71391C", +"U+ c #71381C", +"V+ c #763B1C", +"W+ c #7F3C1E", +"X+ c #954420", +"Y+ c #AC5328", +"Z+ c #C46938", +"`+ c #CF7543", +" @ c #D47848", +".@ c #D17746", +"+@ c #C56F3E", +"@@ c #B55F31", +"#@ c #9D4821", +"$@ c #8C3F1D", +"%@ c #73361B", +"&@ c #68331B", +"*@ c #70361B", +"=@ c #74381A", +"-@ c #723819", +";@ c #743719", +">@ c #75371A", +",@ c #73371A", +"'@ c #6E371B", +")@ c #6F381C", +"!@ c #71371C", +"~@ c #70371A", +"{@ c #71381B", +"]@ c #6F381A", +"^@ c #69341A", +"/@ c #64321A", +"(@ c #65301A", +"_@ c #6A331B", +":@ c #5E2F1B", +"<@ c #8A3F17", +"[@ c #883E17", +"}@ c #813B18", +"|@ c #7B3818", +"1@ c #783919", +"2@ c #743A1B", +"3@ c #73391A", +"4@ c #6F371B", +"5@ c #733B1B", +"6@ c #72391B", +"7@ c #733A1C", +"8@ c #73391B", +"9@ c #75381C", +"0@ c #6D3A1C", +"a@ c #6F381B", +"b@ c #A24621", +"c@ c #CF622F", +"d@ c #E89558", +"e@ c #FCC281", +"f@ c #FFD599", +"g@ c #FEE0AA", +"h@ c #FEE7B9", +"i@ c #FEE8C0", +"j@ c #FFE8BC", +"k@ c #FEE4B0", +"l@ c #FFDAA0", +"m@ c #FECE8E", +"n@ c #F1AD6C", +"o@ c #DB783F", +"p@ c #B34D25", +"q@ c #76371C", +"r@ c #68321B", +"s@ c #6C361B", +"t@ c #723B1B", +"u@ c #783C1A", +"v@ c #7E3C1A", +"w@ c #7F3E1A", +"x@ c #853E19", +"y@ c #854019", +"z@ c #894219", +"A@ c #843E18", +"B@ c #823D18", +"C@ c #803D18", +"D@ c #7C3818", +"E@ c #823C17", +"F@ c #823E18", +"G@ c #6A381C", +"H@ c #64341C", +"I@ c #6F3519", +"J@ c #793919", +"K@ c #853F18", +"L@ c #8C4419", +"M@ c #8C4217", +"N@ c #8A4017", +"O@ c #853C17", +"P@ c #813A17", +"Q@ c #7D3C19", +"R@ c #763718", +"S@ c #743819", +"T@ c #793D1B", +"U@ c #69341C", +"V@ c #6B371E", +"W@ c #733B1D", +"X@ c #743B1B", +"Y@ c #8D4523", +"Z@ c #E66B34", +"`@ c #FBAD62", +" # c #FFEE9F", +".# c #FFF9B2", +"+# c #FFFEBF", +"@# c #FEFECB", +"## c #FEFED1", +"$# c #FFFFD8", +"%# c #FFFFDB", +"&# c #FFFFD9", +"*# c #FFFFD4", +"=# c #FDFECB", +"-# c #FFFFC3", +";# c #FFFCB7", +"># c #FFF8AA", +",# c #FBD483", +"'# c #F37F40", +")# c #B44E26", +"!# c #6C3519", +"~# c #6F3619", +"{# c #763919", +"]# c #773819", +"^# c #7E3C19", +"/# c #7E3B19", +"(# c #77391A", +"_# c #6F381D", +":# c #6B361B", +"<# c #69361A", +"[# c #66341B", +"}# c #64351C", +"|# c #65331A", +"1# c #5F341C", +"2# c #58321D", +"3# c #592E1B", +"4# c #5D311B", +"5# c #703A1B", +"6# c #80421B", +"7# c #82401A", +"8# c #8B4017", +"9# c #873E17", +"0# c #833E18", +"a# c #7D3A18", +"b# c #773718", +"c# c #753719", +"d# c #753819", +"e# c #BB5729", +"f# c #FF8643", +"g# c #FFE185", +"h# c #FEFEAC", +"i# c #FFFFB3", +"j# c #FFFEBB", +"k# c #FFFFC5", +"l# c #FFFFCD", +"m# c #FFFFDA", +"n# c #FFFFD6", +"o# c #FFFFCF", +"p# c #FFFFC6", +"q# c #FFFEBE", +"r# c #FFFEB4", +"s# c #FFFFAB", +"t# c #FFFFA2", +"u# c #FFB261", +"v# c #DD6531", +"w# c #7A3A1E", +"x# c #60301B", +"y# c #61321B", +"z# c #66341E", +"A# c #5F321D", +"B# c #62331D", +"C# c #65341C", +"D# c #6C3518", +"E# c #6D361C", +"F# c #6C351D", +"G# c #6D3319", +"H# c #70391B", +"I# c #83421C", +"J# c #833F1A", +"K# c #7C3B1B", +"L# c #763819", +"M# c #68361C", +"N# c #5C321C", +"O# c #592D1A", +"P# c #5D2F1A", +"Q# c #63311A", +"R# c #64351B", +"S# c #6A341B", +"T# c #71361A", +"U# c #763A1A", +"V# c #7B3A19", +"W# c #7A3919", +"X# c #7E3A17", +"Y# c #8D421C", +"Z# c #D9622E", +"`# c #FF994D", +" $ c #FFF58F", +".$ c #FEFEA3", +"+$ c #FFFEAC", +"@$ c #FFFFB7", +"#$ c #FFFFC0", +"$$ c #FFFFCA", +"%$ c #FFFFD1", +"&$ c #FFFFDC", +"*$ c #FFFFDE", +"=$ c #FFFFDD", +"-$ c #FFFFD3", +";$ c #FFFFCB", +">$ c #FFFFC2", +",$ c #FFFFB8", +"'$ c #FFFEAE", +")$ c #FEFEA2", +"!$ c #FEFE99", +"~$ c #FFC56A", +"{$ c #F37439", +"]$ c #994622", +"^$ c #6A351C", +"/$ c #6E361C", +"($ c #72381A", +"_$ c #70371B", +":$ c #6F361C", +"<$ c #703619", +"[$ c #6E381E", +"}$ c #6B391E", +"|$ c #6E361B", +"1$ c #733819", +"2$ c #743618", +"3$ c #78381A", +"4$ c #793819", +"5$ c #7F3D18", +"6$ c #7F3C18", +"7$ c #864019", +"8$ c #853F19", +"9$ c #803D1A", +"0$ c #7D3F1C", +"a$ c #713B1C", +"b$ c #6C381C", +"c$ c #60321C", +"d$ c #5C2E1A", +"e$ c #5C2F1A", +"f$ c #613019", +"g$ c #6E3519", +"h$ c #813E19", +"i$ c #8F421A", +"j$ c #E66A32", +"k$ c #FF9148", +"l$ c #FEED83", +"m$ c #FEFE9A", +"n$ c #FFFEA5", +"o$ c #FFFFB1", +"p$ c #FFFFBC", +"q$ c #FFFFD7", +"r$ c #FFFFE1", +"s$ c #FFFFE3", +"t$ c #FFFFD0", +"u$ c #FFFFC8", +"v$ c #FFFFBD", +"w$ c #FFFFB2", +"x$ c #FFFEA6", +"y$ c #FFFF9B", +"z$ c #FEFE90", +"A$ c #FEB65D", +"B$ c #F97237", +"C$ c #B44F25", +"D$ c #7E3718", +"E$ c #753519", +"F$ c #7B3C1B", +"G$ c #783418", +"H$ c #773418", +"I$ c #773A1A", +"J$ c #6F3A1C", +"K$ c #6C3A1D", +"L$ c #6E381B", +"M$ c #6D3419", +"N$ c #66351C", +"O$ c #5F351E", +"P$ c #512F1E", +"Q$ c #4B2A1B", +"R$ c #4F2B1C", +"S$ c #532D1C", +"T$ c #5E321D", +"U$ c #E76E34", +"V$ c #FF803E", +"W$ c #FFC968", +"X$ c #FEFE91", +"Y$ c #FFFF9E", +"Z$ c #FFFFAA", +"`$ c #FFFFB6", +" % c #FFFFCE", +".% c #FFFFE4", +"+% c #FFFFE7", +"@% c #FFFFE8", +"#% c #FFFFE6", +"$% c #FFFFDF", +"%% c #FFFFC4", +"&% c #FFFE9F", +"*% c #FFFF93", +"=% c #FEFE85", +"-% c #FF8340", +";% c #F77137", +">% c #AB5024", +",% c #813F1B", +"'% c #7F3C1A", +")% c #7B3B19", +"!% c #783A19", +"~% c #733919", +"{% c #6D351A", +"]% c #68371D", +"^% c #67361E", +"/% c #69361D", +"(% c #6E391D", +"_% c #81431B", +":% c #81441C", +"<% c #7B3F1B", +"[% c #703C1D", +"}% c #703C1C", +"|% c #6D361A", +"1% c #72371A", +"2% c #763B1B", +"3% c #7A3B1A", +"4% c #813D19", +"5% c #883F18", +"6% c #D4642F", +"7% c #FF7E3D", +"8% c #FE9246", +"9% c #FFEF7E", +"0% c #FFFF94", +"a% c #FFFFBE", +"b% c #FFFFE5", +"c% c #FFFFEB", +"d% c #FFFFEE", +"e% c #FFFFEF", +"f% c #FFFFCC", +"g% c #FFFFA4", +"h% c #FFFE95", +"i% c #FFFF8B", +"j% c #FFC05F", +"k% c #FE7438", +"l% c #E66A34", +"m% c #78391E", +"n% c #5D311C", +"o% c #5B321D", +"p% c #582D1A", +"q% c #542B1A", +"r% c #532B1B", +"s% c #502B1C", +"t% c #552D1C", +"u% c #572E1B", +"v% c #783E1C", +"w% c #7C3E1A", +"x% c #7E3B1B", +"y% c #79381B", +"z% c #7F3C1B", +"A% c #843C18", +"B% c #833D17", +"C% c #833C17", +"D% c #823A17", +"E% c #7F3D19", +"F% c #823E1A", +"G% c #803D19", +"H% c #853F1A", +"I% c #863E17", +"J% c #863D18", +"K% c #A74F23", +"L% c #FA793B", +"M% c #FE823E", +"N% c #FFA651", +"O% c #FFFE88", +"P% c #FFFF98", +"Q% c #FFFFA8", +"R% c #FFFFED", +"S% c #FFFFF2", +"T% c #FFFFF4", +"U% c #FFFFF5", +"V% c #FFFFF1", +"W% c #FFFFC7", +"X% c #FFFF9A", +"Y% c #FFFF8C", +"Z% c #FFDB6C", +"`% c #FD7D3C", +" & c #FE773A", +".& c #C4592B", +"+& c #74371A", +"@& c #753A1C", +"#& c #7A3E1C", +"$& c #7E3D1B", +"%& c #894119", +"&& c #914518", +"*& c #954417", +"=& c #8C461B", +"-& c #61351E", +";& c #63331C", +">& c #67351B", +",& c #763C1B", +"'& c #793E1B", +")& c #7D421B", +"!& c #5F311C", +"~& c #61331E", +"{& c #D06633", +"]& c #FF7F3D", +"^& c #FF8F45", +"/& c #FFB156", +"(& c #FFFF89", +"_& c #FFFFAE", +":& c #FFFFF9", +"<& c #FFFFFC", +"[& c #FFFFFD", +"}& c #FFFFFB", +"|& c #FFFFF8", +"1& c #FFFFF3", +"2& c #FFFFEC", +"3& c #FFFFB0", +"4& c #FFFF9F", +"5& c #FFFF8E", +"6& c #FFDC6C", +"7& c #FE8841", +"8& c #FF7D3D", +"9& c #FF7639", +"0& c #92421E", +"a& c #753517", +"b& c #723618", +"c& c #6B3318", +"d& c #663018", +"e& c #673018", +"f& c #652E19", +"g& c #632F19", +"h& c #633019", +"i& c #592F1A", +"j& c #5A311B", +"k& c #5D341D", +"l& c #5E351D", +"m& c #8F3F17", +"n& c #874018", +"o& c #803C19", +"p& c #823C19", +"q& c #833E19", +"r& c #863E18", +"s& c #8C4117", +"t& c #8B3F17", +"u& c #893E17", +"v& c #61301A", +"w& c #894323", +"x& c #FE8842", +"y& c #FF9A4A", +"z& c #FFBF5C", +"A& c #FFFB89", +"B& c #FFFFA3", +"C& c #FFFFB5", +"D& c #FFFFE0", +"E& c #FFFFEA", +"F& c #FFFFFA", +"G& c #FFFFFE", +"H& c #FFFFFF", +"I& c #FFFFD2", +"J& c #FFFFA5", +"K& c #FFFF91", +"L& c #FFD969", +"M& c #FF9949", +"N& c #FE8440", +"O& c #FF7A3B", +"P& c #DE6431", +"Q& c #7D3718", +"R& c #7D3918", +"S& c #853B17", +"T& c #843B17", +"U& c #843E19", +"V& c #833F19", +"W& c #873F18", +"X& c #873E16", +"Y& c #8A3E17", +"Z& c #6F3A1B", +"`& c #783A1A", +" * c #783B1B", +".* c #7E3B18", +"+* c #813C17", +"@* c #7E3917", +"#* c #7D3B1A", +"$* c #7A3A1A", +"%* c #CF6430", +"&* c #FE813E", +"** c #FE9045", +"=* c #FFA750", +"-* c #FFD164", +";* c #FFFA8B", +">* c #FFFF95", +",* c #FFDD6C", +"'* c #FFAB53", +")* c #FE7C3B", +"!* c #7D3B1E", +"~* c #68341B", +"{* c #65331B", +"]* c #65361C", +"^* c #67361D", +"/* c #68381D", +"(* c #693A1E", +"_* c #6A391E", +":* c #6A3921", +"<* c #6D391D", +"[* c #68351E", +"}* c #68351C", +"|* c #69381C", +"1* c #723619", +"2* c #773818", +"3* c #833D19", +"4* c #FB7B3B", +"5* c #FF8741", +"6* c #FF994A", +"7* c #FFB858", +"8* c #FFE770", +"9* c #FFFF92", +"0* c #FFFFAD", +"a* c #FFFFE9", +"b* c #FFFFBF", +"c* c #FFF277", +"d* c #FF8440", +"e* c #FF793B", +"f* c #B7552A", +"g* c #562C1A", +"h* c #562E1B", +"i* c #5C311C", +"j* c #5A311C", +"k* c #592F1B", +"l* c #58301C", +"m* c #5E341D", +"n* c #65361D", +"o* c #673821", +"p* c #6E371A", +"q* c #6F361A", +"r* c #70351B", +"s* c #6E3419", +"t* c #9A4B23", +"u* c #FF7F3E", +"v* c #FE8B42", +"w* c #FFA24E", +"x* c #FFC960", +"y* c #FFF87D", +"z* c #FFFF9D", +"A* c #FFFEB1", +"B* c #FFFFF7", +"C* c #FFFFA0", +"D* c #FFFE84", +"E* c #FFD366", +"F* c #FFA44F", +"G* c #FF8C43", +"H* c #E76B33", +"I* c #6C371A", +"J* c #6B3419", +"K* c #693419", +"L* c #6A361A", +"M* c #6A351B", +"N* c #6A361C", +"O* c #6E3A1B", +"P* c #71351A", +"Q* c #6D361D", +"R* c #70351A", +"S* c #753B1A", +"T* c #BD5C2C", +"U* c #FF823F", +"V* c #FFAB52", +"W* c #FFD767", +"X* c #FFFF88", +"Y* c #FFFFA6", +"Z* c #FFFEA8", +"`* c #FFFF8F", +" = c #FFE56E", +".= c #FFAF54", +"+= c #FF9146", +"@= c #FE7C3C", +"#= c #F27237", +"$= c #76381D", +"%= c #65311B", +"&= c #6A361D", +"*= c #753A1B", +"== c #6E3A1D", +"-= c #70391C", +";= c #6F371C", +">= c #6C371D", +",= c #6D361E", +"'= c #783F1D", +")= c #D46833", +"!= c #FF9548", +"~= c #FFB356", +"{= c #FFE46F", +"]= c #FFFEAB", +"^= c #FFFFBB", +"/= c #FFFFD5", +"(= c #FFFFB9", +"_= c #FFFF97", +":= c #FFF075", +"<= c #FFB959", +"[= c #FF9648", +"}= c #F67438", +"|= c #934623", +"1= c #67331C", +"2= c #6F391C", +"3= c #6D3A1E", +"4= c #75391A", +"5= c #853D17", +"6= c #7D3D1B", +"7= c #723E1D", +"8= c #6F3B1D", +"9= c #703B1C", +"0= c #70381B", +"a= c #66361C", +"b= c #E57037", +"c= c #FE8640", +"d= c #FFB859", +"e= c #FFEC73", +"f= c #FFFFAF", +"g= c #FFF57A", +"h= c #FF833F", +"i= c #F77438", +"j= c #A74B21", +"k= c #75391B", +"l= c #70381A", +"m= c #7C401C", +"n= c #7F421B", +"o= c #874119", +"p= c #6A371B", +"q= c #6C391D", +"r= c #793D1A", +"s= c #783D1C", +"t= c #743B1D", +"u= c #6B371C", +"v= c #ED7439", +"w= c #FFBB5A", +"x= c #FFFF96", +"y= c #FFFFF0", +"z= c #FFF67C", +"A= c #FFC35E", +"B= c #FF9B4B", +"C= c #F87539", +"D= c #9D4C26", +"E= c #66361D", +"F= c #713618", +"G= c #723A1C", +"H= c #713A1B", +"I= c #6B3B1D", +"J= c #63331F", +"K= c #63341F", +"L= c #673620", +"M= c #63331B", +"N= c #803A18", +"O= c #7F3919", +"P= c #7D3A19", +"Q= c #6D341A", +"R= c #E57238", +"S= c #FFBA5A", +"T= c #FFEF73", +"U= c #FFFF9C", +"V= c #FFF67B", +"W= c #FFC25D", +"X= c #FF9B4A", +"Y= c #F87639", +"Z= c #9A4827", +"`= c #6B3521", +" - c #62321F", +".- c #833E1A", +"+- c #CF6834", +"@- c #FFB758", +"#- c #FFE871", +"$- c #FFFF99", +"%- c #FFF276", +"&- c #FFBC5A", +"*- c #FF9849", +"=- c #F57538", +"-- c #8E4523", +";- c #BB5D2D", +">- c #FFB154", +",- c #FFDE6B", +"'- c #FFFFA9", +")- c #FFFFF6", +"!- c #FFEB72", +"~- c #FFB557", +"{- c #FE7F3C", +"]- c #F17438", +"^- c #7F3F1F", +"/- c #9D4C25", +"(- c #FE8340", +"_- c #FFA851", +":- c #FFFD82", +"<- c #FFDD6A", +"[- c #FF9046", +"}- c #ED7036", +"|- c #6F3A1E", +"1- c #FF813E", +"2- c #FF8D44", +"3- c #FFA04D", +"4- c #FFF176", +"5- c #FFFEB0", +"6- c #FFFA7D", +"7- c #FFA24D", +"8- c #FF8A43", +"9- c #FE7C3D", +"0- c #CA5F2D", +"a- c #83401A", +"b- c #7E3E1B", +"c- c #733B1C", +"d- c #803C1A", +"e- c #DA6C33", +"f- c #FE8741", +"g- c #FE9848", +"h- c #FFB255", +"i- c #FFFE87", +"j- c #FFFEB6", +"k- c #FFFEB5", +"l- c #FFFFA7", +"m- c #FFFF8D", +"n- c #FFB657", +"o- c #FF9749", +"p- c #FF7B3B", +"q- c #954923", +"r- c #86421B", +"s- c #763E1D", +"t- c #733D1D", +"u- c #6F3C1D", +"v- c #A55026", +"w- c #FF9145", +"x- c #FFA44E", +"y- c #FFC65F", +"z- c #FFF177", +"A- c #FFFFBA", +"B- c #FFFEAD", +"C- c #FFF87C", +"D- c #FFCB62", +"E- c #FFA54F", +"F- c #FE8D44", +"G- c #E96F35", +"H- c #773B1C", +"I- c #67331B", +"J- c #7A3D1E", +"K- c #E37438", +"L- c #FFB054", +"M- c #FFD666", +"N- c #FFFA7F", +"O- c #FFFEAF", +"P- c #FFFD84", +"Q- c #FFDC6A", +"R- c #FF9748", +"S- c #FE8540", +"T- c #FE7B3C", +"U- c #9A4924", +"V- c #72381C", +"W- c #68361D", +"X- c #61331B", +"Y- c #62321A", +"Z- c #67341B", +"`- c #B45728", +" ; c #FA823F", +".; c #FE8C42", +"+; c #FFA14D", +"@; c #FFDE6A", +"#; c #FFFE81", +"$; c #FFE56F", +"%; c #FF9F4C", +"&; c #D56631", +"*; c #6E391E", +"=; c #72371B", +"-; c #6D381A", +";; c #5D301B", +">; c #59301C", +",; c #59311D", +"'; c #512B1B", +"); c #512A1B", +"!; c #5D2F1B", +"~; c #62311A", +"{; c #D86E35", +"]; c #FE9144", +"^; c #FFDF6B", +"/; c #FFFC7F", +"(; c #FFFFC1", +"_; c #FFE76F", +":; c #FFC05C", +"<; c #FFA34E", +"[; c #F57639", +"}; c #90431E", +"|; c #69351C", +"1; c #683820", +"2; c #65371E", +"3; c #69381E", +"4; c #65371D", +"5; c #62321B", +"6; c #5F341D", +"7; c #61341D", +"8; c #63311B", +"9; c #66331B", +"0; c #6C3319", +"a; c #813F1D", +"b; c #EB773A", +"c; c #FFB958", +"d; c #FFF378", +"e; c #FFFE8A", +"f; c #FFFEB3", +"g; c #FF843F", +"h; c #B15427", +"i; c #773A19", +"j; c #733618", +"k; c #77381A", +"l; c #76391B", +"m; c #6D371A", +"n; c #6B3A1E", +"o; c #853E18", +"p; c #823F1A", +"q; c #823F19", +"r; c #823A18", +"s; c #7D3818", +"t; c #7C3718", +"u; c #78371A", +"v; c #7E3818", +"w; c #8D431F", +"x; c #EF783A", +"y; c #FFC85F", +"z; c #FFE16C", +"A; c #FFF47A", +"B; c #FFFE86", +"C; c #FFF77C", +"D; c #FFCC61", +"E; c #FFB256", +"F; c #FE9044", +"G; c #FE833F", +"H; c #AC532A", +"I; c #8A4218", +"J; c #863C17", +"K; c #813C19", +"L; c #873E18", +"M; c #8E3E16", +"N; c #8E3E17", +"O; c #57331E", +"P; c #522E1C", +"Q; c #532C1B", +"R; c #5D2D1A", +"S; c #5D2C19", +"T; c #5F2D19", +"U; c #612F19", +"V; c #642F19", +"W; c #6A3318", +"X; c #6E3318", +"Y; c #6F3419", +"Z; c #84411B", +"`; c #8E451E", +" > c #EA7738", +".> c #FF8D43", +"+> c #FFB556", +"@> c #FFC75F", +"#> c #FFE66F", +"$> c #FFF679", +"%> c #FFF67A", +"&> c #FFE870", +"*> c #FFDA69", +"=> c #FFB757", +"-> c #FF9A49", +";> c #FE7D3C", +">> c #984B29", +",> c #7A401B", +"'> c #743D1B", +")> c #753D1C", +"!> c #6E381A", +"~> c #6E3A1C", +"{> c #62331C", +"]> c #5B351E", +"^> c #944316", +"/> c #884219", +"(> c #7A3E1D", +"_> c #753E1D", +":> c #723A1E", +"<> c #713C1E", +"[> c #6C391E", +"}> c #75361A", +"|> c #75381B", +"1> c #63301A", +"2> c #67331D", +"3> c #D76B36", +"4> c #FC833F", +"5> c #FF8842", +"6> c #FD9A49", +"7> c #FFAD53", +"8> c #FFBE5A", +"9> c #FFC55E", +"0> c #FFC35D", +"a> c #FFBE5B", +"b> c #FF8641", +"c> c #FF813F", +"d> c #F4773A", +"e> c #A04D24", +"f> c #88421A", +"g> c #823E1B", +"h> c #7F3D1B", +"i> c #803B1A", +"j> c #844019", +"k> c #7B3C1C", +"l> c #813D1C", +"m> c #813D1B", +"n> c #8A441A", +"o> c #984717", +"p> c #63321B", +"q> c #5F2F1D", +"r> c #592C1B", +"s> c #572C1B", +"t> c #4D2A1B", +"u> c #4D291B", +"v> c #4F291A", +"w> c #53291A", +"x> c #532A1A", +"y> c #57301C", +"z> c #5A301B", +"A> c #68331A", +"B> c #BD582A", +"C> c #ED7539", +"D> c #FF8A42", +"E> c #FF8E44", +"F> c #FE9346", +"G> c #FF9C4B", +"H> c #FF9E4B", +"I> c #FF9E4C", +"J> c #FF9C4A", +"K> c #FD9246", +"L> c #F97A3A", +"M> c #DA632F", +"N> c #9F451D", +"O> c #863D16", +"P> c #713619", +"Q> c #6C381B", +"R> c #6B3A1C", +"S> c #6E3B1D", +"T> c #763D1B", +"U> c #82441C", +"V> c #7E411B", +"W> c #793B19", +"X> c #7E3E1A", +"Y> c #67381E", +"Z> c #63371E", +"`> c #64381E", +" , c #65361E", +"., c #63351D", +"+, c #66351A", +"@, c #703719", +"#, c #7F3F1B", +"$, c #78391A", +"%, c #763618", +"&, c #6C3217", +"*, c #6E2F17", +"=, c #7A2C15", +"-, c #A3361B", +";, c #D14E26", +">, c #F26C34", +",, c #FF8943", +"', c #FF8B43", +"), c #FF8942", +"!, c #FA7539", +"~, c #E4592A", +"{, c #C1441F", +"], c #993918", +"^, c #873E19", +"/, c #4E2B1B", +"(, c #502A1B", +"_, c #532E1D", +":, c #5C331D", +"<, c #6D3A1D", +"[, c #703519", +"}, c #6A3A1F", +"|, c #743519", +"1, c #783519", +"2, c #773719", +"3, c #763419", +"4, c #763519", +"5, c #7A3618", +"6, c #7F3918", +"7, c #7A3719", +"8, c #79381A", +"9, c #863817", +"0, c #963715", +"a, c #A73414", +"b, c #BC3416", +"c, c #D03617", +"d, c #DE3B19", +"e, c #ED4F25", +"f, c #F5642F", +"g, c #FB7337", +"h, c #FE793A", +"i, c #FF7D3C", +"j, c #FC7538", +"k, c #F86932", +"l, c #F15629", +"m, c #E6421D", +"n, c #D73517", +"o, c #C73314", +"p, c #B63514", +"q, c #A33815", +"r, c #933B16", +"s, c #833B18", +"t, c #703418", +"u, c #5B2E1A", +"v, c #5A2E1A", +"w, c #6B361D", +"x, c #813F1A", +"y, c #843F1A", +"z, c #7E3D1A", +"A, c #773B1D", +"B, c #6C371F", +"C, c #6E381F", +"D, c #6F351C", +"E, c #703419", +"F, c #713419", +"G, c #703319", +"H, c #6B351E", +"I, c #6A341A", +"J, c #753119", +"K, c #812F18", +"L, c #952F17", +"M, c #A82C16", +"N, c #B72D16", +"O, c #C12D15", +"P, c #C82E15", +"Q, c #CD2D16", +"R, c #D02D14", +"S, c #D12D14", +"T, c #D12E14", +"U, c #CF2D14", +"V, c #CB2D14", +"W, c #C42E14", +"X, c #B82D14", +"Y, c #AA2E14", +"Z, c #9E3315", +"`, c #923715", +" ' c #853716", +".' c #763818", +"+' c #6C361A", +"@' c #5D321D", +"#' c #65351D", +"$' c #703B1E", +"%' c #7A401D", +"&' c #7F421D", +"*' c #80411C", +"=' c #773D1C", +"-' c #73371C", +";' c #63321D", +">' c #61321C", +",' c #61331D", +"'' c #61331C", +")' c #61321D", +"!' c #60311A", +"~' c #572D1A", +"{' c #6A2E1A", +"]' c #742D19", +"^' c #802A17", +"/' c #892A17", +"(' c #942A17", +"_' c #9D2C17", +":' c #A62D17", +"<' c #A92F19", +"[' c #AD2F19", +"}' c #AE2F16", +"|' c #AC2D15", +"1' c #A52C17", +"2' c #A02D16", +"3' c #9A2F17", +"4' c #8F2D16", +"5' c #882F17", +"6' c #833216", +"7' c #7A3417", +"8' c #753518", +"9' c #753718", +"0' c #7C3A18", +"a' c #863F18", +"b' c #883F17", +"c' c #893F18", +"d' c #813C18", +"e' c #763918", +"f' c #64301A", +"g' c #5D331D", +"h' c #5C341D", +"i' c #6F3618", +"j' c #803B18", +"k' c #803C18", +"l' c #7D3C18", +"m' c #753919", +"n' c #733718", +"o' c #6C3318", +"p' c #6D3318", +"q' c #703219", +"r' c #773318", +"s' c #7C3118", +"t' c #813119", +"u' c #873219", +"v' c #8B3317", +"w' c #893218", +"x' c #8C3218", +"y' c #8D3117", +"z' c #8C3017", +"A' c #893117", +"B' c #883117", +"C' c #843318", +"D' c #7F3119", +"E' c #7B3418", +"F' c #79391A", +"G' c #773918", +"H' c #7B391A", +"I' c #8A3E16", +"J' c #8D4117", +"K' c #8D4218", +"L' c #68371C", +"M' c #813D18", +"N' c #803E19", +"O' c #723B1C", +"P' c #67321B", +"Q' c #72351A", +"R' c #6E351B", +"S' c #70341C", +"T' c #78361A", +"U' c #7D3719", +"V' c #7A351A", +"W' c #793419", +"X' c #753218", +"Y' c #793318", +"Z' c #783319", +"`' c #743419", +" ) c #70391D", +".) c #79361A", +"+) c #7A371A", +"@) c #803917", +"#) c #883D17", +"$) c #7D3B19", +"%) c #72391C", +"&) c #6F391D", +"*) c #7A381A", +"=) c #72391D", +"-) c #71371D", +";) c #77371A", +">) c #69371C", +",) c #67371E", +"') c #5C301C", +")) c #61301C", +"!) c #69321B", +"~) c #6D341B", +"{) c #67321E", +"]) c #60321D", +"^) c #66331A", +"/) c #64331A", +"() c #74371B", +"_) c #7C391A", +":) c #7B391B", +"<) c #74381C", +"[) c #7B3A1A", +"}) c #66341D", +"|) c #62361D", +"1) c #5F311A", +"2) c #60311B", +"3) c #68341D", +"4) c #60331F", +"5) c #60331E", +"6) c #5B2E1C", +"7) c #562D1C", +"8) c #582F1E", +"9) c #582F1D", +"0) c #542E1C", +"a) c #59301D", +"b) c #60311C", +"c) c #5F321C", +"d) c #5F331D", +"e) c #6A381D", +"f) c #65321D", +"g) c #65341D", +"h) c #6C3219", +"i) c #6B3119", +"j) c #693019", +"k) c #64321C", +"l) c #62311D", +"m) c #64351F", +"n) c #6B3721", +"o) c #693921", +"p) c #62341F", +"q) c #5A2D1B", +"r) c #592D1B", +"s) c #592F1C", +"t) c #5F2E1A", +"u) c #69391D", +"v) c #6D3621", +"w) c #70351E", +"x) c #6E3620", +"y) c #66331E", +"z) c #61321E", +"A) c #5B311D", +"B) c #5D311D", +"C) c #6A351F", +"D) c #6B3620", +"E) c #6B361F", +"F) c #6E3621", +"G) c #69371E", +". + @ # $ % % & * = - ; > = , ' ) ! ~ { ] ^ / ( _ : < < [ } | ^ / ( _ : < < [ 1 2 3 @ 4 5 6 7 8 1 9 0 a b c d e f g h i ", +"j k l m n n o p q r s t u v w x y z A B C D E F G H I J K L L M N M O P Q R S T ! U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.", +"= >.,.'.).; !.~.{.].^.' /./.(._.:.<.[.}.|.1.2.3.4.5.6.7.8.9.0.a.K b.c.d.e.f.g.h.i.j.T _.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.", +"A.A.B.C.D.E.F.G.H.I.J.K.L.M.M.1 N.O.P.Q.R.S.T.e.1 M.U.V.A f.W.X.Y.X.Z./.`. +F..+++@+#+$+%+&+*+> =+-+;+>+,+,+'+)+!+~+{+]+", +"^+/+^.+.(+_+(+:+#+<+[+T }+Z.|+1+2+3+4+5+6+7+8+N.9+0+a+b+c+d+e+f+g+h+i+b.Q.j+k+l+m+d q n+g+o+p+q+r+s+t+u+v+w+x+y+! z+A+B+", +"+ C+D+E+F+G+H+I+J+K+L+M+e.N+O+P+M Q+^+R+S+T+U+V+o+W+X+Y+Z+`+ @.@+@@@#@$@%@&@*@=@J.-@p ;@>@,@'@)@T+)@!@~@{@]@^@/@' (@_@:@", +"<@<@[@}@|@1@2@3@4@1 D 5@6@b.7@8@9@U+o+J.0@)@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@D.R ] &@s@t@u@v@w@x@y@z@A@B@C@D@E@F@}.k+", +"n.G@H@I@J@K@L@M@N@O@P@Q@R@S@T@l U@V@W@X@,.Y@Z@`@ #.#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#/#(#_#_#_#:#<#[#' ' D.3.1+[#}#", +"R.T |#1#2#3#4#5#6#7#8#9#A@0#a#b#c#,@-@d#e#f#g#h#i#j#k#l#*#&#%#m#n#o#p#q#r#s#t#u#v#w#x#y#z#M+, G+A#B#C#D#E#F#M.;@g G#3.H#", +"I#J#K#L#{@M#N#O#P#Q#R#S#T#U#V#W#g+X#Y#Z#`# $.$+$@$#$$$%$$#&$*$=$&#-$;$>$,$'$)$!$~${$]$^$/$U+($`._$:$D.<$[$}$Q+|$1$2$3$4$", +"C@5$6$7$8$9$0$P.a$b$c$d$e$e$f$g$h$i$j$k$l$m$n$o$p$p#o#q$=$r$s$r$*$$#t$u$v$w$x$y$z$A$B$C$D$E$;@c#b F$W#G$H$a b#U#I$(#c 1@", +"M.s@J$K$T.] L$M$N$O$P$Q$R$S$T$:#2+U$V$W$X$Y$Z$`$-# %q$*$.%+%@%#%.%$%n#o#%%,$s#&%*%=%-%;%>%,%'%)%!%~%{%e.]%^%* M+K+/%* (%", +"_%:%<%[%}%J$A |%($~@1%2%3%4%8$5%6%7%8%9%0%t#o$a%;$n#*$b%c%d%e%e%c%b%$%n#f%#$o$g%h%i%j%k%l%m%n%o%p%q%r%s%R$t%u%x D+y+v%w%", +"x%y%z%A%B%C%D%E%F%G%H%K@I%J%9$K%L%M%N%O%P%Q%,$p#-$*$#%R%S%T%U%T%V%R%#%=$-$W%,$Z$X%Y%Z%`% &.&+&y.>@N.7+T+_$@&#&$&%&&&*&=&", +"-&; F+;&>&n.0@]@,&'&)&2%:#!&~&{&]&^&/&(&Y$_&#$l#m#.%d%T%:&<&[&}&|&1&2&.%m# %#$3&4&5&6&7&8&9&0&a&b&c&d&e&f&g&h&i&j&k&l&p.", +"m&n&O@o&p&q&F%r&s&t&u&o&I@v&w&8&x&y&z&A&B&C&p#-$D&E&1&F&G&G&H&G&G&:&S%E&$%I&W%@$J&K&L&M&N&O&P&Q&R&3%l+S&T&U&V&V&J#W&X&Y&", +"L$Z&P+V+`& *d#]#.*+*@*#*I$$*%*&***=*-*;*Q%p$;$&#.%e%:&H&H&G&H&G&H&G&|&d%s$$#;$p$Z$>*,*'*^&)* &!*+ /@o.~*{*]*u.^*/*(*_*C ", +":*<*p+[*}*|*[#/.b&p 1*d#2*3*4*5*6*7*8*9*0*#$o#=$a*T%<&H&G&H&H&H&G&H&<&S%+%&$ %b*_&P%c*z&y&d*e*f*O#g*h*x i*j*k*l*j*m*n*o*", +"i+p*q*p*~@{@r*0+X@W@N+++s*t*u*v*w*x*y*z*A*>$I&$%2&|&H&H&H&H&H&H&H&H&G&B*E&=$t$>$3&C*D*E*F*G*O&H*k.I*w+J*K*o.L*M*N*A O*|*", +"R 4@/.-.P*q*Q*6@R*/$] {@S*T*U***V*W*X*Y*@$p#-$D&d%F&H&G&H&H&H&H&H&G&G&|&2&*$%$%%C&Z*`* =.=+=@=#=$=%=}*1+u+{%y+..&=U+*=R ", +"L.==..-=;=>=|+U.,=$+X.'=_ )=d*!=~={=`*]=^=;$$#s$e%}&H&H&H&H&H&H&H&H&G&:&R%D&/=u$(=s#_=:=<=[=V$}=|=s@I+1=..2=E#3===b.c 4=", +"5=6=~@..p+|%==7=8=9=L.0=a=b=c=6*d=e=0%f=a% %m#+%S%<&H&H&H&H&H&H&H&H&G&F&d%s$q$;$p$_&y$g=z&M&h=i=j=J@q k=8+* U.l=X@m=n=o=", +"p=:#N*2=' q=1.*@r=s=t=>=u=v=5*y&w=:=x=o$#$t$&$@%T%[&H&H&H&H&H&H&H&H&G&}&y=b%&#f%a%f=z*z=A=B=-%C=D=E=F=1*;=G=>&<*H=_$S.I=", +"F%J=K=L=M=n*8=*=N=O=P=o+Q=R=5*y&S=T=>*o$#$o#=$a*T%[&H&H&H&H&H&H&H&H&G&<&V%b%&#l#a%f=U=V=W=X=-%Y=Z=`= -J=K=L=M=n*8=*=N=.-", +"| ^ / ( _ : < < [ 1 2 3 @ +-5*M&@-#-K&'$a% %%#+%1&<&H&G&H&H&H&H&H&G&G&F&e%s$q$;$p$_&$-%-&-*-U*=---{ ] ^ / ( _ : < < [ } ", +"L M N M O P Q R S T ! U V ;-c=!=>-,-i%'-^=$$$#.%d%:&G&H&G&H&H&H&G&H&G&)-c%D&/=u$(=s#*%!-~-!={-]-^-B C D E F G H I J K L ", +"0.a.K b.c.d.e.f.g.h.i.j.T /-(-**_--*:-t#`$k#-$$%E&1&F&H&H&H&G&H&H&G&:&y=#%&$%$-#C&x$(&<-V*[-8&}-[.}.|.1.2.3.4.5.6.7.8.9.", +"W.X.Y.X.Z./.`. +F..+++@+#+|-1-2-3-A=4-_=5-a%f%&#s$2&1&F&[&H&H&H&[&|&V%a*D&n#$$v$3&U=6-x*7-8-9-0-P.Q.R.S.T.e.1 M.U.V.A f.", +"a-b-Q.c-i+b.Q.j+k+l+m+d q d-e-f-g-h-<-i-J&j--#t$m#s$c%V%)-B*:&B*T%e%a*D&$# %>$k-l-m-8*n-o-h=p-q-4+5+6+7+8+N.9+0+a+b+r&r-", +"s-t-u-Z.1+N.M.&@*@=@J.-@p ;@v-h=w-x-y-z-0%0*A-k#%$&#D&b%E&R%R%2&a*b%*$q$ %%%,$B-$-C-D-E-F-u*G-Q+^+R+S+T+U+V+U+9+X.q*|.J ", +"H-O+m.G=] E.N*}*I-r@D.R ] &@J-K-5*6*L-M-N-X%O-A-%%l#/=m#*$D&r$D&=$&#-$f%-#(='$Y$P-Q-~=R-S-T-U-U+o+J.0@)@a@V-4@F.U.U.a@|.", +"==W-C#%+X-{*Y-(+M=Z-!#~#{#]#^#`- ;.;+;7*@;#;X%B-,$b*W%l#%$*#*#-$t$l#W%b*@$0*Y$i-$;&-%;v*7%&;t+V@W@X@,.*;R H#L$=;-;-=B p+", +"; ;;>;l*l*,;u%';);q%!;~;x#y#z#M+{;c=];x-&-^;/;>*l-w$(=a%>$%%k#%%(;a%,$A*'-$-P-_;:;<;**&*[;};c#,@-@p !#~*l.M.D.T |;1;2;Y ", +"3;4;5;6;7;}#' M=I+8;9;:#0;^$/$U+a;b;f-8%<;c;W*d;e;y$Y*_&f;C&`$C&w$'$l-z*m-z=@;&-<;];g;4*h;W#g+X#o&^#i;j;R@k;l;3+2=p*m;n;", +"r&o;B@p;q;D%r;s;n t;s;0 u;v;D$E$;@w;x;5*];3-h-y;z;A;B;K&P%U=Y$z*$-9*X*C;$;D;E;3-F;G;8&H;f$g$h$W&<@I;r&J%J;A%K;O@L;M;N;5=", +"O;P;Q;d$R;S;T;U;V;W;X;Y;n G%Z;,%'%)%`; >5*.>X==*+>@>W*#>:=$>C;%>%-&>*>x*=>=*->v*h=;>>>S$T$:#2+,>'>)>!>~>m.a=%+%={>[#}*]>", +"^>/>f+(>_>:><>[>s@,@}>3$|>($T 1>n%o%p%2>3>4>5>w-6><;7>n-8>W=9>0>a>@-7><;y&F;b>c>d>e>3%4%8$5%f>f+} g>h>i>G j>F%k>l>m>n>o>", +"c-p>q>r>s>t>u>v>w>x>t y>z>8;A>s*+&y.>@N.9@B>C>c=D>E>F>*-G>H>%;I>J>*-K>E>x&d*L>M>N>K@O>J%9$^#u@($P*g P>Q>R>S>S>T>U>V>W>X>", +"Y>Z>Z>`> , ,.,+,U.@,L#b `&#,#*$,%,a&b&&,*,=,-,;,>,d*,,',',G*',',',),x&d*!,~,{,],^,$*/.!&*+/,(,_,:,C#x+J$S.<,q=1 [,0;A },", +"l;R@R@b&P>|,%,1,$,2,3,4,5,6,v;7,8,Q&R&V#9,0,a,b,c,d,e,f,g,h,V$i,j,k,l,m,n,o,p,q,r,s,t,v&u,p%v,y w,S.2%x,y,7$y,z,V&X>h+A,", +"0+]#4,U.B,C,'@M*,=D,E,F,G,s+H,_@I,p.+ X 0;J,K,L,M,N,O,P,Q,R,S,S,T,U,V,W,X,Y,Z,`, 'k+I$`&l;.'+'H@G.!;{.@'#'$'H-%'&'*'='|$", +"S#-'(#^@U N*S+= ;'>','''= z#K=)'` !'O#g*~'t.{']'^'/'('_':'<'['}'|'1'2'3'4'5'6'7'8'9'2*0'0#a'b'[@c'd'e'f'v,g'h'+.S#p+1+V.", +"U ~*T Z-[#Z-<#i'F=($T+;.j'k'/#l'm'n'k.I*w+o'p'q'r's't'u'v'w'x'y'z'A'B'C'D'E'F'@&t+++s**=S@G'F$H'r;I'J'K'C@s=|;''M#L'M=~*", +"0#B@D@M'B@a'L@U&o&N'3%h O'~*{*] V-'@P'%=}*1+^@s*Q'R'S'T'U'V'V'W'X'Y'Z'`'h.=@F,/$] {@S*b.b.L.3+ )4@[,+&.)+)@)D%#)t&Y&$)}.", +"8;}#}#Z-I*4@4@R.%)-=&)*=*)i =)-);)c 7.s@I+1=..2=E#3===b.c 4=L.==..-=;=>=|+U.,=$+X.'=_ >),)/+2>, '.i*')))n*x y !)~){)]){*", +"!)S#E.^)/)/){*u+p+-=:>_.()_):)i <)[)l+J@q k=8+* U.l=X@m=n=o=5=6=~@..p+|%==7=8=9=L.0=a=N$1 ;=~*})|)c$4#1)2)!'(+N$3)s /%!)", +"4)5)6),+7)7),+,+8)9)9)0)a)>'b)c)d)2>e)E=F=1*;=G=>&<*H=_$S.I=p=:#N*2=' q=1.*@r=s=t=>=u=3.s@L.L.($F.f)g)~)h)i)j)k)k)l)@+m)", +"n)o)p)d)q)r)s)t)M#u)u)..T E.M.F#v)w)x)`= -J=K=L=M=n*8=*=N=.-F%J=K=L=M=n*8=*=N=O=P=o+Q=3.3.M*U@y)z)A)B))''.7;{+C)D)E)F)G)"}; diff --git a/app/examples/Basic/Collection/.directory b/app/examples/Basic/Collection/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Basic/Collection/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Basic/Collection/.icon.png b/app/examples/Basic/Collection/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..52e66249c734d935df42d897a0ea6ab79841d9c4 GIT binary patch literal 4310 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 Ef@}{+iU0rr literal 0 HcmV?d00001 diff --git a/app/examples/Basic/Collection/.lang/ca.po b/app/examples/Basic/Collection/.lang/ca.po new file mode 100644 index 00000000..721125f0 --- /dev/null +++ b/app/examples/Basic/Collection/.lang/ca.po @@ -0,0 +1,48 @@ +# Catalan translation of Collection +# Copyright (C) 2000-2010 Benoît Minisini. +# This file is distributed under the same license as the Collection package. +# Jordi Sayol , 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: Collection\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2011-03-20 17:14+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FStart.form:26 +msgid "by juergen@zdero.com" +msgstr "per juergen@zdero.com" + +#: FStart.form:10 +msgid "Collection" +msgstr "Recoŀlecció" + +#: .project:1 +msgid "Collection example" +msgstr "Exemple de recoŀlecció " + +#: FStart.form:16 +msgid "Create Collection" +msgstr "Crea una recoŀlecció" + +#: FStart.class:18 +msgid "Item" +msgstr "Element" + +#: FStart.class:27 +msgid "myThings" +msgstr "CosesMeves" + +#: FStart.class:31 +msgid "Name = " +msgstr "Nom = " + diff --git a/app/examples/Basic/Collection/.lang/cs.po b/app/examples/Basic/Collection/.lang/cs.po new file mode 100644 index 00000000..fd96208e --- /dev/null +++ b/app/examples/Basic/Collection/.lang/cs.po @@ -0,0 +1,40 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Collection example" +msgstr "Příklad kolekcí" + +#: FStart.class:18 +msgid "Item" +msgstr "Položka" + +#: FStart.class:27 +msgid "myThings" +msgstr "moveVěci" + +#: FStart.class:31 +msgid "Name = " +msgstr "Název =" + +#: FStart.form:10 +msgid "Collection" +msgstr "Kolekce" + +#: FStart.form:16 +msgid "Create Collection" +msgstr "Vytvoř kolekci" + +#: FStart.form:26 +msgid "by juergen@zdero.com" +msgstr "-" diff --git a/app/examples/Basic/Collection/.lang/de.po b/app/examples/Basic/Collection/.lang/de.po new file mode 100644 index 00000000..5cfb1a51 --- /dev/null +++ b/app/examples/Basic/Collection/.lang/de.po @@ -0,0 +1,41 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Collection example" +msgstr "Beispiel für Collection" + +#: FStart.class:18 +msgid "Item" +msgstr "Ding" + +#: FStart.class:27 +msgid "myThings" +msgstr "meine Sachen" + +#: FStart.class:31 +msgid "Name = " +msgstr "-" + +#: FStart.form:10 +msgid "Collection" +msgstr "-" + +#: FStart.form:16 +msgid "Create Collection" +msgstr "Collection erstellen" + +#: FStart.form:26 +msgid "by juergen@zdero.com" +msgstr "-" + diff --git a/app/examples/Basic/Collection/.lang/es.po b/app/examples/Basic/Collection/.lang/es.po new file mode 100644 index 00000000..f6daebb5 --- /dev/null +++ b/app/examples/Basic/Collection/.lang/es.po @@ -0,0 +1,41 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FStart.form:26 +msgid "by juergen@zdero.com" +msgstr "por juergen@zdero.com" + +#: FStart.form:10 +msgid "Collection" +msgstr "Colección" + +#: .project:1 +msgid "Collection example" +msgstr "Ejemplo de colección" + +#: FStart.form:16 +msgid "Create Collection" +msgstr "Crear colección" + +#: FStart.class:18 +msgid "Item" +msgstr "Artículo" + +#: FStart.class:27 +msgid "myThings" +msgstr "" + +#: FStart.class:31 +msgid "Name = " +msgstr "Nombre =" + diff --git a/app/examples/Basic/Collection/.lang/nl.po b/app/examples/Basic/Collection/.lang/nl.po new file mode 100644 index 00000000..90c0cc50 --- /dev/null +++ b/app/examples/Basic/Collection/.lang/nl.po @@ -0,0 +1,41 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2014-09-23 01:16+0100\n" +"Last-Translator: Willy Raets \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Collection example" +msgstr "Collectie voorbeeld" + +#: FStart.class:18 +msgid "Item" +msgstr "Element" + +#: FStart.class:27 +msgid "myThings" +msgstr "myThings" + +#: FStart.class:31 +msgid "Name = " +msgstr "Naam =" + +#: FStart.form:10 +msgid "Collection" +msgstr "Collectie" + +#: FStart.form:16 +msgid "Create Collection" +msgstr "Creëer collectie" + +#: FStart.form:26 +msgid "by juergen@zdero.com" +msgstr "door juergen@zdero.com" + diff --git a/app/examples/Basic/Collection/.lang/ru.po b/app/examples/Basic/Collection/.lang/ru.po new file mode 100644 index 00000000..b66dcb5a --- /dev/null +++ b/app/examples/Basic/Collection/.lang/ru.po @@ -0,0 +1,54 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Basic/Collection/.project:18 +msgid "Collection example" +msgstr "Пример коллекции" + +#: app/examples/Basic/Collection/.src/FStart.class:18 +msgid "Item" +msgstr "Элемент" + +#: app/examples/Basic/Collection/.src/FStart.class:27 +msgid "myThings" +msgstr "Мои вещи" + +#: app/examples/Basic/Collection/.src/FStart.class:31 +msgid "Name = " +msgstr "Имя = " + +#: app/examples/Basic/Collection/.src/FStart.form:5 +msgid "Collection" +msgstr "Коллекция" + +#: app/examples/Basic/Collection/.src/FStart.form:10 +msgid "Create Collection" +msgstr "Создать коллекцию" + +#: app/examples/Basic/Collection/.src/FStart.form:18 +msgid "by juergen@zdero.com" +msgstr "от juergen@zdero.com" + diff --git a/app/examples/Basic/Collection/.project b/app/examples/Basic/Collection/.project new file mode 100644 index 00000000..3f5d5a0b --- /dev/null +++ b/app/examples/Basic/Collection/.project @@ -0,0 +1,17 @@ +# Gambas Project File 3.0 +# Compiled with Gambas +Title=Collection example +Startup=FStart +Icon=collection.png +Version=3.6.2 +VersionFile=1 +Component=gb.image +Component=gb.gui +TabSize=2 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence +Packager=1 diff --git a/app/examples/Basic/Collection/.src/CThing.class b/app/examples/Basic/Collection/.src/CThing.class new file mode 100644 index 00000000..4b526262 --- /dev/null +++ b/app/examples/Basic/Collection/.src/CThing.class @@ -0,0 +1,6 @@ +' Gambas class file + +Public Name As String +Public X As Integer +Public Y As Integer +Public ID As Integer diff --git a/app/examples/Basic/Collection/.src/FStart.class b/app/examples/Basic/Collection/.src/FStart.class new file mode 100644 index 00000000..66b8e5dd --- /dev/null +++ b/app/examples/Basic/Collection/.src/FStart.class @@ -0,0 +1,40 @@ +' Gambas class file + +Static Public Sub Main() + Dim myForm As Form + myForm = New FStart + myForm.Show +End + +Public myThings As Collection + +Public Sub btnCreate_Click() +'creating objects and add to collection + Dim i As Integer + Dim myThing As CThing + myThings = New Collection + For i = 1 To 7 + myThing = New CThing + myThing.Name = ("Item") & " " & CStr(i) + myThing.X = i + myThing.Y = i + myThing.ID = i + myThings.Add(myThing, CStr(myThing.ID)) + Next + +'show the collectionmembers in treeview + + tvThings.Add("root", ("myThings")) + + For Each myThing In myThings + tvThings.Add(myThing.ID, myThing.Name,, "root") + tvThings.Add(myThing.ID & "Name", ("Name = ") & myThing.Name,, CStr(myThing.ID)) + tvThings.Add(myThing.ID & "X", "X= " & myThing.X,, CStr(myThing.ID)) + tvThings.Add(myThing.ID & "Y", "Y= " & myThing.Y,, CStr(myThing.ID)) + tvThings.Add(myThing.ID & "ID", "ID= " & myThing.ID,, CStr(myThing.ID)) + Next + + tvThings["root"].Expanded = True + btnCreate.Enabled = False +End + diff --git a/app/examples/Basic/Collection/.src/FStart.form b/app/examples/Basic/Collection/.src/FStart.form new file mode 100644 index 00000000..715d33f5 --- /dev/null +++ b/app/examples/Basic/Collection/.src/FStart.form @@ -0,0 +1,20 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(33,14,61,40) + Text = ("Collection") + Icon = Picture["collection.png"] + Resizable = False + { btnCreate Button + MoveScaled(37,1,23,4) + Text = ("Create Collection") + } + { tvThings TreeView + MoveScaled(1,1,35,38) + Sorted = True + } + { Label1 Label + MoveScaled(37,35,24,4) + Text = ("by juergen@zdero.com") + } +} diff --git a/app/examples/Basic/Collection/collection.png b/app/examples/Basic/Collection/collection.png new file mode 100644 index 0000000000000000000000000000000000000000..ce524b157eba9740ff2e1f3fb51baedfe0b85c59 GIT binary patch literal 2062 zcmV+p2=VucP)w^CZR_|!#}AHeu`^X` zr>(Wc4^BI^?esB@_6-AC6>)&ESkV*<5~%~2z)eEl_kGX%oZS!S8Ys2~OWQSb=6tyO zto7S#{r6h?!ll@zzjY+OlKW}wj(vXwsxHabN3y$yXT|S5`RH9cvY8h%QhxW0l=08( zd>&$n|83w;|D_`Gxj)~t{#hgS)QBga_odunNx9pX@{tiK8}HnI5SrUQic4{E%N|nH zyYJYrysPCK>v}3WJK7a&9~|eLlV}u9=iu3Iz4gw}lbbfespJ10fRztimi+AZe%#aT ztXZ-!gbmmZNcq8~kqBf=c=-o?ss10{xf!$f^_kqOGcC~CuHD>q|GIlJH7bL7FfGts z&>bi_P%J+s2XZF3KuvdJZBD!S*3#SW9K-HE^`ZV}%z*Tj6Mz~5F$sqZh=-w4fsiGm7H(}zh|x!$9R1ban}C7;9KiRG9t^55CkZXXaApd8<$?lw!KiaF5U0MQT}Fu=AvSx(L+lmNg6 ztN>(OfZYh~E{vRos!EtQ8yXrw3B!;Hx&iO{pt%xv2G=tJ2p3zP2LO--L;}{-!*B?U z5S+0bA2AQ0M#FbwGs0n~CiN&le(FBD+#9EY!d`Z;=AF2f77DS&Y-gF2fKb#;W+u9LyZ$ z-)P~V`oPdy5?}9Dzm{0@@t><(wyk2tZQ7!yF#f3=e;u#Ij%$G)JP7$v4P-6A=bTu* zz^lwb&CrmR-2VEFInAo)HFIxy1dcdypj-2E|9s|Qz}jg%I!Pk)(U3+DhH zTtxTUo9FGWTfgy(;p=X#BbtCh28wAg3ZNIjEO1qFnAX8Djt;kwomGMA2J<&-GM#^M z+N0(002`9MeBsMynAcTAm6a?~=QDoo$g;7TQkTD1-vdnRLhYFo-n!=APi>*11#&si z^I+tIz(ziRDCVJ5WLbTR%f?b1O|?^OswSdB&IWZ15=Vx(K6-!+cl5G&-2}x*iAk$K z+RGqa!92B{LRWUd%idPDOgi~^W_E~Mz4px#H zNd+B72#`J~f{N-2IvQKKBGE}}MKixC{sCMR%?B_XDA~aW5J1#a!__??Lr_@*`2rLQ zL1`uipishd6@0tg&-^fF#1PGm&CInsNR6Jw*95UxC5;VnIvQGO4kxL0V;sr#F=0#s ziqxc!g6)852F@XIP4t7GXs5SdEG6ME(Ue?+#raQ5EdXaFqr|h+%TmFz8Ana65myj zHsGot-*2iaS(!%0T{KTcH!MtJ0tFRCC`>q$q-B<<6~+OyU!3uuZGUcH?Y31-p9m{n zpm-_EZPkX7ab9W4S0GJ*?qm4n-m0r0&%2#Sjf`3#ZROED6IG~zx}<~UnGjaX)73`> zN(Uy~J>yeG+p3nT%PVlfa;6=TDS#&fFy9AHk{WY({EghyQ}3mppGXQ>(-vl{k$26v))T5MoaPQnqpVgDsG?w8G>{n z2<%JJd7qygE9v(gDg0??$$PkH@PxfD`Y245tb^--*wA-CcEF;?L3Ojz6-DA z-jFT#zdERwmL_UeC!-;C&&h)P>PhFV?~gij-hzf{3!|V9|fsgq^?%X0~YL z`l@dxw=Q@f8m(nCKaQI#V859;?(EZ_CeQDH{)_Mf1lPMdF5=J21*U2%!Vh*lzQn4y swdM#39tJwg{{C+k0#*Z;&$NMm0Pgn9CQ=SiV*mgE07*qoM6N<$g298?_y7O^ literal 0 HcmV?d00001 diff --git a/app/examples/Basic/DragNDrop/.directory b/app/examples/Basic/DragNDrop/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Basic/DragNDrop/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Basic/DragNDrop/.icon.png b/app/examples/Basic/DragNDrop/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7b64ae2517d510933119ae063f03a1a0e736e9f6 GIT binary patch literal 4159 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, YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Basic/DragNDrop/.project:20 app/examples/Basic/DragNDrop/.src/FDragNDrop.form:5 +msgid "Drag & Drop" +msgstr "Бери-и-Брось" + +#: app/examples/Basic/DragNDrop/.src/FDragNDrop.class:107 +msgid "Test" +msgstr "Тест" + diff --git a/app/examples/Basic/DragNDrop/.project b/app/examples/Basic/DragNDrop/.project new file mode 100644 index 00000000..e4b30f58 --- /dev/null +++ b/app/examples/Basic/DragNDrop/.project @@ -0,0 +1,17 @@ +# Gambas Project File 3.0 +Title=Drag & Drop +Startup=FDragNDrop +Icon=drop.png +Version=3.13.90 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.form +Environment="GB_GUI=gb.qt5" +TabSize=2 +Translate=1 +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence +Packager=1 diff --git a/app/examples/Basic/DragNDrop/.src/FDragNDrop.class b/app/examples/Basic/DragNDrop/.src/FDragNDrop.class new file mode 100644 index 00000000..2fe80767 --- /dev/null +++ b/app/examples/Basic/DragNDrop/.src/FDragNDrop.class @@ -0,0 +1,138 @@ +' Gambas class file + +Private $iKey As Integer +Private Const MIME_TYPE As String = "text/x-gambas-dragndrop-example" + +Public Sub imgIcon_MouseDrag() + + If Mouse.Left Then + Drag.Icon = Last.Picture + Last.Drag(Last.Picture.Image) + 'LAST.Drag(LAST.Tag) + Endif + +End + +Public Sub TreeView1_Drag() + + If Drag.Type <> Drag.Image Then Stop Event + +End + +Public Sub TreeView1_DragMove() + + 'IF Drag.Type <> Drag.Image THEN STOP EVENT + + With TreeView1 + If Not .FindAt(Drag.X, Drag.Y) Then + Drag.Show(TreeView1, .Item.X, .Item.Y, .Item.W, .Item.H) + Else + Drag.Show(TreeView1) + Endif + End With + +End + +Public Sub TreeView1_Drop() + + Dim sKey As String + + With TreeView1 + + If Not .FindAt(Drag.X, Drag.Y) Then + sKey = .Item.Key + Endif + + Inc $iKey + + If Drag.Type = Drag.Image Then + .Add($iKey, "#" & $iKey, Drag.Data.Picture, sKey).EnsureVisible + ' ELSE IF Drag.Type = Drag.Text THEN + ' .Add($iKey, Drag.Data,, sKey).EnsureVisible + Endif + + End With + +End + +Public Sub TreeView1_MouseDrag() + + Dim hImage As Image + + If Not Mouse.Left Then Return + + With TreeView1 + If .FindAt(Mouse.X, Mouse.Y) Then Return + If Not .Key Then Return + + hImage = New Image(32 + 8 + .Font.TextWidth(.Current.Text), 32, Color.Transparent) + Paint.Begin(hImage) + Try Paint.DrawImage(.Current.Picture.Image, 0, 0) + 'Try Draw.Picture(.Current.Picture, 0, 0) + Paint.Font = .Font + Paint.Text(.Current.Text, 34, 0, hImage.Width, 32, Align.Left) + Paint.Fill + Paint.End + + Drag.Icon = hImage.Picture + 'hImage.Save("~/drag.png") + 'Drag.Icon = .Current.Picture + .Drag(.Key, MIME_TYPE) + End With + +End + +Public Sub imgHole_Drag() + + 'DEBUG Drag.Type;; Drag.Format + If Drag.Type = Drag.Text Then + If Drag.Format = MIME_TYPE Then + Return + Endif + Endif + + Stop Event + +End + +Public Sub imgHole_Drop() + + TreeView1.Remove(Drag.Data) + +End + +Public Sub Form_Open() + + Me.Center + TreeView1.Add("Test", ("Test"), Picture["drop.png"]) + +End + + +Public Sub imgHole_DragMove() + + 'DEBUG Drag.Type;; Drag.Format + If Drag.Type = Drag.Text Then + If Drag.Format = MIME_TYPE Then + Drag.Show(imgHole) + Return + Endif + Endif + + Stop Event + +End + + +Public Sub Test_DragMove() + + Drag.Show(Last) + 'PRINT LAST.ScreenX;; LAST.ScreenY;; LAST.Window.ScreenX;; LAST.Window.ScreenY + +End + +Public Sub Form_DragMove() + + Test_DragMove + +End diff --git a/app/examples/Basic/DragNDrop/.src/FDragNDrop.form b/app/examples/Basic/DragNDrop/.src/FDragNDrop.form new file mode 100644 index 00000000..a9bd890a --- /dev/null +++ b/app/examples/Basic/DragNDrop/.src/FDragNDrop.form @@ -0,0 +1,108 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(56,27,44,56) + Text = ("Drag & Drop") + Icon = Picture["drop.png"] + Arrangement = Arrange.Horizontal + Spacing = True + Margin = True + { VBox2 VBox Test + Name = "VBox2" + MoveScaled(1,3,10,42) + Visible = False + Drop = True + Spacing = True + { Button1 Button Test + Name = "Button1" + MoveScaled(0,2,10,4) + #Translate = False + Drop = True + Text = "Button1" + } + { Panel2 Panel Test + Name = "Panel2" + MoveScaled(2,9,6,8) + Drop = True + Border = Border.Etched + } + { ScrollView1 ScrollView Test + Name = "ScrollView1" + MoveScaled(2,20,7,19) + Drop = True + { ScrollView2 ScrollView Test + Name = "ScrollView2" + MoveScaled(1,5,4,7) + Background = &HF7FFDF& + Drop = True + } + } + } + { TreeView1 TreeView + MoveScaled(14,2,20,41) + Drop = True + Expand = True + } + { VBox1 VBox + MoveScaled(36,2,6,44) + Spacing = True + { PictureBox1 PictureBox imgIcon + Name = "PictureBox1" + MoveScaled(0,0,6,6) + Tag = "Bicycle" + Border = Border.Raised + Picture = Picture["icon:/32/flag"] + Alignment = Align.Center + } + { PictureBox2 PictureBox imgIcon + Name = "PictureBox2" + MoveScaled(0,6,6,6) + Tag = "Eye" + Border = Border.Raised + Picture = Picture["icon:/32/lamp"] + Alignment = Align.Center + } + { PictureBox3 PictureBox imgIcon + Name = "PictureBox3" + MoveScaled(0,12,6,6) + Tag = "Map" + Border = Border.Raised + Picture = Picture["icon:/32/internet"] + Alignment = Align.Center + } + { PictureBox4 PictureBox imgIcon + Name = "PictureBox4" + MoveScaled(0,18,6,6) + Tag = "Happy" + Border = Border.Raised + Picture = Picture["icon:/32/bookmark"] + Alignment = Align.Center + } + { PictureBox5 PictureBox imgIcon + Name = "PictureBox5" + MoveScaled(0,24,6,6) + Tag = "Magnify" + Border = Border.Raised + Picture = Picture["icon:/32/phone"] + Alignment = Align.Center + } + { PictureBox6 PictureBox imgIcon + Name = "PictureBox6" + MoveScaled(0,30,6,6) + Tag = "Highlight" + Border = Border.Raised + Picture = Picture["icon:/32/book"] + Alignment = Align.Center + } + { Panel1 Panel + MoveScaled(1,36,4,3) + Expand = True + } + { imgHole PictureBox + MoveScaled(0,38,6,6) + Drop = True + Picture = Picture["icon:/48/trash"] + Stretch = True + } + } +} diff --git a/app/examples/Basic/DragNDrop/drop.png b/app/examples/Basic/DragNDrop/drop.png new file mode 100644 index 0000000000000000000000000000000000000000..d286286f1313350b52ac0e13470a3c73429e6e81 GIT binary patch literal 1503 zcmah|2~1OG9B-=ytpYM-9)pD$j}Bp=qC+KG83dVttl$QCtf(l_;Uu!@B2GbM8y=hD z)B!48OL2&TAm~Jn77Dgt3*~70+P;>yuk>!;>p@{q_J~_z%#!`{`~K&b@1Oti{gjj# z>qS^bz+f<5aXX^Ps0^Grb7rADnqJ(6!Qh~z_>>sbY-?+5XlM}Le%|nB&GhtiFOM@c z-2b$>sk)XnHs&x}P5lEr#sgYq6&10=_vqyv?6&-(e0mj?+1bwQXhmOmO>8#%U-ci! zVzJ)xylEB|T|iAVBg(N@?3*D}=ka)Nd0v|t85vboRsR|KU#CPS2BacDA`(l4Vn8Sq z4*?RfbIjpz*lczLvB5B6vA|}t#b`1c3?{v6+$92r?M|CYts0pjg#v{_E=M5;K@^}& z2FgU@;lbg4p=d}Asgx?EQZ=Gfj*QFzy)RcNK)C`G17Z-A^80&-g@abaqEabA1t^gM zeSLgL18EJTgTn%g)ud1=WT3SBWmnC^2Y2t43kLf@xomJ~U|_JnPrx@>4Du1V-Z(m{ zgE&3i{63!1tXGVHMzc<580~$<FLSgb{kE43v5DcR&=;_hppts^=?iVTBONr^7r=-2ngtU*=dC>YPCv@ z5~PL^I5swx-Nk|+NTY!e1j)(CArgrlolMwf)r@LnGMU|OFD)%SeE6`Bj}NP(U8B*U zEk;L-ZU~J=^Y->`XSTwK6|o`cC@mI?+wEqu+H4NQ;k1vroUZXPv)SC**3#Pcq6I~3 zGrPOfX0y3muBoZ1$;nBh(O6MYL8VfwtE(p_CiHr})oS(f@)8IHFbqqjQWe@?r4k*F zL?QtI;MB{ei)g{Sa>iOvNPcccWsWKiT^J{DofKYnOA;zmy&qy*(wO z=OBebIYjb^pMU%Ot8IaSVPQmKL`3183nfdFw-dieJso{0B{%*n|5K4Zp^SpUPP+QW z;1m1h-Wp?h-QKP9@!wq=$6t(Lul%Dj6Y~3YayKqGi%@;+=%wQ1^N0@m#^H4(p&+W} zKB06EVb4x7dFKF^yB+|xY;G>>kJlDs^@$-N_|jj*0l>hT<;9GO+HH8^mJdQgS|Vx9 z&DlyiCyT&{Pe>>Wqvl49hgV#m)U99jDmpprSWut+iCyr-E`}i4Ne!>;X9k6tQV}fj zB_-W$Jkft39B->)(6N4WI-L=m_AFP7_^n|l`PHPiFjgHkJ^%5dLHI*<>f;0K`b<*P zUL2Kja9-csGBTNb{nE#^JN7qait8Wttf-{>5}L9@i9z=hfX63=k7Oj%nf5F;VQJc? z`vonZ#gTOTb~-nhw_#FFEV%3)Qt~Ag)2Ojt3uq*bchP?9zB&~Y@_jkpYL<>vI+I=hfP@#e6UR3v_dC_Vz!Cl}<|3_D z|DpE1CAfUwq-MB&ap=vKXLUws%`=?GhD{6SCa({qgq@o*iW@R}D03JXY%usD2FC|8 zh;@1AJm%)LhcmeoswzIGY~$HYPT27D>y1s{24xY90iOqAV^<$p9FAZ0sOY%a{60mY u)9Ik>g1Z;hd3n3@N%+}$XQ#r{9319*N2F&`%xclh;>N`!Mn8(86#NbK&oQY0 literal 0 HcmV?d00001 diff --git a/app/examples/Basic/Object/.directory b/app/examples/Basic/Object/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Basic/Object/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Basic/Object/.icon.png b/app/examples/Basic/Object/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..842f3355e0b50d39b8df71129ce8ee4d26c480f4 GIT binary patch literal 4189 zcmV-j5TfsiP) zsS82rN4BB0KncO8Z!6)e>nb>PCeF$)^xH|c7+97!m@gp~{Pc;x=6 zG_||j{EtVeIoSs?cx4GN^|P;I3}i+E{Ozq1`RiMYscM67y#^go@cgsqo@s2S=EzAV zW(%JAr+HMCM)>;11~&gG3MxoMgm6{p(gk>EQ^$HE#6y-cB^UVoiI~IQH06K((Yp(( zE{6ED^*cdGq=0*t7x1MIl+tAsPrL>7-6^{dpsO>+(YH?F#rt^hLuK6e-eSJ{e=+{* zn{_084^#+*KR<);tD%Z9bj}0vd!s z7=h9OjFH&I@562S!^I1rq%QF_7mX#8$l85Mym&qlX8yx2kTyoc?6NRl`(O$4r$l)5 zG`x8LoFQ-A_o4b|E60yCFt04k;}6ZpSRp?DBRJRyT0?qT0E7bL0}4w^@CCwv%AR*= z0%!xCZ!TT|U}2fbdb3Wv`1MWgtG_iugxL@5$7n--y3K=k6ti|oHgC4U#zPSEQiKL@ zx}leSRSkrt&$mB5nPoF`czhc?zjyd~flv^PKwx2v!Scaq1KLIe^Z)GgiqU@j#^yFN ztLV}M7!dGytKd>x^iDu)9LMMR$L`C&XXLSSJ3wE$002|+$9DZVBXF!)-Z9#N(FO2R z@pm;r7)I?Fj4l8Me~b?JOT)QR+S>(q_+goJHQn*QkN_Sh#2nyZBY9X1BQ{Kcl~1FSuJq>L*mBj-EuYJnR0UCOwnl!_^(MjUvzAN3u= z2xlv$W0p)gVAugE#;*m?zDMne*XXW2%)-^5Mf)C7y-V{ja<~Fg%D81qm9R!QK#Y?B zTKnwU@ib=oOs37ep61#r+D;!~{tX{}clev(0@zX~EM>{Kk|P8dhdzMTKKplVLd=|l zTYZ3TnL}SeCTSss5^Bu#Ukc2K?5-?7ZdpRb)Z2o7?A_qTlY8mSO-FbRrv4Ol<(lc0 z*I?e*gH!@1)`OK6LCVW1#&DjNP%%p>nHcE+%-GsN&q;8ms}{Sw9E`!f={CAgALqJU zn^TjQp@ic2o)?(1U^S7f!pp~B3>QEtKVeBF<7z~5FqbI6{;eB1b9@iJ0dMhAvNE#K zu0uFCpTvp19Nt|=LHRZ8{N;B!*>;qQ#kU~k^pJDc#WL?kDKrQ~I8az}RXloWBx zQZla8@FV&nQ$VbzjURsh5gsa;$g}rjh;7w&%& zi8^+OfMs3QPS;4cSxUw&DTt5dE%>okIQk2=e)224xM&fxy1Pjil7(|BS$Nwz_H=kC zIUcv?!uEhSBl zl0v}Q#{XP7;B@sKdTf`NPI9EFfjedtpbJWQW^W_w4>s|?Pd&-r-@Je*pT!S$*Kx8t zffQ$xk1+=4Og(c-=P;pk`sI7|qdPz-X?iSW$rdRPVo2}DjFJOhuX>sCj2^lJc|_Cl z$rF-!Q;XQ&oZNT4#253*ejzqZPq69Dop)A>A*~+vkDTlTYLXSumTVDPNci*~*UmaC+#(lJK z2nmBk6L&qd=b@%A;d>81h+RAxF?9jK;tF&kj`R9&$(XSSfgz*$G&ihSj~qkb3*)n_ z`5P=-kV9nZT+oN;souo)ebd=j@~^2?qH_vx*6GF|Y;>z7wbd*wEu~;!5>V(N&$sKP z&D?v_RQ4r;v>Tgf{XsJ4UQe{AlRn2IH=K#3Bti%#UUw@`{p=B(z0Yw{SmXy4-@5)j z8XSkB)+Sbc;B#Yp?Z7p4|IEq{ErQ$t+WZOWZzpSB9c!|Vk$5$m<7Hnzp92O3&;}_z ztJyL^(X0ewpouUBG4O&;RaY^o%;L2ZjT|6>9m&M&X~*yD#D>D=S+ke2tKCp`rXJf(r}K@iOjvynJD0tmYqxKv+=+7($(>8rGNF9tn8^cV z^&KQ_QV@}R4n%uu3CmTG2tv{(E8QjNoWYGuI)?+yU_ut)Y*=L{EC5T2xR4^$?*M!u zNG4;1+*Y)nLVH#zqT>+B)<)dU02!4_=sj_ejQk0_bi9Sk#8Iq_9J-IZi5&`)F=;Nr zoC$np!A;n~3)`r0AxK0flW1-tV{#BkEsEk<;MkC~>Fwyl6y+e#F{h`b7_@+dIP|Xz zC`nvMLIAoy1Oy&u8f$0`q!I74$*5e6*V94Iu{SZ=qp+l$NM9$tc7Tpvhy)aqLJpRK zto(`0zxI9OMtlHnWFp58m5?>Hkw97^70tc`&%){RI2>ICX<6so`zIx0AitYo0w|Ff zw1!3~DNuHRjKUJ^%uM=rzfRJLA%q}UTtQL118G?_yBhz*KJ>IjWKFKbM1q98K8lsc zk%K#!GjI90i*O=;J=2bUgS1>jC_Oc^6z_=9b<*Wb!6#AY8CJ5IN)b~s z)lRB@l>$;>!V@T+R>_ow%gCI+oXiC`&{g#cG9#A^ZJ3l_0uw7pn@~d1acJo1Y@6n|3+mN(b>=ho`WUf=B2mt>Zv2lv!E%Qg=bP-O(hJ* z80x#?WKS%o>exO!p_n{nE>ews;$vFf6O^yI1!Fx!Aa@J7D_n3La1|mUnC&%k?7;VE zp82)WLqMej=#PQ3At04V3{06CV+Naw`SX_YM?BUopTln&9jbTlz)qV@-CH~8=xpJn z?j~N}gvu>K+BO4qC@H9FXk+2bMLhr9vs~+TP+PT|JKp~>GV_WriM%jA^8&v^DqyCeZy`;EYJM0PYd^S1k(uSjDsoi(Y)jt7U703_{{ z02*{h62Up@5NF+O$y5mR=KvWW7z_FmG1@#`c3vSXZeBy_;l2E#zMeoqDLul_(%Qr= zt3C)b<}l^Z9{zOnEm~9>p|a^148hq;=}kn*k&@*zW;3y37PZv}P?ox=`M^_Czl=N- zr82RZ^gKmc1VE?u^28HFI~-b@6o(2vL)ZK-k6QOI2M7^|{;c)u!}?!5_%uM$^)nq; zpL2ECbse63_6ZVmmV?nKA@TNY=M!u1C2v9rz1C=;#%Qm&A`u_1M1v6L<6?$3)-r;|II&j`z-lT zzXON~J*b!z=UE;O1cKbT>JFaz`9|#7*WvYaQ4k2?x(-4JGPCozdBs|;S+ty*n#1hb z_d0d0%{W>!F|UB~o7N!4vivM8l7-ihEWGCJhyMJxc&c;z=*p z^Yw*owZ6h&DVYoftqy>UfcegCGvs3yfHpcBcNNAM5li?=8_iX>Lq>oUMj0W65W+-k z9fkfR*xk{2!n3mjv7{#x2}c=YxEd7@LMR^-3e zW~r-B001S7>-2S;_}GnQD}dHP0f03?B@hMzynRE(l@1?pfhcek_}zd2070Mxm<|*J zIY5Xj>~D4FfhINn?*y8F<3IzD95Mz(^^*>ga)9JQT9zvVre6f7zr+ELQP#n)7Qz=I z$oLU1`^Xl8*|{v3md($;IF;6Jhev)|$M5&H6KmK_+bfUaMVsF-Hn-pZ9S&9ZUQi6h<5O>}%`b6ot>{g05>_DiM9IUhWx91w!yrYed)@C~PJW0>N zpS@$m2QaC$j8n}mSb=PU>4j*wi-H`35RewI&Pg7|(ee{++eo-*GSX7S8~1YN4;#?Q z-glh*0G8jk39YgS1VWIgX5JKs2_=)*@ONv@d)>J0S8IOZQlBWY~y0z4esp#00000NkvXXu0mjfBgq!J literal 0 HcmV?d00001 diff --git a/app/examples/Basic/Object/.lang/ca.po b/app/examples/Basic/Object/.lang/ca.po new file mode 100644 index 00000000..44d7c6d1 --- /dev/null +++ b/app/examples/Basic/Object/.lang/ca.po @@ -0,0 +1,43 @@ +# Catalan translation of Object +# Copyright (C) 2000-2010 Benoît Minisini. +# This file is distributed under the same license as the Object package. +# Jordi Sayol , 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: Object\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2010-12-16 23:31+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: .project:1 +msgid "Object manipulation example" +msgstr "Exemple de manipulacicó d'objectes" + +#: FStart.form:12 +msgid "Object " +msgstr "Objecte" + +#: FStart.form:17 +msgid "create the Thing !" +msgstr "crea l'objecte!" + +#: FStart.form:22 +msgid "check the Thing !" +msgstr "verifica l'objecte!" + +#: FStart.form:33 +msgid "destroy the Thing !" +msgstr "destrueix l'objecte!" + +#: FStart.form:38 +msgid " by juergen@zdero.com" +msgstr "per juergen@zdero.com" diff --git a/app/examples/Basic/Object/.lang/cs.po b/app/examples/Basic/Object/.lang/cs.po new file mode 100644 index 00000000..52d5e84d --- /dev/null +++ b/app/examples/Basic/Object/.lang/cs.po @@ -0,0 +1,40 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Object manipulation example" +msgstr "Příklad manipulace objeků" + +#: FStart.class:29 +msgid "You need to create the Thing first!" +msgstr "Potřebujete první vytvořit objekt!" + +#: FStart.form:12 +msgid "Object " +msgstr "Objekt" + +#: FStart.form:18 +msgid "create the Thing !" +msgstr "vytvořit Věc !" + +#: FStart.form:23 +msgid "check the Thing !" +msgstr "zkontroluj Věc !" + +#: FStart.form:33 +msgid "destroy the Thing !" +msgstr "zničit Věc !" + +#: FStart.form:38 +msgid " by juergen@zdero.com" +msgstr "-" diff --git a/app/examples/Basic/Object/.lang/de.po b/app/examples/Basic/Object/.lang/de.po new file mode 100644 index 00000000..337def3f --- /dev/null +++ b/app/examples/Basic/Object/.lang/de.po @@ -0,0 +1,41 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Object manipulation example" +msgstr "Beispiel für Objekt-Manipulation" + +#: FStart.class:29 +msgid "You need to create the Thing first!" +msgstr "Sie müssen das Objekt erst erstellen!" + +#: FStart.form:12 +msgid "Object " +msgstr "-" + +#: FStart.form:18 +msgid "create the Thing !" +msgstr "Objekt erstellen" + +#: FStart.form:23 +msgid "check the Thing !" +msgstr "Objekt prüfen" + +#: FStart.form:33 +msgid "destroy the Thing !" +msgstr "Objekt löschen" + +#: FStart.form:38 +msgid " by juergen@zdero.com" +msgstr "-" + diff --git a/app/examples/Basic/Object/.lang/es.po b/app/examples/Basic/Object/.lang/es.po new file mode 100644 index 00000000..ddaeb377 --- /dev/null +++ b/app/examples/Basic/Object/.lang/es.po @@ -0,0 +1,37 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FStart.form:38 +msgid " by juergen@zdero.com" +msgstr "por juergen@zdero.com" + +#: FStart.form:22 +msgid "check the Thing !" +msgstr "¡ Comprobar la cosa !" + +#: FStart.form:17 +msgid "create the Thing !" +msgstr "¡ Crear la cosa !" + +#: FStart.form:33 +msgid "destroy the Thing !" +msgstr "¡ Destruir la cosa !" + +#: FStart.form:12 +msgid "Object " +msgstr "Objeto" + +#: .project:1 +msgid "Object manipulation example" +msgstr "Ejemplo de manipulación de objetos" + diff --git a/app/examples/Basic/Object/.lang/nl.po b/app/examples/Basic/Object/.lang/nl.po new file mode 100644 index 00000000..41b61e99 --- /dev/null +++ b/app/examples/Basic/Object/.lang/nl.po @@ -0,0 +1,41 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2014-09-23 01:18+0100\n" +"Last-Translator: Willy Raets \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Object manipulation example" +msgstr "Object manipulatie voorbeeld" + +#: FStart.class:29 +msgid "You need to create the Thing first!" +msgstr "Je dient het Ding! eerst te creëren!" + +#: FStart.form:12 +msgid "Object " +msgstr "Object " + +#: FStart.form:18 +msgid "create the Thing !" +msgstr "creëer het Ding!" + +#: FStart.form:23 +msgid "check the Thing !" +msgstr "controleer het Ding!" + +#: FStart.form:33 +msgid "destroy the Thing !" +msgstr "Vernietig het Ding!" + +#: FStart.form:38 +msgid " by juergen@zdero.com" +msgstr " door juergen@zdero.com" + diff --git a/app/examples/Basic/Object/.lang/ru.po b/app/examples/Basic/Object/.lang/ru.po new file mode 100644 index 00000000..2f7ac1ac --- /dev/null +++ b/app/examples/Basic/Object/.lang/ru.po @@ -0,0 +1,58 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Basic/Object/.project:18 +msgid "Object manipulation example" +msgstr "Пример манипулирования объектом" + +#: app/examples/Basic/Object/.src/FStart.class:10 +msgid "Dummy-Thing" +msgstr "Вещь-фикция" + +#: app/examples/Basic/Object/.src/FStart.class:29 app/examples/Basic/Object/.src/FStart.class:37 +msgid "You need to create the Thing first!" +msgstr "Вы должны сначала создать вещь!" + +#: app/examples/Basic/Object/.src/FStart.form:5 +msgid "Object " +msgstr "Объект " + +#: app/examples/Basic/Object/.src/FStart.form:10 +msgid "create the Thing !" +msgstr "создать вещь!" + +#: app/examples/Basic/Object/.src/FStart.form:14 +msgid "check the Thing !" +msgstr "проверить вещь!" + +#: app/examples/Basic/Object/.src/FStart.form:22 +msgid "destroy the Thing !" +msgstr "разрушить вещь!" + +#: app/examples/Basic/Object/.src/FStart.form:26 +msgid " by juergen@zdero.com" +msgstr " от juergen@zdero.com" + diff --git a/app/examples/Basic/Object/.project b/app/examples/Basic/Object/.project new file mode 100644 index 00000000..9e18e993 --- /dev/null +++ b/app/examples/Basic/Object/.project @@ -0,0 +1,17 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.5.90 +Title=Object manipulation example +Startup=FStart +Icon=object.png +Version=3.6.2 +VersionFile=1 +Component=gb.image +Component=gb.gui +TabSize=2 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence +Packager=1 diff --git a/app/examples/Basic/Object/.src/CThing.class b/app/examples/Basic/Object/.src/CThing.class new file mode 100644 index 00000000..4b526262 --- /dev/null +++ b/app/examples/Basic/Object/.src/CThing.class @@ -0,0 +1,6 @@ +' Gambas class file + +Public Name As String +Public X As Integer +Public Y As Integer +Public ID As Integer diff --git a/app/examples/Basic/Object/.src/FStart.class b/app/examples/Basic/Object/.src/FStart.class new file mode 100644 index 00000000..4953cb40 --- /dev/null +++ b/app/examples/Basic/Object/.src/FStart.class @@ -0,0 +1,44 @@ +' Gambas class file + +Public myThing As CThing + +Public Sub btnCreateThing_Click() + + myThing = New CThing + + With mything + .Name = ("Dummy-Thing") + .X = 11 + .Y = 22 + .ID = 33 + End With + + txtCheckResult.Visible = True + +End + +Public Sub btnCheckThing_Click() + + If myThing Then + + With mything + txtCheckResult.Text = Subst("&1, X= &2, Y= &3, ID= &4", .Name, .X, .Y, .ID) + End With + + Else + Message.Warning(("You need to create the Thing first!")) + Endif + +End + +Public Sub btnDestroy_Click() + + If Not mything Then + Message.Warning(("You need to create the Thing first!")) + Return + Endif + + myThing = Null + txtCheckResult.Visible = False + +End diff --git a/app/examples/Basic/Object/.src/FStart.form b/app/examples/Basic/Object/.src/FStart.form new file mode 100644 index 00000000..c667a61a --- /dev/null +++ b/app/examples/Basic/Object/.src/FStart.form @@ -0,0 +1,28 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(35.7143,18.5714,67,17) + Text = ("Object ") + Icon = Picture["object.png"] + Resizable = False + { btnCreateThing Button + MoveScaled(1,1,21,4) + Text = ("create the Thing !") + } + { btnCheckThing Button + MoveScaled(23,1,21,4) + Text = ("check the Thing !") + } + { txtCheckResult TextBox + MoveScaled(1,7,65,4) + Visible = False + } + { btnDestroy Button + MoveScaled(45,1,21,4) + Text = ("destroy the Thing !") + } + { Label1 Label + MoveScaled(1,12,26,4) + Text = (" by juergen@zdero.com") + } +} diff --git a/app/examples/Basic/Object/object.png b/app/examples/Basic/Object/object.png new file mode 100644 index 0000000000000000000000000000000000000000..e2e3e67d7d8275e45eb1b5bc62151de5c2d8a16d GIT binary patch literal 1499 zcmV<11tj{3P)aNafywUterY*JO0>pHr}0`Ip^hK)?b^ow;>3Q zG}@!l%=ta%eShbDXO)QX{~S*94W-ncFZ}gIvIfo=c=|v#g8=h4mNCL_4ZQ!&Ur^ZV z{pJm;dv5Fk@XTb~ zAHRf`dT9Sx-;;y6jxWE0>K+E}B2oZz6-5dtz}#P0yHeo8KYWt+{ovFyEg+ip?ny!O z$dBMzF=y=IZ#|iFPyP@Ry%_T+M6RLaI!dMyGmVm2_}mHhpN#XB@L2A{i`RYw!KrrZ zTkRfD@cq889?dx?o`;ymgl~cwL&+3MJ_Wgrq6`v1Fb>WHoyV6Lc)WM${j;2TV1Ptt z$GOz;5@Z@BGa!qgLkJxR?FNL6m8z2IPG*07mh4^{?L3fkk~UV-hTxCD0!mp? zV#Gw3wzkAKE^PrqD(wJdVfUli4#3koKuHDa>wpbP0Er-syBYQ!5ZXpUh{f6$xpn|~ z?biuQRh)zZaT@?M02CN&Gwj==AX->mu0A+`U-I#b6FB`Ighf!1HUdZkLfc!BXv}M? zRVsJtJUhwKUlJ(dD~a^STRx(@22>+QNiFdA>qvDSWqG z1lk@$9muO|(-l^)UIx>DxIXitB>3BGfzYCM!U7!HlxcUynf`V!Ph#U`VRE{0KI;lm5VRnFHa%5 z0xHDm04Gr=eHaiMwcN$ZYzKe8G;@ADwb77S?eGQEAC(?U91~Dd_1;5B$-n52{i>U((i6M^A$Uk1EKA)JHSpBqJ|MFrffg7%JfyqS(} zhu)+D82-!v3Qq6q?}Bs+YL^;9&6RJPcwo0qfwsVlad@9X;B-r)x4N0?=^7%rFWP}$ zh=deG9jJl0y%`y6%Y55^rE#QFita>fBi;ir`7&P2OL;gNf)a%Fy#bmbjM^;Co8v&7 zPPgj)GV(#GT?DeW>p;B<{$g~d11I_p*jQ7xL6{8)Yilk|pZ4n^u_)PD*eXgbJ@ClS z$gj;V=1ob%t$#r6P9wLCTnF3c&E_*rI}Z$8D-#qd%&wDv{+*rTyL!N1TR%1Z`@fBK z4}L!99o`S|6m--fVZd#XhNj(8u0yd3#dT&%hVc^ln&!K$wA%H8GnQ+gOJ~x#)cyn= z37ce0LCgRev<7X!Xz)W=^;z=`Yjt7ChvGW4jq>isn*Z@%Gl3xkIW0VHz}uH{ zuq}lcp%xless;lkEnGH`7sx;J_PyT&Z2|t*AV%T8<@=fcJ@&Pfgv0)apv;01PJAsoBqY$cVYV0R(A zRZFP+v583*2w(>iSOPfl5dwdy6@AHM#mg)-s|2!B-xT88((p-zg1l|Gw;2A z@Av87@7Krc5nN%)S+@Ci3`$CCn&FEugF*o`2fd!sfpWgYpqC{KS<1!U1g9)VtmYvB6R%{~Vt`60)g`Q|_0Zx<9k( zd<>tleisOd6!6g%nSAxm0{V^O*@Ms=9C7zC_4kE1ey{;2Jj6HdE#$!u=JJDIhq&)M zO+;M>lplmZX&*5eci{kx5E~X3pR@4*aoTYG?s~Q3@l7XJKeaCXoxgTL+28NQ7%;|g z^Sl(keQyEDDL%F|!Lc5Q>2Y+!4o45Q($?6)x*N0j`aQF#sI^%8Gz|5)IK~HP5CUNY zN_#Oz;>rCGvGzC4AApiN-_@MAmK2k`r$M}aHVCu-VK+z*M#J2~0N?&dKG&4S^Hv+| zI|TN)7I$5!KHg2uu@)8-26$$}H5kj!mwpO|TS03`i1UI_U|c|9X$h`C7*Ht-E)0M+ z;JD`e2>^=;Og^G7>y|hp@Je*EXnJ!VeM zg#j1?Sko=I5HET!q&2qf^6JwMW_)z=u`_#szHk5lr5P7@{Uw(7M5nxKssmF4a7W_r zYLYNaIWU+S00#FWJ>YLmXG&@B2JplaG8)qa!+#?Ie2EmYfhUaQ2{FO22>@0;*Uh#+ zY!{75K|i zSTR?G{Fa(vun^~0@s%PuX#p@A(;-Vq8CFuppY6n}MQZYQDZ`dhDx{Q}bm0Ad)b~h} zJX(E&HHo?ZDEL#0}wCf<%`?L-tClZiShAod&5o?kMh)V=O zYnR;>FJNZQX2$I0bT(Ge({_w&ZurFeW51aQz$10UQkD!WISIfe7z1eSa$xr+#O!&* zst*yAsSIT%5$9JZp)R`q3z3{eT~wEtBFs}x_tJFi2#&xBbHP$tR^J~bAbR3Y~4sl&0bss&f=vcC#Ild zHi5JZBDIwq-P1&7(Y5UQ%@3&WIZnyqTaohe4LZc65RgiSEhR;Gas-$QNCB_>`^Wh5 zXKv@?&u--PU;K>kyu2NIS{W)Xo=gu635T7#Ud3uXfTu8r_*6fZl9#p1ojkx(QiLr_ z$*@urkLdGE0il5&e)6Ly*^r;dOAmjF*I#^rqUp2w>T|EqF%Tk@o<(5cDl(S^MxR8Y zP8`8&S(kOtHQC!NCBv2!gfFHQ+)y_h{}o$5{WV@MFK13LNP>_onpei6+t#tS*FhN< zZAV7P3PH4|m6D_^{DFka3ShFGQV^DwQei0t6N)%Zv=tjk#&9OkcT@ zBp^O3i`LFAp8C(HiNz%lb6j+I2yI7B#h+_OFwJ%3rWIgWp0nQTl9x$#T1tg2CCz}6 zLcrNr4dKMn7hX9I&%$2Stek1ik4D$7PT% zBnzhJaNuMFZQz+7Z{}lne3-bKAENR^Gi?W&iE6L{3An?92xSrNY$7k>P_}qE>LQZ= zPvgY2EoE-Szv3L>!V*(y#<{b$8+OSxhTmL&l=}2_#Rwb7Z`y8-wtmyDh1$PHAZ= z1!IeVLXUgC-P<wdm_KJ09_3~0 z8$0;*uU{tl_)Zqx_aq6K)28x(QvkF!uUj|0C;+9q;0H^G{#sl$IW!?D81cBm{nfNrmYn;2SdbV#5~#0ugRE8S2n`M(-`q@*9p*TayYF02cG2t$Zh3&ppFa-a zZoc@HFOXMQh*A)JJdptib>M<02V8$a?WMb|$xp&pN=x`Yre zfYyeut%}RD04yoOLJI$AY~Tt(G#bJm>qhHRP9_&1dXEt8ZY9>|C9!M?gSCfA%*bY2 zO&3X#<5-EQ1dr{*;}4KnJRe_bHlJO16CU5WZB#gu`rB*q%K^%7T25_s9ogC07^Tpb zCK&NibL1#F`MEfbi`JU`Rh4}1^N;fK=FQ|SxfgHT>BTN3g&0eA62dV0UO-90LgF8d z4Iw2696DO-==R1D9`cY_wisuimw^-eFxnw2zlivuJ_bErdIurit0?x{SPGIe^0?-@ z4_%buV-iCxT(|UE3X6*=Dk{Qp9HiFZIP{0T4As<8SX#oiH@32T#R_g+yN2H0K6d`) z&qR9bi7S|YsxB!JWBJ`o0H8!Pf`*?dv+4FLkJ=8<(7~W?nPP_ zoiUADyB|HHoaAX`n0Oz4XNX+oaO`je^A@bQXaFV>#Frk29SP&QHpY06(qN1s)KN=! zO${j-87y49kfEUW&A`>jShwYj36=&0HLwd1S6EZQegtw6wD~2 zv=@SrC_+j)x4cB&wKtLI8Uh*l)P)C#%g!fi+q6V&loSjm#giH6p}nq>{OOA?3V`j{ zL?RJdT81brDn?3sq#KojEHS{6yYC_3_Yt#WXanxxFf}zbloxH#VX@@r=K%RESf9Au}!nq!N*_B~xR}sX@^-3zqU{9M-Lv$M0Hgs`pgjiJME) z!3ui&x~SJd!p-fdv>c?z!&n_k3aVOqSTwtwS6_LF>tek$R_)=g4?jdwdhU4vNGo1I z-LXvwC24GEVD7wmNLM0-1Ua&$&S+-@ura({Q9({_F2|17k$J<1Crp9I<^ZFLz~~y0 zH98|yBmJcq`<$4Z!u;G4UVP!_So^n-nvsDPg5SKc88;~%xnwmO-T-xVjR=1N!KNB~!$ZW+TnNUDf)IF=MB!4^(8-aP{>ZeP975d<#I$D4 z>_zA71+zc+NshhsKjh@(5DW(CXltWv&K!goo5UEZ-q}M|b`Al*pQ@ux%vtm0cg_Em z6k;qX%F!GkM{_{rG$l}zN@3}2*3MsyH|8flIRzQ#N5^cEyBfLCuejqw_pmrAk?7%F z7_AYb>;6J{un$#mO>RC*z2NI;L&Oxvj_ko69(dP%&Qwyz1x!GdI70qcx*1{O2ky_bSdds z+tV0g$K9*$;`x_1;+eY)XP}=< zua8*FMhHPtN;sn8;UwI60wyrhO3c)5JI^aU%+SS zU~hlzC>I2f@sqcj|Kv?bo9>#i%~Dq%001RS%pU5kedxx*n}P0A0D!eX84v)xyn92% zl`a>E0mHy?;16Q}0DM3`FcZiHQUO0#*x%~TBF)JBzYk~!YJe6XI&Kb#8a3L-hzCf{ zu$%k}lo^F!kCrgtFvWZDtHt1R0dnaKF8ufwd?{%xoRPvWzcQWfpv{xNXyT8RCkeIe zq32Ie;S6`aXV%>D@b@`VJ%Hs+!14z0`cs%)0=L|<1WO4rQ~lh1L-CZ?UXtBP;g$-7 zTFK!ii+_8imCY4B^mcdByZ1Q;4*&8!Gki?N1%)(pc42u_@FirSWBp{N8ias2uXRS_ z;S#!h_H7#pG?-k_tWiUWL*58tFL, 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: Timer\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2011-03-20 23:21+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: .project:1 +#: FTimer.class:74 +msgid "Timer example" +msgstr "Exemple de temporitzador" + +#: FOtherTimer.class:38 +msgid "Please fill in valid values!" +msgstr "Introduïu valors vàlids!" + +#: FOtherTimer.class:63 +msgid "Time is over!" +msgstr "El temps ha acabat!" + +#: FOtherTimer.class:95 +msgid "Other Example" +msgstr "Un altre exemple" + +#: FOtherTimer.class:103 +#: FTimer.class:80 +msgid "Start" +msgstr "Inicia" + +#: FOtherTimer.class:110 +msgid "3" +msgstr "-" + +#: FOtherTimer.class:117 +msgid ":" +msgstr "-" + +#: FOtherTimer.class:125 +msgid "0" +msgstr "-" + +#: FOtherTimer.class:131 +msgid "Another timer example by Maxim Lapis <maxim_lapis@web.de>" +msgstr "Un altre exemple de temporitzador per Maxim Lapis <maxim_lapis@web.de>" + +#: FTimer.class:81 +msgid "Trigger" +msgstr "Gatell" + +#: FTimer.class:94 +msgid "Reset" +msgstr "Restableix" + +#: FTimer.class:100 +msgid "1500" +msgstr "-" + +#: FTimer.class:106 +msgid "Start Timer in..." +msgstr "Inicia temporitzador en..." + +#: FTimer.class:113 +msgid "Start\ndelay" +msgstr "Temps\nencès" + +#: FTimer.class:120 +msgid "Stop\ndelay" +msgstr "Temps\napagat" + +#: FTimer.class:126 +msgid "200" +msgstr "-" + +#: FTimer.class:132 +msgid "800" +msgstr "-" + +#: FTimer.class:143 +msgid "Start/Stop" +msgstr "Inicia/Atura" + +#: FTimer.class:154 +msgid "Timer example by Juergen Zdero <juergen@zdero.com>" +msgstr "Exemple de temporitzador per Juergen Zdero <juergen@zdero.com>" + +#: FTimer.class:159 +msgid "ms" +msgstr "-" + +#: FTimer.class:172 +msgid "Or start and stop Timer" +msgstr "O temporitzador d'engega i apaga" + +#~ msgid "Delay" +#~ msgstr "Retard" +#~ msgid "High-Time" +#~ msgstr "Temps en alta" +#~ msgid "Low-Time" +#~ msgstr "Temps en baixa" + diff --git a/app/examples/Basic/Timer/.lang/cs.po b/app/examples/Basic/Timer/.lang/cs.po new file mode 100644 index 00000000..0929fbc5 --- /dev/null +++ b/app/examples/Basic/Timer/.lang/cs.po @@ -0,0 +1,92 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 FTimer.form:28 +msgid "Timer example" +msgstr "Příklad časovače" + +#: FOtherTimer.class:16 +msgid "The counter is set to stop at 0 seconds!" +msgstr "Počítadlo je nastaveno na 0 sekund!" + +#: FOtherTimer.class:44 +msgid "Stop" +msgstr "Stop" + +#: FOtherTimer.class:64 +msgid "Time is over!" +msgstr "Čas vypršel!" + +#: FOtherTimer.form:14 +msgid "Other Example" +msgstr "Jiné příklady" + +#: FOtherTimer.form:22 FTimer.form:34 +msgid "Start" +msgstr "-" + +#: FOtherTimer.form:35 +msgid ":" +msgstr "-" + +#: FOtherTimer.form:48 +msgid "Another timer example by Maxim Lapis <maxim_lapis@web.de>" +msgstr "Další příklad časovače od Maxim Lapis <maxim_lapis@web.de>" + +#: FTimer.form:35 +msgid "Trigger" +msgstr "-" + +#: FTimer.form:45 +msgid "Reset" +msgstr "-" + +#: FTimer.form:51 +msgid "1500" +msgstr "-" + +#: FTimer.form:57 +msgid "Start Timer in..." +msgstr "Start Časovače v..." + +#: FTimer.form:64 +msgid "Start\ndelay" +msgstr "Start\nčas" + +#: FTimer.form:71 +msgid "Stop\ndelay" +msgstr "Stop\nčas" + +#: FTimer.form:77 +msgid "200" +msgstr "-" + +#: FTimer.form:83 +msgid "800" +msgstr "-" + +#: FTimer.form:94 +msgid "Start/Stop" +msgstr "-" + +#: FTimer.form:102 +msgid "Timer example by Juergen Zdero <juergen@zdero.com>" +msgstr "Příklad časovače od Juergen Zdero <juergen@zdero.com>" + +#: FTimer.form:107 +msgid "ms" +msgstr "-" + +#: FTimer.form:120 +msgid "Or start and stop Timer" +msgstr "Nebo start a konec Časovače" diff --git a/app/examples/Basic/Timer/.lang/de.po b/app/examples/Basic/Timer/.lang/de.po new file mode 100644 index 00000000..fec1f00e --- /dev/null +++ b/app/examples/Basic/Timer/.lang/de.po @@ -0,0 +1,93 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 FTimer.form:28 +msgid "Timer example" +msgstr "Timer-Beispiel" + +#: FOtherTimer.class:16 +msgid "The counter is set to stop at 0 seconds!" +msgstr "Der Timer soll in 0 Sekunden stoppen!" + +#: FOtherTimer.class:44 +msgid "Stop" +msgstr "-" + +#: FOtherTimer.class:64 +msgid "Time is over!" +msgstr "Zeit ist abgelaufen !" + +#: FOtherTimer.form:14 +msgid "Other Example" +msgstr "Noch ein Beispiel" + +#: FOtherTimer.form:22 FTimer.form:34 +msgid "Start" +msgstr "-" + +#: FOtherTimer.form:35 +msgid ":" +msgstr "-" + +#: FOtherTimer.form:48 +msgid "Another timer example by Maxim Lapis <maxim_lapis@web.de>" +msgstr "Noch ein Timer-Beispiel von Maxim Lapis <maxim_lapis@web.de>" + +#: FTimer.form:35 +msgid "Trigger" +msgstr "Auslösen" + +#: FTimer.form:45 +msgid "Reset" +msgstr "Zurücksetzen" + +#: FTimer.form:51 +msgid "1500" +msgstr "-" + +#: FTimer.form:57 +msgid "Start Timer in..." +msgstr "Timer starten in..." + +#: FTimer.form:64 +msgid "Start\ndelay" +msgstr "Start\nnach" + +#: FTimer.form:71 +msgid "Stop\ndelay" +msgstr "Stop\nnach" + +#: FTimer.form:77 +msgid "200" +msgstr "-" + +#: FTimer.form:83 +msgid "800" +msgstr "-" + +#: FTimer.form:94 +msgid "Start/Stop" +msgstr "-" + +#: FTimer.form:102 +msgid "Timer example by Juergen Zdero <juergen@zdero.com>" +msgstr "Timer-Beispiel von Juergen Zdero <juergen@zdero.com>" + +#: FTimer.form:107 +msgid "ms" +msgstr "-" + +#: FTimer.form:120 +msgid "Or start and stop Timer" +msgstr "Oder Timer starten und stoppen" + diff --git a/app/examples/Basic/Timer/.lang/es.po b/app/examples/Basic/Timer/.lang/es.po new file mode 100644 index 00000000..376ac855 --- /dev/null +++ b/app/examples/Basic/Timer/.lang/es.po @@ -0,0 +1,96 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 FTimer.form:28 +msgid "Timer example" +msgstr "Ejemplo de Temporizador" + +#: FOtherTimer.class:38 +msgid "Please fill in valid values!" +msgstr "Ingrese valores validos!" + +#: FOtherTimer.class:63 +msgid "Time is over!" +msgstr "El tiempo ha terminado" + +#: FOtherTimer.form:14 +msgid "Other Example" +msgstr "Otro ejemplo" + +#: FOtherTimer.form:22 FTimer.form:34 +msgid "Start" +msgstr "Iniciar" + +#: FOtherTimer.form:29 +msgid "3" +msgstr "-" + +#: FOtherTimer.form:36 +msgid ":" +msgstr "-" + +#: FOtherTimer.form:44 +msgid "0" +msgstr "-" + +#: FOtherTimer.form:50 +msgid "Another timer example by Maxim Lapis <maxim_lapis@web.de>" +msgstr "Otro ejemplo de Temporizador por Maxim Lapis <maxim_lapis@web.de>" + +#: FTimer.form:35 +msgid "Trigger" +msgstr "Disparador" + +#: FTimer.form:48 +msgid "Reset" +msgstr "Reiniciar" + +#: FTimer.form:54 +msgid "1500" +msgstr "-" + +#: FTimer.form:60 +msgid "Start Timer in..." +msgstr "Iniciar temporizador en..." + +#: FTimer.form:67 +msgid "Start\ndelay" +msgstr "Retardar\ninicio" + +#: FTimer.form:74 +msgid "Stop\ndelay" +msgstr "Retardar\nparada" + +#: FTimer.form:80 +msgid "200" +msgstr "-" + +#: FTimer.form:86 +msgid "800" +msgstr "-" + +#: FTimer.form:97 +msgid "Start/Stop" +msgstr "Iniciar/Parar" + +#: FTimer.form:108 +msgid "Timer example by Juergen Zdero <juergen@zdero.com>" +msgstr "Ejemplo de Temporizador por Juergen Zdero <juergen@zdero.com>" + +#: FTimer.form:113 +msgid "ms" +msgstr "-" + +#: FTimer.form:126 +msgid "Or start and stop Timer" +msgstr "O iniciar y detener el Temporizador" diff --git a/app/examples/Basic/Timer/.lang/nl.po b/app/examples/Basic/Timer/.lang/nl.po new file mode 100644 index 00000000..2e27afe9 --- /dev/null +++ b/app/examples/Basic/Timer/.lang/nl.po @@ -0,0 +1,92 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2014-09-23 01:22+0100\n" +"Last-Translator: Willy Raets \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 FTimer.form:28 +msgid "Timer example" +msgstr "Timer voorbeeld" + +#: FOtherTimer.class:16 +msgid "The counter is set to stop at 0 seconds!" +msgstr "The teller is ingestelt om bij 0 seconden te stoppen!" + +#: FOtherTimer.class:44 +msgid "Stop" +msgstr "Stop" + +#: FOtherTimer.class:64 +msgid "Time is over!" +msgstr "Tijd is voorbij!" + +#: FOtherTimer.form:14 +msgid "Other Example" +msgstr "Ander Voorbeeld" + +#: FOtherTimer.form:22 FTimer.form:34 +msgid "Start" +msgstr "Start" + +#: FOtherTimer.form:35 +msgid ":" +msgstr "-" + +#: FOtherTimer.form:48 +msgid "Another timer example by Maxim Lapis <maxim_lapis@web.de>" +msgstr "Een ander timer voorbeeld door Maxim Lapsis <maxil_lapis@web.de>" + +#: FTimer.form:35 +msgid "Trigger" +msgstr "-" + +#: FTimer.form:45 +msgid "Reset" +msgstr "" + +#: FTimer.form:51 +msgid "1500" +msgstr "-" + +#: FTimer.form:57 +msgid "Start Timer in..." +msgstr "Start Timer in..." + +#: FTimer.form:64 +msgid "Start\ndelay" +msgstr "Start\nuitstel" + +#: FTimer.form:71 +msgid "Stop\ndelay" +msgstr "Stop\nuitstel" + +#: FTimer.form:77 +msgid "200" +msgstr "-" + +#: FTimer.form:83 +msgid "800" +msgstr "-" + +#: FTimer.form:94 +msgid "Start/Stop" +msgstr "Start/Stop" + +#: FTimer.form:102 +msgid "Timer example by Juergen Zdero <juergen@zdero.com>" +msgstr "Timer voorbeeld door Juergen Zdero <juergen@zdero.com>" + +#: FTimer.form:107 +msgid "ms" +msgstr "-" + +#: FTimer.form:120 +msgid "Or start and stop Timer" +msgstr "Of start en stop Timer" diff --git a/app/examples/Basic/Timer/.lang/ru.po b/app/examples/Basic/Timer/.lang/ru.po new file mode 100644 index 00000000..bf56ec24 --- /dev/null +++ b/app/examples/Basic/Timer/.lang/ru.po @@ -0,0 +1,114 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Basic/Timer/.project:20 app/examples/Basic/Timer/.src/FTimer.form:6 +msgid "Timer example" +msgstr "Пример таймера" + +#: app/examples/Basic/Timer/.src/FOtherTimer.class:16 +msgid "The counter is set to stop at 0 seconds!" +msgstr "Счётчик остановить установлен на 0 секунд!" + +#: app/examples/Basic/Timer/.src/FOtherTimer.class:44 +msgid "Stop" +msgstr "Стоп" + +#: app/examples/Basic/Timer/.src/FOtherTimer.class:49 app/examples/Basic/Timer/.src/FOtherTimer.class:62 app/examples/Basic/Timer/.src/FOtherTimer.form:13 app/examples/Basic/Timer/.src/FTimer.form:12 +msgid "Start" +msgstr "Начать" + +#: app/examples/Basic/Timer/.src/FOtherTimer.class:64 +msgid "Time is over!" +msgstr "Время вышло!" + +#: app/examples/Basic/Timer/.src/FOtherTimer.form:6 +msgid "Other Example" +msgstr "Другой пример" + +#: app/examples/Basic/Timer/.src/FOtherTimer.form:24 +msgid ":" +msgstr ":" + +#: app/examples/Basic/Timer/.src/FOtherTimer.form:35 +msgid "Another timer example by Maxim Lapis <maxim_lapis@web.de>" +msgstr "Ещё один пример таймера от Максима Ляписа <maxim_lapis@web.de>" + +#: app/examples/Basic/Timer/.src/FTimer.form:13 +msgid "Trigger" +msgstr "Триггер" + +#: app/examples/Basic/Timer/.src/FTimer.form:21 app/examples/Basic/Timer/.src/FTimer.form:22 +msgid "Reset" +msgstr "Сброс" + +#: app/examples/Basic/Timer/.src/FTimer.form:26 +msgid "1500" +msgstr "1500" + +#: app/examples/Basic/Timer/.src/FTimer.form:31 +msgid "Start Timer in..." +msgstr "Запустить таймер в..." + +#: app/examples/Basic/Timer/.src/FTimer.form:38 +msgid "" +"Start\n" +"delay" +msgstr "" +"Задержка\n" +"запуска" + +#: app/examples/Basic/Timer/.src/FTimer.form:44 +msgid "" +"Stop\n" +"delay" +msgstr "" +"Задержка\n" +"остановки" + +#: app/examples/Basic/Timer/.src/FTimer.form:49 +msgid "200" +msgstr "200" + +#: app/examples/Basic/Timer/.src/FTimer.form:54 +msgid "800" +msgstr "800" + +#: app/examples/Basic/Timer/.src/FTimer.form:63 +msgid "Start/Stop" +msgstr "Начать/Остановить" + +#: app/examples/Basic/Timer/.src/FTimer.form:70 +msgid "Timer example by Juergen Zdero <juergen@zdero.com>" +msgstr "Пример таймера от Юрген Здеро <juergen@zdero.com>" + +#: app/examples/Basic/Timer/.src/FTimer.form:74 app/examples/Basic/Timer/.src/FTimer.form:88 app/examples/Basic/Timer/.src/FTimer.form:92 +msgid "ms" +msgstr "мс" + +#: app/examples/Basic/Timer/.src/FTimer.form:84 +msgid "Or start and stop Timer" +msgstr "Или запустить и остановить таймер" + diff --git a/app/examples/Basic/Timer/.project b/app/examples/Basic/Timer/.project new file mode 100644 index 00000000..8be0e980 --- /dev/null +++ b/app/examples/Basic/Timer/.project @@ -0,0 +1,19 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.10.90 +Title=Timer example +Startup=FTimer +Icon=timer.png +Version=3.10.90 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.form +Authors="Maxim Lapis" +TabSize=2 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence +Packager=1 diff --git a/app/examples/Basic/Timer/.src/FOtherTimer.class b/app/examples/Basic/Timer/.src/FOtherTimer.class new file mode 100644 index 00000000..984d437b --- /dev/null +++ b/app/examples/Basic/Timer/.src/FOtherTimer.class @@ -0,0 +1,85 @@ +' Gambas class file + +'&HC00F47& = red +'&H4BC021& = green + +Private $iCounter As Integer + +Public Sub Button1_Click() + + Dim iSeconds, iMinutes As Integer + + iSeconds = vbSeconds.Value + iMinutes = vbMinutes.Value + + If iSeconds = 0 And iMinutes = 0 Then + Message.Info(("The counter is set to stop at 0 seconds!")) + Return + Endif + + If Not Timer1.enabled Then + + 'Normalize minutes and seconds + If iSeconds >= 60 Then + + While iSeconds > 59 + + Inc iMinutes + iSeconds = iSeconds - 60 + + Wend + + Endif + + 'Update normalized values + vbSeconds.Value = iSeconds + vbMinutes.Value = iMinutes + + 'Store the total count to simplify code + $iCounter = iSeconds + iMinutes * 60 + + 'Let the timer start! + Timer1.enabled = True + + Button1.Text = ("Stop") + Button1.Background = &HC00F47& + + Else + + Button1.Text = ("Start") + Button1.Background = &H4BC021& + Timer1.enabled = False + Endif + + 'thank you Benoit, that is just a great thing +End + +Public Sub Timer1_Timer() + + 'The counter has reached 0. Stop it and update the window + If $iCounter = 0 Then + Timer1.Enabled = False + Button1.Text = ("Start") + Button1.Background = &H4BC021& + Message.Info(("Time is over!")) + Else + + 'Seconds are over, decrease the minute count by 1 and reset the seconds count + If vbSeconds.Value = 0 Then + + Dec vbMinutes.Value + + vbSeconds.Value = 59 + + Else + + Dec vbSeconds.Value + + Endif + + Endif + + 'Also decrease the global counter + Dec $iCounter + +End diff --git a/app/examples/Basic/Timer/.src/FOtherTimer.form b/app/examples/Basic/Timer/.src/FOtherTimer.form new file mode 100644 index 00000000..ea90e61b --- /dev/null +++ b/app/examples/Basic/Timer/.src/FOtherTimer.form @@ -0,0 +1,40 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(52.7143,62.4286,32,18) + Background = &HB1C00E& + Text = ("Other Example") + Icon = Picture["timer.png"] + Resizable = False + { Button1 Button + MoveScaled(17,11,11,5) + Font = Font["14"] + Background = &H4BC021& + Text = ("Start") + } + { vbSeconds ValueBox + MoveScaled(10,11,6,5) + Font = Font["18"] + Background = &H93B8B0& + Value = "3" + } + { TextLabel2 TextLabel + MoveScaled(7,11,3,4) + Font = Font["Adobe Courier,18,Bold"] + Text = (":") + Alignment = Align.Center + } + { vbMinutes ValueBox + MoveScaled(1,11,6,5) + Font = Font["18"] + Background = &H93B8B0& + Value = "0" + } + { TextLabel1 TextLabel + MoveScaled(1,1,29,9) + Text = ("Another timer example by Maxim Lapis <maxim_lapis@web.de>") + } + { Timer1 #Timer + #MoveScaled(23,2) + } +} diff --git a/app/examples/Basic/Timer/.src/FTimer.class b/app/examples/Basic/Timer/.src/FTimer.class new file mode 100644 index 00000000..9400ca76 --- /dev/null +++ b/app/examples/Basic/Timer/.src/FTimer.class @@ -0,0 +1,56 @@ +' Gambas class file + +Public Sub Form_Open() + + FOtherTimer.Show + +End + +Public Sub Button1_Click() + + Timer1.Delay = CInt(TextBox1.Text) + Timer1.Enabled = True + +End + +Public Sub Timer1_Timer() + + Label1.Background = &HFF0000& + +End + +Public Sub Button2_Click() + + Timer1.Enabled = False 'try without this line + Label1.Background = &HDCDCDC& + +End + +Public Sub ToggleButton1_Click() + + If ToggleButton1.Value = True Then + Timer2.Delay = CInt(TextBox2.Text) 'low + Timer3.Delay = CInt(TextBox3.Text) 'high + Timer2.Enabled = True + Else + Timer2.Enabled = False + Timer3.Enabled = False + Endif + +End + +Public Sub Timer2_Timer() + + Label5.Background = &HFF0000& + Timer3.Enabled = True + Timer2.Enabled = False + +End + +Public Sub Timer3_Timer() + + Label5.Background = &H00FF00& + Timer2.Enabled = True + Timer3.Enabled = False + +End diff --git a/app/examples/Basic/Timer/.src/FTimer.form b/app/examples/Basic/Timer/.src/FTimer.form new file mode 100644 index 00000000..1f4cc961 --- /dev/null +++ b/app/examples/Basic/Timer/.src/FTimer.form @@ -0,0 +1,100 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(33.5714,24,57,40) + Expand = True + Text = ("Timer example") + Icon = Picture["timer.png"] + Resizable = False + Spacing = True + { Button1 Button + MoveScaled(35,14,20,4) + ToolTip = ("Start") + Text = ("Trigger") + } + { Label1 Label + MoveScaled(30,14,3.5714,4) + Border = Border.Etched + } + { Button2 Button + MoveScaled(14,14,14,4) + ToolTip = ("Reset") + Text = ("Reset") + } + { TextBox1 TextBox + MoveScaled(2,14,8,4) + Text = ("1500") + Alignment = Align.Right + } + { Label2 Label + MoveScaled(2,10,53,3) + Text = ("Start Timer in...") + Alignment = Align.Left + } + { Label3 Label + MoveScaled(2,24,11,8) + Foreground = &H00AA00& + Expand = True + Text = ("Start\ndelay") + Alignment = Align.Left + } + { Label4 Label + MoveScaled(15,24,13,8) + Foreground = &HFF0000& + Text = ("Stop\ndelay") + Alignment = Align.Left + } + { TextBox2 TextBox + MoveScaled(2,33,8,4) + Text = ("200") + Alignment = Align.Right + } + { TextBox3 TextBox + MoveScaled(14,33,8,4) + Text = ("800") + Alignment = Align.Right + } + { Label5 Label + MoveScaled(29,33,3.5714,4) + Border = Border.Etched + } + { ToggleButton1 ToggleButton + MoveScaled(34,33,21,4) + Text = ("Start/Stop") + } + { Timer2 #Timer + #MoveScaled(36,1) + } + { TextLabel1 TextLabel + MoveScaled(2,1,33,6) + Text = ("Timer example by Juergen Zdero <juergen@zdero.com>") + } + { Label6 Label + MoveScaled(10,14,4,4) + Text = ("ms") + } + { Separator1 Separator + MoveScaled(2,9,53,1) + } + { Separator2 Separator + MoveScaled(2,18,53,3) + } + { Label7 Label + MoveScaled(2,21,53,3) + Text = ("Or start and stop Timer") + } + { Label8 Label + MoveScaled(10,33,4,4) + Text = ("ms") + } + { Label9 Label + MoveScaled(22,33,4,4) + Text = ("ms") + } + { Timer1 #Timer + #MoveScaled(41,1) + } + { Timer3 #Timer + #MoveScaled(45,1) + } +} diff --git a/app/examples/Basic/Timer/timer.png b/app/examples/Basic/Timer/timer.png new file mode 100644 index 0000000000000000000000000000000000000000..6708fdd27788c95fe589ee232dff093831b8041a GIT binary patch literal 2778 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 literal 0 HcmV?d00001 diff --git a/app/examples/Control/ArrayOfControls/.directory b/app/examples/Control/ArrayOfControls/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Control/ArrayOfControls/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Control/ArrayOfControls/.icon.png b/app/examples/Control/ArrayOfControls/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cc422dcf5e94a28456f006d4ef0f5368a1fc4a81 GIT binary patch literal 4209 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\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: .project:1 +msgid "Array of Controls" +msgstr "Matriu de controls" + +#: FMain.class:70 +msgid "Clear" +msgstr "Neteja" + +#: FMain.class:112 +msgid "Dial" +msgstr "Marcador" + +#: FMain.class:80 +msgid "Dialing " +msgstr "Marcant" + +#: .project:2 +msgid "Example how to use an array of controls" +msgstr "Exemple de com fer servir una matriu de controls" + +#: FMain.class:8 +msgid "Quit" +msgstr "Surt" + +#: FMain.class:78 +msgid "There is no number I could dial." +msgstr "No hi ha cap número que pugui marcar." + +#: FMain.class:45 +msgid "You have clicked the button &1" +msgstr "Heu fet clic al botó &1" + diff --git a/app/examples/Control/ArrayOfControls/.lang/cs.po b/app/examples/Control/ArrayOfControls/.lang/cs.po new file mode 100644 index 00000000..8d01fbca --- /dev/null +++ b/app/examples/Control/ArrayOfControls/.lang/cs.po @@ -0,0 +1,44 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Array of Controls" +msgstr "Řízení pole" + +#: .project:2 +msgid "Example how to use an array of controls" +msgstr "Příklad jak použít řízení pole" + +#: FMain.class:8 +msgid "Quit" +msgstr "Ukončit" + +#: FMain.class:45 +msgid "You have clicked the button &1" +msgstr "Kliknul si na tlačítko &1" + +#: FMain.class:70 +msgid "Clear" +msgstr "Vyčsti" + +#: FMain.class:78 +msgid "There is no number I could dial." +msgstr "Toto není číslo, nelze volat." + +#: FMain.class:80 +msgid "Dialing " +msgstr "Vytáčení " + +#: FMain.form:25 +msgid "Dial" +msgstr "Vytočit" diff --git a/app/examples/Control/ArrayOfControls/.lang/de.po b/app/examples/Control/ArrayOfControls/.lang/de.po new file mode 100644 index 00000000..9ce0bab0 --- /dev/null +++ b/app/examples/Control/ArrayOfControls/.lang/de.po @@ -0,0 +1,44 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Array of Controls" +msgstr "Steuerelement-Array" + +#: .project:2 +msgid "Example how to use an array of controls" +msgstr "Beispiel, wie man einen Array von Steuerelementen benutzt" + +#: FMain.class:8 +msgid "Quit" +msgstr "Beenden" + +#: FMain.class:45 +msgid "You have clicked the button &1" +msgstr "Du hast die Taste &1 angeklickt" + +#: FMain.class:70 +msgid "Clear" +msgstr "Löschen" + +#: FMain.class:78 +msgid "There is no number I could dial." +msgstr "Es gibt keine Nummer zum Wählen." + +#: FMain.class:80 +msgid "Dialing " +msgstr "Wähle " + +#: FMain.form:25 +msgid "Dial" +msgstr "Wählen" diff --git a/app/examples/Control/ArrayOfControls/.lang/nl.po b/app/examples/Control/ArrayOfControls/.lang/nl.po new file mode 100644 index 00000000..d2b10fc5 --- /dev/null +++ b/app/examples/Control/ArrayOfControls/.lang/nl.po @@ -0,0 +1,43 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ArrayOfControls 3.5.90\n" +"PO-Revision-Date: 2014-10-02 15:13 UTC\n" +"Last-Translator: Willy Raets \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Array of Controls" +msgstr "Reeks van controles" + +#: .project:2 +msgid "Example how to use an array of controls" +msgstr "Voorbeeld in hoe een 'Reeks van controles' te gebruiken" + +#: FMain.form:25 +msgid "Dial" +msgstr "Draai" + +#: FMain.class:8 +msgid "Quit" +msgstr "Afsluiten" + +#: FMain.class:45 +msgid "You have clicked the button &1" +msgstr "Je hebt op de knop &1 geklikt" + +#: FMain.class:70 +msgid "Clear" +msgstr "Opschonen" + +#: FMain.class:78 +msgid "There is no number I could dial." +msgstr "Er is geen nummer wat ik kan draaien" + +#: FMain.class:80 +msgid "Dialing " +msgstr "Nummer kiezen" + diff --git a/app/examples/Control/ArrayOfControls/.lang/ru.po b/app/examples/Control/ArrayOfControls/.lang/ru.po new file mode 100644 index 00000000..2328b02d --- /dev/null +++ b/app/examples/Control/ArrayOfControls/.lang/ru.po @@ -0,0 +1,58 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Control/ArrayOfControls/.project:19 +msgid "Array of Controls" +msgstr "Массив элементов управления" + +#: app/examples/Control/ArrayOfControls/.project:20 +msgid "Example how to use an array of controls" +msgstr "Пример использования массива элементов управления" + +#: app/examples/Control/ArrayOfControls/.src/FMain.class:8 app/examples/Control/ArrayOfControls/.src/FMain.class:68 +msgid "Quit" +msgstr "Выход" + +#: app/examples/Control/ArrayOfControls/.src/FMain.class:45 +msgid "You have clicked the button &1" +msgstr "Вы нажали кнопку &1" + +#: app/examples/Control/ArrayOfControls/.src/FMain.class:70 +msgid "Clear" +msgstr "Очистить" + +#: app/examples/Control/ArrayOfControls/.src/FMain.class:78 +msgid "There is no number I could dial." +msgstr "Нет номера для набора." + +#: app/examples/Control/ArrayOfControls/.src/FMain.class:80 +msgid "Dialing " +msgstr "Набор номера " + +#: app/examples/Control/ArrayOfControls/.src/FMain.form:18 +msgid "Dial" +msgstr "Набрать" + diff --git a/app/examples/Control/ArrayOfControls/.project b/app/examples/Control/ArrayOfControls/.project new file mode 100644 index 00000000..ac6590b4 --- /dev/null +++ b/app/examples/Control/ArrayOfControls/.project @@ -0,0 +1,18 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.5.90 +Title=Array of Controls +Startup=FMain +Icon=phone.png +Version=3.6.2 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.form +Description="Example how to use an array of controls" +Authors="Matti (math.eber@t-online.de)" +TabSize=2 +Translate=1 +Language=de +ControlPublic=1 +SourcePath=/home/mathias/Basic +Packager=1 diff --git a/app/examples/Control/ArrayOfControls/.src/FMain.class b/app/examples/Control/ArrayOfControls/.src/FMain.class new file mode 100644 index 00000000..3f90faa8 --- /dev/null +++ b/app/examples/Control/ArrayOfControls/.src/FMain.class @@ -0,0 +1,83 @@ +' Gambas class file + +Private aButtons[13] As Button ' Dim the array of controls + +Public Sub Form_Open() + Dim i As Integer + + btnClose.Tooltip = ("Quit") + Me.Center + For i = 1 To 12 + aButtons[i] = New Button(Me) As "Buttongroup" ' Create a new button in the array and store it in an action group + With aButtons[i] + .X = (i - Int((i - 1) / 3) * 3) * 60 - 30 + .Y = Int((i - 1) / 3) * 60 + 170 + .Width = 42 + .Height = 42 + .Font.Grade = 5 + If i = 10 Then + .Text = "*" + Else If i = 11 Then + .Text = "0" + Else If i = 12 Then + .Text = "#" + Else + .Text = i + Endif + End With + Next + +End + + +Public Sub Buttongroup_Click() ' This is an event of the action group. This event is fired if any of the buttons is clicked + ' You see a list of available events if you type "Buttongroup_" +' Dim w As Integer + + tbNumber.Text = tbNumber.Text & Last.Text ' find out with LAST which button was clicked and hand its text over to TextBox + + ' w = Last.Width ' this would return the width of the last button + ' Print w +End + +Public Sub Buttongroup_Menu() ' Another event of the action group: Right-click on any of the buttons + + Message.Info(Subst(("You have clicked the button &1"), Last.Text)) + +End + +Public Sub btnClose_Click() + + If tbNumber.Text = "" Then + Me.Close + Else + tbNumber.Text = "" + Endif + +End + +Public Sub Form_KeyPress() + + If Key.code = Key.Esc Then Me.Close + +End + +Public Sub tbNumber_Change() + + If tbNumber.Text = "" Then + btnClose.Tooltip = ("Quit") + Else + btnClose.Tooltip = ("Clear") + Endif + +End + +Public Sub btnDial_Click() + + If tbNumber.Text = "" Then + Message.Warning(("There is no number I could dial.")) + Else + Message.Info(("Dialing ") & tbNumber.Text) + Endif + +End diff --git a/app/examples/Control/ArrayOfControls/.src/FMain.form b/app/examples/Control/ArrayOfControls/.src/FMain.form new file mode 100644 index 00000000..a4d87f51 --- /dev/null +++ b/app/examples/Control/ArrayOfControls/.src/FMain.form @@ -0,0 +1,25 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,32,61) + Background = &H525252& + Icon = Picture["Phone,.png"] + Resizable = False + Utility = True + { tbNumber TextBox + MoveScaled(3,5,26,6) + Font = Font["Bold,+4"] + Background = &HBBBFB7& + Alignment = Align.Right + ReadOnly = True + } + { btnDial Button + MoveScaled(3,15,12,6) + ToolTip = ("Dial") + Picture = Picture["green.png"] + } + { btnClose Button + MoveScaled(17,15,12,6) + Picture = Picture["red.png"] + } +} diff --git a/app/examples/Control/ArrayOfControls/green.png b/app/examples/Control/ArrayOfControls/green.png new file mode 100644 index 0000000000000000000000000000000000000000..930782f8a6a9d45d5f7703e9bd31a7cb1bde4341 GIT binary patch literal 873 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabRA=0VAK!r32_B-8R{7r)`8Im28LA( z4C@&ffD9msjDR8=85q{UlmVrHT!;dQ;IAt7$OemBAX9q z17#s@fT#!BvKnR)kOAZ(%L3H^&ELtuFcGF^F_;0g4z3JhGQ@)rHqZ))OCVf`+kgtT zfyIGRKsLl=h)STZVHyo%@>qbLN+}8Q3ua(auGqxvaO}J6;eSv1os@zep9uT*GWv>) znS{rmPtA;bu6YYQ`@2JI-n-imOD?}S{YL1*7CV3QpRp#DJZB*Ed{Z8_YK>NIKf}{qOvPZ`2wEK0f((GVPi5?%+-x&PB($_13$KoY0(a ze_-yUBle8@*WZ`tVJxy(q;YY@B9}u(0$jKLZnRjSR`s7#wBvZrKb0*Z_cuFvIUA*Y zUT%DDfzeAn!5;n(#Y*QMe`sBhnvwBCf1%=$qL0j)r=GdF9iQXE_2KnHmIYiU>z>;g zzGPq#Wo&dg!Ffvj%Navc+spncDIHH7XJnM+?K{D>i|Z=q@7G7c

z=MHo6Vej zy?puSWNC@(6N}}ezHcm#m-&9RI6m%I`QLg*+raF3+@4E6fbxu|tDnm{r-UW|-zYu- literal 0 HcmV?d00001 diff --git a/app/examples/Control/ArrayOfControls/green1.png b/app/examples/Control/ArrayOfControls/green1.png new file mode 100644 index 0000000000000000000000000000000000000000..3008e150da0d1f25b311fe7740bbdd0f2f46c0be GIT binary patch literal 1548 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 KMNUMnLSTY~xpcY! literal 0 HcmV?d00001 diff --git a/app/examples/Control/ArrayOfControls/red.png b/app/examples/Control/ArrayOfControls/red.png new file mode 100644 index 0000000000000000000000000000000000000000..19a5c61a361c0c7b1c17c1f926e96600fed650da GIT binary patch literal 1452 zcmV;d1ylNoP)0~Q;-*1~xMXUgPMx>~7sPDF&B&BQe3=BkNE{!g&KP52 zbWt}Yl5G*mlr1LUOQLge%g8dfsTs@EEx>b5dHNJOUJ8tt(muBz?t^rtEv@^1JLg>Y z{lDI?>jV?PUfz`P_Kce&%LAS03=BnDO0j*Bqk*Y`?{%?lB6o-JJ~nv6IX>Ft_P~t@ zfo3E_Z(vH~AQs^aT5(x<{1Cp2pHvx|lmd~K1I%x-9ZPXJ2C+NxS3FapHpJPCwhHwD z-k&iT`7l;T-ck~rj(i6{ta5rHUQw_n=dprV&|l*(HQw7~YVQS?UxXgAIvsVcEcjf` zi#ajpRL+m~Cr^!y9@@IOHs^Sr$m=<4dbn~znh(Qa+UmTk;OjYubIugpbMiunMzwrZ z&hDI8yRd6D2DW)!?o3O$>%Y%)aG5ell^ytClO+6d)y zHszcsIGwX$G)?a=$)D?H#YBk@GQGx%8V?mbTjNYlf6lQQy9;i4k!&A}bADeWjz)vU zlvQw!mInQ}EU=-StyggJQsmuyqRAKVLChLOWGL`_Lq;NAG;8ScoShdZR? zc)G%`FGZfSyvBV^euGtGki*%s9JklFzKeZLeue?8Xk$qzFYFD>#^<|u;1c9t4y=z{ zb-szjF{9&TWNx4hf5aCDsI;;h3-Gn9;1-GeK!q2^BJSbpf^XtpT;&4!N&E*p(JO_r zJ8~FvGp2>qJ62}A%^=jwC)ssB`%_et~7-g2l%pzY9DvkDU$X zMwVbRuEl(*WsCF$c6BDpMYaUi1g@#Xlz1YQj->r-(8u!DMlUUM%E@(tX-8O(j}MzzLy@Oid2qBm z*-Ud2TN_MkQm?Wjj4}zQaz&F@0|OOFn>R-m%^4)#g$}e5Q6Qdzg zX-VfgQOP1tmPAWi$}MIAJ%L|IwSGcsoihVdOW6)AzHgl6WGwX4KFDVF57o5V@$S$;JsiR$9=1PB)2U>V4q_9jF4ZzZH|HS^7rrN`SwF|j_ z{;;Mp84RRx{FT!ByI%7#XLGrb#DX8xnO?rXK4)DoGxlC$jUNwr+BLV896e(ReLH6$ zr!QyC|4TL;kx-)}=johg&Ypa%U2{K6i?k2MoKrP69ipT0IxH{vSivK;bmyTOUmf>A zgN}l&d0HMD-P~1Y*)g)7NhorV_8PYpZdu@m8RK6=uUrBt0Er>X!?mG-tK6jx8PjzU+!;r4~K>eI8N?Z>#d~cy~`K zxeBg}d@3>{V|L^{=nl+?9L2vPkK=DGy!>O%et*oJHQ~QVLJ-N|?SZ}k0000O3 literal 0 HcmV?d00001 diff --git a/app/examples/Control/ArrayOfControls/red1.png b/app/examples/Control/ArrayOfControls/red1.png new file mode 100644 index 0000000000000000000000000000000000000000..3cbb165d0469195eb69054977ea2a7c057924b2a GIT binary patch literal 1571 zcmV+;2Hg3HP)W)p+=2A+QCKSEUqf=YkVSd7dBy2;Fd@mLSzP`rOJ`WA^fw213kPQC}14z3v7giMq~M~ zue3D4#)5|nz8JYSFo_~E8kj9r=CCZXp}A?~cwk=(Pqnf4*PMJTtz8_zq~ualYCME* zM7CiHFG=2w1omYVZ5*9s6~-br7Tks{k&lN2=p8)S!fy`n#(iZp7LCAlgnevkup2jG zdElAAAC~e82D(zX&&d#>n>b9%C>;$tB6qiNU*zscXJCKekse+R6bqd_C&&3fmEYAU zYSe4|_$2RZrsr}bXH(Aia^A{`IeT;NkMH5QCkdzNtns5NMNVJNgJ)QKnReeLCuytk znJR~?6jcTXxbuvAbv9ODhWAHq2BReb8bY<);_j+jwZ^Cib_VeY)S8+2|mY{Hs?V5jE z%4=!4=4xD964+M)FL&|e5YMzRSZ6;DN4hEvHWzFNj8%B$8YUv4#-sQe*2VJ?5z@~j zPGce@?ysOXur|`=!n(K<+ouzO?JhVInG5t*ur8#YGZ<6u98c7G$9&^WuLGy>=Zrlo zd3J)?nPhQwq`Tnr_-3R#oCgir~Z?HP>1*|~~RGLvLSU*AksnkzYupCPR^%bdOY9*gxIC3_of||@| z#dN{5oxHKwQCrVYoxET)QVB^X3+Y(=1CPVK(u=j=+kHH6ews z6&)F0YS3|!v))-G@2?H1DXlB@H=uil`^(6lAt9V8A52WJ>I{=h*c!-U%3(`0m*u*h ztC(I4Kv{jgQd*nRTJ8~InjI9$cB4|^?b%e3-B`DUV>MnV_$XEc#w4Wzvys>9sV3eN z#7qLYJF=@BUfLpUA%Q3Y`53LI`4C1cjWkB>$Bhkk;MMiKaGawVm4cNGiY(FYOklPr z>0BTYql`}TM1wsT4pf$KszLWv{HvYu6ZC{cW~VArv789Bws3Wcb~5s2aCuU$pGCF2 z=F3~nn;O?dt`8i@ddV{mMOq8)8RDjSn_V$!)9eJ8H&*a2@ zes((1^o60yc`WBx&Qu?N=}(9+dFojx18lDI^_(MBCaV18Bq0h$XD0BXJo~Geg<*7k#TG(MPkTKdvxNDBbu_>mCeFo3Q)JFRvqZxA> z7kuf|*_yGs!LEXP12@Oi|M#xrfpNyy%+p!)xYrXe+#dN{U1E-OOXRuR^eok zyqdsvsZp&7+!~n;yoMk2@~37|&M(f3^35w`*U{ZblyG}wM@*?$Id9pV)bkrL@%?CI zJWDP6k3H#h#R;kJFO*9ryg}B^aD((!vppo*UXS*W4pIZJg+#$aIMiDnvv?6h{{^I3 VY5ioD5IFz<002ovPDHLkV1nS={i^@~ literal 0 HcmV?d00001 diff --git a/app/examples/Control/Embedder/.directory b/app/examples/Control/Embedder/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Control/Embedder/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Control/Embedder/.icon.png b/app/examples/Control/Embedder/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b6e995d784509d051e5a749b038edd8d78f83985 GIT binary patch literal 4242 zcmV;D5N+>?P)H3eCIOjBVO z-3*tj0CVnt11%KVgJqQ&JaS(JRplAHbOhcw0geN^n&8@+e75#2q-fJNlu~^8?sC3* z_Z+_Xy+ds6JU*@8`m++C@^5ybJr}K^C_BKn?kVT?Rr$Qu3_pDx%+#5_DcfVvk_7Wh zSi3Bb$L^oUsXm)qzIBwQlQEEi%S(WHU)qV*kQwŸ}f>-9zK>xJ*W1^sbw+%tVo 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, 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: Embedder\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2011-03-20 17:28+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: .project:1 +msgid "Embedder" +msgstr "Incrustador" + +#: FMain.class:18 +msgid "Window not found!" +msgstr "Finestra no trobada." + +#: FMain.class:21 +msgid "Several windows found. I take the first one!" +msgstr "Diverses finestres trobades. Agafo la primera." + +#: FMain.class:60 +msgid "Embed error" +msgstr "Error d'Incrustat" + +#: FMain.class:106 +msgid "Desktop application embedder" +msgstr "Incrustador d'aplicació d'escriptori" + +#: FMain.class:120 +msgid "Window title" +msgstr "Títol de la finestra" + +#: FMain.class:125 +msgid "Enter there the title of the window you want to embed." +msgstr "Introduïu el títol de la finestra que voleu incrustar." + +#: FMain.class:132 +msgid "" +"Click on the Embed button to search the window whose title \n" +"is specified in the left field, and to embed it in the \n" +"blue rectangle below." +msgstr "" +"Feu clic al botó Incrusta per cercar la finestra, el títol de la qual \n" +"està especificat al camp de l'esquerra, i per incrustar a dins \n" +"del rectangle blau de sota." + +#: FMain.class:133 +msgid "&Embed" +msgstr "&Incrusta" + +#: FMain.class:140 +msgid "Click on the Discard button to free the application window from its jail." +msgstr "Feu clic al botó Descarta per alliberar la finestra de l'aplicació de la seva presó." + +#: FMain.class:141 +msgid "&Discard" +msgstr "&Descarta" + diff --git a/app/examples/Control/Embedder/.lang/cs.po b/app/examples/Control/Embedder/.lang/cs.po new file mode 100644 index 00000000..15a28af1 --- /dev/null +++ b/app/examples/Control/Embedder/.lang/cs.po @@ -0,0 +1,62 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Embedder" +msgstr "ZapoÅ¡těč" + +#: FMain.class:20 +msgid "Window not found!" +msgstr "Okno nenalezeno!" + +#: FMain.class:23 +msgid "Several windows found. I take the first one!" +msgstr "Nalezeno několik obek. Beru první!" + +#: FMain.class:62 +msgid "Embed error" +msgstr "Chyba zapuÅ¡tění" + +#: FMain.form:15 +msgid "Desktop application embedder" +msgstr "Aplikace zapuÅ¡těna" + +#: FMain.form:29 +msgid "Window title" +msgstr "Titulek okna" + +#: FMain.form:34 +msgid "Enter there the title of the window you want to embed." +msgstr "Zde zadejte název okna, které chcete zapustit." + +#: FMain.form:40 +msgid "" +"Click on the Embed button to search the window whose title \n" +"is specified in the left field, and to embed it in the \n" +"blue rectangle below." +msgstr "" +"Klikněte na tlačítko Zapustit pro vyhledávání okna, jehož název\n" +"je uvedené v levém poli, a zapuÅ¡těno bude do\n" +"modrého obdélníku níže." + +#: FMain.form:41 +msgid "&Embed" +msgstr "Za&pustit" + +#: FMain.form:48 +msgid "Click on the Discard button to free the application window from its jail." +msgstr "Klikněte na ZruÅ¡it a okno aplikace bude uvolněno." + +#: FMain.form:49 +msgid "&Discard" +msgstr "&ZruÅ¡it" diff --git a/app/examples/Control/Embedder/.lang/de.po b/app/examples/Control/Embedder/.lang/de.po new file mode 100644 index 00000000..4036899c --- /dev/null +++ b/app/examples/Control/Embedder/.lang/de.po @@ -0,0 +1,59 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Embedder" +msgstr "-" + +#: FMain.class:20 +msgid "Window not found!" +msgstr "Fenster nicht gefunden!" + +#: FMain.class:23 +msgid "Several windows found. I take the first one!" +msgstr "Mehrere Fenster gefunden. Ich nehme das erste!" + +#: FMain.class:62 +msgid "Embed error" +msgstr "Fehler beim Einbinden" + +#: FMain.form:15 +msgid "Desktop application embedder" +msgstr "Desktop-Anwendungs-Einbinder" + +#: FMain.form:29 +msgid "Window title" +msgstr "Fenstertitel" + +#: FMain.form:34 +msgid "Enter there the title of the window you want to embed." +msgstr "Geben Sie hier den Titel des Fensters ein, das Sie einbinden wollen." + +#: FMain.form:40 +msgid "" +"Click on the Embed button to search the window whose title \n" +"is specified in the left field, and to embed it in the \n" +"blue rectangle below." +msgstr "Klicken Sie auf die Einbetten Schaltfläche, um das Fenster, dessen Titel im linken Feld angegeben ist, zu suchen und es im blauen Rechteck unten einzubetten." + +#: FMain.form:41 +msgid "&Embed" +msgstr "&Einbinden" + +#: FMain.form:48 +msgid "Click on the Discard button to free the application window from its jail." +msgstr "Klicken Sie auf die Lösen Schaltfläche, um das Anwendungsfenster aus der Anbindung zu lösen." + +#: FMain.form:49 +msgid "&Discard" +msgstr "&Lösen" diff --git a/app/examples/Control/Embedder/.lang/es.po b/app/examples/Control/Embedder/.lang/es.po new file mode 100644 index 00000000..f3386436 --- /dev/null +++ b/app/examples/Control/Embedder/.lang/es.po @@ -0,0 +1,57 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FMain.form:50 +msgid "&Discard" +msgstr "&Retornar" + +#: FMain.form:42 +msgid "&Embed" +msgstr "&Empotrar" + +#: FMain.form:49 +msgid "Click on the Discard button to free the application window from its jail." +msgstr "Haga click en el botón Retornar para liberar la ventana de la aplicación de su jaula." + +#: FMain.form:41 +msgid "Click on the Embed button to search the window whose title \nis specified in the left field, and to embed it in the \nblue rectangle below." +msgstr "Haga click en el botón Empotrar para buscar la ventana cuyo título \nha especificado en el campo de la izquierda \ncon el fin de empotrarla en el rectángulo azul de abajo. " + +#: FMain.form:15 +msgid "Desktop application embedder" +msgstr "Empotrador de aplicaciones de escritorio" + +#: FMain.class:60 +msgid "Embed error" +msgstr "Error de empotrado" + +#: .project:1 +msgid "Embedder" +msgstr "Empotrador" + +#: FMain.form:34 +msgid "Enter there the title of the window you want to embed." +msgstr "Introduzca el título de la ventana que desea empotrar." + +#: FMain.class:21 +msgid "Several windows found. I take the first one!" +msgstr "Multiples ventanas encontradas. ¡Usando la primera!" + +#: FMain.class:18 +msgid "Window not found!" +msgstr "¡Ventana no encontrada!" + +#: FMain.form:29 +msgid "Window title" +msgstr "Título de la ventana" + diff --git a/app/examples/Control/Embedder/.lang/nl.po b/app/examples/Control/Embedder/.lang/nl.po new file mode 100644 index 00000000..65b6f4f0 --- /dev/null +++ b/app/examples/Control/Embedder/.lang/nl.po @@ -0,0 +1,55 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Embedder 3.5.90\n" +"PO-Revision-Date: 2014-10-02 15:16 UTC\n" +"Last-Translator: Willy Raets \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Embedder" +msgstr "-" + +#: FMain.form:15 +msgid "Desktop application embedder" +msgstr "Desktop applicatie embedder" + +#: FMain.form:29 +msgid "Window title" +msgstr "Venster titel" + +#: FMain.form:34 +msgid "Enter there the title of the window you want to embed." +msgstr "Voer hier de titel in van het venster dat je wilt embedden." + +#: FMain.form:40 +msgid "Click on the Embed button to search the window whose title \nis specified in the left field, and to embed it in the \nblue rectangle below." +msgstr "Klik op de Embed knop om het venster te zoeken wiens titel\ngespecificieerd is in het linker veld en om het te embedden in\n de blauwe rechthoek beneden." + +#: FMain.form:41 +msgid "&Embed" +msgstr "-" + +#: FMain.form:48 +msgid "Click on the Discard button to free the application window from its jail." +msgstr "Klik op de Uitsluiten knop op het applicatievenster uit zijn gevangenis te bevrijden." + +#: FMain.form:49 +msgid "&Discard" +msgstr "&Uitsluiten" + +#: FMain.class:20 +msgid "Window not found!" +msgstr "Venster niet gevonden!" + +#: FMain.class:23 +msgid "Several windows found. I take the first one!" +msgstr "Verschillende vensters gevonden. Ik gebruik het eerste!" + +#: FMain.class:62 +msgid "Embed error" +msgstr "Embed fout" + diff --git a/app/examples/Control/Embedder/.lang/ru.po b/app/examples/Control/Embedder/.lang/ru.po new file mode 100644 index 00000000..1e436589 --- /dev/null +++ b/app/examples/Control/Embedder/.lang/ru.po @@ -0,0 +1,77 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-28 09:00+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Control/Embedder/.project:21 +msgid "Embedder" +msgstr "Встраиватель" + +#: app/examples/Control/Embedder/.project:22 app/examples/Control/Embedder/.src/FMain.form:5 +msgid "Desktop application embedder" +msgstr "Встраиватель для приложения рабочего стола" + +#: app/examples/Control/Embedder/.src/FMain.class:20 +msgid "Window not found!" +msgstr "Окно не найдено!" + +#: app/examples/Control/Embedder/.src/FMain.class:23 +msgid "Several windows found. I take the first one!" +msgstr "Найдено несколько окон. Будет взято первое!" + +#: app/examples/Control/Embedder/.src/FMain.class:62 +msgid "Embed error" +msgstr "Ошибка встраивания" + +#: app/examples/Control/Embedder/.src/FMain.class:86 +msgid "Process_Kill" +msgstr "Процесс убийства" + +#: app/examples/Control/Embedder/.src/FMain.form:17 +msgid "Window title" +msgstr "Заголовок окна" + +#: app/examples/Control/Embedder/.src/FMain.form:21 +msgid "Enter there the title of the window you want to embed." +msgstr "Введите там заголовок окна, которое вы хотите встроить." + +#: app/examples/Control/Embedder/.src/FMain.form:26 +msgid "" +"Click on the Embed button to search the window whose title \n" +"is specified in the left field, and to embed it in the \n" +"blue rectangle below." +msgstr "Нажать кнопку Встроить, чтобы найти окно, заголовок которого указан в левом поле, и встроить его в синий прямоугольник ниже." + +#: app/examples/Control/Embedder/.src/FMain.form:27 +msgid "&Embed" +msgstr "Встроить" + +#: app/examples/Control/Embedder/.src/FMain.form:33 +msgid "Click on the Discard button to free the application window from its jail." +msgstr "Нажать кнопку Отказаться, чтобы освободить окно приложения из захвата." + +#: app/examples/Control/Embedder/.src/FMain.form:34 +msgid "&Discard" +msgstr "Отказаться" + diff --git a/app/examples/Control/Embedder/.project b/app/examples/Control/Embedder/.project new file mode 100644 index 00000000..38b4c637 --- /dev/null +++ b/app/examples/Control/Embedder/.project @@ -0,0 +1,20 @@ +# Gambas Project File 3.0 +Title=Embedder +Description="Desktop application embedder" +Startup=FMain +Icon=embedder.png +Version=3.13.90 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.form +Component=gb.desktop +Environment="GB_GUI=gb.gtk3" +TabSize=2 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence +Packager=1 diff --git a/app/examples/Control/Embedder/.src/FMain.class b/app/examples/Control/Embedder/.src/FMain.class new file mode 100644 index 00000000..1c3ed8f3 --- /dev/null +++ b/app/examples/Control/Embedder/.src/FMain.class @@ -0,0 +1,89 @@ +' Gambas class file + +Public Sub btnEmbed_Click() + + Dim sTitle As String + Dim aHandle As Integer[] + Dim iHandle As Integer + + sTitle = Trim(txtTitle.Text) + If Not sTitle Then Return + + If Left(sTitle, 2) = "0x" Then + iHandle = Val("&" & Mid$(sTitle, 3)) + Else If Left(sTitle) = "&" Then + iHandle = Val(sTitle) + Else +' aHandle = Desktop.FindWindow(Trim(txtTitle.Text)) + aHandle = Desktop.FindWindow(txtTitle.Text) + If aHandle.Count = 0 Then + Message.Warning(("Window not found!")) + Return + Else If aHandle.Count >= 2 Then + Message(("Several windows found. I take the first one!")) + Endif + iHandle = aHandle[0] + Endif + + Try embEmbedder.Embed(iHandle) + If Error Then Message.Warning(Error.Text) + +End + +Public Sub embEmbedder_Embed() + + btnEmbed.Enabled = False + btnDiscard.Enabled = True + +End + +Public Sub btnDiscard_Click() + + embEmbedder.Discard + embEmbedder_Close + +End + +Public Sub embEmbedder_Close() + + btnEmbed.Enabled = True + btnDiscard.Enabled = False + +End + +Public Sub Form_Open() + + lblID.Text = "&" & Hex$(embEmbedder.Id) + +End + +Public Sub embEmbedder_Error() + + Message.Error(("Embed error")) + +End + + +Public Sub Process_Read() + + Dim sStr As String + + 'READ #LAST, sStr, Lof(LAST) + Line Input #Last, sStr + Print "\t"; sStr + +End + +Public Sub Process_Error(sStr As String) + + Print "\t"; sStr; + If Right(sStr) <> "\n" Then Print + +End + +Public Sub Process_Kill() + + Print ("Process_Kill") + Print Last.State;; Last.Value + +End diff --git a/app/examples/Control/Embedder/.src/FMain.form b/app/examples/Control/Embedder/.src/FMain.form new file mode 100644 index 00000000..40465f3d --- /dev/null +++ b/app/examples/Control/Embedder/.src/FMain.form @@ -0,0 +1,54 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(32.7143,25,84,60) + Text = ("Desktop application embedder") + Icon = Picture["embedder.png"] + Arrangement = Arrange.Vertical + { Panel1 Panel + MoveScaled(0,0,82,6) + Arrangement = Arrange.Horizontal + Spacing = True + Margin = True + { Label1 Label + MoveScaled(2,1,16,4) + Font = Font["Bold"] + AutoResize = True + Text = ("Window title") + } + { txtTitle TextBox + MoveScaled(19,1,17,4) + ToolTip = ("Enter there the title of the window you want to embed.") + Expand = True + } + { btnEmbed Button + MoveScaled(37,1,14,4) + ToolTip = ("Click on the Embed button to search the window whose title \nis specified in the left field, and to embed it in the \nblue rectangle below.") + Text = ("&Embed") + Default = True + } + { btnDiscard Button + MoveScaled(52,1,14,4) + Enabled = False + ToolTip = ("Click on the Discard button to free the application window from its jail.") + Text = ("&Discard") + } + { lblID Label + MoveScaled(69,1,11,4) + Visible = False + Alignment = Align.Center + Border = Border.Sunken + } + } + { Panel2 Panel + MoveScaled(3,8,67,43) + Background = &H9FCFFF& + Expand = True + Arrangement = Arrange.Fill + Padding = 4 + { embEmbedder Embedder + MoveScaled(8,8,35,25) + Expand = True + } + } +} diff --git a/app/examples/Control/Embedder/embedder.png b/app/examples/Control/Embedder/embedder.png new file mode 100644 index 0000000000000000000000000000000000000000..fa90352044e39b15665b1fdc476fb55faa601013 GIT binary patch literal 2623 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 literal 0 HcmV?d00001 diff --git a/app/examples/Control/HighlightEditor/.directory b/app/examples/Control/HighlightEditor/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Control/HighlightEditor/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Control/HighlightEditor/.hidden/screenshots/2014-12-17.png b/app/examples/Control/HighlightEditor/.hidden/screenshots/2014-12-17.png new file mode 100644 index 0000000000000000000000000000000000000000..9db951a333c6c49e43dce7b34f41de25afaed402 GIT binary patch literal 58870 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 @|Wx1m7{5P?P@x84BZZm;c2)?VO0dj={x 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 literal 0 HcmV?d00001 diff --git a/app/examples/Control/HighlightEditor/.lang/ca.po b/app/examples/Control/HighlightEditor/.lang/ca.po new file mode 100644 index 00000000..2ea14157 --- /dev/null +++ b/app/examples/Control/HighlightEditor/.lang/ca.po @@ -0,0 +1,43 @@ +# Catalan translation of HighlightEditor +# Copyright (C) 2000-2010 Benoît Minisini. +# This file is distributed under the same license as the HighlightEditor package. +# Jordi Sayol , 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: HighlightEditor\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2010-12-16 23:32+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FEditor.class:208 +msgid "Highlight HTML" +msgstr "HTML ressaltat" + +#: FEditor.class:213 +msgid "Highlight immediately" +msgstr "Ressalta immediatament" + +#: FEditor.class:199 +msgid "HTML Highlighting Editor" +msgstr "Editor del ressalt d'HTML" + +#: .project:2 +msgid "HTML highlighting with the editor control" +msgstr "Ressaltador d'HTML amb el control de l'editor" + +#: FEditor.class:204 +msgid "Popup" +msgstr "Emergent" + +#: FEditor.class:221 +msgid "Quit" +msgstr "Surt" + diff --git a/app/examples/Control/HighlightEditor/.lang/cs.po b/app/examples/Control/HighlightEditor/.lang/cs.po new file mode 100644 index 00000000..6e3be1d3 --- /dev/null +++ b/app/examples/Control/HighlightEditor/.lang/cs.po @@ -0,0 +1,40 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "HTML highlighting with the editor control" +msgstr "HTML zvýrazňovač s editorem" + +#: .project:2 +msgid "This example show how to use the Editor control with custom highlighting." +msgstr "Tento příklad ukazuje jak použít Editor s volitelným zvýrazňováním." + +#: FEditor.form:15 +msgid "HTML Highlighting Editor" +msgstr "Editor zvýrazňující HTML" + +#: FEditor.form:20 +msgid "Popup" +msgstr "Vyskakovaví" + +#: FEditor.form:24 +msgid "Highlight HTML" +msgstr "Zvýraznění HTML" + +#: FEditor.form:29 +msgid "Highlight immediately" +msgstr "Zvýraznit ihned" + +#: FEditor.form:36 +msgid "Quit" +msgstr "Ukončit" diff --git a/app/examples/Control/HighlightEditor/.lang/de.po b/app/examples/Control/HighlightEditor/.lang/de.po new file mode 100644 index 00000000..8abe3e1e --- /dev/null +++ b/app/examples/Control/HighlightEditor/.lang/de.po @@ -0,0 +1,41 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "HTML highlighting with the editor control" +msgstr "HTML-Markierungen mit dem Editor-Steuerelement" + +#: .project:2 +msgid "This example show how to use the Editor control with custom highlighting." +msgstr "Dieses Beispiel zeigt, wie man das Editor-Steuerelement mit benutzerdefinierten Markierungen verwendet." + +#: FEditor.form:15 +msgid "HTML Highlighting Editor" +msgstr "HTML-Markierungseditor" + +#: FEditor.form:20 +msgid "Popup" +msgstr "-" + +#: FEditor.form:24 +msgid "Highlight HTML" +msgstr "HTML-Marks hervorheben" + +#: FEditor.form:29 +msgid "Highlight immediately" +msgstr "Sofort hervorheben" + +#: FEditor.form:36 +msgid "Quit" +msgstr "Beenden" + diff --git a/app/examples/Control/HighlightEditor/.lang/es.po b/app/examples/Control/HighlightEditor/.lang/es.po new file mode 100644 index 00000000..016970b6 --- /dev/null +++ b/app/examples/Control/HighlightEditor/.lang/es.po @@ -0,0 +1,34 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FEditor.class:201 +msgid "HTML Highlighting Editor" +msgstr "Editor con resaltado HTML " + +#: FEditor.class:206 +msgid "Popup" +msgstr "Popup" + +#: FEditor.class:210 +msgid "Highlight HTML" +msgstr "Resaltado HTML" + +#: FEditor.class:215 +msgid "Highlight immediately" +msgstr "Resaltar instantáneamente" + +#: FEditor.class:222 +msgid "Quit" +msgstr "Salir" + +#~ msgid "HTML highlighting with the editor control" +#~ msgstr "Resaltado HTML con el control editor" diff --git a/app/examples/Control/HighlightEditor/.lang/nl.po b/app/examples/Control/HighlightEditor/.lang/nl.po new file mode 100644 index 00000000..2063ffd7 --- /dev/null +++ b/app/examples/Control/HighlightEditor/.lang/nl.po @@ -0,0 +1,39 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: HighlightEditor 3.5.90\n" +"PO-Revision-Date: 2014-10-02 15:21 UTC\n" +"Last-Translator: Willy Raets \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "HTML highlighting with the editor control" +msgstr "HTML markering met editor control" + +#: .project:2 +msgid "This example shows how to use the Editor control with custom highlighting." +msgstr "Dit voorbeeld laat zien hoe je de Editor control kunt gebruiken met aangespaste markering." + +#: FEditor.form:15 +msgid "HTML Highlighting Editor" +msgstr "HTML markeer Editor" + +#: FEditor.form:20 +msgid "Popup" +msgstr "-" + +#: FEditor.form:24 +msgid "Highlight HTML" +msgstr "Markeer HTML" + +#: FEditor.form:29 +msgid "Highlight immediately" +msgstr "Onmiddelijk markeren" + +#: FEditor.form:36 +msgid "Quit" +msgstr "Afsluiten" + diff --git a/app/examples/Control/HighlightEditor/.lang/ru.po b/app/examples/Control/HighlightEditor/.lang/ru.po new file mode 100644 index 00000000..1cef47fd --- /dev/null +++ b/app/examples/Control/HighlightEditor/.lang/ru.po @@ -0,0 +1,64 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Control/HighlightEditor/.project:20 +msgid "HTML highlighting with the editor control" +msgstr "Подсветка HTML с контролем редактора" + +#: app/examples/Control/HighlightEditor/.project:21 +msgid "" +"Syntax highlighting example\n" +"\n" +"This example shows how to use the Editor control with custom highlighting." +msgstr "" +"Пример подсветки синтаксиса\n" +"\n" +"В этом примере показано, как использовать элемент управления редактора с пользовательской подсветкой." + +#: app/examples/Control/HighlightEditor/.src/FEditor.class:171 +msgid "modified" +msgstr "изменено" + +#: app/examples/Control/HighlightEditor/.src/FEditor.form:5 +msgid "HTML Highlighting Editor" +msgstr "Редактор подсветки HTML" + +#: app/examples/Control/HighlightEditor/.src/FEditor.form:9 +msgid "Popup" +msgstr "Всплывающее окно" + +#: app/examples/Control/HighlightEditor/.src/FEditor.form:12 +msgid "Highlight HTML" +msgstr "Подсветка HTML" + +#: app/examples/Control/HighlightEditor/.src/FEditor.form:16 +msgid "Highlight immediately" +msgstr "Немедленная подсветка" + +#: app/examples/Control/HighlightEditor/.src/FEditor.form:21 +msgid "Quit" +msgstr "Выход" + diff --git a/app/examples/Control/HighlightEditor/.project b/app/examples/Control/HighlightEditor/.project new file mode 100644 index 00000000..c3fa5e30 --- /dev/null +++ b/app/examples/Control/HighlightEditor/.project @@ -0,0 +1,21 @@ +# Gambas Project File 3.0 +Title=HTML highlighting with the editor control +Startup=FEditor +Icon=editor.png +Version=1.0.0 +Component=gb.image +Component=gb.qt4 +Component=gb.eval +Component=gb.eval.highlight +Component=gb.util +Component=gb.form.editor +Component=gb.qt4.ext +Description="Syntax highlighting example\n\nThis example shows how to use the Editor control with custom highlighting." +TabSize=2 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Example +Address=benoit@localhost +License=General Public Licence +Packager=1 diff --git a/app/examples/Control/HighlightEditor/.src/FEditor.class b/app/examples/Control/HighlightEditor/.src/FEditor.class new file mode 100644 index 00000000..f82eefe2 --- /dev/null +++ b/app/examples/Control/HighlightEditor/.src/FEditor.class @@ -0,0 +1,184 @@ +' Gambas class file + +Private hEditor As Editor +Private $bIgnore As Boolean +Private $bModified As Boolean + +Public Sub Form_Open() + + $bIgnore = True + Editor1.Text = File.Load("download.html") + + Editor1.Flags[Editor.HighlightBraces] = True + Editor1.Styles[Highlight.Operator].Color = Color.DarkGreen + Editor1.Styles[Highlight.Operator].Bold = True + Editor1.Styles[Highlight.String].Color = Color.DarkRed + Editor1.Flags[Editor.ShowLineNumbers] = True + Editor1.Flags[Editor.NoFolding] = True + Editor1.Flags[Editor.ShowCurrentLine] = True + + Editor2.Flags[Editor.HighlightBraces] = True + Editor2.Styles[Highlight.Operator].Color = Color.DarkGreen + Editor2.Styles[Highlight.Operator].Bold = True + Editor2.Styles[Highlight.String].Color = Color.DarkRed + + VSplit1.Layout = [1, 0] + mnuImmediately_Click + +End + +Public Sub Editor1_Highlight() + + Dim iState As Integer + Dim iNextState As Integer + Dim iInd As Integer + Dim J As Integer + Dim sText As String + Dim sCar As String + Dim iPos As Integer + Dim bMarkup As Boolean + + iState = Highlight.State + sText = Highlight.Text + + 'PRINT "Highlight:";; iState;; sText + + For iInd = 1 To String.Len(sText) + + iNextState = iState + sCar = String.Mid$(sText, iInd, 1) + + If bMarkup Then + + If sCar = ">" Then + bMarkup = False + iState = Highlight.Keyword + iNextState = Highlight.Normal + Else If sCar = " " Then + iNextState = Highlight.Operator + Else If sCar = "=" Then + iNextState = Highlight.String + Endif + + Else + + Select Case iState + Case Highlight.Normal + If sCar = "<" Then + If String.Mid$(sText, iInd, 4) = " +

+What is that new animal ? Well, Gambas +is a free development environment based on a Basic interpreter +with object extensions, like Visual Basic™ (but it is NOT +a clone !). Read the +introduction +for more information. +

+With Gambas, you can quickly design your program GUI, access +MySQL, PostgreSQL and SQLite databases, pilot KDE applications with DCOP, +translate your program into many languages, create network applications +easily, make 3D OpenGL applications, and so on... +

+http://gambas.sourceforge.net + \ No newline at end of file diff --git a/app/examples/Control/TreeView/.directory b/app/examples/Control/TreeView/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Control/TreeView/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Control/TreeView/.icon.png b/app/examples/Control/TreeView/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c56ed6572a0f49de4e39c792b26ed178176748e2 GIT binary patch literal 4093 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 literal 0 HcmV?d00001 diff --git a/app/examples/Control/TreeView/.lang/ca.po b/app/examples/Control/TreeView/.lang/ca.po new file mode 100644 index 00000000..5aea149b --- /dev/null +++ b/app/examples/Control/TreeView/.lang/ca.po @@ -0,0 +1,88 @@ +# Catalan translation of TreeView +# Copyright (C) 2000-2010 Benoît Minisini. +# This file is distributed under the same license as the TreeView package. +# Jordi Sayol , 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: TreeView\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2011-03-21 01:56+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: TreeViewExample.form:28 +msgid "About" +msgstr "Quant a" + +#: TreeViewExample.class:49 +msgid "
Item rect is (" +msgstr "
Posició (" + +#: TreeViewExample.class:42 +msgid " children." +msgstr " fills." + +#: TreeViewExample.form:74 +msgid "&Clear events" +msgstr "&Neteja els esdeveniments" + +#: TreeViewExample.form:54 +msgid "Current item" +msgstr "Element actual" + +#: TreeViewExample.form:64 +msgid "Events" +msgstr "Esdeveniments" + +#: TreeViewExample.form:85 +msgid "Female" +msgstr "Femení" + +#: TreeViewExample.class:42 +msgid " has " +msgstr " té " + +#: TreeViewExample.class:46 +msgid " has 1 child." +msgstr " té un fill." + +#: TreeViewExample.class:44 +msgid " has no children." +msgstr " no té fills." + +#: TreeViewExample.form:25 +msgid "Help" +msgstr "Ajuda" + +#: TreeViewExample.form:40 +msgid "Insert Name" +msgstr "Insereix un nom" + +#: TreeViewExample.form:79 +msgid "Male" +msgstr "Masculí" + +#: TreeViewExample.form:45 +msgid "Remove Name" +msgstr "Elimina el nom" + +#: .project:1 +msgid "TreeView example" +msgstr "Exemple de visualització en arbre" + +#: TreeViewExample.form:20 +msgid "TreeView Example" +msgstr "Exemple de visualització en arbre" + +#: TreeViewExample.class:139 +msgid "TreeView example written by C. Packard and Fabien Hutrel." +msgstr "Exemple de Vista d'Arbre escrit per C. Packard i Fabien Hutrel." + diff --git a/app/examples/Control/TreeView/.lang/cs.po b/app/examples/Control/TreeView/.lang/cs.po new file mode 100644 index 00000000..23b02a14 --- /dev/null +++ b/app/examples/Control/TreeView/.lang/cs.po @@ -0,0 +1,76 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "TreeView example" +msgstr "Příklad stromového pohledu" + +#: TreeViewExample.class:42 +msgid "&1 has &2 children." +msgstr "&1 má &2 potomků." + +#: TreeViewExample.class:44 +msgid "&1 has no children." +msgstr "&1 nemá potomka." + +#: TreeViewExample.class:46 +msgid "&1 has 1 child." +msgstr "&1 má 1 potomka." + +#: TreeViewExample.class:49 +msgid "
Item rect is (" +msgstr "
Obdelník položky je (" + +#: TreeViewExample.class:150 +msgid "TreeView example written by C. Packard and Fabien Hutrel." +msgstr "Příklad Stromového pohledu napsaný C. Packard a Fabien Hutrel." + +#: TreeViewExample.form:20 +msgid "TreeView Example" +msgstr "Příklad Stromového pohledu" + +#: TreeViewExample.form:25 +msgid "Help" +msgstr "Nápověda" + +#: TreeViewExample.form:28 +msgid "About" +msgstr "O aplikaci" + +#: TreeViewExample.form:40 +msgid "Insert Name" +msgstr "Vložit jméno" + +#: TreeViewExample.form:45 +msgid "Remove Name" +msgstr "Odstranit jméno" + +#: TreeViewExample.form:54 +msgid "Current item" +msgstr "Aktuální položka" + +#: TreeViewExample.form:64 +msgid "Events" +msgstr "Události" + +#: TreeViewExample.form:74 +msgid "&Clear events" +msgstr "&Vyčistit události" + +#: TreeViewExample.form:79 +msgid "Male" +msgstr "Muž" + +#: TreeViewExample.form:85 +msgid "Female" +msgstr "Žena" diff --git a/app/examples/Control/TreeView/.lang/de.po b/app/examples/Control/TreeView/.lang/de.po new file mode 100644 index 00000000..f7b8900a --- /dev/null +++ b/app/examples/Control/TreeView/.lang/de.po @@ -0,0 +1,77 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "TreeView example" +msgstr "TreeView-Beispiel" + +#: TreeViewExample.class:42 +msgid "&1 has &2 children." +msgstr "&1 hat &2 Unterpunkte." + +#: TreeViewExample.class:44 +msgid "&1 has no children." +msgstr "&1 hat keine Unterpunkte." + +#: TreeViewExample.class:46 +msgid "&1 has 1 child." +msgstr "&1 hat 1 Unterpunkt." + +#: TreeViewExample.class:49 +msgid "
Item rect is (" +msgstr "
Element auf Position (" + +#: TreeViewExample.class:150 +msgid "TreeView example written by C. Packard and Fabien Hutrel." +msgstr "TreeView-Beispiel geschrieben von C. Packard und Fabien Hutrel." + +#: TreeViewExample.form:20 +msgid "TreeView Example" +msgstr "TreeView-Beispiel" + +#: TreeViewExample.form:25 +msgid "Help" +msgstr "Hilfe" + +#: TreeViewExample.form:28 +msgid "About" +msgstr "Uber" + +#: TreeViewExample.form:40 +msgid "Insert Name" +msgstr "Name einfügen" + +#: TreeViewExample.form:45 +msgid "Remove Name" +msgstr "Name entfernen" + +#: TreeViewExample.form:54 +msgid "Current item" +msgstr "Gegenwärtiges Element" + +#: TreeViewExample.form:64 +msgid "Events" +msgstr "Ereignisse" + +#: TreeViewExample.form:74 +msgid "&Clear events" +msgstr "&Ereignisse löschen" + +#: TreeViewExample.form:79 +msgid "Male" +msgstr "Männlich" + +#: TreeViewExample.form:85 +msgid "Female" +msgstr "Weiblich" + diff --git a/app/examples/Control/TreeView/.lang/es.po b/app/examples/Control/TreeView/.lang/es.po new file mode 100644 index 00000000..5140a0e7 --- /dev/null +++ b/app/examples/Control/TreeView/.lang/es.po @@ -0,0 +1,73 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: TreeViewExample.class:42 +msgid "&1 has &2 children." +msgstr "&1 tiene &2 hijos." + +#: TreeViewExample.class:46 +msgid "&1 has 1 child." +msgstr "&1 tiene 1 hijo." + +#: TreeViewExample.class:44 +msgid "&1 has no children." +msgstr "&1 no tiene hijos." + +#: TreeViewExample.form:74 +msgid "&Clear events" +msgstr "&Eliminar eventos" + +#: TreeViewExample.class:49 +msgid "
Item rect is (" +msgstr "" + +#: TreeViewExample.form:28 +msgid "About" +msgstr "Acerca de" + +#: TreeViewExample.form:54 +msgid "Current item" +msgstr "Elemento actual" + +#: TreeViewExample.form:64 +msgid "Events" +msgstr "Eventos" + +#: TreeViewExample.form:85 +msgid "Female" +msgstr "Mujer" + +#: TreeViewExample.form:25 +msgid "Help" +msgstr "Ayuda" + +#: TreeViewExample.form:40 +msgid "Insert Name" +msgstr "Insertar nombre" + +#: TreeViewExample.form:79 +msgid "Male" +msgstr "Hombre" + +#: TreeViewExample.form:45 +msgid "Remove Name" +msgstr "Eliminar nombre" + +#: .project:1 TreeViewExample.form:20 +msgid "TreeView Example" +msgstr "Ejemplo de TreeView" + +#: TreeViewExample.class:150 +msgid "TreeView example written by C. Packard and Fabien Hutrel." +msgstr "Ejemplo de TreeView escrito por C. Packard y Fabien Hutrel." + diff --git a/app/examples/Control/TreeView/.lang/nl.po b/app/examples/Control/TreeView/.lang/nl.po new file mode 100644 index 00000000..b3ad76d7 --- /dev/null +++ b/app/examples/Control/TreeView/.lang/nl.po @@ -0,0 +1,75 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: TreeView 3.6.0\n" +"PO-Revision-Date: 2014-10-10 13:53 UTC\n" +"Last-Translator: Willy Raets \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "TreeView example" +msgstr "TreeView voorbeeld" + +#: TreeViewExample.form:20 +msgid "TreeView Example" +msgstr "TreeView Voorbeeld" + +#: TreeViewExample.form:25 +msgid "Help" +msgstr "-" + +#: TreeViewExample.form:28 +msgid "About" +msgstr "Over" + +#: TreeViewExample.form:40 +msgid "Insert Name" +msgstr "Naam tussenvoegen" + +#: TreeViewExample.form:45 +msgid "Remove Name" +msgstr "Naam verwijderen" + +#: TreeViewExample.form:54 +msgid "Current item" +msgstr "Huidig item" + +#: TreeViewExample.form:64 +msgid "Events" +msgstr "Gebeurtenissen" + +#: TreeViewExample.form:74 +msgid "&Clear events" +msgstr "&Gebeurtenissen opschonen" + +#: TreeViewExample.form:79 +msgid "Male" +msgstr "Mannelijk" + +#: TreeViewExample.form:85 +msgid "Female" +msgstr "Vrouwelijk" + +#: TreeViewExample.class:42 +msgid "&1 has &2 children." +msgstr "&1 heeft &2 kinderen." + +#: TreeViewExample.class:44 +msgid "&1 has no children." +msgstr "&1 heeft geen kinderen." + +#: TreeViewExample.class:46 +msgid "&1 has 1 child." +msgstr "&1 heeft 1 kind." + +#: TreeViewExample.class:49 +msgid "
Item rect is (" +msgstr "
Item rect is (" + +#: TreeViewExample.class:150 +msgid "TreeView example written by C. Packard and Fabien Hutrel." +msgstr "TreeView voorbeeld geschreven door C. Packard en Fabien Hutrel." + diff --git a/app/examples/Control/TreeView/.lang/ru.po b/app/examples/Control/TreeView/.lang/ru.po new file mode 100644 index 00000000..87b2c24c --- /dev/null +++ b/app/examples/Control/TreeView/.lang/ru.po @@ -0,0 +1,154 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Control/TreeView/.project:19 +msgid "TreeView example" +msgstr "Пример просмотра дерева" + +#: app/examples/Control/TreeView/.src/TreeViewExample.class:15 app/examples/Control/TreeView/.src/TreeViewExample.class:16 app/examples/Control/TreeView/.src/TreeViewExample.class:17 app/examples/Control/TreeView/.src/TreeViewExample.class:23 +msgid "Bill" +msgstr "Билл" + +#: app/examples/Control/TreeView/.src/TreeViewExample.class:16 +msgid "Ted" +msgstr "Тэд" + +#: app/examples/Control/TreeView/.src/TreeViewExample.class:17 app/examples/Control/TreeView/.src/TreeViewExample.class:18 +msgid "Sally" +msgstr "Салли" + +#: app/examples/Control/TreeView/.src/TreeViewExample.class:18 +msgid "Frank" +msgstr "Фрэнк" + +#: app/examples/Control/TreeView/.src/TreeViewExample.class:42 +msgid "&1 has &2 children." +msgstr "&1 имеет &2 детей." + +#: app/examples/Control/TreeView/.src/TreeViewExample.class:44 +msgid "&1 has no children." +msgstr "&1 не имеет детей." + +#: app/examples/Control/TreeView/.src/TreeViewExample.class:46 +msgid "&1 has 1 child." +msgstr "&1 имеет 1 ребёнка." + +#: app/examples/Control/TreeView/.src/TreeViewExample.class:49 +msgid "Item rect is" +msgstr "Прямоугольник элемента" + +#: app/examples/Control/TreeView/.src/TreeViewExample.class:60 +msgid "Click" +msgstr "Щелчок" + +#: app/examples/Control/TreeView/.src/TreeViewExample.class:108 +msgid "Collapse" +msgstr "Свернуть" + +#: app/examples/Control/TreeView/.src/TreeViewExample.class:115 +msgid "DblClick" +msgstr "Двойной щелчок" + +#: app/examples/Control/TreeView/.src/TreeViewExample.class:123 +msgid "Select" +msgstr "Выбрать" + +#: app/examples/Control/TreeView/.src/TreeViewExample.class:130 +msgid "Delete" +msgstr "Удалить" + +#: app/examples/Control/TreeView/.src/TreeViewExample.class:137 +msgid "Expand" +msgstr "Развернуть" + +#: app/examples/Control/TreeView/.src/TreeViewExample.class:150 +msgid "TreeView example written by C. Packard and Fabien Hutrel." +msgstr "Пример просмотра дерева, написанный К. Пакард и Фабьен Хатрел." + +#: app/examples/Control/TreeView/.src/TreeViewExample.class:157 +msgid "Activate" +msgstr "Активировать" + +#: app/examples/Control/TreeView/.src/TreeViewExample.class:164 +msgid "Rename" +msgstr "Переименовать" + +#: app/examples/Control/TreeView/.src/TreeViewExample.class:174 +msgid "Event" +msgstr "Событие" + +#: app/examples/Control/TreeView/.src/TreeViewExample.class:174 +msgid "Item:" +msgstr "Элемент:" + +#: app/examples/Control/TreeView/.src/TreeViewExample.class:182 +msgid "Cancel" +msgstr "Отмена" + +#: app/examples/Control/TreeView/.src/TreeViewExample.form:5 +msgid "TreeView Example" +msgstr "Пример просмотра дерева" + +#: app/examples/Control/TreeView/.src/TreeViewExample.form:9 +msgid "Help" +msgstr "Справка" + +#: app/examples/Control/TreeView/.src/TreeViewExample.form:11 +msgid "About" +msgstr "О программе" + +#: app/examples/Control/TreeView/.src/TreeViewExample.form:21 +msgid "Insert Name" +msgstr "Вставить имя" + +#: app/examples/Control/TreeView/.src/TreeViewExample.form:25 +msgid "Remove Name" +msgstr "Удалить имя" + +#: app/examples/Control/TreeView/.src/TreeViewExample.form:32 +msgid "Current item" +msgstr "Текущий элемент" + +#: app/examples/Control/TreeView/.src/TreeViewExample.form:40 +msgid "Events" +msgstr "События" + +#: app/examples/Control/TreeView/.src/TreeViewExample.form:48 +msgid "&Clear events" +msgstr "Очистить события" + +#: app/examples/Control/TreeView/.src/TreeViewExample.form:52 +msgid "Male" +msgstr "Мужчина" + +#: app/examples/Control/TreeView/.src/TreeViewExample.form:57 +msgid "Female" +msgstr "Женщина" + +#: app/examples/Control/TreeView/.src/workaround:1 +msgid "
Item rect is (" +msgstr "
Прямоугольник элемента (" + diff --git a/app/examples/Control/TreeView/.project b/app/examples/Control/TreeView/.project new file mode 100644 index 00000000..e1ab34f3 --- /dev/null +++ b/app/examples/Control/TreeView/.project @@ -0,0 +1,17 @@ +# Gambas Project File 3.0 +Title=TreeView example +Startup=TreeViewExample +Icon=treeview.png +Version=3.13.90 +VersionFile=1 +Component=gb.image +Component=gb.gui +Environment="GB_GUI=gb.qt5" +TabSize=2 +Translate=1 +Language=fr +Maintainer=fabien +Vendor=Princeton +Address=fabien@arcalis +License=General Public Licence +Packager=1 diff --git a/app/examples/Control/TreeView/.src/TreeViewExample.class b/app/examples/Control/TreeView/.src/TreeViewExample.class new file mode 100644 index 00000000..db79cddf --- /dev/null +++ b/app/examples/Control/TreeView/.src/TreeViewExample.class @@ -0,0 +1,184 @@ +' Gambas class file + +Public intEventNumber As Integer + +Public Sub Form_Open() + + Dim picMale As Picture + Dim picFemale As Picture + + picFemale = Picture["Female.png"] + picMale = Picture["Male.png"] + + 'This will populate our treeview with our starting entries + 'Note: I'll just keep the entries text and its key the same to keep it simple + TreeView1.Add(("Bill"), ("Bill"), picMale) + TreeView1.Add(("Ted"), ("Ted"), picMale, ("Bill")) + TreeView1.Add(("Sally"), ("Sally"), picFemale, ("Bill")) + TreeView1.Add(("Frank"), ("Frank"), picMale, ("Sally")) + 'TreeView1.MoveCurrent + 'TreeView1.Item.Selected = TRUE + 'TreeView1.Item.Expanded = TRUE + + TreeView1[("Bill")].Expanded = True + +End + +Private Sub RefreshInfo() + + 'This little check just updates our label so that we know how many + 'children an entry has. + + Dim sText As String + + If Not TreeView1.Current Then + Textlabel1.Text = "" + Return + Endif + + With TreeView1.Current + + If .Children > 1 Then + sText = Subst(("&1 has &2 children."), .Text, .Children) + Else If .Children = 0 Then + sText = Subst(("&1 has no children."), .Text) + Else + sText = Subst(("&1 has 1 child."), .Text) + End If + + sText &= "
" & ("Item rect is") & " (" & .X & "," & .Y & "," & .W & "," & .H & ")" + + End With + + TextLabel1.Text = sText + +End + +Public Sub TreeView1_Click() + + 'This just updates our event stack + AddLog(("Click")) + +End + +Public Sub Button1_Click() + + Dim sIcon As String + Dim sParent As String + + If Textbox1.Text <> Null Then + If RadioButton1.Value Then + sIcon = "Male.png" + Else + sIcon = "Female.png" + End If + 'Gets the parent item: the current item, or nothing is the treeview is void + sParent = TreeView1.Key + 'Now we will add a new entry with a key and a name of what was in the text box + 'We will place it as a child of the currently selected entry + TreeView1.Add(Textbox1.Text, Textbox1.Text, Picture[sIcon], sParent).EnsureVisible + TreeView1.Item.EnsureVisible 'This will make sure that the item we just added to the list is in the visable area of the control. (Scrolling if necessary) + TextBox1.Text = "" 'This empties out textbox + RefreshInfo ' This will update our label and reflect the new number of kids + End If + +End + +Public Sub Button2_Click() + + If Not TreeView1.Key Then Return + 'Lets remove the current cursor item + TreeView1.Remove(TreeView1.Key) + 'Now move the cursor to the current item (since we are now pointing at a deleted item) + 'But first we check the count to make sure we didn't delete the last item in the list + 'if we did then we obviously don't run this part. + If TreeView1.Count > 0 Then + 'TreeView1.MoveCurrent + 'This selects or 'highlights' our current item + 'TreeView1.Current.Selected = TRUE + 'This will update our label and reflect the new number of kids + RefreshInfo + End If + +End + +Public Sub TreeView1_Collapse() + 'This just updates our event stack + + AddLog(("Collapse")) + +End + +Public Sub TreeView1_DblClick() + 'This just updates our event stack + + AddLog(("DblClick")) + +End + +Public Sub TreeView1_Select() + 'This just updates our event stack + + RefreshInfo + AddLog(("Select")) + +End + +Public Sub TreeView1_Delete() + 'This just updates our event stack + + AddLog(("Delete")) + +End + +Public Sub TreeView1_Expand() + 'This just updates our event stack + + AddLog(("Expand")) + +End + +Public Sub Button3_Click() + + TextArea1.Text = "" + 'IntEventNumber = 0 + +End + +Public Sub About_Click() + + Message.Info(("TreeView example written by C. Packard and Fabien Hutrel.")) + +End + +Public Sub TreeView1_Activate() + 'This just updates our event stack + + AddLog(("Activate")) + +End + +Public Sub TreeView1_Rename() + 'This just updates our event stack + + AddLog(("Rename")) + +End + +Private Sub AddLog(anevent As String) + 'This updates our event stack, this sub is used by all events... it display the current node key. + + Dim sKey As String + + Try sKey = TreeView1.Item.Key + TextArea1.Text = ("Event") & "(" & intEventNumber & "): " & anevent & " " & ("Item:") & " '" & sKey & "'\n" & TextArea1.Text + TextArea1.Pos = 0 + Inc intEventNumber + +End + +Public Sub TreeView1_Cancel() + + AddLog(("Cancel")) + +End diff --git a/app/examples/Control/TreeView/.src/TreeViewExample.form b/app/examples/Control/TreeView/.src/TreeViewExample.form new file mode 100644 index 00000000..0c3b4392 --- /dev/null +++ b/app/examples/Control/TreeView/.src/TreeViewExample.form @@ -0,0 +1,59 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(25,11.1429,92,54) + Text = ("TreeView Example") + Icon = Picture["treeview.png"] + Resizable = False + { Help Menu + Text = ("Help") + { About Menu + Text = ("About") + } + } + { TreeView1 TreeView + MoveScaled(1,1,24,48) + Mode = Select.Multiple + Editable = True + } + { Button1 Button + MoveScaled(54,1,17,4) + Text = ("Insert Name") + } + { Button2 Button + MoveScaled(54,6,17,4) + Text = ("Remove Name") + } + { TextBox1 TextBox + MoveScaled(27,1,25,4) + } + { Frame1 Frame + MoveScaled(27,11,64,13) + Text = ("Current item") + { TextLabel1 TextLabel + MoveScaled(1,4,38,8) + } + } + { Label2 Label + MoveScaled(27,25,39,4) + Font = Font["Bold"] + Text = ("Events") + } + { TextArea1 TextArea + MoveScaled(27,29,64,15) + ReadOnly = True + } + { Button3 Button + MoveScaled(71,45,20,4) + Text = ("&Clear events") + } + { RadioButton1 RadioButton + MoveScaled(27,6,12,4) + Text = ("Male") + Value = True + } + { RadioButton2 RadioButton + MoveScaled(40,6,13,4) + Text = ("Female") + } +} diff --git a/app/examples/Control/TreeView/Female.png b/app/examples/Control/TreeView/Female.png new file mode 100644 index 0000000000000000000000000000000000000000..3c1a3bb21aae6cf2350be5eb3ece0d190ece3d0f GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaN3?zjj6;1;wtpJ}8S0Me5;Xebze;|n;UHPLY z1ys#j666;Qqh%dE5=RbAdOHBM$~39e3lbn4!2fxZ)Oo12=9s$~zz+_qK_J{QMUTqEr$)2p4} z_r^uQ{j=7L$-4!PT-?=mF0n;Jm`OXiL1F=mSwo{>%9aU2H!|4RCM@-`O7L!6@a@== zse7+4v`b>N7I|jBL;OI)cOmAc+VAgJ-^hrh^6U}dWH{`Tu{0|3H!;>XS(+ z1FGjM3GxdD()B!%TR%2;n{quciwdz?1r*ut>Eak7aXC35L4bvcjjgTxy_|u8L6Zd& zkJqs>egz>1O|_@T`40%Kt4vkoDLcmRAhhUxgTjxEMl&vdFM7DH@_o+?kp`KI=HjfZ zspnZ6EbHBp#Q*>R literal 0 HcmV?d00001 diff --git a/app/examples/Control/TreeView/treeview.png b/app/examples/Control/TreeView/treeview.png new file mode 100644 index 0000000000000000000000000000000000000000..760ff1f884602717f3388dd9e490e2797d8e48d0 GIT binary patch literal 471 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\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FMain.class:114 +msgid "Amount" +msgstr "Quantitat" + +#: FMain.class:124 +msgid "Article" +msgstr "-" + +#: FMain.class:169 +msgid "As this is only an example,
nothing will be ordered,
nothing will be saved,
and nothing will be sent." +msgstr "Ja que això és només un exemple,
res s'ordenarà,
res es desarà,
ni res s'enviarà." + +#: FMain.class:147 +msgid "image files of the Gambas logo" +msgstr "Fitxers d'imatges del logotip del Gambas" + +#: FMain.class:95 +msgid "Introduction" +msgstr "Introducció" + +#: FMain.class:108 +msgid "I order, according to the terms & conditions, the following items:" +msgstr "Ordeno, d'acord amb els termes i condicions, els següents elements:" + +#: FMain.class:152 +msgid "I want to read the terms and conditions" +msgstr "Vull llegir els termes i condicions" + +#: FMain.class:158 +msgid "I want to save my order" +msgstr "Vull desar la meva comanda" + +#: FMain.class:138 +msgid "kg of frozen shrimps" +msgstr "kg de gambes congelades" + +#: FMain.class:129 +msgid "lines of code from gambas 3" +msgstr "Línies de codi del Gambas 3" + +#: FMain.class:100 +msgid "" +"Most of the properties of this wizard are selected in the properties window, not by code. This is because for designing the wizard you need the properties window anyway. \n" +"

\n" +"

\n" +"To see the properties window, you have to do save the project in your home directory so that it is not write protected anymore.\n" +"

\n" +"To design the pages of the wizard (or to see the properties), just click in the IDE on the \"Next\" button.\n" +"

\n" +"The essential property of the wizard container is Count. This defines the number of steps the user will have to click through. On the last page the button \"Next\" changes automatically to \"OK\" to finish the task.\n" +"

\n" +"In some situations you might want to skip steps of the wizard. You find this in the code of the CheckBoxes in step 2.\n" +"

\n" +msgstr "" +"La majoria de propietats d'aquest assistent es seleccionen a la finestra de propietats, i no al codi. Això es deu al fet que per dissenyar l'assistent es necessita la finestra de propietats de totes maneres. \n" +"

\n" +"

\n" +"Per veure la finestra de propietats, l'heu de desar al directori arrel del vostre projecte projecte, així ja no estarà protegit contra escriptura.\n" +"

\n" +"Per dissenyar les pàgines de l'assistent (o veure'n les propietats), a l'IDE feu clic al botó «Següent».\n" +"

\n" +"La propietat essencial del contenidor de l'assistent és Count. Aquesta defineix el nombre de passos que l'usuari haurà de fer. A l'última pàgina el botó «Següent» canvia automàticament a «D'acord» per acabar la tasca.\n" +"

\n" +"En algunes situacions podeu ometre els passos de l'assistent. Trobareu això en el codi de les caselles de verificació en el pas 2.\n" +"

\n" + +#: FMain.class:177 +msgid "Please enter your address here:" +msgstr "Introduïu la vostra adreça aquí:" + +#: FMain.class:184 +msgid "Save your order" +msgstr "Deseu la vostra comanda" + +#: FMain.class:196 +msgid "Send your order" +msgstr "Envieu la vostra comanda" + +#: FMain.class:162 +msgid "Terms and Conditions" +msgstr "Termes i condicions" + +#: FMain.class:204 +msgid "The following items:" +msgstr "Els següents articles:" + +#: FMain.class:189 +msgid "Where do you want to save your order?" +msgstr "On voleu desar la vostra comanda?" + +#: FMain.class:209 +msgid "will be delivered to:" +msgstr "serà lliurat a:" + +#: .project:1 +msgid "Wizard example" +msgstr "Exemple d'assistent" + +#: FMain.class:26 +msgid "" +"You didn't enter your address.\n" +"Your order can't be submitted." +msgstr "" +"No heu entrat la vostra adreça.\n" +"No es pot processar la vostra comanda." + +#: FMain.class:173 +msgid "Your address" +msgstr "La vostra adreça " + +#: FMain.class:103 +msgid "Your order" +msgstr "La vostra comanda" + +#: FMain.class:219 +msgid "Your order is now ready to be sent. Please check if everything is correct." +msgstr "La vostra comanda està llesta per a ser enviada. Reviseu si tot és correcte." + +#: FMain.class:39 +msgid "" +"Your order was submitted successfully.\n" +"The wizard will close now." +msgstr "" +"La vostra comanda s'ha processat correctament.\n" +"L'assistent s'acaba aquí." + diff --git a/app/examples/Control/Wizard/.lang/cs.po b/app/examples/Control/Wizard/.lang/cs.po new file mode 100644 index 00000000..87ec635b --- /dev/null +++ b/app/examples/Control/Wizard/.lang/cs.po @@ -0,0 +1,138 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Wizard example" +msgstr "Příklad průvodce" + +#: FMain.class:26 +msgid "" +"You didn't enter your address.\n" +"Your order can't be submitted." +msgstr "" +"Nezadali jste Vaši adresu.\n" +"Vaše objednávka je nedoručitelná." + +#: FMain.class:39 +msgid "" +"Your order was submitted successfully.\n" +"The wizard will close now." +msgstr "" +"Vaše objednávka byla úspěšně odeslána.\n" +"Průvodce bude ukončen." + +#: FMain.form:38 +msgid "Introduction" +msgstr "Úvod" + +#: FMain.form:43 +msgid "" +"Most of the properties of this wizard are selected in the properties window, not by code. This is because for designing the wizard you need the properties window anyway. \n" +"

\n" +"

\n" +"To see the properties window, you have to do save the project in your home directory so that it is not write protected anymore.\n" +"

\n" +"To design the pages of the wizard (or to see the properties), just click in the IDE on the \"Next\" button.\n" +"

\n" +"The essential property of the wizard container is Count. This defines the number of steps the user will have to click through. On the last page the button \"Next\" changes automatically to \"OK\" to finish the task.\n" +"

\n" +"In some situations you might want to skip steps of the wizard. You find this in the code of the CheckBoxes in step 2.\n" +"

\n" +msgstr "" +"Většina z vlastností tohoto průvodce jsou vybrané v okně vlastností, nikoli v kódu. Je to proto, že pro navrhování průvodce budete potřebovat okno vlastností tak jako tak. \n" +"

\n" +"

\n" +"Chcete-li zobrazit v okně vlastností, co musíte udělat, uložit projekt ve svém domovském adresáři, a ten není chráněn proti zápisu.\n" +"

\n" +"Chcete-li návrh stránkek průvodce (nebo viz vlastnosti), stačí kliknout na IDE na \"Další\" tlačítko.\n" +"

\n" +"V základní vlastnost je průvodce kontejneru Count(počet). Toto určuje počet kroků, které bude muset uživatele proklikat. Na poslední stráncena tlačítko \"Další\" se automaticky změní na \"OK\"prodokončení úkolu.\n" +"

\n" +"V některých situacích byste mohli chtít přeskočit kroky průvodce. Najdete to v kódu políček v kroku 2.\n" +"

\n" + +#: FMain.form:46 +msgid "Your order" +msgstr "Váše objednávka" + +#: FMain.form:51 +msgid "I order, according to the terms & conditions, the following items:" +msgstr "Objednávka, v souladu s podmínkami, následující položky:" + +#: FMain.form:57 +msgid "Amount" +msgstr "Částka" + +#: FMain.form:67 +msgid "Article" +msgstr "Předmět" + +#: FMain.form:72 +msgid "lines of code from gambas 3" +msgstr "řádků ku z gambasu 3" + +#: FMain.form:81 +msgid "kg of frozen shrimps" +msgstr "kg mražených krevet" + +#: FMain.form:90 +msgid "image files of the Gambas logo" +msgstr "obrazové soubory s logem Gambasu" + +#: FMain.form:95 +msgid "I want to read the terms and conditions" +msgstr "Chci si přečíst podmínky" + +#: FMain.form:101 +msgid "I want to save my order" +msgstr "Chci uložit moji objednávku" + +#: FMain.form:105 +msgid "Terms and Conditions" +msgstr "Podmínky" + +#: FMain.form:112 +msgid "As this is only an example,
nothing will be ordered,
nothing will be saved,
and nothing will be sent." +msgstr "Protože se jedná pouze o příklad,
nic se neobjedná,
nic se neuloženo
a nic nebude posláno." + +#: FMain.form:116 +msgid "Your address" +msgstr "Vaše adresa" + +#: FMain.form:120 +msgid "Please enter your address here:" +msgstr "Prosím, vložte sem vaši adresu:" + +#: FMain.form:127 +msgid "Save your order" +msgstr "Uložit objednávku" + +#: FMain.form:132 +msgid "Where do you want to save your order?" +msgstr "Kam chcete uložit objednávku?" + +#: FMain.form:139 +msgid "Send your order" +msgstr "Poslat objednávku" + +#: FMain.form:147 +msgid "The following items:" +msgstr "Následující položky:" + +#: FMain.form:152 +msgid "will be delivered to:" +msgstr "bude dodáno:" + +#: FMain.form:162 +msgid "Your order is now ready to be sent. Please check if everything is correct." +msgstr "Vaše objednávka je nyní připravena k odeslání. Zkontrolujte prosím, zda je vše v pořádku." diff --git a/app/examples/Control/Wizard/.lang/de.po b/app/examples/Control/Wizard/.lang/de.po new file mode 100644 index 00000000..3860e21b --- /dev/null +++ b/app/examples/Control/Wizard/.lang/de.po @@ -0,0 +1,138 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Wizard example" +msgstr "Beispiel: Wizard" + +#: FMain.class:26 +msgid "" +"You didn't enter your address.\n" +"Your order can't be submitted." +msgstr "" +"Sie haben Ihre Adresse nicht angegeben.\n" +"Ihre Bestellung kann nicht übermittelt werden." + +#: FMain.class:39 +msgid "" +"Your order was submitted successfully.\n" +"The wizard will close now." +msgstr "" +"Ihre Bestellung wurde erfolgreich übermittelt.\n" +"Der Assistent wird nun geschlossen." + +#: FMain.form:38 +msgid "Introduction" +msgstr "Einleitung" + +#: FMain.form:43 +msgid "" +"Most of the properties of this wizard are selected in the properties window, not by code. This is because for designing the wizard you need the properties window anyway. \n" +"

\n" +"

\n" +"To see the properties window, you have to do save the project in your home directory so that it is not write protected anymore.\n" +"

\n" +"To design the pages of the wizard (or to see the properties), just click in the IDE on the \"Next\" button.\n" +"

\n" +"The essential property of the wizard container is Count. This defines the number of steps the user will have to click through. On the last page the button \"Next\" changes automatically to \"OK\" to finish the task.\n" +"

\n" +"In some situations you might want to skip steps of the wizard. You find this in the code of the CheckBoxes in step 2.\n" +"

\n" +msgstr "" +"Die meisten Einstellungen dieses Assistenten sind im Eigenschaftenfenster eingestellt, nicht mittels Code. Weil man zum Design sowieso nicht um das Eigenschaftenfenster herumkommt. \n" +"

\n" +"

\n" +"Um das Eigenschaftenfenster zu sehen, musst du das Projekt in deinem home-Verzeichnis speichern, wo es nicht mehr schreibgeschützt ist.\n" +"

\n" +"Um die Seiten des Assistenten zu gestalten (oder die Eigenschaften anzusehen), klicke in der IDE einfach auf die \"Weiter\" Schaltfläche.\n" +"

\n" +"Die zentrale Eigenschaft des Assistenten ist Count. Damit wird die Anzahl der Schritte definiert, die der Anwender durchklicken muss. Auf der letzten Seite ändert sich \"Weiter\" automatisch in \"OK\", um den Assistenten abzuschließen.\n" +"

\n" +"In manchen Situationen mag man Schritte des Assistenten überspringen. Siehe hierzu den Code der CheckBoxen in Schritt 2.\n" +"

\n" + +#: FMain.form:46 +msgid "Your order" +msgstr "Ihre Bestellung" + +#: FMain.form:51 +msgid "I order, according to the terms & conditions, the following items:" +msgstr "Ich bestelle gemäß den Geschäftsbedingungen folgende Artikel:" + +#: FMain.form:57 +msgid "Amount" +msgstr "Menge" + +#: FMain.form:67 +msgid "Article" +msgstr "Artikel" + +#: FMain.form:72 +msgid "lines of code from gambas 3" +msgstr "Codezeilen aus Gambas 3" + +#: FMain.form:81 +msgid "kg of frozen shrimps" +msgstr "kg tiefgekühlte Scampi" + +#: FMain.form:90 +msgid "image files of the Gambas logo" +msgstr "Bilddateien des Gambas-Logos" + +#: FMain.form:95 +msgid "I want to read the terms and conditions" +msgstr "Ich möchte die Geschäftsbedingungen lesen" + +#: FMain.form:101 +msgid "I want to save my order" +msgstr "Ich möchte meine Bestellung speichern" + +#: FMain.form:105 +msgid "Terms and Conditions" +msgstr "Geschäftsbedingungen" + +#: FMain.form:112 +msgid "As this is only an example,
nothing will be ordered,
nothing will be saved,
and nothing will be sent." +msgstr "Da dies nur ein Beispiel ist,
wird nichts bestellt,
nichts gespeichert,
und nichts gesendet." + +#: FMain.form:116 +msgid "Your address" +msgstr "Ihre Adresse" + +#: FMain.form:120 +msgid "Please enter your address here:" +msgstr "Bitte geben Sie hier ihre Adresse ein:" + +#: FMain.form:127 +msgid "Save your order" +msgstr "Bestellung speichern" + +#: FMain.form:132 +msgid "Where do you want to save your order?" +msgstr "Wo möchten Sie Ihre Bestellung speichern?" + +#: FMain.form:139 +msgid "Send your order" +msgstr "Bestellung übermitteln" + +#: FMain.form:147 +msgid "The following items:" +msgstr "Die folgenden Artikel:" + +#: FMain.form:152 +msgid "will be delivered to:" +msgstr "werden geliefert an:" + +#: FMain.form:162 +msgid "Your order is now ready to be sent. Please check if everything is correct." +msgstr "Ihre Bestellung kann nun übermittelt werden. Bitte überprüfen Sie, ob alle Angaben korrekt sind." diff --git a/app/examples/Control/Wizard/.lang/nl.po b/app/examples/Control/Wizard/.lang/nl.po new file mode 100644 index 00000000..51708e2c --- /dev/null +++ b/app/examples/Control/Wizard/.lang/nl.po @@ -0,0 +1,107 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Wizard 3.6.0\n" +"PO-Revision-Date: 2014-10-10 13:56 UTC\n" +"Last-Translator: Willy Raets \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Wizard example" +msgstr "Wizard voorbeeld" + +#: FMain.form:38 +msgid "Introduction" +msgstr "Introducties" + +#: FMain.form:43 +msgid "Most of the properties of this wizard are selected in the properties window, not by code. This is because for designing the wizard you need the properties window anyway. \n

\n

\nTo see the properties window, you have to do save the project in your home directory so that it is not write protected anymore.\n

\nTo design the pages of the wizard (or to see the properties), just click in the IDE on the \"Next\" button.\n

\nThe essential property of the wizard container is Count. This defines the number of steps the user will have to click through. On the last page the button \"Next\" changes automatically to \"OK\" to finish the task.\n

\nIn some situations you might want to skip steps of the wizard. You find this in the code of the CheckBoxes in step 2.\n

\n" +msgstr "" + +#: FMain.form:46 +msgid "Your order" +msgstr "Je order" + +#: FMain.form:51 +msgid "I order, according to the terms & conditions, the following items:" +msgstr "Ik bestel, volgens de voorwaarden en condities, de volgende items:" + +#: FMain.form:57 +msgid "Amount" +msgstr "Bedrag" + +#: FMain.form:67 +msgid "Article" +msgstr "Artikel" + +#: FMain.form:72 +msgid "lines of code from gambas 3" +msgstr "aantal code lijnen van gambas3" + +#: FMain.form:81 +msgid "kg of frozen shrimps" +msgstr "kg bevroren garnalen" + +#: FMain.form:90 +msgid "image files of the Gambas logo" +msgstr "afbeeldingsbestanden van het Gambas logo" + +#: FMain.form:95 +msgid "I want to read the terms and conditions" +msgstr "Ik wil de voorwaarden en condities lezen" + +#: FMain.form:101 +msgid "I want to save my order" +msgstr "Ik wil mijn order opslaan" + +#: FMain.form:105 +msgid "Terms and Conditions" +msgstr "Voorwaarden en condities" + +#: FMain.form:112 +msgid "As this is only an example,
nothing will be ordered,
nothing will be saved,
and nothing will be sent." +msgstr "Gezien dit slechts een voorbeeld is zal er,
niets besteld worden,
niets opgeslagen worden,
en niets verzonden worden." + +#: FMain.form:116 +msgid "Your address" +msgstr "Je adres" + +#: FMain.form:120 +msgid "Please enter your address here:" +msgstr "Voer je adres hier in:" + +#: FMain.form:127 +msgid "Save your order" +msgstr "Order opslaan" + +#: FMain.form:132 +msgid "Where do you want to save your order?" +msgstr "Waar wil je de order opslaan?" + +#: FMain.form:139 +msgid "Send your order" +msgstr "Verzend je order" + +#: FMain.form:147 +msgid "The following items:" +msgstr "De volgende items:" + +#: FMain.form:152 +msgid "will be delivered to:" +msgstr "zal afgeleverd worden aan:" + +#: FMain.form:162 +msgid "Your order is now ready to be sent. Please check if everything is correct." +msgstr "Je order is nu klaar voor verzending. Controleer of alles in orde is." + +#: FMain.class:34 +msgid "Your order was submitted successfully.\nThe wizard will close now." +msgstr "Je opdracht is succesvol ingedient.\nDe wizard zal nu sluiten." + +#: FMain.class:58 +msgid "You didn't enter your address.\nYour order can't be submitted." +msgstr "Je hebt je adres niet ingevoerd.\nDe order kan niet worden ingedient." + diff --git a/app/examples/Control/Wizard/.lang/ru.po b/app/examples/Control/Wizard/.lang/ru.po new file mode 100644 index 00000000..c92d60c6 --- /dev/null +++ b/app/examples/Control/Wizard/.lang/ru.po @@ -0,0 +1,152 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Control/Wizard/.project:18 +msgid "Wizard example" +msgstr "Пример мастера" + +#: app/examples/Control/Wizard/.src/FMain.class:34 +msgid "" +"Your order was submitted successfully.\n" +"The wizard will close now." +msgstr "" +"Ваш заказ был успешно отправлен.\n" +"Мастер сейчас закроется." + +#: app/examples/Control/Wizard/.src/FMain.class:58 +msgid "" +"You didn't enter your address.\n" +"Your order can't be submitted." +msgstr "" +"Вы не ввели свой адрес.\n" +"Ваш заказ не может быть отправлен." + +#: app/examples/Control/Wizard/.src/FMain.form:12 +msgid "Introduction" +msgstr "Введение" + +#: app/examples/Control/Wizard/.src/FMain.form:16 +msgid "" +"Most of the properties of this wizard are selected in the properties window, not by code. This is because for designing the wizard you need the properties window anyway. \n" +"

\n" +"

\n" +"To see the properties window, you have to do save the project in your home directory so that it is not write protected anymore.\n" +"

\n" +"To design the pages of the wizard (or to see the properties), just click in the IDE on the \"Next\" button.\n" +"

\n" +"The essential property of the wizard container is Count. This defines the number of steps the user will have to click through. On the last page the button \"Next\" changes automatically to \"OK\" to finish the task.\n" +"

\n" +"In some situations you might want to skip steps of the wizard. You find this in the code of the CheckBoxes in step 2.\n" +"

\n" +msgstr "" +"Большинство свойств этого мастера выбираются в окне свойств, а не по коду. Это потому, что для разработки мастера вам всё равно нужно окно свойств. \n" +"

\n" +"

\n" +"Чтобы увидеть окно свойств, вам нужно сохранить проект в вашем домашнем каталоге, чтобы он больше не был защищён от записи.\n" +"

\n" +"Чтобы создать страницы мастера (или просмотреть свойства), просто нажмите в среде IDE на кнопку «Далее».\n" +"

\n" +"Основным свойством контейнера мастера является Счёт. Это определяет количество шагов, которые пользователь должен будет пройти. На последней странице кнопка «Далее» автоматически меняется на «ОК» для завершения задачи.\n" +"

\n" +"В некоторых ситуациях вы можете пропустить шаги мастера. Вы найдёте это в коде чекбоксов (флажков) в шаге 2.\n" +"

\n" + +#: app/examples/Control/Wizard/.src/FMain.form:19 +msgid "Your order" +msgstr "Ваш заказ" + +#: app/examples/Control/Wizard/.src/FMain.form:23 +msgid "I order, according to the terms & conditions, the following items:" +msgstr "Я заказываю в соответствии с положения и условиями следующие пункты:" + +#: app/examples/Control/Wizard/.src/FMain.form:28 +msgid "Amount" +msgstr "Кол-во" + +#: app/examples/Control/Wizard/.src/FMain.form:36 +msgid "Article" +msgstr "Статья" + +#: app/examples/Control/Wizard/.src/FMain.form:40 +msgid "lines of code from gambas 3" +msgstr "строк кода из gambas 3" + +#: app/examples/Control/Wizard/.src/FMain.form:47 +msgid "kg of frozen shrimps" +msgstr "кг замороженных креветок" + +#: app/examples/Control/Wizard/.src/FMain.form:54 +msgid "image files of the Gambas logo" +msgstr "файлов изображений логотипа Gambas" + +#: app/examples/Control/Wizard/.src/FMain.form:58 +msgid "I want to read the terms and conditions" +msgstr "Я хочу прочитать положения и условия" + +#: app/examples/Control/Wizard/.src/FMain.form:63 +msgid "I want to save my order" +msgstr "Я хочу сохранить свой заказ" + +#: app/examples/Control/Wizard/.src/FMain.form:67 +msgid "Terms and Conditions" +msgstr "Условия и положения" + +#: app/examples/Control/Wizard/.src/FMain.form:73 +msgid "As this is only an example,
nothing will be ordered,
nothing will be saved,
and nothing will be sent." +msgstr "Поскольку это только пример,
ничего не будет заказано,
ничего не будет сохранено
и ничего не будет отправлено." + +#: app/examples/Control/Wizard/.src/FMain.form:77 +msgid "Your address" +msgstr "Ваш адрес" + +#: app/examples/Control/Wizard/.src/FMain.form:80 +msgid "Please enter your address here:" +msgstr "Пожалуйста, введите ваш адрес здесь:" + +#: app/examples/Control/Wizard/.src/FMain.form:86 +msgid "Save your order" +msgstr "Сохранить ваш заказ" + +#: app/examples/Control/Wizard/.src/FMain.form:90 +msgid "Where do you want to save your order?" +msgstr "Где вы хотите сохранить свой заказ?" + +#: app/examples/Control/Wizard/.src/FMain.form:96 +msgid "Send your order" +msgstr "Отправить ваш заказ" + +#: app/examples/Control/Wizard/.src/FMain.form:102 +msgid "The following items:" +msgstr "Следующие пункты:" + +#: app/examples/Control/Wizard/.src/FMain.form:106 +msgid "will be delivered to:" +msgstr "будет доставлено на:" + +#: app/examples/Control/Wizard/.src/FMain.form:114 +msgid "Your order is now ready to be sent. Please check if everything is correct." +msgstr "Ваш заказ готов к отправке. Пожалуйста, проверьте, всё ли правильно." + diff --git a/app/examples/Control/Wizard/.project b/app/examples/Control/Wizard/.project new file mode 100644 index 00000000..88700328 --- /dev/null +++ b/app/examples/Control/Wizard/.project @@ -0,0 +1,16 @@ +# Gambas Project File 3.0 +Title=Wizard example +Startup=FMain +Icon=wizard.png +Version=3.13.90 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.form +Component=gb.desktop +Component=gb.pcre +Authors="Matti, slightly modified by Benoît Minisini" +TabSize=2 +Translate=1 +Language=de +Packager=1 diff --git a/app/examples/Control/Wizard/.src/FMain.class b/app/examples/Control/Wizard/.src/FMain.class new file mode 100644 index 00000000..7b91b974 --- /dev/null +++ b/app/examples/Control/Wizard/.src/FMain.class @@ -0,0 +1,65 @@ +' Gambas class file + +Public Sub _new() + Me.Center +End + +Public Sub Wizard1_Cancel() ' user clicks abort + + Me.Close + +End + +Public Sub Wizard1_Change() ' user clicks next + + Select Case Wizard1.Index ' be aware that the index starts with 0! + + Case 1 + vbCode.setFocus + + Case 3 + txaAddress.SetFocus + + Case 5 + + txlOrder.Text = vbCode.Text & " " & lblCode.Text & "
" & vbFrozen.Text & " " & lblFrozen.Text & "
" & vbImg.Text & " " & lblImg.Text + txlAddress.Text = Replace(txaAddress.Text, "\n", "
") + + End Select + +End + +Public Sub Wizard1_Close() ' user clicks ok on the last page + + Message.Info(("Your order was submitted successfully.\nThe wizard will close now.")) + Me.Close + +End + +Public Sub chbTerms_Click() ' user wants (not) to read "terms & conditions" + + Wizard1[2].Enabled = chbTerms.Value ' step 3 is visible or not, according to this decision + +End + +Public Sub chbSave_Click() ' user wants (not) to save + + Wizard1[4].Enabled = chbSave.Value ' step 5 is visible or not, according to this decision + +End + +Public Sub Wizard1_BeforeChange() + + Select Case Wizard1.Index + + Case 4 + + If txaAddress.Text = "" Then + Message.Error(("You didn't enter your address.\nYour order can't be submitted.")) + Wizard1.Index = 3 ' move back to step 4 + Stop Event + Endif + + End Select + +End diff --git a/app/examples/Control/Wizard/.src/FMain.form b/app/examples/Control/Wizard/.src/FMain.form new file mode 100644 index 00000000..0625d087 --- /dev/null +++ b/app/examples/Control/Wizard/.src/FMain.form @@ -0,0 +1,118 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,83,65) + Resizable = False + { Wizard1 Wizard + MoveScaled(1,1,81,63) + Count = 6 + TextFont = Font["Bold,Italic,+3"] + ShowIndex = True + Index = 0 + Text = ("Introduction") + { TextLabel1 TextLabel + MoveScaled(2,2,76,48) + Font = Font["+1"] + Text = ("Most of the properties of this wizard are selected in the properties window, not by code. This is because for designing the wizard you need the properties window anyway. \n

\n

\nTo see the properties window, you have to do save the project in your home directory so that it is not write protected anymore.\n

\nTo design the pages of the wizard (or to see the properties), just click in the IDE on the \"Next\" button.\n

\nThe essential property of the wizard container is Count. This defines the number of steps the user will have to click through. On the last page the button \"Next\" changes automatically to \"OK\" to finish the task.\n

\nIn some situations you might want to skip steps of the wizard. You find this in the code of the CheckBoxes in step 2.\n

\n") + } + Index = 1 + Text = ("Your order") + { TextLabel5 TextLabel + MoveScaled(2,2,75,7) + Font = Font["Bold,+1"] + Text = ("I order, according to the terms & conditions, the following items:") + } + { Label1 Label + MoveScaled(2,8,11,4) + Font = Font["+1"] + Text = ("Amount") + } + { vbCode ValueBox + MoveScaled(2,13,8,4) + } + { Label2 Label + MoveScaled(13,8,11,4) + Font = Font["+1"] + Text = ("Article") + } + { lblCode Label + MoveScaled(13,13,63,4) + Text = ("lines of code from gambas 3") + } + { vbFrozen ValueBox + MoveScaled(2,18,8,4) + } + { lblFrozen Label + MoveScaled(13,18,63,4) + Text = ("kg of frozen shrimps") + } + { vbImg ValueBox + MoveScaled(2,23,8,4) + } + { lblImg Label + MoveScaled(13,23,63,4) + Text = ("image files of the Gambas logo") + } + { chbTerms CheckBox + MoveScaled(2,31,75,5) + Text = ("I want to read the terms and conditions") + Value = CheckBox.True + } + { chbSave CheckBox + MoveScaled(2,37,40,4) + Text = ("I want to save my order") + Value = CheckBox.True + } + Index = 2 + Text = ("Terms and Conditions") + { TextLabel6 TextLabel + MoveScaled(2,2,76,41) + Font = Font["Serif,Bold,Italic,+1"] + Background = Color.TextBackground + Padding = 8 + Text = ("As this is only an example,
nothing will be ordered,
nothing will be saved,
and nothing will be sent.") + Border = Border.Plain + } + Index = 3 + Text = ("Your address") + { Label3 Label + MoveScaled(2,2,41,3) + Text = ("Please enter your address here:") + } + { txaAddress TextArea + MoveScaled(2,6,76,15) + } + Index = 4 + Text = ("Save your order") + { Label4 Label + MoveScaled(2,1,66,4) + Font = Font["Bold"] + Text = ("Where do you want to save your order?") + } + { DirChooser1 DirChooser + MoveScaled(2,5,76,38) + } + Index = 5 + Text = ("Send your order") + { txlOrder TextLabel + MoveScaled(4,13,70,8) + } + { Label6 Label + MoveScaled(2,9,22,3) + Text = ("The following items:") + } + { Label7 Label + MoveScaled(2,23,25,3) + Text = ("will be delivered to:") + } + { txlAddress TextLabel + MoveScaled(4,27,72,15) + } + { TextLabel2 TextLabel + MoveScaled(2,1,75,7) + Font = Font["Bold,+1"] + Text = ("Your order is now ready to be sent. Please check if everything is correct.") + } + Index = 0 + } +} diff --git a/app/examples/Control/Wizard/wizard.png b/app/examples/Control/Wizard/wizard.png new file mode 100644 index 0000000000000000000000000000000000000000..fff0e3f12ac0dfcd7a5137bca353a46c4d506c4d GIT binary patch literal 1510 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 e@IO~y@%VokW#eSwI&%;J0000, 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: Database\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2010-12-16 23:33+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FTest.class:136 +msgid "Active" +msgstr "Actiu" + +#: FTest.class:131 +msgid "Birth" +msgstr "Dia de naixement" + +#: FTest.class:60 +msgid "Bound controls example" +msgstr "Exemple de controls del límit" + +#: FMain.class:321 +msgid "" +"Bound controls\n" +"example..." +msgstr "" +"Controls del límit\n" +"exemple..." + +#: FTest.class:116 +msgid "Color" +msgstr "Color" + +#: FTest.class:146 +msgid "Comment" +msgstr "Comentari" + +#: FMain.class:249 +msgid "Connect" +msgstr "Connecta" + +#: FMain.class:220 +msgid "Connection" +msgstr "Connexió" + +#: FMain.class:298 +msgid "Create" +msgstr "Crea" + +#: FMain.class:282 +msgid "Create database if it does not exist" +msgstr "Crea la base de dades si no existeix" + +#: FMain.class:224 +msgid "Database" +msgstr "Base de dades" + +#: FMain.class:214 +msgid "Database example" +msgstr "Exemple de base de dades" + +#: FMain.class:287 +msgid "Debug" +msgstr "Depuració" + +#: FMain.class:303 +msgid "Delete" +msgstr "Suprimeix" + +#: FMain.class:308 +msgid "&Fill with" +msgstr "&Omple amb" + +#: FMain.class:255 +msgid "firebird" +msgstr "-" + +#: FTest.class:121 +msgid "First Name" +msgstr "Nom de pila" + +#: FMain.class:234 +msgid "Host" +msgstr "Ordinador central" + +#: FTest.class:111 +msgid "Id" +msgstr "Identificador" + +#: FMain.class:255 +msgid "mysql" +msgstr "-" + +#: FTest.class:126 +msgid "Name" +msgstr "Nom" + +#: FMain.class:255 +msgid "odbc" +msgstr "-" + +#: FMain.class:244 +msgid "Password" +msgstr "Contrasenya" + +#: FMain.class:255 +msgid "postgresql" +msgstr "-" + +#: FMain.class:326 +msgid "Records" +msgstr "Registres" + +#: FMain.class:337 +msgid "Run..." +msgstr "Executa..." + +#: FTest.class:141 +msgid "Salary" +msgstr "Salari" + +#: FMain.class:255 +msgid "sqlite3" +msgstr "-" + +#: FMain.class:333 +#: FRequest.class:27 +msgid "SQL request" +msgstr "Petició SQL" + +#: FMain.class:294 +msgid "Tables 'test' && 'color'" +msgstr "Taules «comprova» && «color»" + +#: FMain.class:265 +msgid "test" +msgstr "Comprova" + +#: FTest.class:78 +msgid "Test form" +msgstr "Formulari de prova" + +#: FMain.class:229 +msgid "Type" +msgstr "Tipus" + +#: FMain.class:239 +msgid "User" +msgstr "Usuari" + diff --git a/app/examples/Database/Database/.lang/cs.po b/app/examples/Database/Database/.lang/cs.po new file mode 100644 index 00000000..1961309b --- /dev/null +++ b/app/examples/Database/Database/.lang/cs.po @@ -0,0 +1,157 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 FMain.form:33 +msgid "Database example" +msgstr "Příklad databáze" + +#: FMain.form:39 +msgid "Connection" +msgstr "Připojení" + +#: FMain.form:43 +msgid "Database" +msgstr "Databáze" + +#: FMain.form:48 +msgid "Type" +msgstr "Typ" + +#: FMain.form:53 +msgid "Host" +msgstr "-" + +#: FMain.form:58 +msgid "User" +msgstr "Uživatel" + +#: FMain.form:63 +msgid "Password" +msgstr "Heslo" + +#: FMain.form:68 +msgid "Connect" +msgstr "Připojit" + +#: FMain.form:73 +msgid "firebird" +msgstr "-" + +#: FMain.form:73 +msgid "mysql" +msgstr "-" + +#: FMain.form:73 +msgid "odbc" +msgstr "-" + +#: FMain.form:73 +msgid "postgresql" +msgstr "-" + +#: FMain.form:73 +msgid "sqlite3" +msgstr "-" + +#: FMain.form:83 +msgid "test" +msgstr "-" + +#: FMain.form:98 +msgid "Create database if it does not exist" +msgstr "Vytvořit databázi když neexistuje" + +#: FMain.form:103 +msgid "Debug" +msgstr "Ladit" + +#: FMain.form:108 +msgid "Port" +msgstr "-" + +#: FMain.form:119 +msgid "Tables 'test' && 'color'" +msgstr "Takulky 'test' && 'color'" + +#: FMain.form:123 +msgid "Create" +msgstr "Vytvořit" + +#: FMain.form:128 +msgid "Delete" +msgstr "Smazat" + +#: FMain.form:133 +msgid "&Fill with" +msgstr "&Vyplnit s" + +#: FMain.form:146 +msgid "" +"Bound controls\n" +"example..." +msgstr "" +"Příklad na\n" +"vázané ovládací\n" +"prvky..." + +#: FMain.form:151 +msgid "Records" +msgstr "Záznamy" + +#: FMain.form:158 FRequest.class:26 +msgid "SQL request" +msgstr "SQL dotaz" + +#: FMain.form:162 +msgid "Run..." +msgstr "Spustit..." + +#: FTest.form:31 +msgid "Bound controls example" +msgstr "Příklad na vázané ovládací prvky" + +#: FTest.form:49 +msgid "Test form" +msgstr "Testovací formulář" + +#: FTest.form:82 +msgid "Id" +msgstr "-" + +#: FTest.form:87 +msgid "Color" +msgstr "-" + +#: FTest.form:92 +msgid "First Name" +msgstr "Jméno" + +#: FTest.form:97 +msgid "Name" +msgstr "Název" + +#: FTest.form:102 +msgid "Birth" +msgstr "Narození" + +#: FTest.form:107 +msgid "Active" +msgstr "Aktivita" + +#: FTest.form:112 +msgid "Salary" +msgstr "Plat" + +#: FTest.form:117 +msgid "Comment" +msgstr "Komentář" diff --git a/app/examples/Database/Database/.lang/de.po b/app/examples/Database/Database/.lang/de.po new file mode 100644 index 00000000..8362dcd4 --- /dev/null +++ b/app/examples/Database/Database/.lang/de.po @@ -0,0 +1,153 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 FMain.form:33 +msgid "Database example" +msgstr "Datenbank-Beispiel" + +#: FMain.form:39 +msgid "Connection" +msgstr "Verbindung" + +#: FMain.form:43 +msgid "Database" +msgstr "Datenbank" + +#: FMain.form:48 +msgid "Type" +msgstr "Typ" + +#: FMain.form:53 +msgid "Host" +msgstr "-" + +#: FMain.form:58 +msgid "User" +msgstr "Benutzer" + +#: FMain.form:63 +msgid "Password" +msgstr "Passwort" + +#: FMain.form:68 +msgid "Connect" +msgstr "Verbinden" + +#: FMain.form:73 +msgid "firebird" +msgstr "-" + +#: FMain.form:73 +msgid "mysql" +msgstr "-" + +#: FMain.form:73 +msgid "odbc" +msgstr "-" + +#: FMain.form:73 +msgid "postgresql" +msgstr "-" + +#: FMain.form:73 +msgid "sqlite3" +msgstr "-" + +#: FMain.form:83 +msgid "test" +msgstr "-" + +#: FMain.form:98 +msgid "Create database if it does not exist" +msgstr "Datenbank erstellen, falls sie nicht existiert" + +#: FMain.form:103 +msgid "Debug" +msgstr "Debuggen" + +#: FMain.form:108 +msgid "Port" +msgstr "-" + +#: FMain.form:119 +msgid "Tables 'test' && 'color'" +msgstr "Tabellen 'test' && 'color'" + +#: FMain.form:123 +msgid "Create" +msgstr "Erstellen" + +#: FMain.form:128 +msgid "Delete" +msgstr "Löschen" + +#: FMain.form:133 +msgid "&Fill with" +msgstr "&Füllen mit" + +#: FMain.form:146 +msgid "Bound controls\nexample..." +msgstr "Beispiel:\nGebundene\nSchaltflächen..." + +#: FMain.form:151 +msgid "Records" +msgstr "Datensätze" + +#: FMain.form:158 FRequest.class:26 +msgid "SQL request" +msgstr "SQL-Abfrage" + +#: FMain.form:162 +msgid "Run..." +msgstr "Ausführen..." + +#: FTest.form:31 +msgid "Bound controls example" +msgstr "Beispiel für gebundene Schaltflächen" + +#: FTest.form:49 +msgid "Test form" +msgstr "Testformular" + +#: FTest.form:82 +msgid "Id" +msgstr "ID" + +#: FTest.form:87 +msgid "Color" +msgstr "Farbe" + +#: FTest.form:92 +msgid "First Name" +msgstr "Vorname" + +#: FTest.form:97 +msgid "Name" +msgstr "Nachname" + +#: FTest.form:102 +msgid "Birth" +msgstr "Geburtsdatum" + +#: FTest.form:107 +msgid "Active" +msgstr "Aktiv" + +#: FTest.form:112 +msgid "Salary" +msgstr "Gehalt" + +#: FTest.form:117 +msgid "Comment" +msgstr "Kommentar" + diff --git a/app/examples/Database/Database/.lang/es.po b/app/examples/Database/Database/.lang/es.po new file mode 100644 index 00000000..d41e9b09 --- /dev/null +++ b/app/examples/Database/Database/.lang/es.po @@ -0,0 +1,151 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FMain.class:211 +msgid "Database example" +msgstr "Ejemplo de base de datos" + +#: FMain.class:217 +msgid "Connection" +msgstr "Conexión" + +#: FMain.class:221 +msgid "Database" +msgstr "Base de datos" + +#: FMain.class:226 +msgid "Type" +msgstr "Tipo" + +#: FMain.class:231 +msgid "Host" +msgstr "Servidor" + +#: FMain.class:236 +msgid "User" +msgstr "Usuario" + +#: FMain.class:241 +msgid "Password" +msgstr "Contraseña" + +#: FMain.class:246 +msgid "Connect" +msgstr "Conectar" + +#: FMain.class:251 +msgid "firebird" +msgstr "firebird" + +#: FMain.class:251 +msgid "mysql" +msgstr "mysql" + +#: FMain.class:251 +msgid "odbc" +msgstr "odbc" + +#: FMain.class:251 +msgid "postgresql" +msgstr "postgresql" + +#: FMain.class:251 +msgid "sqlite3" +msgstr "sqlite3" + +#: FMain.class:261 +msgid "test" +msgstr "test" + +#: FMain.class:276 +msgid "Create database if it does not exist" +msgstr "Crear la base de datos si no existe" + +#: FMain.class:281 +msgid "Debug" +msgstr "Depurar" + +#: FMain.class:288 +msgid "Tables 'test' && 'color'" +msgstr "Tablas 'test' && 'color'" + +#: FMain.class:292 +msgid "Create" +msgstr "Crear" + +#: FMain.class:297 +msgid "Delete" +msgstr "Borrar" + +#: FMain.class:302 +msgid "&Fill with" +msgstr "&Llenar con" + +#: FMain.class:315 +msgid "" +"Bound controls\n" +"example..." +msgstr "" +"Ejemplo de\n" +"controles de acceso..." + +#: FMain.class:320 +msgid "Records" +msgstr "Registros" + +#: FMain.class:327 FRequest.class:26 +msgid "SQL request" +msgstr "Consulta SQL" + +#: FMain.class:331 +msgid "Run..." +msgstr "Correr..." + +#: FTest.class:53 +msgid "Bound controls example" +msgstr "Ejemplo de controles de acceso" + +#: FTest.class:71 +msgid "Test form" +msgstr "Formulario de prueba" + +#: FTest.class:104 +msgid "Id" +msgstr "Id" + +#: FTest.class:109 +msgid "Color" +msgstr "Color" + +#: FTest.class:114 +msgid "First Name" +msgstr "Primer nombre" + +#: FTest.class:119 +msgid "Name" +msgstr "Nombre" + +#: FTest.class:124 +msgid "Birth" +msgstr "Nacimiento" + +#: FTest.class:129 +msgid "Active" +msgstr "Activo" + +#: FTest.class:134 +msgid "Salary" +msgstr "Salario" + +#: FTest.class:139 +msgid "Comment" +msgstr "Comentario" diff --git a/app/examples/Database/Database/.lang/nl.po b/app/examples/Database/Database/.lang/nl.po new file mode 100644 index 00000000..73496e2f --- /dev/null +++ b/app/examples/Database/Database/.lang/nl.po @@ -0,0 +1,147 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Database 3.5.90\n" +"PO-Revision-Date: 2014-09-24 16:00 UTC\n" +"Last-Translator: Willy Raets \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 FMain.form:33 +msgid "Database example" +msgstr "Database voorbeeld" + +#: FMain.form:39 +msgid "Connection" +msgstr "Verbinding" + +#: FMain.form:43 +msgid "Database" +msgstr "-" + +#: FMain.form:48 +msgid "Type" +msgstr "-" + +#: FMain.form:53 +msgid "Host" +msgstr "-" + +#: FMain.form:58 +msgid "User" +msgstr "Gebruiker" + +#: FMain.form:63 +msgid "Password" +msgstr "Wachtwoord" + +#: FMain.form:68 +msgid "Connect" +msgstr "Verbind" + +#: FMain.form:73 +msgid "postgresql" +msgstr "-" + +#: FMain.form:73 +msgid "mysql" +msgstr "-" + +#: FMain.form:73 +msgid "sqlite3" +msgstr "-" + +#: FMain.form:73 +msgid "odbc" +msgstr "-" + +#: FMain.form:83 +msgid "test" +msgstr "-" + +#: FMain.form:98 +msgid "Create database if it does not exist" +msgstr "Creëer database indien deze niet bestaat" + +#: FMain.form:103 +msgid "Debug" +msgstr "Foutenopsporing" + +#: FMain.form:108 +msgid "Port" +msgstr "Poort" + +#: FMain.form:119 +msgid "Tables 'test' && 'color'" +msgstr "Tabellen 'test' && 'kleur'" + +#: FMain.form:123 +msgid "Create" +msgstr "Creëer" + +#: FMain.form:128 +msgid "Delete" +msgstr "Verwijder" + +#: FMain.form:133 +msgid "&Fill with" +msgstr "&Vullen met" + +#: FMain.form:146 +msgid "Bound controls\nexample..." +msgstr "Gebonden controles\nvoorbeeld..." + +#: FMain.form:151 +msgid "Records" +msgstr "-" + +#: FMain.form:158 FRequest.class:26 +msgid "SQL request" +msgstr "SQL verzoek" + +#: FMain.form:162 +msgid "Run..." +msgstr "Uitvoeren..." + +#: FTest.form:31 +msgid "Bound controls example" +msgstr "Gebonden controles voorbeeld" + +#: FTest.form:49 +msgid "Test form" +msgstr "Test formulier" + +#: FTest.form:82 +msgid "Id" +msgstr "-" + +#: FTest.form:87 +msgid "Color" +msgstr "Kleur" + +#: FTest.form:92 +msgid "First Name" +msgstr "Voornaam" + +#: FTest.form:97 +msgid "Name" +msgstr "Naam" + +#: FTest.form:102 +msgid "Birth" +msgstr "Geboorte" + +#: FTest.form:107 +msgid "Active" +msgstr "Actief" + +#: FTest.form:112 +msgid "Salary" +msgstr "Salaris" + +#: FTest.form:117 +msgid "Comment" +msgstr "Commentaar" + diff --git a/app/examples/Database/Database/.lang/ru.po b/app/examples/Database/Database/.lang/ru.po new file mode 100644 index 00000000..607d1915 --- /dev/null +++ b/app/examples/Database/Database/.lang/ru.po @@ -0,0 +1,198 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Database/Database/.project:21 app/examples/Database/Database/.src/FMain.form:5 +msgid "Database example" +msgstr "Пример базы данных" + +#: app/examples/Database/Database/.src/FMain.class:102 +msgid "Black" +msgstr "Чёрный" + +#: app/examples/Database/Database/.src/FMain.class:102 +msgid "White" +msgstr "Белый" + +#: app/examples/Database/Database/.src/FMain.class:102 +msgid "Red" +msgstr "Красный" + +#: app/examples/Database/Database/.src/FMain.class:102 +msgid "Green" +msgstr "Зелёный" + +#: app/examples/Database/Database/.src/FMain.class:102 +msgid "Blue" +msgstr "Синий" + +#: app/examples/Database/Database/.src/FMain.class:102 +msgid "Yellow" +msgstr "Жёлтый" + +#: app/examples/Database/Database/.src/FMain.class:102 +msgid "Transparent" +msgstr "Прозрачный" + +#: app/examples/Database/Database/.src/FMain.class:118 +msgid "Name #" +msgstr "Имя #" + +#: app/examples/Database/Database/.src/FMain.form:10 +msgid "Connection" +msgstr "Соединение" + +#: app/examples/Database/Database/.src/FMain.form:13 +msgid "Database" +msgstr "База данных" + +#: app/examples/Database/Database/.src/FMain.form:17 +msgid "Type" +msgstr "Тип" + +#: app/examples/Database/Database/.src/FMain.form:21 +msgid "Host" +msgstr "Хост" + +#: app/examples/Database/Database/.src/FMain.form:25 +msgid "User" +msgstr "Пользователь" + +#: app/examples/Database/Database/.src/FMain.form:29 +msgid "Password" +msgstr "Пароль" + +#: app/examples/Database/Database/.src/FMain.form:33 +msgid "Connect" +msgstr "Соединить" + +#: app/examples/Database/Database/.src/FMain.form:37 +msgid "postgresql" +msgstr "postgresql" + +#: app/examples/Database/Database/.src/FMain.form:37 +msgid "mysql" +msgstr "mysql" + +#: app/examples/Database/Database/.src/FMain.form:37 +msgid "sqlite3" +msgstr "sqlite3" + +#: app/examples/Database/Database/.src/FMain.form:37 +msgid "odbc" +msgstr "odbc" + +#: app/examples/Database/Database/.src/FMain.form:58 +msgid "Create database if it does not exist" +msgstr "Создать базу данных, если она не существует" + +#: app/examples/Database/Database/.src/FMain.form:62 +msgid "Debug" +msgstr "Отладка" + +#: app/examples/Database/Database/.src/FMain.form:66 +msgid "Port" +msgstr "Порт" + +#: app/examples/Database/Database/.src/FMain.form:75 +msgid "Tables 'test' && 'color'" +msgstr "Таблицы 'тест' && 'цвет'" + +#: app/examples/Database/Database/.src/FMain.form:78 +msgid "Create" +msgstr "Создать" + +#: app/examples/Database/Database/.src/FMain.form:82 +msgid "Delete" +msgstr "Удалить" + +#: app/examples/Database/Database/.src/FMain.form:86 +msgid "&Fill with" +msgstr "Наполнить" + +#: app/examples/Database/Database/.src/FMain.form:97 +msgid "" +"Bound controls\n" +"example..." +msgstr "" +"Пр-р элементов\n" +"упр. границами..." + +#: app/examples/Database/Database/.src/FMain.form:101 +msgid "Records" +msgstr "Записей" + +#: app/examples/Database/Database/.src/FMain.form:107 app/examples/Database/Database/.src/FRequest.class:26 +msgid "SQL request" +msgstr "SQL запрос" + +#: app/examples/Database/Database/.src/FMain.form:110 +msgid "Run..." +msgstr "Запуск..." + +#: app/examples/Database/Database/.src/FRequest.class:66 +msgid "Cannot exec request." +msgstr "Невозможно выполнить запрос." + +#: app/examples/Database/Database/.src/FTest.form:5 +msgid "Bound controls example" +msgstr "Пример элементов управления границами" + +#: app/examples/Database/Database/.src/FTest.form:21 +msgid "Test form" +msgstr "Тестовая форма" + +#: app/examples/Database/Database/.src/FTest.form:48 +msgid "Id" +msgstr "Идентификатор" + +#: app/examples/Database/Database/.src/FTest.form:52 +msgid "Color" +msgstr "Цвет" + +#: app/examples/Database/Database/.src/FTest.form:56 +msgid "First Name" +msgstr "Первое имя" + +#: app/examples/Database/Database/.src/FTest.form:60 +msgid "Name" +msgstr "Имя" + +#: app/examples/Database/Database/.src/FTest.form:64 +msgid "Birth" +msgstr "Дата рождения" + +#: app/examples/Database/Database/.src/FTest.form:68 +msgid "Active" +msgstr "Активен" + +#: app/examples/Database/Database/.src/FTest.form:72 +msgid "Salary" +msgstr "Зарплата" + +#: app/examples/Database/Database/.src/FTest.form:76 +msgid "Comment" +msgstr "Комментарий" + diff --git a/app/examples/Database/Database/.project b/app/examples/Database/Database/.project new file mode 100644 index 00000000..a89ac14f --- /dev/null +++ b/app/examples/Database/Database/.project @@ -0,0 +1,19 @@ +# Gambas Project File 3.0 +Title=Database example +Startup=FMain +Icon=database.png +Version=3.16.90 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.form +Component=gb.db +Component=gb.db.form +TabSize=2 +Translate=1 +Language=fr +Maintainer=fabien +Vendor=Princeton +Address=fabien@arcalis +License=General Public Licence +Packager=1 diff --git a/app/examples/Database/Database/.src/FMain.class b/app/examples/Database/Database/.src/FMain.class new file mode 100644 index 00000000..1379445f --- /dev/null +++ b/app/examples/Database/Database/.src/FMain.class @@ -0,0 +1,178 @@ +' Gambas class file + +Private $hConn As Connection + +Public Sub btnConnect_Click() + + Dim sName As String + + Try $hConn.Close + '$hConn = NEW Connection + + sName = txtName.Text + + With $hConn + .Type = cmbType.Text + .Host = txtHost.Text + .Port = txtPort.Text + .Login = txtUser.Text + .Password = txtPassword.Text + .Name = "" + End With + + If chkCreate.Value Then + + $hConn.Open + If Not $hConn.Databases.Exist(sName) Then + $hConn.Databases.Add(sName) + Endif + $hConn.Close + + Endif + + $hConn.Name = sName + $hConn.Open + + frmDatabase.Enabled = True + frmRequest.Enabled = True + +Catch + + Message.Error(DConv(Error.Text)) + +End + +Public Sub btnCreate_Click() + + Dim hTable As Table + + hTable = $hConn.Tables.Add("test") + + hTable.Fields.Add("id", db.Long) + hTable.Fields.Add("color", db.Integer,, 1) + hTable.Fields.Add("firstname", db.String, 16) + hTable.Fields.Add("name", db.String, 32) + hTable.Fields.Add("birth", db.Date) + hTable.Fields.Add("active", db.Boolean) + hTable.Fields.Add("salary", db.Float) + hTable.Fields.Add("comment", db.String) + hTable.Fields.Add("image", db.Blob) + + hTable.PrimaryKey = ["id"] + + hTable.Update + + hTable = $hConn.Tables.Add("color") + + hTable.Fields.Add("color", db.Serial) + hTable.Fields.Add("name", gb.String, 32) + hTable.Fields.Add("french", gb.String, 32) + + hTable.PrimaryKey = ["color"] + + hTable.Update + +Catch + + Message.Error(DConv(Error.Text)) + +End + +Public Sub btnDelete_Click() + + Try $hConn.Tables.Remove("test") + Try $hConn.Tables.Remove("color") + +End + +Public Sub btnFill_Click() + + Dim iInd As Integer + Dim rTest As Result + Dim rColor As Result + Dim sColor As String + Dim aName As String[] = ["Paul", "Pierre", "Jacques", "Antoine", "Mathieu", "Robert", "Stéphane", "Yannick", "Frédéric"] + Dim aFrench As String[] = ["Noir", "Blanc", "Rouge", "Vert", "Bleu", "Jaune", "Transparent"] + Inc Application.Busy + + $hConn.Begin + + rColor = $hConn.Create("color") + + For Each sColor In [("Black"), ("White"), ("Red"), ("Green"), ("Blue"), ("Yellow"), ("Transparent")] + + rColor!name = sColor + rColor!french = aFrench[iInd] + Inc iInd + rColor.Update + + Next + + rTest = $hConn.Create("test") + + For iInd = 1 To txtCount.Value + + rTest!id = iInd + rTest!color = Int(Rnd(6)) + 1 + rTest!firstname = aName[Int(Rnd(aName.Count))] + rTest!name = ("Name #") & iInd + rTest!birth = CDate("01/01/1970") + Int(Rnd(10000)) + rTest!active = Int(Rnd(2)) + rTest!salary = Round(Rnd(1000, 10000), -2) + + rTest.Update + + Next + + $hConn.Commit + +Finally + + Dec Application.Busy + +Catch + + $hConn.Rollback + Message.Error(DConv(Error.Text)) + +End + +Public Sub btnRun_Click() + + Dim rData As Result + Dim hForm As FRequest + + rData = $hConn.Exec(txtRequest.Text) + hForm = New FRequest($hConn, rData) + hForm.Show + +'Catch + + 'Message.Error(DConv(Error.Text)) + +End + +Public Sub Form_Open() + + $hConn = New Connection + FRequest.Init = True + +End + +Public Sub Form_Close() + + $hConn.Close + +End + +Public Sub chkDebug_Click() + + DB.Debug = chkDebug.Value + +End + +Public Sub btnTest_Click() + + FTest.Show + +End diff --git a/app/examples/Database/Database/.src/FMain.form b/app/examples/Database/Database/.src/FMain.form new file mode 100644 index 00000000..11001875 --- /dev/null +++ b/app/examples/Database/Database/.src/FMain.form @@ -0,0 +1,118 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(43.5714,25,63,79) + Text = ("Database example") + Icon = Picture["database.png"] + Resizable = False + { Frame1 Frame + MoveScaled(1,1,61,40) + Text = ("Connection") + { Label5 Label + MoveScaled(2,19,14,4) + Text = ("Database") + } + { Label1 Label + MoveScaled(2,4,15,4) + Text = ("Type") + } + { Label2 Label + MoveScaled(2,9,15,4) + Text = ("Host") + } + { Label3 Label + MoveScaled(2,24,14,4) + Text = ("User") + } + { Label4 Label + MoveScaled(2,29,14,4) + Text = ("Password") + } + { btnConnect Button + MoveScaled(46,4,13,4) + Text = ("Connect") + } + { cmbType ComboBox + MoveScaled(18,4,24,4) + List = [("postgresql"), ("mysql"), ("sqlite3"), ("odbc")] + Text = (" ") + } + { txtHost TextBox + MoveScaled(18,9,24,4) + } + { txtName TextBox + MoveScaled(18,19,24,4) + #Translate = False + Text = "test" + } + { txtUser TextBox + MoveScaled(18,24,24,4) + MaxLength = 16 + } + { txtPassword TextBox + MoveScaled(18,29,24,4) + Password = True + } + { chkCreate CheckBox + MoveScaled(2,34,56,4) + Text = ("Create database if it does not exist") + } + { chkDebug CheckBox + MoveScaled(46,9,13,4) + Text = ("Debug") + } + { Label7 Label + MoveScaled(2,14,15,4) + Text = ("Port") + } + { txtPort TextBox + MoveScaled(18,14,24,4) + } + } + { frmDatabase Frame + MoveScaled(1,42,61,15) + Enabled = False + Text = ("Tables 'test' && 'color'") + { btnCreate Button + MoveScaled(2,4,12,4) + Text = ("Create") + } + { btnDelete Button + MoveScaled(2,9,12,4) + Text = ("Delete") + } + { btnFill Button + MoveScaled(18,4,16,4) + Text = ("&Fill with") + } + { txtCount SpinBox + MoveScaled(18,9,11,4) + MinValue = 10 + MaxValue = 100000 + Step = 1000 + Value = 10000 + } + { btnTest Button + MoveScaled(41,4,18,9) + Text = ("Bound controls\nexample...") + } + { Label6 Label + MoveScaled(30,9,10,4) + Text = ("Records") + } + } + { frmRequest Frame + MoveScaled(1,58,61,20) + Enabled = False + Text = ("SQL request") + { btnRun Button + MoveScaled(49,4,11,4) + Text = ("Run...") + Default = True + } + { txtRequest TextArea + MoveScaled(2,4,46,15) + Wrap = True + } + } +} diff --git a/app/examples/Database/Database/.src/FRequest.class b/app/examples/Database/Database/.src/FRequest.class new file mode 100644 index 00000000..0d82f97f --- /dev/null +++ b/app/examples/Database/Database/.src/FRequest.class @@ -0,0 +1,131 @@ +' Gambas class file + +Static Public Init As Boolean + +Private $hConn As Connection +Private $rData As Result + +Public Sub _new(hConn As Connection, rData As Result) + + $hConn = hConn + $rData = rData + + RefreshTitle + + ReadData + + Me.Move(Int(Rnd(Desktop.W - Me.W)), Int(Rnd(Desktop.H - Me.H))) + +End + + +Private Sub RefreshTitle() + + Dim sTitle As String + + sTitle = ("SQL request") & " - " & $hConn.Name + + Me.Title = sTitle + +End + + +Private Sub ReadData() + + Dim hField As ResultField + Dim iInd As Integer + + Inc Application.Busy + + tbvData.Rows.Count = 0 + + tbvData.Columns.Count = $rData.Fields.Count + + For Each hField In $rData.Fields + + With hField + + 'PRINT .Name; ": "; .Type; " "; .Length + + tbvData.Columns[iInd].Text = .Name + tbvData.Columns[iInd].Width = WidthFromType(tbvData, .Type, .Length, .Name) + + End With + + Inc iInd + Next + + tbvData.Rows.Count = $rData.Count + +Finally + + Dec Application.Busy + +Catch + + Message.Error(("Cannot exec request.") & "\n\n" & DConv(Error.Text)) + +End + + +Public Sub tbvData_Data(Row As Integer, Column As Integer) + + $rData.MoveTo(Row) + + tbvData.Data.Text = Str($rData[tbvData.Columns[Column].Text]) + tbvData.Data.Background = Color.RGB((Row Mod 31) * 8, (Row Mod 17) * 15, (Row Mod 13) * 21) + tbvData.Data.Foreground = Color.White + +End + + +Private Function WidthFromType(hCtrl As Control, iType As Integer, iLength As Integer, sTitle As String) As Integer + + Dim iWidth As Integer + + Select Case iType + + Case gb.Boolean + iWidth = hCtrl.Font.TextWidth(Str(False)) + 32 + + Case gb.Integer + iWidth = hCtrl.Font.TextWidth("1234567890") + 16 + + Case gb.Long + iWidth = hCtrl.Font.TextWidth("12345678901234567890") + 16 + + Case gb.Float + iWidth = hCtrl.Font.TextWidth(CStr(Pi) & "E+999") + 16 + + Case gb.Date + iWidth = hCtrl.Font.TextWidth(Str(Now)) + 16 + + Case gb.String + If iLength = 0 Then iLength = 255 + iLength = Min(32, iLength) + iWidth = hCtrl.Font.TextWidth("X") * iLength + 16 + + End Select + + iWidth = Max(iWidth, hCtrl.Font.TextWidth(sTitle) + 8) + + Return iWidth + +End + +' Private Function rowcount() As Integer +' +' Dim rows As Integer +' +' rows = 0 +' Do +' $rData.MoveTo(rows) +' Inc rows +' Loop +' +' Catch +' +' Return rows +' +' End + diff --git a/app/examples/Database/Database/.src/FRequest.form b/app/examples/Database/Database/.src/FRequest.form new file mode 100644 index 00000000..ba9a0184 --- /dev/null +++ b/app/examples/Database/Database/.src/FRequest.form @@ -0,0 +1,12 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(29.1667,19.3333,77.5,54.1667) + Text = ("") + Arrangement = Arrange.Fill + { tbvData GridView + MoveScaled(1,1,36,29) + Mode = Select.Single + Header = GridView.Both + } +} diff --git a/app/examples/Database/Database/.src/FTest.class b/app/examples/Database/Database/.src/FTest.class new file mode 100644 index 00000000..91803ebd --- /dev/null +++ b/app/examples/Database/Database/.src/FTest.class @@ -0,0 +1,25 @@ +' Gambas class file + +'PRIVATE $hConn AS NEW Connection + +Public Sub Form_Open() + + 'DataSource2.Connection = DB.Current + +End + +Public Sub DataControl6_Validate(Value As Variant) + + If IsNull(Value) Then Return + If Value < 0 Or Value > 10000 Then + Stop Event + Endif + +End + + +' Public Sub DataSource1_BeforeSave(Data As Result) +' +' Data["color"] = DataSource2["color"] +' +' End diff --git a/app/examples/Database/Database/.src/FTest.form b/app/examples/Database/Database/.src/FTest.form new file mode 100644 index 00000000..c81fefdc --- /dev/null +++ b/app/examples/Database/Database/.src/FTest.form @@ -0,0 +1,121 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(3,10,99,92) + Text = ("Bound controls example") + Arrangement = Arrange.Fill + Spacing = True + Margin = True + { DataSource2 DataSource + MoveScaled(1,1,97,90) + Arrangement = Arrange.Vertical + Spacing = True + Table = "color" + ReadOnly = True + { Label7 Label + MoveScaled(1,1,95,4) + Font = Font["Bold,+1"] + Background = Color.SelectedBackground + Foreground = Color.SelectedForeground + Padding = 4 + Text = ("Test form") + } + { DataBrowser2 DataBrowser + MoveScaled(1,6,95,10) + Control = False + Columns = ["name"] + Header = False + } + { DataSource1 DataSource + MoveScaled(1,17,95,72) + Expand = True + Arrangement = Arrange.Vertical + Spacing = True + Table = "test" + { DataBrowser1 DataBrowser + MoveScaled(7,4,87,14) + Expand = True + Columns = ["id", "active", "firstname"] + } + { HBox1 HBox + MoveScaled(2,21,90,50) + Spacing = True + { VBox2 VBox + MoveScaled(1,1,26,39) + Spacing = True + { Label1 Label + MoveScaled(1,3,30,4) + Text = ("Id") + } + { Label9 Label + MoveScaled(1,7,30,4) + Text = ("Color") + } + { Label2 Label + MoveScaled(1,11,30,4) + Text = ("First Name") + } + { Label3 Label + MoveScaled(1,15,30,4) + Text = ("Name") + } + { Label4 Label + MoveScaled(1,19,30,4) + Text = ("Birth") + } + { Label5 Label + MoveScaled(1,23,30,4) + Text = ("Active") + } + { Label6 Label + MoveScaled(1,27,30,4) + Text = ("Salary") + } + { Label8 Label + MoveScaled(1,31,30,4) + Text = ("Comment") + } + } + { VBox1 VBox + MoveScaled(28,1,61,48) + Expand = True + Spacing = True + { DataControl1 DataControl + MoveScaled(1,2,30,4) + Field = "id" + } + { DataCombo1 DataCombo + MoveScaled(1,7,30,4) + Field = "color" + Table = "color" + } + { DataControl2 DataControl + MoveScaled(1,12,30,4) + Field = "firstname" + } + { DataControl3 DataControl + MoveScaled(1,17,30,4) + Field = "name" + } + { DataControl4 DataControl + MoveScaled(1,22,30,4) + Field = "birth" + } + { DataControl5 DataControl + MoveScaled(1,27,30,4) + Field = "active" + } + { DataControl6 DataControl + MoveScaled(1,32,30,4) + Field = "salary" + } + { DataControl7 DataControl + MoveScaled(1,37,42,10) + Expand = True + Field = "comment" + } + } + } + } + } +} diff --git a/app/examples/Database/Database/.src/Form1.class b/app/examples/Database/Database/.src/Form1.class new file mode 100644 index 00000000..8239c98f --- /dev/null +++ b/app/examples/Database/Database/.src/Form1.class @@ -0,0 +1,83 @@ +' Gambas class file + +Private $hConn As New Connection +Private $res As Result +'------------------------------------------------- +Public Sub Form_Open() +Dim iCount As Integer +Dim hTable As Table +Dim rTest As Result +Dim sql As String + +'define the gridview layout +GridView1.header = GridView.Horizontal +GridView1.grid = True +GridView1.Rows.count = 0 +GridView1.Columns.count = 2 +GridView1.Columns[0].text = "ID" +GridView1.Columns[1].text = "Value" +GridView1.Columns[0].width = 55 +GridView1.Columns[1].width = 55 + + +With $hConn + .Type = "sqlite" + .host = User.home + .name = "" +End With + +' 'delete an existing test.sqlite +' If Exist(User.home & "/test.sqlite") Then +' Kill User.home & "/test.sqlite" +' Endif + +' 'create test.sqlite +' $hConn.Open +' $hConn.Databases.Add("test.sqlite") +' $hconn.Close + +'define the table sampleTable +$hconn.name = "test.sqlite" +$hConn.Open +' hTable = $hConn.Tables.Add("sampleTable") +' hTable.Fields.Add("s_seq", db.Integer) +' hTable.Fields.Add("s_rndm", db.Integer) +' hTable.PrimaryKey = ["s_seq"] +' hTable.Update +' +' 'fill the table with generated data +' $hconn.Begin +' rTest = $hConn.Create("sampleTable") +' For iCount = 1 To 1000000 +' rTest!s_seq = iCount +' rTest!s_rndm = Int(Rnd(0, 100)) +' rTest.Update +' Next +' $hConn.Commit + +'read the database +sql = "select s_seq as ID, s_rndm as Value from sampleTable" +$res = $hconn.Exec(sql) + +Catch +$hConn.Rollback +Message.Error(DConv(Error.Text)) + +End +'------------------------------------------------- +Public Sub Form_Activate() +'change the rowcount of the gridview from 0 to the number of records. +'This triggers the data handling event + +GridView1.Rows.Count = $res.Count +End +'------------------------------------------------- +Public Sub GridView1_Data(Row As Integer, Column As Integer) + $res.moveTo(row) + GridView1.Data.text = Str($res[GridView1.Columns[column].text]) +End +'------------------------------------------------- +Public Sub Form_Close() + $hconn.Close +End +'------------------------------------------------- \ No newline at end of file diff --git a/app/examples/Database/Database/.src/Form1.form b/app/examples/Database/Database/.src/Form1.form new file mode 100644 index 00000000..08c1b47e --- /dev/null +++ b/app/examples/Database/Database/.src/Form1.form @@ -0,0 +1,8 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,64,64) + { GridView1 GridView + MoveScaled(6,5,44,45) + } +} diff --git a/app/examples/Database/Database/database.png b/app/examples/Database/Database/database.png new file mode 100644 index 0000000000000000000000000000000000000000..e809be00a7a242c7d0723424ae6ac56f594d0b34 GIT binary patch literal 1142 zcmV-+1d02JP)kdg000C%Nkl0zzS9% z7Jwp^A|%8LRulnQfI?8(x^0})@z@^69(z1r_v5he%{a8B_v-3M=braD@B5tRyibV! z{}aOT7(ZrFh#w02S?$#?rOzEbJHC=!Y^*Taj1TMgXWl8+e*2g2=N|%#PrbLMwr;My zw$~fSEatI@WqcfWVm}r!kK;IsdxvYUZQZ;z^>oZ6gAnfg@Z67^(?M#ii&RvT$PkrI znN^5}{q~PO`;#Y`Q~-Z!E&gWp>m+Ithe|;}m}E(zCCC-n_+#fgU+qo+{=9hZ?!q~O z)FFbpL{L+g7|TVaQZATAf&F&-#>=}Tgk=1SnR8=fxxS*>EtjjQNi^gNr4og)+}POk za`y9(P(wKVkzJ=J+9>oT3R!g$^$H|Rc0W=Y zoMe!Pwj~|26Z{jAsmgeI_Ry3^M#%(VDDl80j5X9h=5}O88dC30z-thO<*6N|)KxR) zZ3%)@GU4U;aF-qEdC!Jf9jn6$!09woQ@7`y6&EaOxNqd8N{@fV4TZh~ZF_>TD;3K% zDC$$LyDzO|!km^(f0I^+nCQ4{q*NH;vdrVUcnlCn25N5D(9t%h5OkIDioQfmS1_<{ z-!oP{G^+m9V4OAT+eXg%l$JaGq2)j(ksw!ynzlt>(6j5`>iTB03BY{OsrSrz%Z5+5 zZrgd!C>%J%oH;ceZRb7qNZVLlVm6-uICWXmP-?8_z$Hs|ZL2wjeLD)vKBpsB%9NTe zYd4?L!I619aG)ncYD-r!;UKkR8GUVqYl2PL2?zb6nZ9qq^G5cp+0(NxMH0)SF=?*Kq*D7f zl~VI&ENW;-j0}u4)%EoZ6oQeLY&D zMsbqC`)e1jtvl;EL+==xwxq9AD8;I^^d0(-9T#2o&;zC2x5cWde)IXS-QKFL>RWY1 zLs!?Kp-dr4)l4~~WnR>F-@ZBP*}WHEzcXp;-}w9sf4H==r(wm4GiF4&hJT7)G?b~U z8`!dC)6n42?VG><*Z)}C7n?8q>f$THMdz(J>uo#ANePK1pR{e$hWFz3?{0thje!## zz#D_`>MNf<`-A?sij{>B^^}TA2Pt|o@5Z~EZ{6DY>Ff7S9P$I^8Uo+Ge&&0NpP9ap zEHzrS8AeB0cepd&*uT5~%U|F7pjU^FcJ9j9pE%p`@R3XZ3%msZw|{wOI{*Lx07*qo IM6N<$f-aytd;kCd literal 0 HcmV?d00001 diff --git a/app/examples/Database/MySQLExample/.directory b/app/examples/Database/MySQLExample/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Database/MySQLExample/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Database/MySQLExample/.icon.png b/app/examples/Database/MySQLExample/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0f8466493051fa0414212f65152a1637de7d3239 GIT binary patch literal 4409 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 literal 0 HcmV?d00001 diff --git a/app/examples/Database/MySQLExample/.lang/ca.po b/app/examples/Database/MySQLExample/.lang/ca.po new file mode 100644 index 00000000..279dac1f --- /dev/null +++ b/app/examples/Database/MySQLExample/.lang/ca.po @@ -0,0 +1,539 @@ +msgid "" +msgstr "" +"Project-Id-Version: MySQLExample\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2011-03-20 19:46+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FNewField.class:114 +msgid "Accepts NULLs:" +msgstr "Accepta NULLs:" + +#: FNewField.class:79 +msgid "Add Field" +msgstr "Afegeix camp" + +#: .project:2 +msgid "A simple GB.MYSQL Example" +msgstr "Un exemple sensill de GB.MYSQL" + +#: FNewTable.class:122 +#: FNewTrigger.class:146 +#: FNewView.class:101 +msgid "&Cancel" +msgstr "&Canceŀla" + +#: FTables.class:12 +msgid "Charset" +msgstr "Joc de caràcters" + +#: FNewDatabase.class:90 +#: FNewTable.class:112 +msgid "Charset:" +msgstr "Joc de caràcters:" + +#: FTables.class:23 +msgid "Check" +msgstr "Verificació" + +#: FConnect.class:142 +msgid "&Clear" +msgstr "&Neteja" + +#: FTables.class:13 +msgid "Collation" +msgstr "Coŀlació" + +#: FNewDatabase.class:79 +msgid "Collation:" +msgstr "Coŀlació:" + +#: FTables.class:30 +msgid "Column" +msgstr "Columna" + +#: FNewEvent.class:102 +#: FNewRoutine.class:119 +msgid "Comma separated values: Hola1 INT,Hola2 CHAR(5)" +msgstr "Valors separats per comes: Hola1 INT,Hola2 CHAR(5)" + +#: FTables.class:43 +msgid "Comment" +msgstr "Comentari" + +#: FNewField.class:146 +msgid "Comment:" +msgstr "Comentari:" + +#: FConnect.class:135 +msgid "&Connect" +msgstr "&Connecta" + +#: FConnect.class:86 +msgid "Connect to a MySQL Server" +msgstr "Connecta a un servidor MySQL" + +#: FNewDatabase.class:100 +msgid "&Create" +msgstr "&Crea" + +#: FTables.class:79 +msgid "Created" +msgstr "Creat" + +#: FNewDatabase.class:53 +msgid "Create Database" +msgstr "Crea una base de dades" + +#: FNewEvent.class:71 +msgid "Create Event" +msgstr "Crea un esdeveniment" + +#: FNewIndex.class:101 +msgid "Create Index" +msgstr "Crea un índex" + +#: FNewRoutine.class:88 +msgid "Create Routine" +msgstr "Crea una rutina" + +#: FNewTable.class:75 +msgid "Create Table" +msgstr "Crea una taula" + +#: FNewTrigger.class:84 +msgid "Create Trigger" +msgstr "Crea un activador" + +#: FNewView.class:63 +msgid "Create View" +msgstr "Crea una vista" + +#: FTables.class:39 +msgid "Creation Time" +msgstr "Hora de creació" + +#: FTables.class:85 +msgid "Database Collation" +msgstr "Coŀlació de la base de dades" + +#: FTables.class:51 +msgid "DataType" +msgstr "Tipus de dada" + +#: FNewField.class:104 +msgid "Data Type:" +msgstr "Tipus de dada:" + +#: FTables.class:49 +msgid "Default" +msgstr "Per defecte" + +#: FNewField.class:126 +msgid "Default:" +msgstr "Per defecte:" + +#: FTables.class:21 +msgid "Definer" +msgstr "Definidor" + +#: FNewIndex.class:106 +msgid "Delete" +msgstr "Suprimeix" + +#: FTables.class:1336 +msgid "Delete Database" +msgstr "Suprimeix la base de dades" + +#: FTables.class:900 +msgid "Delete Event" +msgstr "Suprimeix l'esdeveniment" + +#: FTables.class:891 +msgid "Delete Field" +msgstr "Suprimeix el camp" + +#: FTables.class:888 +msgid "Delete Index" +msgstr "Suprimeix l'índex" + +#: FTables.class:1267 +msgid "Delete Item" +msgstr "Suprimeix l'element" + +#: FTables.class:894 +msgid "Delete Routine" +msgstr "Suprimeix la rutina" + +#: FTables.class:882 +msgid "Delete Table" +msgstr "Suprimeix la taula" + +#: FTables.class:897 +msgid "Delete Trigger" +msgstr "Suprimeix l'activador" + +#: FTables.class:885 +msgid "Delete View" +msgstr "Suprimeix la vista" + +#: FTables.class:931 +msgid "Do you realy want to delete the database: &1?" +msgstr "Segur que voleu suprimir la base de dades: &1?" + +#: FTables.class:1035 +msgid "Do you realy want to delete the event: &1?" +msgstr "Segur que voleu suprimir l'esdeveniment: &1?" + +#: FTables.class:1029 +msgid "Do you realy want to delete the field: &1?" +msgstr "Segur que voleu suprimir el camp: &1?" + +#: FTables.class:1027 +msgid "Do you realy want to delete the index: &1?" +msgstr "Segur que voleu suprimir l'índex: &1?" + +#: FTables.class:1031 +msgid "Do you realy want to delete the routine: &1?" +msgstr "Segur que voleu suprimir la rutina: &1?" + +#: FTables.class:1023 +msgid "Do you realy want to delete the table: &1?" +msgstr "Segur que voleu suprimir la taula: &1?" + +#: FTables.class:1033 +msgid "Do you realy want to delete the trigger: &1?" +msgstr "Segur que voleu suprimir l'activador: &1?" + +#: FTables.class:1025 +msgid "Do you realy want to delete the view: &1?" +msgstr "Segur que voleu suprimir la vista: &1?" + +#: FNewEvent.class:19 +msgid "Edit Event" +msgstr "Edita l'esdeveniment" + +#: FNewField.class:22 +msgid "Edit Field" +msgstr "Edita el camp" + +#: FNewIndex.class:24 +msgid "Edit Index" +msgstr "Edita l'índex" + +#: FTables.class:1260 +msgid "Edit Item" +msgstr "Edita l'element" + +#: FNewRoutine.class:19 +msgid "Edit Routine" +msgstr "Edita la rutina" + +#: FNewTable.class:21 +msgid "Edit Table" +msgstr "Edita la taula" + +#: FNewTrigger.class:28 +msgid "Edit Trigger" +msgstr "Edita l'activador" + +#: FNewView.class:18 +msgid "Edit View" +msgstr "Edita la vista" + +#: FTables.class:77 +msgid "Ends" +msgstr "Extrems" + +#: FTables.class:11 +msgid "Engine" +msgstr "Motor" + +#: FNewTable.class:101 +msgid "Engine:" +msgstr "Motor:" + +#: FTables.class:61 +msgid "Event" +msgstr "Esdeveniment" + +#: FNewTrigger.class:122 +msgid "Event:" +msgstr "Esdeveniment:" + +#: FTables.class:1416 +msgid "Events" +msgstr "Esdeveniments" + +#: FTables.class:72 +msgid "Execute At" +msgstr "Executa a" + +#: FTables.class:53 +msgid "Extra" +msgstr "-" + +#: FNewField.class:136 +msgid "Extra:" +msgstr "-" + +#: FTables.class:116 +msgid "Fields" +msgstr "Camps" + +#: FNewIndex.class:138 +msgid "Fields:" +msgstr "Camps:" + +#: FTables.class:149 +msgid "Fields on:" +msgstr "Camps a:" + +#: FTables.class:115 +msgid "Indexes" +msgstr "Índexs" + +#: FTables.class:367 +msgid "Indexes on:" +msgstr "Índexs a:" + +#: FTables.class:74 +msgid "Interval Field" +msgstr "Interval del camp" + +#: FTables.class:73 +msgid "Interval Value" +msgstr "Interval del valor" + +#: FTables.class:1248 +msgid "Item" +msgstr "Element" + +#: FTables.class:1038 +msgid "Item deleted." +msgstr "Element suprimit." + +#: FTables.class:52 +msgid "Key" +msgstr "Clau" + +#: FTables.class:80 +msgid "Last Altered" +msgstr "L'últim modificat" + +#: FTables.class:81 +msgid "Last Executed" +msgstr "L'últim executat" + +#: FTables.class:1292 +msgid "Lock" +msgstr "Bloqueig" + +#: FMessage.class:33 +msgid "Message" +msgstr "Missatge" + +#: .project:1 +#: FConnect.class:79 +msgid "MySQL Example" +msgstr "Exemple de MySQL" + +#: FConnect.class:71 +msgid "MySQL GUI" +msgstr "Interfície del MySQL" + +#: FTables.class:9 +msgid "Name" +msgstr "Nom" + +#: FNewTrigger.class:100 +#: FNewView.class:79 +msgid "Name:" +msgstr "Nom:" + +#: FTables.class:1329 +msgid "New Database" +msgstr "Base de dades nova" + +#: FTables.class:899 +msgid "New Event" +msgstr "Nou esdeveniment" + +#: FTables.class:890 +msgid "New Field" +msgstr "Nou camp" + +#: FTables.class:887 +msgid "New Index" +msgstr "Nou índex" + +#: FTables.class:1253 +msgid "New Item" +msgstr "Nou element" + +#: FTables.class:893 +msgid "New Routine" +msgstr "Nova rutina" + +#: FTables.class:881 +msgid "New Table" +msgstr "Nova taula" + +#: FTables.class:896 +msgid "New Trigger" +msgstr "Nou activador" + +#: FTables.class:884 +msgid "New View" +msgstr "Nova vista" + +#: FNewField.class:120 +msgid "No" +msgstr "-" + +#: FTables.class:931 +msgid "&No" +msgstr "-" + +#: FTables.class:334 +msgid "Not available" +msgstr "No disponible" + +#: FTables.class:50 +msgid "Nullable" +msgstr "Anuŀlable" + +#: FNewView.class:94 +msgid "&Ok" +msgstr "D'ac&ord" + +#: FTables.class:78 +msgid "On Completion" +msgstr "En finalitzar" + +#: FTables.class:82 +msgid "Originator" +msgstr "Original" + +#: FNewRoutine.class:114 +msgid "Parameters:" +msgstr "Paràmetres:" + +#: FConnect.class:123 +msgid "Password:" +msgstr "Contrasenya:" + +#: FConnect.class:101 +msgid "Port:" +msgstr "-" + +#: FNewIndex.class:151 +msgid "Primary Key" +msgstr "Clau primària" + +#: FTables.class:1274 +msgid "Refresh" +msgstr "Actualitza" + +#: FTables.class:38 +msgid "Returns" +msgstr "Retorna" + +#: FNewRoutine.class:125 +msgid "Returns:" +msgstr "Retorna:" + +#: FTables.class:1396 +msgid "Routines" +msgstr "Rutines" + +#: FTables.class:10 +msgid "Rows" +msgstr "Files" + +#: FNewEvent.class:97 +msgid "Schedule:" +msgstr "Planificador:" + +#: FTables.class:22 +msgid "Security" +msgstr "Seguretat" + +#: FConnect.class:90 +msgid "Server:" +msgstr "Servidor:" + +#: FNewView.class:88 +msgid "Show a clue" +msgstr "Mostrar una pista" + +#: FTables.class:14 +msgid "Size" +msgstr "Mida" + +#: FTables.class:75 +msgid "SQL Mode" +msgstr "Mode SQL" + +#: FTables.class:76 +msgid "Starts" +msgstr "Inici" + +#: FTables.class:62 +msgid "Table" +msgstr "Taula" + +#: FTables.class:1243 +msgid "Tables" +msgstr "Taules" + +#: FNewTrigger.class:110 +msgid "Time:" +msgstr "Hora:" + +#: FTables.class:70 +msgid "Time Zone" +msgstr "Zona horària" + +#: FTables.class:63 +msgid "Timing" +msgstr "Temps" + +#: FTables.class:1406 +msgid "Triggers" +msgstr "Activadors" + +#: FTables.class:32 +msgid "Type" +msgstr "Tipus" + +#: FTables.class:20 +msgid "Updatable" +msgstr "Actualitzable" + +#: FTables.class:15 +msgid "Update Time" +msgstr "Hora d'actualització" + +#: FConnect.class:112 +msgid "User:" +msgstr "Usuari:" + +#: FTables.class:1367 +msgid "Views" +msgstr "Vistes" + +#: FNewField.class:120 +msgid "Yes" +msgstr "Sí" + +#: FTables.class:931 +msgid "&Yes" +msgstr "&Sí" + diff --git a/app/examples/Database/MySQLExample/.lang/cs.po b/app/examples/Database/MySQLExample/.lang/cs.po new file mode 100644 index 00000000..ac4dc8c6 --- /dev/null +++ b/app/examples/Database/MySQLExample/.lang/cs.po @@ -0,0 +1,536 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 FConnect.form:28 +msgid "MySQL Example" +msgstr "Příklad MySQL" + +#: .project:2 +msgid "A simple GB.MYSQL Example" +msgstr "Jednoduchý příklad GB.MYSQL" + +#: FConnect.form:20 +msgid "MySQL GUI" +msgstr "-" + +#: FConnect.form:35 +msgid "Connect to a MySQL Server" +msgstr "Připoejní k MySQL Serveru" + +#: FConnect.form:39 +msgid "Server:" +msgstr "Server:" + +#: FConnect.form:50 +msgid "Port:" +msgstr "Port:" + +#: FConnect.form:61 +msgid "User:" +msgstr "Uživate:" + +#: FConnect.form:72 +msgid "Password:" +msgstr "Heslo:" + +#: FConnect.form:84 +msgid "&Connect" +msgstr "&Připojení" + +#: FConnect.form:91 +msgid "&Clear" +msgstr "&Vyčistit" + +#: FConnect.form:97 FNewDatabase.form:70 FNewEvent.form:65 FNewField.form:105 +#: FNewIndex.form:80 FNewRoutine.form:82 FNewTable.form:63 FNewTrigger.form:80 +#: FNewView.form:52 +msgid "&Cancel" +msgstr "&Zrušit" + +#: FMessage.form:8 +msgid "Message" +msgstr "Zpráva" + +#: FNewDatabase.form:16 +msgid "Create Database" +msgstr "Vytvořit databázi" + +#: FNewDatabase.form:32 FNewEvent.form:32 FNewField.form:37 FNewIndex.form:45 +#: FNewRoutine.form:35 FNewTable.form:32 FNewTrigger.form:34 FNewView.form:30 +msgid "Name:" +msgstr "Jméno:" + +#: FNewDatabase.form:42 +msgid "Collation:" +msgstr "Porovnání:" + +#: FNewDatabase.form:53 FNewTable.form:53 +msgid "Charset:" +msgstr "Charset:" + +#: FNewDatabase.form:63 +msgid "&Create" +msgstr "&Vytvořit" + +#: FNewEvent.class:19 +msgid "Edit Event" +msgstr "Upravit událost" + +#: FNewEvent.form:16 +msgid "Create Event" +msgstr "Vytvořit událost" + +#: FNewEvent.form:42 +msgid "Schedule:" +msgstr "Plán:" + +#: FNewEvent.form:47 FNewRoutine.form:50 +msgid "Comma separated values: Hola1 INT,Hola2 CHAR(5)" +msgstr "Hodnoty oddělené čárkami: Hola1 INT,Hola2 CHAR(5)" + +#: FNewEvent.form:52 FNewRoutine.form:69 FNewTrigger.form:67 FNewView.form:39 +msgid "Show a clue" +msgstr "Ukaž vodítko" + +#: FNewEvent.form:58 FNewField.form:98 FNewIndex.form:73 FNewRoutine.form:75 +#: FNewTable.form:70 FNewTrigger.form:73 FNewView.form:45 +msgid "&Ok" +msgstr "-" + +#: FNewField.class:22 +msgid "Edit Field" +msgstr "Upravit pole" + +#: FNewField.form:22 +msgid "Add Field" +msgstr "Přidej pole" + +#: FNewField.form:47 +msgid "Data Type:" +msgstr "Typ dat:" + +#: FNewField.form:57 +msgid "Accepts NULLs:" +msgstr "Akceptuj NULL:" + +#: FNewField.form:63 +msgid "No" +msgstr "Ne" + +#: FNewField.form:63 +msgid "Yes" +msgstr "Ano" + +#: FNewField.form:69 +msgid "Default:" +msgstr "Výchozí:" + +#: FNewField.form:79 +msgid "Extra:" +msgstr "-" + +#: FNewField.form:89 +msgid "Comment:" +msgstr "Poznámka:" + +#: FNewIndex.class:24 +msgid "Edit Index" +msgstr "Upravit index" + +#: FNewIndex.form:18 +msgid "Create Index" +msgstr "Vytvořit index" + +#: FNewIndex.form:23 +msgid "Delete" +msgstr "Smazat" + +#: FNewIndex.form:55 +msgid "Fields:" +msgstr "Pole:" + +#: FNewIndex.form:68 +msgid "Primary Key" +msgstr "Primární klíč" + +#: FNewRoutine.class:19 +msgid "Edit Routine" +msgstr "Upravit rutinu" + +#: FNewRoutine.form:19 +msgid "Create Routine" +msgstr "Vytvořit rutinu" + +#: FNewRoutine.form:45 +msgid "Parameters:" +msgstr "Parametry:" + +#: FNewRoutine.form:56 +msgid "Returns:" +msgstr "Návrat:" + +#: FNewTable.class:21 +msgid "Edit Table" +msgstr "Upravit tabulku" + +#: FNewTable.form:16 +msgid "Create Table" +msgstr "Vytvořit tabulku" + +#: FNewTable.form:42 +msgid "Engine:" +msgstr "Motor:" + +#: FNewTrigger.class:28 +msgid "Edit Trigger" +msgstr "Upravit spouštěč" + +#: FNewTrigger.form:18 +msgid "Create Trigger" +msgstr "Vytvořit spouštěč" + +#: FNewTrigger.form:44 +msgid "Time:" +msgstr "Čas:" + +#: FNewTrigger.form:56 +msgid "Event:" +msgstr "Událost:" + +#: FNewView.class:18 +msgid "Edit View" +msgstr "Upravit pohled" + +#: FNewView.form:14 +msgid "Create View" +msgstr "Vytvořit čas" + +#: FTables.class:9 +msgid "Name" +msgstr "Jméno" + +#: FTables.class:10 +msgid "Rows" +msgstr "Řádky" + +#: FTables.class:11 +msgid "Engine" +msgstr "Motor:" + +#: FTables.class:12 +msgid "Charset" +msgstr "Charset" + +#: FTables.class:13 +msgid "Collation" +msgstr "Porovnání" + +#: FTables.class:14 +msgid "Size" +msgstr "Velikost" + +#: FTables.class:15 +msgid "Update Time" +msgstr "Aktualizace času" + +#: FTables.class:20 +msgid "Updatable" +msgstr "Aktualizovatelné" + +#: FTables.class:21 +msgid "Definer" +msgstr "Definovat" + +#: FTables.class:22 +msgid "Security" +msgstr "Bezpečnost" + +#: FTables.class:23 +msgid "Check" +msgstr "Kontrola" + +#: FTables.class:30 +msgid "Column" +msgstr "Sloupec" + +#: FTables.class:32 +msgid "Type" +msgstr "Typ" + +#: FTables.class:38 +msgid "Returns" +msgstr "Návrat" + +#: FTables.class:39 +msgid "Creation Time" +msgstr "Čas vytvoření" + +#: FTables.class:43 +msgid "Comment" +msgstr "Poznámka" + +#: FTables.class:49 +msgid "Default" +msgstr "Výchozí" + +#: FTables.class:50 +msgid "Nullable" +msgstr "Nulovatelné" + +#: FTables.class:51 +msgid "DataType" +msgstr "Typ dat" + +#: FTables.class:52 +msgid "Key" +msgstr "Klíč" + +#: FTables.class:53 +msgid "Extra" +msgstr "-" + +#: FTables.class:61 +msgid "Event" +msgstr "Událost" + +#: FTables.class:62 +msgid "Table" +msgstr "Tabulka" + +#: FTables.class:63 +msgid "Timing" +msgstr "Časování" + +#: FTables.class:70 +msgid "Time Zone" +msgstr "Časová zóna" + +#: FTables.class:72 +msgid "Execute At" +msgstr "Při spuštění" + +#: FTables.class:73 +msgid "Interval Value" +msgstr "Interval hodnoty" + +#: FTables.class:74 +msgid "Interval Field" +msgstr "Interval pole" + +#: FTables.class:75 +msgid "SQL Mode" +msgstr "SQL mod" + +#: FTables.class:76 +msgid "Starts" +msgstr "Začínáme" + +#: FTables.class:77 +msgid "Ends" +msgstr "Končí" + +#: FTables.class:78 +msgid "On Completion" +msgstr "Na dokončení" + +#: FTables.class:79 +msgid "Created" +msgstr "Vytvořeno" + +#: FTables.class:80 +msgid "Last Altered" +msgstr "Poslední výstraha" + +#: FTables.class:81 +msgid "Last Executed" +msgstr "Poslední spuštění" + +#: FTables.class:82 +msgid "Originator" +msgstr "Průvodce" + +#: FTables.class:85 +msgid "Database Collation" +msgstr "Porovnání databází" + +#: FTables.class:112 +msgid "Fields" +msgstr "Pole" + +#: FTables.class:330 +msgid "Not available" +msgstr "Nedostupné" + +#: FTables.class:363 +msgid "Indexes on:" +msgstr "Indexy na:" + +#: FTables.class:880 +msgid "New View" +msgstr "Nový pohled" + +#: FTables.class:881 +msgid "Delete View" +msgstr "Smazat pohled" + +#: FTables.class:883 +msgid "New Index" +msgstr "Nový index" + +#: FTables.class:884 +msgid "Delete Index" +msgstr "Smazat index" + +#: FTables.class:886 +msgid "New Field" +msgstr "Nové pole" + +#: FTables.class:887 +msgid "Delete Field" +msgstr "Smazat pole" + +#: FTables.class:889 +msgid "New Routine" +msgstr "Nový rutina" + +#: FTables.class:890 +msgid "Delete Routine" +msgstr "Smazat rutinu" + +#: FTables.class:892 +msgid "New Trigger" +msgstr "Nový spouštěč" + +#: FTables.class:893 +msgid "Delete Trigger" +msgstr "Smazat spouštěč" + +#: FTables.class:895 +msgid "New Event" +msgstr "Nová událost" + +#: FTables.class:896 +msgid "Delete Event" +msgstr "Smazat událost" + +#: FTables.class:927 +msgid "&No" +msgstr "&Ne" + +#: FTables.class:927 +msgid "&Yes" +msgstr "&Ano" + +#: FTables.class:927 +msgid "Do you realy want to delete the database: &1?" +msgstr "Opravdu chcete smazat databázi: &1?" + +#: FTables.class:1019 +msgid "Do you realy want to delete the table: &1?" +msgstr "Opravdu chcete smazat tabulku: &1?" + +#: FTables.class:1021 +msgid "Do you realy want to delete the view: &1?" +msgstr "Opravdu chcete smazat pohled: &1?" + +#: FTables.class:1023 +msgid "Do you realy want to delete the index: &1?" +msgstr "Opravdu chcete smazat index: &1?" + +#: FTables.class:1025 +msgid "Do you realy want to delete the field: &1?" +msgstr "Opravdu chcete smazat pole: &1?" + +#: FTables.class:1027 +msgid "Do you realy want to delete the routine: &1?" +msgstr "Opravdu chcete smazat rutinu: &1?" + +#: FTables.class:1029 +msgid "Do you realy want to delete the trigger: &1?" +msgstr "Opravdu chcete smazat spouštěč: &1?" + +#: FTables.class:1031 +msgid "Do you realy want to delete the event: &1?" +msgstr "Opravdu chcete smazat událost: &1?" + +#: FTables.class:1034 +msgid "Item deleted." +msgstr "Položka smazána." + +#: FTables.form:35 +msgid "Tables" +msgstr "Tabulky" + +#: FTables.form:40 +msgid "Item" +msgstr "Položka" + +#: FTables.form:45 +msgid "New Item" +msgstr "Nová položka" + +#: FTables.form:52 +msgid "Edit Item" +msgstr "Upravit položku" + +#: FTables.form:59 +msgid "Delete Item" +msgstr "Smazat polozku" + +#: FTables.form:66 +msgid "Refresh" +msgstr "Obnovit" + +#: FTables.form:84 +msgid "Lock" +msgstr "Zámek" + +#: FTables.form:96 +msgid "New Table" +msgstr "Nová tabulka" + +#: FTables.form:103 +msgid "Delete Table" +msgstr "Smazat tabulku" + +#: FTables.form:121 +msgid "New Database" +msgstr "Nová databáze" + +#: FTables.form:128 +msgid "Delete Database" +msgstr "Smazat databázi" + +#: FTables.form:159 +msgid "Views" +msgstr "Pohled" + +#: FTables.form:169 +msgid "Indexes" +msgstr "Indexy" + +#: FTables.form:179 +msgid "Fields on:" +msgstr "Pole na:" + +#: FTables.form:188 +msgid "Routines" +msgstr "Rutiny" + +#: FTables.form:198 +msgid "Triggers" +msgstr "Spouštěče" + +#: FTables.form:208 +msgid "Events" +msgstr "Události" diff --git a/app/examples/Database/MySQLExample/.lang/de.po b/app/examples/Database/MySQLExample/.lang/de.po new file mode 100644 index 00000000..b49f2663 --- /dev/null +++ b/app/examples/Database/MySQLExample/.lang/de.po @@ -0,0 +1,536 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 FConnect.form:28 +msgid "MySQL Example" +msgstr "MySQL-Beispiel" + +#: .project:2 +msgid "A simple GB.MYSQL Example" +msgstr "Ein einfaches gb.mysql-Beispiel" + +#: FConnect.form:20 +msgid "MySQL GUI" +msgstr "-" + +#: FConnect.form:35 +msgid "Connect to a MySQL Server" +msgstr "Zu einem SQL-Server verbinden" + +#: FConnect.form:39 +msgid "Server:" +msgstr "-" + +#: FConnect.form:50 +msgid "Port:" +msgstr "-" + +#: FConnect.form:61 +msgid "User:" +msgstr "Benutzer" + +#: FConnect.form:72 +msgid "Password:" +msgstr "Passwort:" + +#: FConnect.form:84 +msgid "&Connect" +msgstr "&Verbinden" + +#: FConnect.form:91 +msgid "&Clear" +msgstr "&Löschen" + +#: FConnect.form:97 FNewDatabase.form:70 FNewEvent.form:65 FNewField.form:105 +#: FNewIndex.form:80 FNewRoutine.form:82 FNewTable.form:63 FNewTrigger.form:80 +#: FNewView.form:52 +msgid "&Cancel" +msgstr "&Abbrechen" + +#: FMessage.form:8 +msgid "Message" +msgstr "Nachricht" + +#: FNewDatabase.form:16 +msgid "Create Database" +msgstr "Datenbank erstellen" + +#: FNewDatabase.form:32 FNewEvent.form:32 FNewField.form:37 FNewIndex.form:45 +#: FNewRoutine.form:35 FNewTable.form:32 FNewTrigger.form:34 FNewView.form:30 +msgid "Name:" +msgstr "-" + +#: FNewDatabase.form:42 +msgid "Collation:" +msgstr "Sortierfolge:" + +#: FNewDatabase.form:53 FNewTable.form:53 +msgid "Charset:" +msgstr "Zeichensatz:" + +#: FNewDatabase.form:63 +msgid "&Create" +msgstr "&Erstellen" + +#: FNewEvent.class:19 +msgid "Edit Event" +msgstr "Ereignis bearbeiten" + +#: FNewEvent.form:16 +msgid "Create Event" +msgstr "Ereignis erstellen" + +#: FNewEvent.form:42 +msgid "Schedule:" +msgstr "Zeitplan:" + +#: FNewEvent.form:47 FNewRoutine.form:50 +msgid "Comma separated values: Hola1 INT,Hola2 CHAR(5)" +msgstr "-" + +#: FNewEvent.form:52 FNewRoutine.form:69 FNewTrigger.form:67 FNewView.form:39 +msgid "Show a clue" +msgstr "Hinweis anzeigen" + +#: FNewEvent.form:58 FNewField.form:98 FNewIndex.form:73 FNewRoutine.form:75 +#: FNewTable.form:70 FNewTrigger.form:73 FNewView.form:45 +msgid "&Ok" +msgstr "-" + +#: FNewField.class:22 +msgid "Edit Field" +msgstr "Feld bearbeiten" + +#: FNewField.form:22 +msgid "Add Field" +msgstr "Feld hinzufügen" + +#: FNewField.form:47 +msgid "Data Type:" +msgstr "Datentyp:" + +#: FNewField.form:57 +msgid "Accepts NULLs:" +msgstr "Leere Eingabe möglich:" + +#: FNewField.form:63 +msgid "No" +msgstr "Nein" + +#: FNewField.form:63 +msgid "Yes" +msgstr "Ja" + +#: FNewField.form:69 +msgid "Default:" +msgstr "Standardwert:" + +#: FNewField.form:79 +msgid "Extra:" +msgstr "-" + +#: FNewField.form:89 +msgid "Comment:" +msgstr "Kommentar:" + +#: FNewIndex.class:24 +msgid "Edit Index" +msgstr "Index bearbeiten" + +#: FNewIndex.form:18 +msgid "Create Index" +msgstr "Index erstellen" + +#: FNewIndex.form:23 +msgid "Delete" +msgstr "Löschen" + +#: FNewIndex.form:55 +msgid "Fields:" +msgstr "Felder:" + +#: FNewIndex.form:68 +msgid "Primary Key" +msgstr "Primärschlüssel" + +#: FNewRoutine.class:19 +msgid "Edit Routine" +msgstr "Routine bearbeiten" + +#: FNewRoutine.form:19 +msgid "Create Routine" +msgstr "Routine erstellen" + +#: FNewRoutine.form:45 +msgid "Parameters:" +msgstr "Parameter:" + +#: FNewRoutine.form:56 +msgid "Returns:" +msgstr "Rückgabe:" + +#: FNewTable.class:21 +msgid "Edit Table" +msgstr "Tabelle bearbeiten" + +#: FNewTable.form:16 +msgid "Create Table" +msgstr "Tabelle erstellen" + +#: FNewTable.form:42 +msgid "Engine:" +msgstr "-" + +#: FNewTrigger.class:28 +msgid "Edit Trigger" +msgstr "Trigger bearbeiten" + +#: FNewTrigger.form:18 +msgid "Create Trigger" +msgstr "Trigger erstellen" + +#: FNewTrigger.form:44 +msgid "Time:" +msgstr "Zeit:" + +#: FNewTrigger.form:56 +msgid "Event:" +msgstr "Ereignis:" + +#: FNewView.class:18 +msgid "Edit View" +msgstr "Ansicht bearbeiten" + +#: FNewView.form:14 +msgid "Create View" +msgstr "Ansicht erstellen" + +#: FTables.class:9 +msgid "Name" +msgstr "-" + +#: FTables.class:10 +msgid "Rows" +msgstr "Zeilen" + +#: FTables.class:11 +msgid "Engine" +msgstr "-" + +#: FTables.class:12 +msgid "Charset" +msgstr "Zeichensatz" + +#: FTables.class:13 +msgid "Collation" +msgstr "Sortierfolge" + +#: FTables.class:14 +msgid "Size" +msgstr "Größe" + +#: FTables.class:15 +msgid "Update Time" +msgstr "Update-Zeit" + +#: FTables.class:20 +msgid "Updatable" +msgstr "Aktualisierbar" + +#: FTables.class:21 +msgid "Definer" +msgstr "Bestimmer" + +#: FTables.class:22 +msgid "Security" +msgstr "Sicherheit" + +#: FTables.class:23 +msgid "Check" +msgstr "Überprüfen" + +#: FTables.class:30 +msgid "Column" +msgstr "Spalte" + +#: FTables.class:32 +msgid "Type" +msgstr "Typ" + +#: FTables.class:38 +msgid "Returns" +msgstr "Rückgabe" + +#: FTables.class:39 +msgid "Creation Time" +msgstr "Erstellungszeit" + +#: FTables.class:43 +msgid "Comment" +msgstr "Kommentar" + +#: FTables.class:49 +msgid "Default" +msgstr "Standardwert" + +#: FTables.class:50 +msgid "Nullable" +msgstr "Nulleingabe möglich" + +#: FTables.class:51 +msgid "DataType" +msgstr "Datentyp" + +#: FTables.class:52 +msgid "Key" +msgstr "Schlüssel" + +#: FTables.class:53 +msgid "Extra" +msgstr "-" + +#: FTables.class:61 +msgid "Event" +msgstr "Ereignis" + +#: FTables.class:62 +msgid "Table" +msgstr "Tabelle" + +#: FTables.class:63 +msgid "Timing" +msgstr "Zeitplanung" + +#: FTables.class:70 +msgid "Time Zone" +msgstr "Zeitzone" + +#: FTables.class:72 +msgid "Execute At" +msgstr "Ausführen ab" + +#: FTables.class:73 +msgid "Interval Value" +msgstr "Intervall" + +#: FTables.class:74 +msgid "Interval Field" +msgstr "Autoeingabefeld" + +#: FTables.class:75 +msgid "SQL Mode" +msgstr "SQL-Modus" + +#: FTables.class:76 +msgid "Starts" +msgstr "Beginnt" + +#: FTables.class:77 +msgid "Ends" +msgstr "Endet" + +#: FTables.class:78 +msgid "On Completion" +msgstr "Bei Vervollständigung" + +#: FTables.class:79 +msgid "Created" +msgstr "Erstellt" + +#: FTables.class:80 +msgid "Last Altered" +msgstr "Zuletzt geändert" + +#: FTables.class:81 +msgid "Last Executed" +msgstr "Zuletzt ausgeführt" + +#: FTables.class:82 +msgid "Originator" +msgstr "Bearbeiter" + +#: FTables.class:85 +msgid "Database Collation" +msgstr "Datenbank-Sortierfolge" + +#: FTables.class:116 +msgid "Fields" +msgstr "Felder" + +#: FTables.class:334 +msgid "Not available" +msgstr "Nicht verfügbar" + +#: FTables.class:367 +msgid "Indexes on:" +msgstr "Indexes in:" + +#: FTables.class:884 +msgid "New View" +msgstr "Neue Ansicht" + +#: FTables.class:885 +msgid "Delete View" +msgstr "Ansicht löschen" + +#: FTables.class:887 +msgid "New Index" +msgstr "Neuer Index" + +#: FTables.class:888 +msgid "Delete Index" +msgstr "Index löschen" + +#: FTables.class:890 +msgid "New Field" +msgstr "Neues Feld" + +#: FTables.class:891 +msgid "Delete Field" +msgstr "Feld löschen" + +#: FTables.class:893 +msgid "New Routine" +msgstr "Neue Routine" + +#: FTables.class:894 +msgid "Delete Routine" +msgstr "Routine löschen" + +#: FTables.class:896 +msgid "New Trigger" +msgstr "Neuer Trigger" + +#: FTables.class:897 +msgid "Delete Trigger" +msgstr "Trigger löschen" + +#: FTables.class:899 +msgid "New Event" +msgstr "Neues Ereignis" + +#: FTables.class:900 +msgid "Delete Event" +msgstr "Ereignis löschen" + +#: FTables.class:931 +msgid "&No" +msgstr "&Nein" + +#: FTables.class:931 +msgid "&Yes" +msgstr "&Ja" + +#: FTables.class:931 +msgid "Do you realy want to delete the database: &1?" +msgstr "Wollen Sie wirklich die Datenbank &1 löschen?" + +#: FTables.class:1023 +msgid "Do you realy want to delete the table: &1?" +msgstr "Wollen Sie wirklich die Tabelle &1 löschen?" + +#: FTables.class:1025 +msgid "Do you realy want to delete the view: &1?" +msgstr "Wollen Sie wirklich die Ansicht &1 löschen?" + +#: FTables.class:1027 +msgid "Do you realy want to delete the index: &1?" +msgstr "Wollen Sie wirklich den Index &1 löschen?" + +#: FTables.class:1029 +msgid "Do you realy want to delete the field: &1?" +msgstr "Wollen Sie wirklich das Feld &1 löschen?" + +#: FTables.class:1031 +msgid "Do you realy want to delete the routine: &1?" +msgstr "Wollen Sie wirklich die Routine &1 löschen?" + +#: FTables.class:1033 +msgid "Do you realy want to delete the trigger: &1?" +msgstr "Wollen Sie wirklich den Trigger &1 löschen?" + +#: FTables.class:1035 +msgid "Do you realy want to delete the event: &1?" +msgstr "Wollen Sie wirklich das Ereignis &1 löschen?" + +#: FTables.class:1038 +msgid "Item deleted." +msgstr "Datensatz gelöscht" + +#: FTables.form:35 +msgid "Tables" +msgstr "Tabellen" + +#: FTables.form:40 +msgid "Item" +msgstr "Datensatz" + +#: FTables.form:45 +msgid "New Item" +msgstr "Neuer Datensatz" + +#: FTables.form:52 +msgid "Edit Item" +msgstr "Datensatz bearbeiten" + +#: FTables.form:59 +msgid "Delete Item" +msgstr "Datensatz löschen" + +#: FTables.form:66 +msgid "Refresh" +msgstr "Erneuern" + +#: FTables.form:84 +msgid "Lock" +msgstr "Sperren" + +#: FTables.form:96 +msgid "New Table" +msgstr "Neue Tabelle" + +#: FTables.form:103 +msgid "Delete Table" +msgstr "Tabelle löschen" + +#: FTables.form:121 +msgid "New Database" +msgstr "Neue Datenbank" + +#: FTables.form:128 +msgid "Delete Database" +msgstr "Datenbank löschen" + +#: FTables.form:159 +msgid "Views" +msgstr "Ansichten" + +#: FTables.form:169 +msgid "Indexes" +msgstr "-" + +#: FTables.form:179 +msgid "Fields on:" +msgstr "Felder in:" + +#: FTables.form:188 +msgid "Routines" +msgstr "Routinen" + +#: FTables.form:198 +msgid "Triggers" +msgstr "-" + +#: FTables.form:208 +msgid "Events" +msgstr "Ereignisse" diff --git a/app/examples/Database/MySQLExample/.lang/es.po b/app/examples/Database/MySQLExample/.lang/es.po new file mode 100644 index 00000000..02e62697 --- /dev/null +++ b/app/examples/Database/MySQLExample/.lang/es.po @@ -0,0 +1,533 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FNewView.form:52 +msgid "&Cancel" +msgstr "&Cancelar" + +#: FConnect.form:91 +msgid "&Clear" +msgstr "&Limpiar" + +#: FConnect.form:84 +msgid "&Connect" +msgstr "&Conectar" + +#: FNewDatabase.form:63 +msgid "&Create" +msgstr "&Crear" + +#: FTables.class:931 +msgid "&No" +msgstr "-" + +#: FNewTable.form:70 FNewTrigger.form:73 FNewView.form:45 +msgid "&Ok" +msgstr "-" + +#: FTables.class:931 +msgid "&Yes" +msgstr "&Sí" + +#: .project:2 +msgid "A simple GB.MYSQL Example" +msgstr "Un simple Ejemplo de GB.MYSQL" + +#: FNewField.form:57 +msgid "Accepts NULLs:" +msgstr "Acepta NULOs:" + +#: FNewField.form:22 +msgid "Add Field" +msgstr "Agregar Campo" + +#: FTables.class:12 +msgid "Charset" +msgstr "Conjunto de caracteres" + +#: FNewDatabase.form:53 FNewTable.form:53 +msgid "Charset:" +msgstr "-" + +#: FTables.class:23 +msgid "Check" +msgstr "Chequeo" + +#: FTables.class:13 +msgid "Collation" +msgstr "-" + +#: FNewDatabase.form:42 +msgid "Collation:" +msgstr "-" + +#: FTables.class:30 +msgid "Column" +msgstr "Columna" + +#: FNewEvent.form:47 FNewRoutine.form:50 +msgid "Comma separated values: Hola1 INT,Hola2 CHAR(5)" +msgstr "Valores separados por coma: Hola1 INT,Hola2 CHAR(5)" + +#: FTables.class:43 +msgid "Comment" +msgstr "Comentario" + +#: FNewField.form:89 +msgid "Comment:" +msgstr "Comentario:" + +#: FConnect.form:35 +msgid "Connect to a MySQL Server" +msgstr "Conectar a un Servidor MySQL" + +#: FNewDatabase.form:16 +msgid "Create Database" +msgstr "Crear Base de Datos" + +#: FNewEvent.form:16 +msgid "Create Event" +msgstr "Crear Evento" + +#: FNewIndex.form:18 +msgid "Create Index" +msgstr "Crear Índice" + +#: FNewRoutine.form:19 +msgid "Create Routine" +msgstr "Crear Rutina" + +#: FNewTable.form:16 +msgid "Create Table" +msgstr "Crear Tabla" + +#: FNewTrigger.form:18 +msgid "Create Trigger" +msgstr "Crear Trigger" + +#: FNewView.form:14 +msgid "Create View" +msgstr "Crear Vista" + +#: FTables.class:79 +msgid "Created" +msgstr "Creado" + +#: FTables.class:39 +msgid "Creation Time" +msgstr "Hora de creación" + +#: FNewField.form:47 +msgid "Data Type:" +msgstr "Tipo de Datos:" + +#: FTables.class:85 +msgid "Database Collation" +msgstr "Colación de la Base de Datos" + +#: FTables.class:51 +msgid "DataType" +msgstr "Tipo de Datos" + +#: FTables.class:49 +msgid "Default" +msgstr "Predeterminado" + +#: FNewField.form:69 +msgid "Default:" +msgstr "Predeterminado:" + +#: FTables.class:21 +msgid "Definer" +msgstr "Definidor" + +#: FNewIndex.form:23 +msgid "Delete" +msgstr "Borrar" + +#: FTables.form:128 +msgid "Delete Database" +msgstr "Borrar Base de Datos" + +#: FTables.class:900 +msgid "Delete Event" +msgstr "Borrar Evento" + +#: FTables.class:891 +msgid "Delete Field" +msgstr "Borrar Campo" + +#: FTables.class:888 +msgid "Delete Index" +msgstr "Borrar Índice" + +#: FTables.form:59 +msgid "Delete Item" +msgstr "Borrar Item" + +#: FTables.class:894 +msgid "Delete Routine" +msgstr "Borrar Rutina" + +#: FTables.form:103 +msgid "Delete Table" +msgstr "Borrar Tabla" + +#: FTables.class:897 +msgid "Delete Trigger" +msgstr "Borrar Trigger" + +#: FTables.class:885 +msgid "Delete View" +msgstr "Borrar Vista" + +#: FTables.class:931 +msgid "Do you realy want to delete the database: &1?" +msgstr "¿Realmente desea borrar la base de datos: &1?" + +#: FTables.class:1035 +msgid "Do you realy want to delete the event: &1?" +msgstr "¿Realmente desea borrar el evento: &1?" + +#: FTables.class:1029 +msgid "Do you realy want to delete the field: &1?" +msgstr "¿Realmente desea borrar el campo: &1?" + +#: FTables.class:1027 +msgid "Do you realy want to delete the index: &1?" +msgstr "¿Realmente desea borrar el índice: &1?" + +#: FTables.class:1031 +msgid "Do you realy want to delete the routine: &1?" +msgstr "¿Realmente desea borrar la rutina: &1?" + +#: FTables.class:1023 +msgid "Do you realy want to delete the table: &1?" +msgstr "¿Realmente desea borrar la tabla: &1?" + +#: FTables.class:1033 +msgid "Do you realy want to delete the trigger: &1?" +msgstr "¿Realmente desea borrar el trigger: &1?" + +#: FTables.class:1025 +msgid "Do you realy want to delete the view: &1?" +msgstr "¿Realmente desea borrar la vista: &1?" + +#: FNewEvent.class:19 +msgid "Edit Event" +msgstr "Editar Evento" + +#: FNewField.class:22 +msgid "Edit Field" +msgstr "Editar Campo" + +#: FNewIndex.class:24 +msgid "Edit Index" +msgstr "Editar Índice" + +#: FTables.form:52 +msgid "Edit Item" +msgstr "Editar item" + +#: FNewRoutine.class:19 +msgid "Edit Routine" +msgstr "Editar rutina" + +#: FNewTable.class:21 +msgid "Edit Table" +msgstr "Editar Tabla" + +#: FNewTrigger.class:28 +msgid "Edit Trigger" +msgstr "Editar Trigger" + +#: FNewView.class:18 +msgid "Edit View" +msgstr "Editar Vista" + +#: FTables.class:77 +msgid "Ends" +msgstr "Finaliza" + +#: FTables.class:11 +msgid "Engine" +msgstr "Máquina" + +#: FNewTable.form:42 +msgid "Engine:" +msgstr "Máquina:" + +#: FTables.class:61 +msgid "Event" +msgstr "Evento" + +#: FNewTrigger.form:56 +msgid "Event:" +msgstr "Evento:" + +#: FTables.form:208 +msgid "Events" +msgstr "Eventos" + +#: FTables.class:72 +msgid "Execute At" +msgstr "Ejecutar En" + +#: FTables.class:53 +msgid "Extra" +msgstr "-" + +#: FNewField.form:79 +msgid "Extra:" +msgstr "-" + +#: FTables.class:116 +msgid "Fields" +msgstr "Campos" + +#: FTables.form:179 +msgid "Fields on:" +msgstr "Campos en:" + +#: FNewIndex.form:55 +msgid "Fields:" +msgstr "Campos:" + +#: FTables.form:169 +msgid "Indexes" +msgstr "Índices" + +#: FTables.class:367 +msgid "Indexes on:" +msgstr "Índices en:" + +#: FTables.class:74 +msgid "Interval Field" +msgstr "Campo del Intérvalo" + +#: FTables.class:73 +msgid "Interval Value" +msgstr "Valor del Intérvalo" + +#: FTables.form:40 +msgid "Item" +msgstr "-" + +#: FTables.class:1038 +msgid "Item deleted." +msgstr "Item borrado." + +#: FTables.class:52 +msgid "Key" +msgstr "Llave" + +#: FTables.class:80 +msgid "Last Altered" +msgstr "Última Alteración" + +#: FTables.class:81 +msgid "Last Executed" +msgstr "Última Ejecución" + +#: FTables.form:84 +msgid "Lock" +msgstr "Bloquear" + +#: FMessage.form:8 +msgid "Message" +msgstr "Mensaje" + +#: .project:1 FConnect.form:28 +msgid "MySQL Example" +msgstr "-" + +#: FConnect.form:20 +msgid "MySQL GUI" +msgstr "-" + +#: FTables.class:9 +msgid "Name" +msgstr "Nombre" + +#: FNewRoutine.form:35 FNewTable.form:32 FNewTrigger.form:34 FNewView.form:30 +msgid "Name:" +msgstr "Nombre:" + +#: FTables.form:121 +msgid "New Database" +msgstr "Nueva Base de Datos" + +#: FTables.class:899 +msgid "New Event" +msgstr "Nuevo Evento" + +#: FTables.class:890 +msgid "New Field" +msgstr "Nuevo Campo" + +#: FTables.class:887 +msgid "New Index" +msgstr "Nuevo Índice" + +#: FTables.form:45 +msgid "New Item" +msgstr "Nuevo Item" + +#: FTables.class:893 +msgid "New Routine" +msgstr "Nueva Rutina" + +#: FTables.form:96 +msgid "New Table" +msgstr "Nueva Tabla" + +#: FTables.class:896 +msgid "New Trigger" +msgstr "Nuevo Trigger" + +#: FTables.class:884 +msgid "New View" +msgstr "Nueva Vista" + +#: FNewField.form:63 +msgid "No" +msgstr "-" + +#: FTables.class:334 +msgid "Not available" +msgstr "No disponible" + +#: FTables.class:50 +msgid "Nullable" +msgstr "Anulable" + +#: FTables.class:78 +msgid "On Completion" +msgstr "En completado" + +#: FTables.class:82 +msgid "Originator" +msgstr "Originador" + +#: FNewRoutine.form:45 +msgid "Parameters:" +msgstr "Parámetros:" + +#: FConnect.form:72 +msgid "Password:" +msgstr "Contraseña:" + +#: FConnect.form:50 +msgid "Port:" +msgstr "Puerto:" + +#: FNewIndex.form:68 +msgid "Primary Key" +msgstr "Llave primaria" + +#: FTables.form:66 +msgid "Refresh" +msgstr "Refrescar" + +#: FTables.class:38 +msgid "Returns" +msgstr "Retorna" + +#: FNewRoutine.form:56 +msgid "Returns:" +msgstr "Retorna:" + +#: FTables.form:188 +msgid "Routines" +msgstr "Rutinas" + +#: FTables.class:10 +msgid "Rows" +msgstr "Filas" + +#: FNewEvent.form:42 +msgid "Schedule:" +msgstr "Programación:" + +#: FTables.class:22 +msgid "Security" +msgstr "Seguridad" + +#: FConnect.form:39 +msgid "Server:" +msgstr "Servidor:" + +#: FNewEvent.form:52 FNewRoutine.form:69 FNewTrigger.form:67 FNewView.form:39 +msgid "Show a clue" +msgstr "Mostrar una pista" + +#: FTables.class:14 +msgid "Size" +msgstr "Tamaño" + +#: FTables.class:75 +msgid "SQL Mode" +msgstr "Modo SQL" + +#: FTables.class:76 +msgid "Starts" +msgstr "Inicia" + +#: FTables.class:62 +msgid "Table" +msgstr "Tabla" + +#: FTables.form:35 +msgid "Tables" +msgstr "Tablas" + +#: FTables.class:70 +msgid "Time Zone" +msgstr "Zona de Tiempo" + +#: FNewTrigger.form:44 +msgid "Time:" +msgstr "Hora:" + +#: FTables.class:63 +msgid "Timing" +msgstr "-" + +#: FTables.form:198 +msgid "Triggers" +msgstr "-" + +#: FTables.class:32 +msgid "Type" +msgstr "Tipo" + +#: FTables.class:20 +msgid "Updatable" +msgstr "Actualizable" + +#: FTables.class:15 +msgid "Update Time" +msgstr "Hora de Actualización" + +#: FConnect.form:61 +msgid "User:" +msgstr "Usuario:" + +#: FTables.form:159 +msgid "Views" +msgstr "Vistas" + +#: FNewField.form:63 +msgid "Yes" +msgstr "Sí" + diff --git a/app/examples/Database/MySQLExample/.lang/fr.po b/app/examples/Database/MySQLExample/.lang/fr.po new file mode 100644 index 00000000..436af64d --- /dev/null +++ b/app/examples/Database/MySQLExample/.lang/fr.po @@ -0,0 +1,1546 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FConnect.class:71 +msgid "MySQL GUI" +msgstr "-" + +#: FConnect.class:79 +#, fuzzy +msgid "MySQL Example" +msgstr "Exemple :" + +#: FConnect.class:86 +msgid "Connect to a MySQL Server" +msgstr "Connecter à un serveur Mysql" + +#: FConnect.class:90 +msgid "Server:" +msgstr "Serveur :" + +#: FConnect.class:101 +msgid "Port:" +msgstr "Port :" + +#: FConnect.class:112 +msgid "User:" +msgstr "Utilisateur :" + +#: FConnect.class:123 +msgid "Password:" +msgstr "Mot de passe :" + +#: FConnect.class:135 +msgid "&Connect" +msgstr "&Connecter" + +#: FConnect.class:142 +msgid "&Clear" +msgstr "&Effacer" + +#: FConnect.class:148 FNewDatabase.class:107 FNewEvent.class:120 +#: FNewField.class:162 FNewIndex.class:163 FNewRoutine.class:151 +#: FNewTable.class:122 FNewTrigger.class:146 FNewView.class:101 +msgid "&Cancel" +msgstr "&Annuler" + +#: FMessage.class:33 +msgid "Message" +msgstr "Message" + +#: FNewDatabase.class:53 +msgid "Create Database" +msgstr "Créer une base de données" + +#: FNewDatabase.class:69 FNewEvent.class:87 FNewField.class:94 +#: FNewIndex.class:128 FNewRoutine.class:104 FNewTable.class:91 +#: FNewTrigger.class:100 FNewView.class:79 +msgid "Name:" +msgstr "Name :" + +#: FNewDatabase.class:79 +msgid "Collation:" +msgstr "Action :" + +#: FNewDatabase.class:90 FNewTable.class:112 +msgid "Charset:" +msgstr "Charset :" + +#: FNewDatabase.class:100 +msgid "&Create" +msgstr "& Créer" + +#: FNewEvent.class:19 +#, fuzzy +msgid "Edit Event" +msgstr "Evénement" + +#: FNewEvent.class:71 +msgid "Create Event" +msgstr "Créer un évènement" + +#: FNewEvent.class:97 +msgid "Schedule:" +msgstr "Horaire :" + +#: FNewEvent.class:102 FNewRoutine.class:119 +msgid "Comma separated values: Hola1 INT,Hola2 CHAR(5)" +msgstr "Valeurs séparées par des virgules : Hola1 INT,Hola2 CHAR(5)" + +#: FNewEvent.class:107 FNewRoutine.class:138 FNewTrigger.class:133 +#: FNewView.class:88 +msgid "Show a clue" +msgstr "Affiche un truc" + +#: FNewEvent.class:113 FNewField.class:155 FNewIndex.class:156 +#: FNewRoutine.class:144 FNewTable.class:129 FNewTrigger.class:139 +#: FNewView.class:94 +msgid "&Ok" +msgstr "" + +#: FNewField.class:22 +#, fuzzy +msgid "Edit Field" +msgstr "Ajouter un champ" + +#: FNewField.class:79 +msgid "Add Field" +msgstr "Ajouter un champ" + +#: FNewField.class:104 +msgid "Data Type:" +msgstr "Type de donnée :" + +#: FNewField.class:114 +msgid "Accepts NULLs:" +msgstr "Accepte nul" + +#: FNewField.class:120 +msgid "No" +msgstr "Non" + +#: FNewField.class:120 +msgid "Yes" +msgstr "Oui" + +#: FNewField.class:126 +msgid "Default:" +msgstr "Par défaut :" + +#: FNewField.class:136 +msgid "Extra:" +msgstr "Extra :" + +#: FNewField.class:146 +msgid "Comment:" +msgstr "Commentaire :" + +#: FNewIndex.class:24 +#, fuzzy +msgid "Edit Index" +msgstr "Créer un index" + +#: FNewIndex.class:101 +msgid "Create Index" +msgstr "Créer un index" + +#: FNewIndex.class:106 +msgid "Delete" +msgstr "Effacer" + +#: FNewIndex.class:138 +msgid "Fields:" +msgstr "Champs :" + +#: FNewIndex.class:151 +msgid "Primary Key" +msgstr "Clé primaire" + +#: FNewRoutine.class:19 +#, fuzzy +msgid "Edit Routine" +msgstr "Créer une routine" + +#: FNewRoutine.class:88 +msgid "Create Routine" +msgstr "Créer une routine" + +#: FNewRoutine.class:114 +msgid "Parameters:" +msgstr "Paramètres :" + +#: FNewRoutine.class:125 +msgid "Returns:" +msgstr "Retourné :" + +#: FNewTable.class:21 +#, fuzzy +msgid "Edit Table" +msgstr "Créer une table" + +#: FNewTable.class:75 +msgid "Create Table" +msgstr "Créer une table" + +#: FNewTable.class:101 +msgid "Engine:" +msgstr "Moteur" + +#: FNewTrigger.class:28 +#, fuzzy +msgid "Edit Trigger" +msgstr "Déclencheurs" + +#: FNewTrigger.class:84 +msgid "Create Trigger" +msgstr "Créer un déclencheur" + +#: FNewTrigger.class:110 +msgid "Time:" +msgstr "Heure :" + +#: FNewTrigger.class:122 +msgid "Event:" +msgstr "Evénement :" + +#: FNewView.class:18 +#, fuzzy +msgid "Edit View" +msgstr "Editer" + +#: FNewView.class:63 +msgid "Create View" +msgstr "Créer une vue" + +#: FTables.class:9 +msgid "Name" +msgstr "Nom" + +#: FTables.class:10 +msgid "Rows" +msgstr "Lignes" + +#: FTables.class:11 +msgid "Engine" +msgstr "Moteur" + +#: FTables.class:12 +msgid "Charset" +msgstr "--" + +#: FTables.class:13 +msgid "Collation" +msgstr "Action" + +#: FTables.class:14 +msgid "Size" +msgstr "Taille" + +#: FTables.class:15 +msgid "Update Time" +msgstr "Heure de mise à jour" + +#: FTables.class:20 +msgid "Updatable" +msgstr "Mise à jour table" + +#: FTables.class:21 +msgid "Definer" +msgstr "Définir" + +#: FTables.class:22 +msgid "Security" +msgstr "Sécurité" + +#: FTables.class:23 +msgid "Check" +msgstr "Vérifier" + +#: FTables.class:30 +msgid "Column" +msgstr "Colonne" + +#: FTables.class:32 +msgid "Type" +msgstr "" + +#: FTables.class:38 +msgid "Returns" +msgstr "Retourné" + +#: FTables.class:39 +msgid "Creation Time" +msgstr "Heure de création" + +#: FTables.class:43 +msgid "Comment" +msgstr "Commentaire" + +#: FTables.class:49 +msgid "Default" +msgstr "Par défaut" + +#: FTables.class:50 +msgid "Nullable" +msgstr "Nul" + +#: FTables.class:51 +msgid "DataType" +msgstr "Type de donnée" + +#: FTables.class:52 +msgid "Key" +msgstr "Clé" + +#: FTables.class:53 +msgid "Extra" +msgstr "--" + +#: FTables.class:61 +msgid "Event" +msgstr "Evénement" + +#: FTables.class:62 +msgid "Table" +msgstr "" + +#: FTables.class:63 +msgid "Timing" +msgstr "Minutage" + +#: FTables.class:70 +msgid "Time Zone" +msgstr "Zone horaire" + +#: FTables.class:72 +msgid "Execute At" +msgstr "Exécuter à" + +#: FTables.class:73 +msgid "Interval Value" +msgstr "Valeur d'interval" + +#: FTables.class:74 +msgid "Interval Field" +msgstr "Champ d'interval" + +#: FTables.class:75 +msgid "SQL Mode" +msgstr "Mode SQL" + +#: FTables.class:76 +msgid "Starts" +msgstr "Démarrer" + +#: FTables.class:77 +msgid "Ends" +msgstr "Fins" + +#: FTables.class:78 +msgid "On Completion" +msgstr "Complétion " + +#: FTables.class:79 +msgid "Created" +msgstr "Crée" + +#: FTables.class:80 +msgid "Last Altered" +msgstr "Dernier changement" + +#: FTables.class:81 +msgid "Last Executed" +msgstr "Dernière exécution" + +#: FTables.class:82 +msgid "Originator" +msgstr "Originel" + +#: FTables.class:85 +msgid "Database Collation" +msgstr "Base de donnée active " + +#: FTables.class:115 +msgid "Indexes" +msgstr "Indexs" + +#: FTables.class:116 +msgid "Fields" +msgstr "Champs" + +#: FTables.class:149 +msgid "Fields on:" +msgstr "Champs actuel :" + +#: FTables.class:334 +msgid "Not available" +msgstr "Non disponible" + +#: FTables.class:367 +msgid "Indexes on:" +msgstr "Indexé sur :" + +#: FTables.class:881 +msgid "New Table" +msgstr "Nouvelle table" + +#: FTables.class:882 +msgid "Delete Table" +msgstr "Effacer la table" + +#: FTables.class:884 +msgid "New View" +msgstr "Nouvelle vue" + +#: FTables.class:885 +msgid "Delete View" +msgstr "Effacer la vue" + +#: FTables.class:887 +msgid "New Index" +msgstr "Nouvel index" + +#: FTables.class:888 +msgid "Delete Index" +msgstr "Effacer l'index" + +#: FTables.class:890 +msgid "New Field" +msgstr "Nouveau champ" + +#: FTables.class:891 +msgid "Delete Field" +msgstr "Effacer le champ" + +#: FTables.class:893 +msgid "New Routine" +msgstr "Nouvelle routine" + +#: FTables.class:894 +msgid "Delete Routine" +msgstr "Effacer la routine" + +#: FTables.class:896 +msgid "New Trigger" +msgstr "Nouveau déclencheur" + +#: FTables.class:897 +msgid "Delete Trigger" +msgstr "Effacer le déclencheur" + +#: FTables.class:899 +msgid "New Event" +msgstr "Nouvel événement" + +#: FTables.class:900 +msgid "Delete Event" +msgstr "Evénement effacé" + +#: FTables.class:931 +msgid "&No" +msgstr "&Non" + +#: FTables.class:931 +msgid "&Yes" +msgstr "&Oui" + +#: FTables.class:931 +msgid "Do you realy want to delete the database: &1?" +msgstr "Voulez vous vraiment effacer la base de données : &1?" + +#: FTables.class:1023 +msgid "Do you realy want to delete the table: &1?" +msgstr "Voulez vous vraiment effacer cette table : &1?" + +#: FTables.class:1025 +msgid "Do you realy want to delete the view: &1?" +msgstr "Voulez vous vraiment effacer cette vue : &1?" + +#: FTables.class:1027 +msgid "Do you realy want to delete the index: &1?" +msgstr "Voulez vous vraiment effacer cet index : &1?" + +#: FTables.class:1029 +msgid "Do you realy want to delete the field: &1?" +msgstr "Voulez vous vraiment effacer ce champ : &1?" + +#: FTables.class:1031 +msgid "Do you realy want to delete the routine: &1?" +msgstr "Voulez vous vraiment effacer cette routine : &1?" + +#: FTables.class:1033 +msgid "Do you realy want to delete the trigger: &1?" +msgstr "Voulez vous vraiment effacer ce déclencheur : &1?" + +#: FTables.class:1035 +msgid "Do you realy want to delete the event: &1?" +msgstr "Voulez vous vraiment effacer cet événement : &1?" + +#: FTables.class:1038 +msgid "Item deleted." +msgstr "Article effacé" + +#: FTables.class:1243 +msgid "Tables" +msgstr "" + +#: FTables.class:1248 +msgid "Item" +msgstr "Article" + +#: FTables.class:1253 +msgid "New Item" +msgstr "Nouvel article" + +#: FTables.class:1260 +#, fuzzy +msgid "Edit Item" +msgstr "Editer" + +#: FTables.class:1267 +msgid "Delete Item" +msgstr "Effacer l'article" + +#: FTables.class:1274 +msgid "Refresh" +msgstr "Rafraichir" + +#: FTables.class:1292 +msgid "Lock" +msgstr "Bloqué" + +#: FTables.class:1329 +msgid "New Database" +msgstr "Nouvelle base de données" + +#: FTables.class:1336 +msgid "Delete Database" +msgstr "Base de données effacée" + +#: FTables.class:1367 +msgid "Views" +msgstr "Vues" + +#: FTables.class:1396 +msgid "Routines" +msgstr "Routines" + +#: FTables.class:1406 +msgid "Triggers" +msgstr "Déclencheurs" + +#: FTables.class:1416 +msgid "Events" +msgstr "Evénements" + +#~ msgid "&Replace" +#~ msgstr "&Remplace" + +#~ msgid "Are you sure to want to replace all?" +#~ msgstr "Etes vous sûr de vouloir tout remplacer ?" + +#~ msgid "MySQL is great!!!" +#~ msgstr "Mysql est super !!!" + +#~ msgid "Gambas is great!!!" +#~ msgstr "Gambas est super !!!" + +#~ msgid "Wellcome!!! Have a nice day." +#~ msgstr "Bienvenue !!! Bonne continuation." + +#~ msgid "In a world without walls and fences, who needs windows and gates?" +#~ msgstr "Dans un monde sans murs et barrières, qui a besoin de fenetres et de portes ?" + +#~ msgid "In God we trust" +#~ msgstr "Grace à Dieu !" + +#~ msgid "Do you want to save the changes?" +#~ msgstr "Voulez vous sauver les changements ?" + +#~ msgid "Go to line" +#~ msgstr "Aller à la ligne " + +#~ msgid "Search string replaced &1 times." +#~ msgstr "Chaine de recherche remplacée &1 fois" + +#~ msgid "Search string replaced once." +#~ msgstr "Chaine de recherche remplacée une fois." + +#~ msgid "Search string cannot be found." +#~ msgstr "Chaine de recherche non trouvée." + +#~ msgid "Reached the beginning of the document." +#~ msgstr "Le début du document a été atteind" + +#~ msgid "Reached the end of the document." +#~ msgstr "La fin du document a été atteind " + +#~ msgid "Revision:" +#~ msgstr "Révision :" + +#~ msgid "Workig Version:" +#~ msgstr "Version de travail :" + +#~ msgid "Modified" +#~ msgstr "Modifié" + +#~ msgid "Missing or incomplete" +#~ msgstr "Manquant ou incomplet" + +#~ msgid "Not under version control" +#~ msgstr "Pas de CVS" + +#~ msgid "Existed" +#~ msgstr "Sortie" + +#~ msgid "Conflicting changes" +#~ msgstr "Changements pour éviter les conflits" + +#~ msgid "Merged" +#~ msgstr "fusionné" + +#~ msgid "Replaced" +#~ msgstr "Remplacé" + +#~ msgid "Deleted" +#~ msgstr "Effacé" + +#~ msgid "Added" +#~ msgstr "Ajouté" + +#~ msgid "Updated" +#~ msgstr "Mis à jour" + +#~ msgid "Status:" +#~ msgstr "Etats :" + +#~ msgid "Do you really want to revert the changes?" +#~ msgstr "Voulez vous vraiment rétablir les changements ?" + +#~ msgid "File saved." +#~ msgstr "Fichier sauvé." + +#~ msgid "Entire word" +#~ msgstr "Mot entier" + +#~ msgid "Case sensitive" +#~ msgstr "police sensitive" + +#~ msgid "Replace all" +#~ msgstr "Tout remplacer " + +#~ msgid "Replace current" +#~ msgstr "Remplacer l'actuel" + +#~ msgid "Find previous" +#~ msgstr "Recherche le précédent" + +#~ msgid "Find next" +#~ msgstr "Recherche le suivant" + +#~ msgid "Close" +#~ msgstr "Fermer" + +#~ msgid "Update" +#~ msgstr "Mise à jour" + +#~ msgid "Status" +#~ msgstr "Etats" + +#~ msgid "Revert" +#~ msgstr "Retour" + +#~ msgid "Go to symbol" +#~ msgstr "Aller au symbol" + +#~ msgid "Go to line..." +#~ msgstr "Aller à la ligne..." + +#~ msgid "Horizontal" +#~ msgstr "Horizontal" + +#~ msgid "View" +#~ msgstr "Vue" + +#~ msgid "Load" +#~ msgstr "Charger" + +#~ msgid "Save" +#~ msgstr "Sauver" + +#~ msgid "Show/Hide" +#~ msgstr "Afficher/Cacher" + +#~ msgid "Replace" +#~ msgstr "Remplacer" + +#~ msgid "Find" +#~ msgstr "Recherche" + +#~ msgid "Clean" +#~ msgstr "Nettoyer" + +#~ msgid "Show numbers" +#~ msgstr "Affiche les nombres" + +#~ msgid "Completion" +#~ msgstr "Complétion" + +#~ msgid "Uncomment" +#~ msgstr "Décommenter" + +#~ msgid "Load query" +#~ msgstr "Charger la requete" + +#~ msgid "Show/Hide tool bar" +#~ msgstr "Afficher/Cacher la barre d'outils" + +#~ msgid "Find & Replace" +#~ msgstr "Recherche et remplace" + +#~ msgid "Clean editor" +#~ msgstr "Nettoyer l'éditeur" + +#~ msgid "Save query" +#~ msgstr "Sauver une requete" + +#~ msgid "Columns with * are Key fields.
They will be used to perform any operation." +#~ msgstr "Les colonnes avec * sont des champs clés.
Ils seront utilisés comme jokers." + +#~ msgid "User
Schema (database) privileges assigned to the user" +#~ msgstr "Utilisateur
Schéma (base de données) des privilèges assignés à l'utilisateur" + +#~ msgid "Schema Privileges" +#~ msgstr "Droits du schéma" + +#~ msgid "New" +#~ msgstr "Nouveau" + +#~ msgid "&Change" +#~ msgstr "&Changer" + +#~ msgid "Icon:" +#~ msgstr "Icones :" + +#~ msgid "Contact Information:" +#~ msgstr "Information du contact :" + +#~ msgid "E-Mail:" +#~ msgstr "Courriel :" + +#~ msgid "Description:" +#~ msgstr "Description :" + +#~ msgid "Full name:" +#~ msgstr "Nom :" + +#~ msgid "Additional Information" +#~ msgstr "Information additionnelles" + +#~ msgid "Confirm Password:" +#~ msgstr "Confirmer le mot de passe :" + +#~ msgid "New Password:" +#~ msgstr "Nouveau mot de passe :" + +#~ msgid "MySQL User:" +#~ msgstr "Utilisateur Mysql :" + +#~ msgid "Login Information" +#~ msgstr "Information d'entrée" + +#~ msgid "User
Login and additional information on the user" +#~ msgstr "Utilisateur
Login et informations additionnelles de l'utilisateur" + +#~ msgid "User Information" +#~ msgstr "Info utilisateur" + +#~ msgid "Information strored successfully." +#~ msgstr "Information sauvegardée avec succès." + +#~ msgid "Please select a table." +#~ msgstr "SVP sélectionnez une table" + +#~ msgid "Item created." +#~ msgstr "Article créer." + +#~ msgid "Selected Tables:" +#~ msgstr "Tables sélectionnées :" + +#~ msgid "Tables:" +#~ msgstr "Tables :" + +#~ msgid "Do not write the command to the binary log file." +#~ msgstr "Ne pas écrire cette commande dans un fichier binaire" + +#~ msgid "This will repair the selected table(s)." +#~ msgstr "Ceci réparera les tables sélectionnées." + +#~ msgid "This will check whether the selected table(s) are corrupted or have other errors." +#~ msgstr "Ceci vérifiera si les tables sont corrompues ou ont d'autres erreurs." + +#~ msgid "If necessary this will repair the selected table(s), sort index pages and update statistics." +#~ msgstr "Si nécessaire, ceci réparera les tables sélectionnées, trier les index et mettre à jour les statistiques." + +#~ msgid "Repair Tables" +#~ msgstr "Réparer les tables" + +#~ msgid "Check Tables" +#~ msgstr "Vérifier les tables" + +#~ msgid "Optimize Tables" +#~ msgstr "Tables optimisées" + +#~ msgid "Tasks" +#~ msgstr "Taches" + +#~ msgid "Table Maintenance
Please select the task you want to perform on the selected table(s)." +#~ msgstr "Maintenance de la table
SVP sélectionner la tâche que vous vouler effectuée sur la/les table(s) sélectionnée(s)." + +#~ msgid "Tasks and Tables Selection" +#~ msgstr "Sélection des tables et des taches" + +#~ msgid "&Execute" +#~ msgstr "&Exécuter" + +#~ msgid "Do not show this message again" +#~ msgstr "Ne plus montrer ce message" + +#~ msgid "Statements to execute" +#~ msgstr "Commande à exécuter" + +#~ msgid "Server Parameters" +#~ msgstr "Paramètres serveur" + +#~ msgid "Server Parameters (local)" +#~ msgstr "Paramètres serveur local" + +#~ msgid "Replication Status" +#~ msgstr "Etat de réplication" + +#~ msgid "System Variables" +#~ msgstr "Variables système" + +#~ msgid "Server Status:" +#~ msgstr "Etat du serveur :" + +#~ msgid "Clock:" +#~ msgstr "Horloge :" + +#~ msgid "Memory:" +#~ msgstr "Mémoire :" + +#~ msgid "Operating System:" +#~ msgstr "Système d'exploitation :" + +#~ msgid "Processor:" +#~ msgstr "Processeur :" + +#~ msgid "Version:" +#~ msgstr "Version :" + +#~ msgid "Client Information" +#~ msgstr "Information Client" + +#~ msgid "Network Name:" +#~ msgstr "Nom de réseau :" + +#~ msgid "IP:" +#~ msgstr "IP :" + +#~ msgid "MySQL Version:" +#~ msgstr "Version Mysql :" + +#~ msgid "Host:" +#~ msgstr "Serveur :" + +#~ msgid "Socket:" +#~ msgstr "Prise :" + +#~ msgid "Connected to MySQL Server Instance" +#~ msgstr "Connecté à l'instance du serveur Mysql" + +#~ msgid "" +#~ "Server Status:
\n" +#~ "     Server is running" +#~ msgstr "" +#~ "Etat du serveur :
\n" +#~ "     Le serveur est lancé" + +#~ msgid "Couldn't find &1 in &2 or &3" +#~ msgstr "Impossible de trouver &1 dans &2 ou &3" + +#~ msgid "New Script" +#~ msgstr "Nouveau script" + +#~ msgid "Run script" +#~ msgstr "Exécuter un script" + +#~ msgid "Script executed successfully." +#~ msgstr "Script exécuté avec succès" + +#~ msgid "Empty table." +#~ msgstr "Table vide." + +#~ msgid "Paso #5" +#~ msgstr "Passe #5" + +#~ msgid "Local Test" +#~ msgstr "Test local" + +#~ msgid "Changes the restore path" +#~ msgstr "Changement du chemin de restauration" + +#~ msgid "Source schema:" +#~ msgstr "Source du schéma :" + +#~ msgid "Source Schema" +#~ msgstr "Source du schéma" + +#~ msgid "SMaRT" +#~ msgstr "Pratique" + +#~ msgid "Schema:" +#~ msgstr "Schéma :" + +#~ msgid "david123" +#~ msgstr "--" + +#~ msgid "3306" +#~ msgstr "-" + +#~ msgid "localhost" +#~ msgstr "Serveur local" + +#~ msgid "Main server" +#~ msgstr "Serveur principal" + +#~ msgid "Backup Main Server" +#~ msgstr "Sauvegarde du serveur principal" + +#~ msgid "Read this first!!!" +#~ msgstr "A lire en premier !!!!" + +#~ msgid "Remove row" +#~ msgstr "Effacer une ligne" + +#~ msgid "Add row" +#~ msgstr "Ajouter une ligne" + +#~ msgid "Save to file" +#~ msgstr "Sauver dans un fichier" + +#~ msgid "ResultSet" +#~ msgstr "Résultat" + +#~ msgid "Ignore SQL errors" +#~ msgstr "Ignorer les erreurs SQL" + +#~ msgid "Options:" +#~ msgstr "Options :" + +#~ msgid "Total data length:" +#~ msgstr "Longueur totale des données :" + +#~ msgid "Total tables:" +#~ msgstr "Total des tables :" + +#~ msgid "Total schemas:" +#~ msgstr "Schémas totaux :" + +#~ msgid "Character Set:" +#~ msgstr "jeu de caractères :" + +#~ msgid "File:" +#~ msgstr "Fichier " + +#~ msgid "Information:" +#~ msgstr "Informations :" + +#~ msgid "Restore backup" +#~ msgstr "Restauration de la sauvegarde" + +#~ msgid "Restore executed successfully." +#~ msgstr "Restauration effectuée avec succès" + +#~ msgid "Opens the output file" +#~ msgstr "Ouvre le fichier de sortie" + +#~ msgid "Output to file" +#~ msgstr "Fichier de sortie" + +#~ msgid "Prints the output to a specified file. By default /home/user/Tmp.sql." +#~ msgstr "Affiche la sortie d'un fichier spécifié. Par défaut /home/user/Tmp.sql." + +#~ msgid "-t" +#~ msgstr "-" + +#~ msgid "Output in table format" +#~ msgstr "Format de la table de sortie" + +#~ msgid "-vvv" +#~ msgstr "-" + +#~ msgid "Shows the Query and Rows in Set in Table Format" +#~ msgstr "Affiche la requete et les lignes ensemble dans une table " + +#~ msgid "-vv" +#~ msgstr "-" + +#~ msgid "Shows the Query and Rows in Set" +#~ msgstr "Affiche la requete et les lignes ensemble" + +#~ msgid "-v" +#~ msgstr "-" + +#~ msgid "Shows the Query" +#~ msgstr "Affiche la requete" + +#~ msgid "New result tab" +#~ msgstr "Nouveau signet" + +#~ msgid "New Query" +#~ msgstr "Nouvelle requete" + +#~ msgid "Run query" +#~ msgstr "exécuter une requete" + +#~ msgid "Program set to write mode" +#~ msgstr "Programme configuré en modede lecture " + +#~ msgid "Program set to read only mode" +#~ msgstr "Programme configuré en mode de lecture seul" + +#~ msgid "Nothing to show." +#~ msgstr "Rien à afficher" + +#~ msgid "Database changed." +#~ msgstr "La base de données a changé" + +#~ msgid "Action not allowed in read only mode." +#~ msgstr "Action non permise en mode lecture seule" + +#~ msgid "Kill process" +#~ msgstr "Tuer le process" + +#~ msgid "Process" +#~ msgstr "Tache" + +#~ msgid "System Processes" +#~ msgstr "Taches système" + +#~ msgid "Info" +#~ msgstr "Info" + +#~ msgid "State" +#~ msgstr "Etat" + +#~ msgid "Time" +#~ msgstr "Heure" + +#~ msgid "Command" +#~ msgstr "Commande" + +#~ msgid "Database" +#~ msgstr "Base de données" + +#~ msgid "Host" +#~ msgstr "Serveur" + +#~ msgid "Id" +#~ msgstr "ID" + +#~ msgid "Show statements before execute them:" +#~ msgstr "Afficher les commandes avant de les exécuter :" + +#~ msgid "Show statements before execute them" +#~ msgstr "Afficher les commandes avant de les exécuter" + +#~ msgid "Show the information message before start editing:" +#~ msgstr "Affiche le message d'information avant de démarrer l'édition :" + +#~ msgid "Show the information message before start editing" +#~ msgstr "Affiche le message d'information avant de démarrer l'édition" + +#~ msgid "Result:" +#~ msgstr "Résultat :" + +#~ msgid "Result" +#~ msgstr "Résultat" + +#~ msgid "Numbers:" +#~ msgstr "Numéro :" + +#~ msgid "Sets the color for numbers in the editor" +#~ msgstr "Configure la couleur des nombres dans l'éditeur" + +#~ msgid "Font" +#~ msgstr "Police" + +#~ msgid "Font:" +#~ msgstr "Police :" + +#~ msgid "Sets the font type for the editor" +#~ msgstr "Configure le type de police de l'éditeur" + +#~ msgid "Keywords:" +#~ msgstr "Mots clés :" + +#~ msgid "Sets the color for keywords in the editor" +#~ msgstr "Configure la couleur des mots clés dans l'éditeur" + +#~ msgid "Tab size:" +#~ msgstr "Taille tab :" + +#~ msgid "Sets the tab size for the editor" +#~ msgstr "Configure la taille de tabulation de l'éditeur" + +#~ msgid "Strings:" +#~ msgstr "Chaines :" + +#~ msgid "Sets the color for strings in the editor" +#~ msgstr "Configure la couleur des chaines dans l'éditeur" + +#~ msgid "Symbols:" +#~ msgstr "Symboles :" + +#~ msgid "Sets the color for symbols in the editor" +#~ msgstr "Configure la couleur des symbols dans l'éditeur" + +#~ msgid "Functions:" +#~ msgstr "Functions :" + +#~ msgid "Sets the color for functions in the editor" +#~ msgstr "Configure la couleur des fonctions dans l'éditeur" + +#~ msgid "Operators:" +#~ msgstr "Opérateurs :" + +#~ msgid "Sets the color for operators in the editor" +#~ msgstr "Configure la couleur des opérateurs dans l'éditeur" + +#~ msgid "Data Types:" +#~ msgstr "Type des données :" + +#~ msgid "Sets the color for datatypes in the editor" +#~ msgstr "Configure la couleur du type de données dans l'éditeur" + +#~ msgid "&Restore" +#~ msgstr "&Restauration" + +#~ msgid "Show modified lines:" +#~ msgstr "Affiche les lignes modifiées :" + +#~ msgid "Show modified lines" +#~ msgstr "Afficher les lignes modifiées" + +#~ msgid "Comments:" +#~ msgstr "Commentaires :" + +#~ msgid "Sets the color for comments in the editor" +#~ msgstr "Configure la couleur des commentaites dans l'éditeur" + +#~ msgid "Editor:" +#~ msgstr "Editeur :" + +#~ msgid "Editor" +#~ msgstr "Editeur" + +#~ msgid "Path for restore files:" +#~ msgstr "Chemin des fichiers de restauration :" + +#~ msgid "Change the path to look for restore files" +#~ msgstr "Cherche le chemin pour restaurer les fichiers" + +#~ msgid "Dif Color" +#~ msgstr "Dif couleur" + +#~ msgid "Color for rows in results:" +#~ msgstr "Couleur des lignes pour le résultat" + +#~ msgid "Sets the color for rows in results" +#~ msgstr "Configure la couleur des lignes de résultats" + +#~ msgid "Custom messages" +#~ msgstr "Messages personnalisés" + +#~ msgid "Custom messages color:" +#~ msgstr "Couleur de messages personnalisés" + +#~ msgid "Sets the color for custom messages" +#~ msgstr "Configure la couleur des messages personnalisés" + +#~ msgid "Warning messages" +#~ msgstr "Messages d'avertissement" + +#~ msgid "Warning messages color:" +#~ msgstr "Couleur des messages d'avertissement" + +#~ msgid "Sets the color for warning messages" +#~ msgstr "Configure la couleur des avertissements de messages" + +#~ msgid "Error messages" +#~ msgstr "Messages d'erreur" + +#~ msgid "Error messages color:" +#~ msgstr "Couleur des messages d'erreur" + +#~ msgid "Sets the color for error messages" +#~ msgstr "Configure la couleur des messages d'erreur" + +#~ msgid "Information messages" +#~ msgstr "Messages d'information" + +#~ msgid "Information messages color:" +#~ msgstr "Couleur des messages d'information :" + +#~ msgid "Sets the color for information messages" +#~ msgstr "Configure la couleur des messages d'information" + +#~ msgid "Remember last windows opened:" +#~ msgstr "Rappel de la dernière fenetre ouverte :" + +#~ msgid "Remember last windows opened" +#~ msgstr "Rappel de la dernière fenetre ouverte" + +#~ msgid "Show error messages in a popup window:" +#~ msgstr "Affiche tous les messages dans un popup :" + +#~ msgid "Show error messages in a popup window" +#~ msgstr "Affiche les messages d'erreur dans une fenetre surgissante" + +#~ msgid "Store passwords:" +#~ msgstr "Enregistre le mot de passe :" + +#~ msgid "Store passwords" +#~ msgstr "Enregistre le mot de passe " + +#~ msgid "All keywords in uppercase:" +#~ msgstr "Tous les mots clés en majuscule :" + +#~ msgid "Show all Keywords in Uppercase" +#~ msgstr "Affiche tous les mots clés en majuscule" + +#~ msgid "Restore default values" +#~ msgstr "Restauration des valeurs par défaut" + +#~ msgid "Close forms by pessing Alt+Esc:" +#~ msgstr "Fermer le formulaire en appuant sur les touches Alt+Esc" + +#~ msgid "All Tabs/Forms will close if you press Esc key" +#~ msgstr "Tous les formulaires fermeront si vous appuyez sur la touche Esc" + +#~ msgid "General:" +#~ msgstr "Général :" + +#~ msgid "General" +#~ msgstr "Général" + +#~ msgid "Default values restored." +#~ msgstr "Valeurs restaurées par défaut." + +#~ msgid "UPDATE" +#~ msgstr "MAJ" + +#~ msgid "INSERT" +#~ msgstr "INSERT" + +#~ msgid "DELETE" +#~ msgstr "EFFACER" + +#~ msgid "BEFORE" +#~ msgstr "AVANT" + +#~ msgid "AFTER" +#~ msgstr "APRES" + +#~ msgid "URL:" +#~ msgstr "-" + +#~ msgid "Syntax:" +#~ msgstr "Syntaxe :" + +#~ msgid "" +#~ "Could not find any help.\n" +#~ "Please check those tables:\n" +#~ msgstr "" +#~ "Impossible de trouver de l'aide .\n" +#~ "SVP Vérifier ces tables :\n" + +#~ msgid "In this option you will find the information about the application." +#~ msgstr "Dans cette option vous trouverez les informations à propos de cette application" + +#~ msgid "Shows this help" +#~ msgstr "Affiche cet aide" + +#~ msgid "In this option you will find this help" +#~ msgstr "Dans cette option vous trouverez cette aide " + +#~ msgid "Runs a script" +#~ msgstr "Exécute un script" + +#~ msgid "Runs a query" +#~ msgstr "Exécute une requete" + +#~ msgid "Shortcuts" +#~ msgstr "Raccourcis" + +#~ msgid "Generate a Gambas module to create the Database, Tables, Routines..." +#~ msgstr "Générer un module Gambas pour créer la base de données, tables, routines..." + +#~ msgid "Click the status bar to see the complete message in a new window." +#~ msgstr "Cliquer sur la barre d'état afin de voir le message complet dans la nouvelle fenêtre" + +#~ msgid "Features" +#~ msgstr "Caractéristiques" + +#~ msgid "is an application to interact with a MySQL Server and is based on gb.mysql. Its propose is to provide a friendly interface to MySQL, it is the fusion of: gb.database-manager, mysql-query-browser and mysql-administrator" +#~ msgstr "Ceci est une application pour gérer le serveur Mysql, elle est basée sur gb.mysql. Son propos est de procurer une interface conviviale à Mysql, c'est la fusion entre : gb.database-manager, mysql-query-browser et mysql-administrator" + +#~ msgid "General Information:" +#~ msgstr "Information générale :" + +#~ msgid "Generate" +#~ msgstr "Générer" + +#~ msgid "Destination:" +#~ msgstr "Destination" + +#~ msgid "TXT" +#~ msgstr "-" + +#~ msgid "XML" +#~ msgstr "-" + +#~ msgid "HTML" +#~ msgstr "HTML" + +#~ msgid "Format Selection:" +#~ msgstr "Sélection du format :" + +#~ msgid "Procedures" +#~ msgstr "Procédures" + +#~ msgid "Functions" +#~ msgstr "Functions" + +#~ msgid "Databases" +#~ msgstr "Base de données" + +#~ msgid "Object Selection:" +#~ msgstr "Sélection d'objet :" + +#~ msgid "Select the databases:" +#~ msgstr "Base de données sélectionnées :" + +#~ msgid "Generate Documentation" +#~ msgstr "Générer la documentation" + +#~ msgid "Diff" +#~ msgstr "Diff" + +#~ msgid "No difference" +#~ msgstr "Aucune différence" + +#~ msgid "Cancel" +#~ msgstr "Annuler" + +#~ msgid "Changes" +#~ msgstr "Changements" + +#~ msgid "Password" +#~ msgstr "Mot de passe " + +#~ msgid "User" +#~ msgstr "Utilisateur" + +#~ msgid "Authentification" +#~ msgstr "--" + +#~ msgid "Previous description" +#~ msgstr "Description précédentes" + +#~ msgid "Clean up" +#~ msgstr "Nettoyer tout" + +#~ msgid "Unindent" +#~ msgstr "Désindenter" + +#~ msgid "Indent" +#~ msgstr "Indenter" + +#~ msgid "Redo" +#~ msgstr "Refaire " + +#~ msgid "Undo" +#~ msgstr "Défaire" + +#~ msgid "Paste" +#~ msgstr "Coller" + +#~ msgid "Copy" +#~ msgstr "Copier" + +#~ msgid "Cut" +#~ msgstr "Couper" + +#~ msgid "Commit description" +#~ msgstr "Description de validation" + +#~ msgid "Description" +#~ msgstr "Description" + +#~ msgid "Commit" +#~ msgstr "Valider" + +#~ msgid "Please enter the password" +#~ msgstr "SVP entrez le mot de passe" + +#~ msgid "Please enter the change log" +#~ msgstr "SVP entrez le fichier log " + +#~ msgid "Please enter the versioning user name" +#~ msgstr "SVP entrez le nom de version utilisateur" + +#~ msgid "Server" +#~ msgstr "Serveur" + +#~ msgid "Close all forms" +#~ msgstr "Fermer tous les formulaires" + +#~ msgid "Close form" +#~ msgstr "Fermer le formulaire" + +#~ msgid "Hide panels" +#~ msgstr "Cacher le panneau" + +#~ msgid "Main" +#~ msgstr "Principal" + +#~ msgid "File" +#~ msgstr "Fichier" + +#~ msgid "Processes" +#~ msgstr "Taches" + +#~ msgid "Preferences" +#~ msgstr "Préferrences" + +#~ msgid "Documentation" +#~ msgstr "Documentation" + +#~ msgid "Help" +#~ msgstr "Aide" + +#~ msgid "MySQL Help" +#~ msgstr "Aide Mysql" + +#~ msgid "Script" +#~ msgstr "Script" + +#~ msgid "Table Maintenance" +#~ msgstr "Table de maintenance" + +#~ msgid "Query" +#~ msgstr "Requete" + +#~ msgid "Schemas" +#~ msgstr "Schémas" + +#~ msgid "Schema" +#~ msgstr "Schéma" + +#~ msgid "Restore Backup" +#~ msgstr "Restauration de la sauvergarde" + +#~ msgid "User Administration" +#~ msgstr "Administrateur " + +#~ msgid "Server Information" +#~ msgstr "Info serveur" + +#~ msgid "Backup Content" +#~ msgstr "Contenu de la sauvegarde" + +#~ msgid "Catalogs" +#~ msgstr "Catalogues" + +#~ msgid "&Start Backup" +#~ msgstr "&Démarrer la sauvegarde" + +#~ msgid "Project Name:" +#~ msgstr "Nom du projet :" + +#~ msgid "Backup Project
Define the project name and the content of the backup" +#~ msgstr "Projet de sauvegarde
Défini le nom du projet et le contenu de la sauvegarde" + +#~ msgid "Backup" +#~ msgstr "Sauvegarde" + +#~ msgid "Done" +#~ msgstr "Fait" + +#~ msgid "Please select a database" +#~ msgstr "SVP sélectionnez une base de données" + +#~ msgid "Data Length" +#~ msgstr "Longueur des données" + +#~ msgid "Table Type" +#~ msgstr "Type de table" + +#~ msgid "Objects" +#~ msgstr "Objets" + +#~ msgid "" +#~ "MYSQL-GUI MySQL Database administrator for Gambas.\n" +#~ "Copyright (C) 2008-2010 David Villalobos Cambronero.\n" +#~ "\n" +#~ "This program is free software: you can redistribute it and/or modify\n" +#~ "it under the terms of the GNU General Public License as published by\n" +#~ "the Free Software Foundation, either version 3 of the License, or\n" +#~ "(at your option) any later version.\n" +#~ "\n" +#~ "This program is distributed in the hope that it will be useful,\n" +#~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" +#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" +#~ "GNU General Public License for more details.\n" +#~ "\n" +#~ "You should have received a copy of the GNU General Public License\n" +#~ "along with this program. If not, see ." +#~ msgstr "" +#~ "MYSQL-GUI MySQL administrateur de base de données pour Gambas.\n" +#~ "Copyright (C) 2008-2010 David Villalobos Cambronero.\n" +#~ "\n" +#~ " (traduction française Henri Girard). Ce programme est un logiciel libre : Vous pouvez le distribuer et/ou le modifier\n" +#~ "Selon les termes de GNU General Public License, telle que publiée part\n" +#~ "the Free Software Foundation, Soit en version 3 de la License, ou\n" +#~ "(selon votre choix) dans n'importe-quelle version ultérieure.\n" +#~ "\n" +#~ "Ce programme est distribué avec l'espoir qu'il soit utile,\n" +#~ "mais absolument sans aucune garantie ; Meme sans aucune garantie que l'on pourrait attendre d'un logiciel, de commercialisation ou d'utilité dans un domaine précis.\n" +#~ "Voir GNU General Public License pour plus de détail.\n" +#~ "\n" +#~ "Vous devriez avoir reçu une copie de GNU General Public License\n" +#~ "avec ce programme. Sinon voyez ." + +#~ msgid "License" +#~ msgstr "License" + +#~ msgid "About" +#~ msgstr "A propos" + +#~ msgid "A simple Graphic User Interface for MySQL" +#~ msgstr "Un simple GUI pour MySQL" + +#~ msgid "mysql-gui" +#~ msgstr "-" diff --git a/app/examples/Database/MySQLExample/.lang/nl.po b/app/examples/Database/MySQLExample/.lang/nl.po new file mode 100644 index 00000000..1f684132 --- /dev/null +++ b/app/examples/Database/MySQLExample/.lang/nl.po @@ -0,0 +1,531 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: MySQLExample 3.5.90\n" +"PO-Revision-Date: 2014-09-25 20:40 UTC\n" +"Last-Translator: Willy Raets \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 FConnect.form:28 +msgid "MySQL Example" +msgstr "MySQL Voorbeeld" + +#: .project:2 +msgid "A simple GB.MYSQL Example" +msgstr "Een eenvoudig GB.MYSQL voorbeeld" + +#: FConnect.form:20 +msgid "MySQL GUI" +msgstr "-" + +#: FConnect.form:35 +msgid "Connect to a MySQL Server" +msgstr "Verbind met een MySQL Server" + +#: FConnect.form:39 +msgid "Server:" +msgstr "-" + +#: FConnect.form:50 +msgid "Port:" +msgstr "Poort:" + +#: FConnect.form:61 +msgid "User:" +msgstr "Gebruiker:" + +#: FConnect.form:72 +msgid "Password:" +msgstr "Wachtwoord:" + +#: FConnect.form:84 +msgid "&Connect" +msgstr "&Verbind" + +#: FConnect.form:91 +msgid "&Clear" +msgstr "&Opschonen" + +#: FNewView.form:52 +msgid "&Cancel" +msgstr "&Annuleren" + +#: FMessage.form:8 +msgid "Message" +msgstr "Bericht" + +#: FNewDatabase.form:16 +msgid "Create Database" +msgstr "Creëer Database" + +#: FNewRoutine.form:35 FNewTable.form:32 FNewTrigger.form:34 FNewView.form:30 +msgid "Name:" +msgstr "Naam:" + +#: FNewDatabase.form:42 +msgid "Collation:" +msgstr "Collatie:" + +#: FNewDatabase.form:53 FNewTable.form:53 +msgid "Charset:" +msgstr "Karakterset:" + +#: FNewDatabase.form:63 +msgid "&Create" +msgstr "&Creëer" + +#: FNewEvent.form:16 +msgid "Create Event" +msgstr "Creëer Gebeurtenis" + +#: FNewEvent.form:42 +msgid "Schedule:" +msgstr "Schema:" + +#: FNewEvent.form:47 FNewRoutine.form:50 +msgid "Comma separated values: Hola1 INT,Hola2 CHAR(5)" +msgstr "Comma gesepareerde waarden: Hola1 INT, Hola2 CHAR(5)" + +#: FNewEvent.form:52 FNewRoutine.form:69 FNewTrigger.form:67 FNewView.form:39 +msgid "Show a clue" +msgstr "Aanwijzing weergeven" + +#: FNewTable.form:70 FNewTrigger.form:73 FNewView.form:45 +msgid "&Ok" +msgstr "&Ok" + +#: FNewEvent.class:19 +msgid "Edit Event" +msgstr "Bewerk Gebeurtenis" + +#: FNewField.form:22 +msgid "Add Field" +msgstr "Veld toevoegen" + +#: FNewField.form:47 +msgid "Data Type:" +msgstr "-" + +#: FNewField.form:57 +msgid "Accepts NULLs:" +msgstr "Accepteert NULL's" + +#: FNewField.form:63 +msgid "No" +msgstr "Neen" + +#: FNewField.form:63 +msgid "Yes" +msgstr "Ja" + +#: FNewField.form:69 +msgid "Default:" +msgstr "Standaard:" + +#: FNewField.form:79 +msgid "Extra:" +msgstr "-" + +#: FNewField.form:89 +msgid "Comment:" +msgstr "Commentaar:" + +#: FNewField.class:22 +msgid "Edit Field" +msgstr "Bewerk Veld" + +#: FNewIndex.form:18 +msgid "Create Index" +msgstr "Creëer Index" + +#: FNewIndex.form:23 +msgid "Delete" +msgstr "Verwijder" + +#: FNewIndex.form:55 +msgid "Fields:" +msgstr "Velden:" + +#: FNewIndex.form:68 +msgid "Primary Key" +msgstr "Primaire Sleutel" + +#: FNewIndex.class:24 +msgid "Edit Index" +msgstr "Bewerk Index" + +#: FNewRoutine.form:19 +msgid "Create Routine" +msgstr "Creëer Routine" + +#: FNewRoutine.form:45 +msgid "Parameters:" +msgstr "-" + +#: FNewRoutine.form:56 +msgid "Returns:" +msgstr "Retourneren:" + +#: FNewRoutine.class:19 +msgid "Edit Routine" +msgstr "Bewerk Routine" + +#: FNewTable.form:16 +msgid "Create Table" +msgstr "Creëer Tabel" + +#: FNewTable.form:42 +msgid "Engine:" +msgstr "Motor:" + +#: FNewTable.class:21 +msgid "Edit Table" +msgstr "Bewerk Tabel" + +#: FNewTrigger.form:18 +msgid "Create Trigger" +msgstr "Creëer Trigger" + +#: FNewTrigger.form:44 +msgid "Time:" +msgstr "Tijd:" + +#: FNewTrigger.form:56 +msgid "Event:" +msgstr "Gebeurtenis:" + +#: FNewTrigger.class:28 +msgid "Edit Trigger" +msgstr "Bewerk Trigger" + +#: FNewView.form:14 +msgid "Create View" +msgstr "Creëer Weergave" + +#: FNewView.class:18 +msgid "Edit View" +msgstr "Bewerk Weergave" + +#: FTables.form:35 +msgid "Tables" +msgstr "Tabellen" + +#: FTables.form:40 +msgid "Item" +msgstr "Element" + +#: FTables.form:45 +msgid "New Item" +msgstr "Nieuw Element" + +#: FTables.form:52 +msgid "Edit Item" +msgstr "Bewerk Element" + +#: FTables.form:59 +msgid "Delete Item" +msgstr "Verwijder Element" + +#: FTables.form:66 +msgid "Refresh" +msgstr "Vernieuwen" + +#: FTables.form:84 +msgid "Lock" +msgstr "Slot" + +#: FTables.form:96 +msgid "New Table" +msgstr "Nieuwe Tabel" + +#: FTables.form:103 +msgid "Delete Table" +msgstr "Verwijder Tabel" + +#: FTables.form:121 +msgid "New Database" +msgstr "Nieuwe Database" + +#: FTables.form:128 +msgid "Delete Database" +msgstr "Verwijder Database" + +#: FTables.form:159 +msgid "Views" +msgstr "Weergaven" + +#: FTables.form:169 +msgid "Indexes" +msgstr "Indices" + +#: FTables.form:179 +msgid "Fields on:" +msgstr "Velden aan:" + +#: FTables.form:188 +msgid "Routines" +msgstr "-" + +#: FTables.form:198 +msgid "Triggers" +msgstr "-" + +#: FTables.form:208 +msgid "Events" +msgstr "Gebeurtenissen" + +#: FTables.class:9 +msgid "Name" +msgstr "Naam" + +#: FTables.class:10 +msgid "Rows" +msgstr "Rijen" + +#: FTables.class:11 +msgid "Engine" +msgstr "Motor" + +#: FTables.class:12 +msgid "Charset" +msgstr "Karakterset" + +#: FTables.class:13 +msgid "Collation" +msgstr "Collatie" + +#: FTables.class:14 +msgid "Size" +msgstr "Maat" + +#: FTables.class:15 +msgid "Update Time" +msgstr "Update tijd" + +#: FTables.class:20 +msgid "Updatable" +msgstr "Actualiseerbaar" + +#: FTables.class:21 +msgid "Definer" +msgstr "Definiëerder" + +#: FTables.class:22 +msgid "Security" +msgstr "Beveiliging" + +#: FTables.class:23 +msgid "Check" +msgstr "Controleer" + +#: FTables.class:30 +msgid "Column" +msgstr "Kolom" + +#: FTables.class:32 +msgid "Type" +msgstr "-" + +#: FTables.class:38 +msgid "Returns" +msgstr "Retourneren" + +#: FTables.class:39 +msgid "Creation Time" +msgstr "Creatietijd" + +#: FTables.class:43 +msgid "Comment" +msgstr "Commentaar" + +#: FTables.class:49 +msgid "Default" +msgstr "Standaard" + +#: FTables.class:50 +msgid "Nullable" +msgstr "-" + +#: FTables.class:51 +msgid "DataType" +msgstr "-" + +#: FTables.class:52 +msgid "Key" +msgstr "Sleutel" + +#: FTables.class:53 +msgid "Extra" +msgstr "-" + +#: FTables.class:61 +msgid "Event" +msgstr "Gebeurtenis" + +#: FTables.class:62 +msgid "Table" +msgstr "Tabel" + +#: FTables.class:63 +msgid "Timing" +msgstr "-" + +#: FTables.class:70 +msgid "Time Zone" +msgstr "Tijd Zone" + +#: FTables.class:72 +msgid "Execute At" +msgstr "Uitvoeren op" + +#: FTables.class:73 +msgid "Interval Value" +msgstr "Interval Waarde" + +#: FTables.class:74 +msgid "Interval Field" +msgstr "Interval Veld" + +#: FTables.class:75 +msgid "SQL Mode" +msgstr "SQL Modus" + +#: FTables.class:76 +msgid "Starts" +msgstr "-" + +#: FTables.class:77 +msgid "Ends" +msgstr "-" + +#: FTables.class:78 +msgid "On Completion" +msgstr "Bij voltooiing" + +#: FTables.class:79 +msgid "Created" +msgstr "Gecreëerd" + +#: FTables.class:80 +msgid "Last Altered" +msgstr "Laast gewijzigd" + +#: FTables.class:81 +msgid "Last Executed" +msgstr "Laatst uitgevoerd" + +#: FTables.class:82 +msgid "Originator" +msgstr "-" + +#: FTables.class:85 +msgid "Database Collation" +msgstr "Database collatie" + +#: FTables.class:112 +msgid "Fields" +msgstr "Velden" + +#: FTables.class:330 +msgid "Not available" +msgstr "Niet beschikbaar" + +#: FTables.class:363 +msgid "Indexes on:" +msgstr "Indices aan:" + +#: FTables.class:880 +msgid "New View" +msgstr "Nieuwe Weergave" + +#: FTables.class:881 +msgid "Delete View" +msgstr "Verwijder Weergave" + +#: FTables.class:883 +msgid "New Index" +msgstr "Nieuwe Index" + +#: FTables.class:884 +msgid "Delete Index" +msgstr "Verwijder Index" + +#: FTables.class:886 +msgid "New Field" +msgstr "Nieuw Veld" + +#: FTables.class:887 +msgid "Delete Field" +msgstr "Verwijder Veld" + +#: FTables.class:889 +msgid "New Routine" +msgstr "Nieuwe Routine" + +#: FTables.class:890 +msgid "Delete Routine" +msgstr "Verwijder Routine" + +#: FTables.class:892 +msgid "New Trigger" +msgstr "Nieuwe Trigger" + +#: FTables.class:893 +msgid "Delete Trigger" +msgstr "Verwijder Trigger" + +#: FTables.class:895 +msgid "New Event" +msgstr "Nieuwe Gebeurtenis" + +#: FTables.class:896 +msgid "Delete Event" +msgstr "Verwijder Gebeurtenis" + +#: FTables.class:927 +msgid "Do you realy want to delete the database: &1?" +msgstr "Wil je werkelijk de database &1 verwijderen?" + +#: FTables.class:927 +msgid "&Yes" +msgstr "&Ja" + +#: FTables.class:927 +msgid "&No" +msgstr "&Neen" + +#: FTables.class:1019 +msgid "Do you realy want to delete the table: &1?" +msgstr "Wil je werkelijk de tabel &1 verwijderen?" + +#: FTables.class:1021 +msgid "Do you realy want to delete the view: &1?" +msgstr "Wil je werkelijk de weergave &1 verwijderen?" + +#: FTables.class:1023 +msgid "Do you realy want to delete the index: &1?" +msgstr "Wil je werkelijk de index &1 verwijderen?" + +#: FTables.class:1025 +msgid "Do you realy want to delete the field: &1?" +msgstr "Wil je werkelijk het veld &1 verwijderen?" + +#: FTables.class:1027 +msgid "Do you realy want to delete the routine: &1?" +msgstr "Wil je werkelijk de routine &1 verwijderen?" + +#: FTables.class:1029 +msgid "Do you realy want to delete the trigger: &1?" +msgstr "Wil je werkelijk de trigger &1 verwijderen?" + +#: FTables.class:1031 +msgid "Do you realy want to delete the event: &1?" +msgstr "Wil je werkelijk de gebeurtenis &1 verwijderen?" + +#: FTables.class:1034 +msgid "Item deleted." +msgstr "Element verwijdert:" + diff --git a/app/examples/Database/MySQLExample/.lang/ru.po b/app/examples/Database/MySQLExample/.lang/ru.po new file mode 100644 index 00000000..b0907bbc --- /dev/null +++ b/app/examples/Database/MySQLExample/.lang/ru.po @@ -0,0 +1,554 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Database/MySQLExample/.project:27 app/examples/Database/MySQLExample/.src/FConnect.form:12 +msgid "MySQL Example" +msgstr "Пример MySQL" + +#: app/examples/Database/MySQLExample/.project:28 +msgid "A simple GB.MYSQL Example" +msgstr "Простой пример GB.MYSQL" + +#: app/examples/Database/MySQLExample/.src/FConnect.form:5 +msgid "MySQL GUI" +msgstr "GUI MySQL" + +#: app/examples/Database/MySQLExample/.src/FConnect.form:18 +msgid "Connect to a MySQL Server" +msgstr "Соединиться с сервером MySQL" + +#: app/examples/Database/MySQLExample/.src/FConnect.form:21 +msgid "Server:" +msgstr "Сервер:" + +#: app/examples/Database/MySQLExample/.src/FConnect.form:30 +msgid "Port:" +msgstr "Порт:" + +#: app/examples/Database/MySQLExample/.src/FConnect.form:39 +msgid "User:" +msgstr "Пользователь:" + +#: app/examples/Database/MySQLExample/.src/FConnect.form:48 +msgid "Password:" +msgstr "Пароль:" + +#: app/examples/Database/MySQLExample/.src/FConnect.form:58 +msgid "&Connect" +msgstr "Соединить" + +#: app/examples/Database/MySQLExample/.src/FConnect.form:64 +msgid "&Clear" +msgstr "Очистить" + +#: app/examples/Database/MySQLExample/.src/FConnect.form:69 app/examples/Database/MySQLExample/.src/CreateObjects/FNewDatabase.form:50 app/examples/Database/MySQLExample/.src/CreateObjects/FNewEvent.form:46 app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.form:73 app/examples/Database/MySQLExample/.src/CreateObjects/FNewIndex.form:56 app/examples/Database/MySQLExample/.src/CreateObjects/FNewRoutine.form:58 app/examples/Database/MySQLExample/.src/CreateObjects/FNewTable.form:44 app/examples/Database/MySQLExample/.src/CreateObjects/FNewTrigger.form:57 app/examples/Database/MySQLExample/.src/CreateObjects/FNewView.form:37 +msgid "&Cancel" +msgstr "Отмена" + +#: app/examples/Database/MySQLExample/.src/FMessage.form:5 +msgid "Message" +msgstr "Сообщение" + +#: app/examples/Database/MySQLExample/.src/FTables.class:9 app/examples/Database/MySQLExample/.src/FTables.class:19 app/examples/Database/MySQLExample/.src/FTables.class:29 app/examples/Database/MySQLExample/.src/FTables.class:37 app/examples/Database/MySQLExample/.src/FTables.class:48 app/examples/Database/MySQLExample/.src/FTables.class:60 app/examples/Database/MySQLExample/.src/FTables.class:68 +msgid "Name" +msgstr "Имя" + +#: app/examples/Database/MySQLExample/.src/FTables.class:10 +msgid "Rows" +msgstr "Строки" + +#: app/examples/Database/MySQLExample/.src/FTables.class:11 +msgid "Engine" +msgstr "Движок" + +#: app/examples/Database/MySQLExample/.src/FTables.class:12 app/examples/Database/MySQLExample/.src/FTables.class:24 app/examples/Database/MySQLExample/.src/FTables.class:54 app/examples/Database/MySQLExample/.src/FTables.class:83 +msgid "Charset" +msgstr "Кодировка" + +#: app/examples/Database/MySQLExample/.src/FTables.class:13 app/examples/Database/MySQLExample/.src/FTables.class:25 app/examples/Database/MySQLExample/.src/FTables.class:31 app/examples/Database/MySQLExample/.src/FTables.class:55 app/examples/Database/MySQLExample/.src/FTables.class:84 +msgid "Collation" +msgstr "Упорядочение" + +#: app/examples/Database/MySQLExample/.src/FTables.class:14 +msgid "Size" +msgstr "Размер" + +#: app/examples/Database/MySQLExample/.src/FTables.class:15 app/examples/Database/MySQLExample/.src/FTables.class:40 +msgid "Update Time" +msgstr "Обновить время" + +#: app/examples/Database/MySQLExample/.src/FTables.class:20 +msgid "Updatable" +msgstr "Обновляемый" + +#: app/examples/Database/MySQLExample/.src/FTables.class:21 app/examples/Database/MySQLExample/.src/FTables.class:42 app/examples/Database/MySQLExample/.src/FTables.class:64 app/examples/Database/MySQLExample/.src/FTables.class:69 +msgid "Definer" +msgstr "Определитель" + +#: app/examples/Database/MySQLExample/.src/FTables.class:22 +msgid "Security" +msgstr "Безопасность" + +#: app/examples/Database/MySQLExample/.src/FTables.class:23 +msgid "Check" +msgstr "Проверить" + +#: app/examples/Database/MySQLExample/.src/FTables.class:30 +msgid "Column" +msgstr "Столбец" + +#: app/examples/Database/MySQLExample/.src/FTables.class:32 app/examples/Database/MySQLExample/.src/FTables.class:41 app/examples/Database/MySQLExample/.src/FTables.class:71 +msgid "Type" +msgstr "Тип" + +#: app/examples/Database/MySQLExample/.src/FTables.class:38 +msgid "Returns" +msgstr "Возвращаемые данные" + +#: app/examples/Database/MySQLExample/.src/FTables.class:39 +msgid "Creation Time" +msgstr "Время создания" + +#: app/examples/Database/MySQLExample/.src/FTables.class:43 app/examples/Database/MySQLExample/.src/FTables.class:56 app/examples/Database/MySQLExample/.src/FTables.class:86 +msgid "Comment" +msgstr "Комментарий" + +#: app/examples/Database/MySQLExample/.src/FTables.class:49 +msgid "Default" +msgstr "По умолчанию" + +#: app/examples/Database/MySQLExample/.src/FTables.class:50 +msgid "Nullable" +msgstr "Допустим null" + +#: app/examples/Database/MySQLExample/.src/FTables.class:51 +msgid "DataType" +msgstr "Тип данных" + +#: app/examples/Database/MySQLExample/.src/FTables.class:52 +msgid "Key" +msgstr "Ключ" + +#: app/examples/Database/MySQLExample/.src/FTables.class:53 +msgid "Extra" +msgstr "Дополнительно" + +#: app/examples/Database/MySQLExample/.src/FTables.class:61 +msgid "Event" +msgstr "Событие" + +#: app/examples/Database/MySQLExample/.src/FTables.class:62 +msgid "Table" +msgstr "Таблица" + +#: app/examples/Database/MySQLExample/.src/FTables.class:63 +msgid "Timing" +msgstr "Тайминг" + +#: app/examples/Database/MySQLExample/.src/FTables.class:70 +msgid "Time Zone" +msgstr "Часовой пояс" + +#: app/examples/Database/MySQLExample/.src/FTables.class:72 +msgid "Execute At" +msgstr "Выполнить в" + +#: app/examples/Database/MySQLExample/.src/FTables.class:73 +msgid "Interval Value" +msgstr "Значение интервала" + +#: app/examples/Database/MySQLExample/.src/FTables.class:74 +msgid "Interval Field" +msgstr "Поле интервала" + +#: app/examples/Database/MySQLExample/.src/FTables.class:75 +msgid "SQL Mode" +msgstr "Режим SQL" + +#: app/examples/Database/MySQLExample/.src/FTables.class:76 +msgid "Starts" +msgstr "Начала" + +#: app/examples/Database/MySQLExample/.src/FTables.class:77 +msgid "Ends" +msgstr "Концы" + +#: app/examples/Database/MySQLExample/.src/FTables.class:78 +msgid "On Completion" +msgstr "На завершение" + +#: app/examples/Database/MySQLExample/.src/FTables.class:79 +msgid "Created" +msgstr "Создан" + +#: app/examples/Database/MySQLExample/.src/FTables.class:80 +msgid "Last Altered" +msgstr "Последний изменённый" + +#: app/examples/Database/MySQLExample/.src/FTables.class:81 +msgid "Last Executed" +msgstr "Последний выполненный" + +#: app/examples/Database/MySQLExample/.src/FTables.class:82 +msgid "Originator" +msgstr "Инициатор" + +#: app/examples/Database/MySQLExample/.src/FTables.class:85 +msgid "Database Collation" +msgstr "Упорядочение базы данных" + +#: app/examples/Database/MySQLExample/.src/FTables.class:111 app/examples/Database/MySQLExample/.src/FTables.form:119 +msgid "Indexes" +msgstr "Индексы" + +#: app/examples/Database/MySQLExample/.src/FTables.class:112 +msgid "Fields" +msgstr "Поля" + +#: app/examples/Database/MySQLExample/.src/FTables.class:145 app/examples/Database/MySQLExample/.src/FTables.form:128 +msgid "Fields on:" +msgstr "Поля вкл:" + +#: app/examples/Database/MySQLExample/.src/FTables.class:330 app/examples/Database/MySQLExample/.src/FTables.class:331 +msgid "Not available" +msgstr "Недоступен" + +#: app/examples/Database/MySQLExample/.src/FTables.class:363 +msgid "Indexes on:" +msgstr "Индексы по:" + +#: app/examples/Database/MySQLExample/.src/FTables.class:877 app/examples/Database/MySQLExample/.src/FTables.form:56 +msgid "New Table" +msgstr "Новая таблица" + +#: app/examples/Database/MySQLExample/.src/FTables.class:878 app/examples/Database/MySQLExample/.src/FTables.form:62 +msgid "Delete Table" +msgstr "Удалить таблицу" + +#: app/examples/Database/MySQLExample/.src/FTables.class:880 +msgid "New View" +msgstr "Новый просмотр" + +#: app/examples/Database/MySQLExample/.src/FTables.class:881 +msgid "Delete View" +msgstr "Удалить вид" + +#: app/examples/Database/MySQLExample/.src/FTables.class:883 +msgid "New Index" +msgstr "Новый индекс" + +#: app/examples/Database/MySQLExample/.src/FTables.class:884 +msgid "Delete Index" +msgstr "Удалить индекс" + +#: app/examples/Database/MySQLExample/.src/FTables.class:886 +msgid "New Field" +msgstr "Новое поле" + +#: app/examples/Database/MySQLExample/.src/FTables.class:887 +msgid "Delete Field" +msgstr "Удалить поле" + +#: app/examples/Database/MySQLExample/.src/FTables.class:889 +msgid "New Routine" +msgstr "Новая подпрограмма" + +#: app/examples/Database/MySQLExample/.src/FTables.class:890 +msgid "Delete Routine" +msgstr "Удалить подпрограмму" + +#: app/examples/Database/MySQLExample/.src/FTables.class:892 +msgid "New Trigger" +msgstr "Новый триггер" + +#: app/examples/Database/MySQLExample/.src/FTables.class:893 +msgid "Delete Trigger" +msgstr "Удалить триггер" + +#: app/examples/Database/MySQLExample/.src/FTables.class:895 +msgid "New Event" +msgstr "Новое событие" + +#: app/examples/Database/MySQLExample/.src/FTables.class:896 +msgid "Delete Event" +msgstr "Удалить событие" + +#: app/examples/Database/MySQLExample/.src/FTables.class:927 +msgid "Do you realy want to delete the database: &1?" +msgstr "Вы действительно хотите удалить БД: &1?" + +#: app/examples/Database/MySQLExample/.src/FTables.class:927 app/examples/Database/MySQLExample/.src/FTables.class:1019 app/examples/Database/MySQLExample/.src/FTables.class:1021 app/examples/Database/MySQLExample/.src/FTables.class:1023 app/examples/Database/MySQLExample/.src/FTables.class:1025 app/examples/Database/MySQLExample/.src/FTables.class:1027 app/examples/Database/MySQLExample/.src/FTables.class:1029 app/examples/Database/MySQLExample/.src/FTables.class:1031 +msgid "&Yes" +msgstr "Да" + +#: app/examples/Database/MySQLExample/.src/FTables.class:927 app/examples/Database/MySQLExample/.src/FTables.class:1019 app/examples/Database/MySQLExample/.src/FTables.class:1021 app/examples/Database/MySQLExample/.src/FTables.class:1023 app/examples/Database/MySQLExample/.src/FTables.class:1025 app/examples/Database/MySQLExample/.src/FTables.class:1027 app/examples/Database/MySQLExample/.src/FTables.class:1029 app/examples/Database/MySQLExample/.src/FTables.class:1031 +msgid "&No" +msgstr "Нет" + +#: app/examples/Database/MySQLExample/.src/FTables.class:1019 +msgid "Do you realy want to delete the table: &1?" +msgstr "Вы действительно хотите удалить таблицу: &1?" + +#: app/examples/Database/MySQLExample/.src/FTables.class:1021 +msgid "Do you realy want to delete the view: &1?" +msgstr "Вы действительно хотите удалить вид: &1?" + +#: app/examples/Database/MySQLExample/.src/FTables.class:1023 +msgid "Do you realy want to delete the index: &1?" +msgstr "Вы действительно хотите удалить индекс: &1?" + +#: app/examples/Database/MySQLExample/.src/FTables.class:1025 +msgid "Do you realy want to delete the field: &1?" +msgstr "Вы действительно хотите удалить поле: &1?" + +#: app/examples/Database/MySQLExample/.src/FTables.class:1027 +msgid "Do you realy want to delete the routine: &1?" +msgstr "Вы действительно хотите удалить подпрограмму: &1?" + +#: app/examples/Database/MySQLExample/.src/FTables.class:1029 +msgid "Do you realy want to delete the trigger: &1?" +msgstr "Вы действительно хотите удалить триггер: &1?" + +#: app/examples/Database/MySQLExample/.src/FTables.class:1031 +msgid "Do you realy want to delete the event: &1?" +msgstr "Вы действительно хотите удалить событие: &1?" + +#: app/examples/Database/MySQLExample/.src/FTables.class:1034 +msgid "Item deleted." +msgstr "Элемент удалён." + +#: app/examples/Database/MySQLExample/.src/FTables.form:6 app/examples/Database/MySQLExample/.src/FTables.form:102 +msgid "Tables" +msgstr "Таблицы" + +#: app/examples/Database/MySQLExample/.src/FTables.form:10 +msgid "Item" +msgstr "Элемент" + +#: app/examples/Database/MySQLExample/.src/FTables.form:14 +msgid "New Item" +msgstr "Новый элемент" + +#: app/examples/Database/MySQLExample/.src/FTables.form:20 +msgid "Edit Item" +msgstr "Редактировать элемент" + +#: app/examples/Database/MySQLExample/.src/FTables.form:26 +msgid "Delete Item" +msgstr "Удалить элемент" + +#: app/examples/Database/MySQLExample/.src/FTables.form:32 app/examples/Database/MySQLExample/.src/FTables.form:68 +msgid "Refresh" +msgstr "Освежить" + +#: app/examples/Database/MySQLExample/.src/FTables.form:46 +msgid "Lock" +msgstr "Блокировка" + +#: app/examples/Database/MySQLExample/.src/FTables.form:77 +msgid "New Database" +msgstr "Новая база данных" + +#: app/examples/Database/MySQLExample/.src/FTables.form:83 +msgid "Delete Database" +msgstr "Удалить базу данных" + +#: app/examples/Database/MySQLExample/.src/FTables.form:110 +msgid "Views" +msgstr "Виды" + +#: app/examples/Database/MySQLExample/.src/FTables.form:136 +msgid "Routines" +msgstr "Подпрограммы" + +#: app/examples/Database/MySQLExample/.src/FTables.form:145 +msgid "Triggers" +msgstr "Триггеры" + +#: app/examples/Database/MySQLExample/.src/FTables.form:154 +msgid "Events" +msgstr "События" + +#: app/examples/Database/MySQLExample/.src/modMain.module:38 +msgid "" +"Seems that your MySQL version is lower than 5.1.\n" +"therefore you will get some error and warning messages." +msgstr "" +"Кажется, что ваша версия MySQL ниже, чем 5.1.\n" +"поэтому вы получите сообщения об ошибках и предупреждения." + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewDatabase.form:5 app/examples/Database/MySQLExample/.src/CreateObjects/FNewDatabase.form:12 +msgid "Create Database" +msgstr "Создать базу данных" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewDatabase.form:19 app/examples/Database/MySQLExample/.src/CreateObjects/FNewEvent.form:19 app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.form:18 app/examples/Database/MySQLExample/.src/CreateObjects/FNewIndex.form:28 app/examples/Database/MySQLExample/.src/CreateObjects/FNewRoutine.form:20 app/examples/Database/MySQLExample/.src/CreateObjects/FNewTable.form:19 app/examples/Database/MySQLExample/.src/CreateObjects/FNewTrigger.form:19 app/examples/Database/MySQLExample/.src/CreateObjects/FNewView.form:19 +msgid "Name:" +msgstr "Имя:" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewDatabase.form:27 +msgid "Collation:" +msgstr "Упорядочение:" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewDatabase.form:36 app/examples/Database/MySQLExample/.src/CreateObjects/FNewTable.form:36 +msgid "Charset:" +msgstr "Кодировка:" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewDatabase.form:44 +msgid "&Create" +msgstr "Создать" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewEvent.class:19 +msgid "Edit Event" +msgstr "Редактировать событие" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewEvent.form:5 app/examples/Database/MySQLExample/.src/CreateObjects/FNewEvent.form:12 +msgid "Create Event" +msgstr "Создать событие" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewEvent.form:27 +msgid "Schedule:" +msgstr "Расписание:" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewEvent.form:31 app/examples/Database/MySQLExample/.src/CreateObjects/FNewRoutine.form:32 +msgid "Comma separated values: Hola1 INT,Hola2 CHAR(5)" +msgstr "Значения, разделённые запятыми: Hola1 INT,Hola2 CHAR(5)" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewEvent.form:35 app/examples/Database/MySQLExample/.src/CreateObjects/FNewRoutine.form:47 app/examples/Database/MySQLExample/.src/CreateObjects/FNewTrigger.form:46 app/examples/Database/MySQLExample/.src/CreateObjects/FNewView.form:26 +msgid "Show a clue" +msgstr "Показать подсказку" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewEvent.form:40 app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.form:67 app/examples/Database/MySQLExample/.src/CreateObjects/FNewIndex.form:50 app/examples/Database/MySQLExample/.src/CreateObjects/FNewRoutine.form:52 app/examples/Database/MySQLExample/.src/CreateObjects/FNewTable.form:50 app/examples/Database/MySQLExample/.src/CreateObjects/FNewTrigger.form:51 app/examples/Database/MySQLExample/.src/CreateObjects/FNewView.form:31 +msgid "&Ok" +msgstr "ОК" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.class:22 +msgid "Edit Field" +msgstr "Редактировать поле" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.form:5 app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.form:11 +msgid "Add Field" +msgstr "Добавить поле" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.form:26 +msgid "Data Type:" +msgstr "Тип данных:" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.form:34 +msgid "Accepts NULLs:" +msgstr "Принимает NULL:" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.form:39 +msgid "No" +msgstr "Нет" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.form:39 +msgid "Yes" +msgstr "Да" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.form:44 +msgid "Default:" +msgstr "По умолчанию:" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.form:52 +msgid "Extra:" +msgstr "Дополнительно:" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.form:60 +msgid "Comment:" +msgstr "Комментарий:" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewIndex.class:24 +msgid "Edit Index" +msgstr "Редактировать индекс" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewIndex.form:5 app/examples/Database/MySQLExample/.src/CreateObjects/FNewIndex.form:22 +msgid "Create Index" +msgstr "Создать индекс" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewIndex.form:9 app/examples/Database/MySQLExample/.src/CreateObjects/FNewIndex.form:13 +msgid "Delete" +msgstr "Удалить" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewIndex.form:36 +msgid "Fields:" +msgstr "Поля:" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewIndex.form:46 +msgid "Primary Key" +msgstr "Первичный ключ" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewRoutine.class:19 +msgid "Edit Routine" +msgstr "Редактировать подпрограмму" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewRoutine.form:6 app/examples/Database/MySQLExample/.src/CreateObjects/FNewRoutine.form:13 +msgid "Create Routine" +msgstr "Создать подпрограмму" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewRoutine.form:28 +msgid "Parameters:" +msgstr "Параметры:" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewRoutine.form:37 +msgid "Returns:" +msgstr "Возвращаемые данные:" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewTable.class:21 +msgid "Edit Table" +msgstr "Редактировать таблицу" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewTable.form:5 app/examples/Database/MySQLExample/.src/CreateObjects/FNewTable.form:12 +msgid "Create Table" +msgstr "Создать таблицу" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewTable.form:27 +msgid "Engine:" +msgstr "Движок:" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewTrigger.class:28 +msgid "Edit Trigger" +msgstr "Изменить триггер" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewTrigger.form:5 app/examples/Database/MySQLExample/.src/CreateObjects/FNewTrigger.form:12 +msgid "Create Trigger" +msgstr "Создать триггер" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewTrigger.form:27 +msgid "Time:" +msgstr "Время:" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewTrigger.form:37 +msgid "Event:" +msgstr "Событие:" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewView.class:18 +msgid "Edit View" +msgstr "Редактировать вид" + +#: app/examples/Database/MySQLExample/.src/CreateObjects/FNewView.form:5 app/examples/Database/MySQLExample/.src/CreateObjects/FNewView.form:12 +msgid "Create View" +msgstr "Создать вид" + diff --git a/app/examples/Database/MySQLExample/.project b/app/examples/Database/MySQLExample/.project new file mode 100644 index 00000000..c52728fa --- /dev/null +++ b/app/examples/Database/MySQLExample/.project @@ -0,0 +1,26 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.5.90 +Title=MySQL Example +Startup=modMain +Icon=icons/16/Admin.png +Version=3.6.2 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.form +Component=gb.db +Component=gb.db.mysql +Component=gb.settings +Component=gb.form.mdi +Component=gb.mysql +Description="A simple GB.MYSQL Example" +Authors="David Villalobos Cambronero\ndavid.villalobos.c@gmail.com" +TabSize=2 +Translate=1 +Language=en +SourcePath=/media +Maintainer=David Villalobos Cambronero +Address=david_villalobos_c@yahoo.com +License=General Public License +Packager=1 +Systems=autotools diff --git a/app/examples/Database/MySQLExample/.src/CreateObjects/FNewDatabase.class b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewDatabase.class new file mode 100644 index 00000000..ab7f91bf --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewDatabase.class @@ -0,0 +1,33 @@ +' Gambas class file + +Public Sub Form_Open() + + cmbCharset.List = modMain.$Connection.MySQL.Charsets + cmbCharset.Index = cmbCharset.Find("utf8") + Me.Center() + Catch + modMain.Error() + +End + +Public Sub btnCancel_Click() + + Me.Close() + +End + +Public Sub btnCreate_Click() + + modMain.$Connection.MySQL.DataBase.Add(txtNombre.Text, cmbCharset.Text, cmbCollations.Text) + modMain.$Connection.MySQL.Use(txtNombre.Text) + Me.Close() + Catch + modMain.Error() + +End + +Public Sub cmbCharset_Click() + + cmbCollations.List = modMain.$Connection.MySQL.CharsetCollations(cmbCharset.Text) + +End diff --git a/app/examples/Database/MySQLExample/.src/CreateObjects/FNewDatabase.form b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewDatabase.form new file mode 100644 index 00000000..3f1c8c49 --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewDatabase.form @@ -0,0 +1,54 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,36,28) + Text = ("Create Database") + Icon = Picture["icons/16/Database.png"] + Resizable = False + { lblTitle Label + MoveScaled(1,1,34,5) + Font = Font["+4"] + Background = Color.LightBackground + Text = ("Create Database") + Alignment = Align.Center + Border = Border.Sunken + } + { lblName Label + MoveScaled(1,8,11,3) + Font = Font["+1"] + Text = ("Name:") + } + { txtNombre TextBox + MoveScaled(13,8,22,3) + } + { lblCollation Label + MoveScaled(1,18,11,3) + Font = Font["+1"] + Text = ("Collation:") + } + { cmbCollations ComboBox + MoveScaled(13,18,22,3) + ReadOnly = True + } + { lblCharset Label + MoveScaled(1,13,11,3) + Font = Font["+1"] + Text = ("Charset:") + } + { cmbCharset ComboBox + MoveScaled(13,13,22,3) + ReadOnly = True + } + { btnCreate Button + MoveScaled(1,23,13,4) + Text = ("&Create") + Picture = Picture["icon:/16/new"] + Default = True + } + { btnCancel Button + MoveScaled(22,23,13,4) + Text = ("&Cancel") + Picture = Picture["icon:/16/cancel"] + Cancel = True + } +} diff --git a/app/examples/Database/MySQLExample/.src/CreateObjects/FNewEvent.class b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewEvent.class new file mode 100644 index 00000000..497e99c3 --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewEvent.class @@ -0,0 +1,51 @@ +' Gambas class file + +Private $sEvent As String +Private $bEdit As Boolean = False + +Public Sub _new(Optional {Event} As String) + + If {Event} Then + $sEvent = {Event} + $bEdit = True + Endif + +End + +Public Sub Form_Open() + + If $bEdit Then + txtName.Enabled = False + Me.Text = ("Edit Event") + lblTitle.Text = Me.Text + txtName.Text = $sEvent + txtSchedule.Text = modMain.$Connection.MySQL.Event.Schedule($sEvent) + txtData.Text = modMain.$Connection.MySQL.Event.Definition($sEvent) + Else + txtData.Text = "BEGIN\n \nEND" + Endif + +End + +Public Sub btnCancel_Click() + + Me.Close() + +End + +Public Sub tbnOK_Click() + + modMain.$Connection.MySQL.Event.Add(txtName.Text, txtSchedule.Text, txtData.Text, IIf($bEdit, True, False)) + Me.Close() + Catch + modMain.Error() + +End + +Public Sub btnClue_Click() + + txtName.Text = "FooEvent" + txtSchedule.Text = "EVERY 1 DAY STARTS NOW()" + txtData.Text = "BEGIN\n SELECT `User` FROM `mysql`.`user`;\nEND" + +End diff --git a/app/examples/Database/MySQLExample/.src/CreateObjects/FNewEvent.form b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewEvent.form new file mode 100644 index 00000000..434054ee --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewEvent.form @@ -0,0 +1,53 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,73,54) + Text = ("Create Event") + Icon = Picture["icon:/16/clock"] + Resizable = False + { lblTitle Label + MoveScaled(1,1,71,5) + Font = Font["+4"] + Background = Color.LightBackground + Text = ("Create Event") + Alignment = Align.Center + Border = Border.Sunken + } + { lblName Label + MoveScaled(1,8,15,3) + Font = Font["+1"] + Text = ("Name:") + } + { txtName TextBox + MoveScaled(17,8,55,3) + } + { lblSchedule Label + MoveScaled(1,12,15,3) + Font = Font["+1"] + Text = ("Schedule:") + } + { txtSchedule TextBox + MoveScaled(17,12,55,3) + ToolTip = ("Comma separated values: Hola1 INT,Hola2 CHAR(5)") + } + { btnClue Button + MoveScaled(1,49,5,4) + ToolTip = ("Show a clue") + Picture = Picture["icon:/22/help"] + } + { tbnOK Button + MoveScaled(44,49,13,4) + Text = ("&Ok") + Picture = Picture["icon:/16/ok"] + Default = True + } + { btnCancel Button + MoveScaled(59,49,13,4) + Text = ("&Cancel") + Picture = Picture["icon:/16/cancel"] + Cancel = True + } + { txtData TextArea + MoveScaled(1,16,71,32) + } +} diff --git a/app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.class b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.class new file mode 100644 index 00000000..afa34505 --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.class @@ -0,0 +1,53 @@ +' Gambas class file + +Private $sTable As String +Private $sFlied As String +Private $bEdit As Boolean = False + +Public Sub _new(Table As String, Optional Field As String) + + If Field Then + $sFlied = Field + $bEdit = True + Endif + $sTable = Table + +End + +Public Sub Form_Open() + + txtName.Text = $sFlied + If $bEdit Then + txtName.Enabled = False + Me.Text = ("Edit Field") + lblTitle.Text = Me.Text + txtDatatype.Text = modMain.$Connection.MySQL.Field.FieldEspecifications($sFlied, $sTable).Datatype() + txtComment.Text = modMain.$Connection.MySQL.Field.FieldEspecifications($sFlied, $sTable).Commnet() + txtDefault.Text = modMain.$Connection.MySQL.Field.FieldEspecifications($sFlied, $sTable).DefaultValue() + txtExtra.Text = modMain.$Connection.MySQL.Field.FieldEspecifications($sFlied, $sTable).Extra() + cmbNull.Index = CInt(modMain.$Connection.MySQL.Field.FieldEspecifications($sFlied, $sTable).IsNullable()) + Endif + +End + +Public Sub btnCancel_Click() + + Me.Close() + +End + +Public Sub tbnOK_Click() + + Dim sDefinition As String + + sDefinition = txtDatatype.Text & " " + If cmbNull.Index = 0 Then sDefinition &= "NOT NULL" + If txtDefault.Text <> "" Then sDefinition &= " DEFAULT '" & txtDefault.Text & "'" + If txtExtra.Text <> "" Then sDefinition &= " " & txtExtra.Text + If txtComment.Text <> "" Then sDefinition &= " COMMENT '" & txtComment.Text & "'" + modMain.$Connection.MySQL.Table.ModifyColumn($sTable, IIf($bEdit, "MODIFY", "ADD"), txtName.Text, sDefinition) + Me.Close() + Catch + modMain.Error() + +End diff --git a/app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.form b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.form new file mode 100644 index 00000000..d143b622 --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewField.form @@ -0,0 +1,77 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,40,37) + Text = ("Add Field") + Icon = Picture["icons/16/Field.png"] + { lblTitle Label + MoveScaled(1,1,38,5) + Font = Font["+4"] + Background = Color.LightBackground + Text = ("Add Field") + Alignment = Align.Center + Border = Border.Sunken + } + { lblName Label + MoveScaled(1,8,11,3) + Font = Font["+1"] + Text = ("Name:") + } + { txtName TextBox + MoveScaled(13,8,26,3) + } + { lblDatatype Label + MoveScaled(1,12,15,3) + Font = Font["+1"] + Text = ("Data Type:") + } + { txtDatatype TextBox + MoveScaled(17,12,22,3) + } + { lblNull Label + MoveScaled(1,16,15,3) + Font = Font["+1"] + Text = ("Accepts NULLs:") + } + { cmbNull ComboBox + MoveScaled(17,16,8,3) + ReadOnly = True + List = [("No"), ("Yes")] + } + { lblDefault Label + MoveScaled(1,20,11,3) + Font = Font["+1"] + Text = ("Default:") + } + { txtDefault TextBox + MoveScaled(13,20,26,3) + } + { lblExtra Label + MoveScaled(1,24,11,3) + Font = Font["+1"] + Text = ("Extra:") + } + { txtExtra TextBox + MoveScaled(13,24,26,3) + } + { lblComment Label + MoveScaled(1,28,15,3) + Font = Font["+1"] + Text = ("Comment:") + } + { txtComment TextBox + MoveScaled(17,28,22,3) + } + { tbnOK Button + MoveScaled(1,32,13,4) + Text = ("&Ok") + Picture = Picture["icon:/16/ok"] + Default = True + } + { btnCancel Button + MoveScaled(26,32,13,4) + Text = ("&Cancel") + Picture = Picture["icon:/16/cancel"] + Cancel = True + } +} diff --git a/app/examples/Database/MySQLExample/.src/CreateObjects/FNewIndex.class b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewIndex.class new file mode 100644 index 00000000..c5b9242b --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewIndex.class @@ -0,0 +1,79 @@ +' Gambas class file + +Private $sTable As String +Private $sIndex As String +Private $bEdit As Boolean = False + +Public Sub _new(Table As String, Optional Index As String) + + If Index Then + $sIndex = Index + $bEdit = True + Endif + $sTable = Table + cmbFields.List = modMain.$Connection.MySQL.Table.Fields(Table) + If Index = "PRIMARY" Then chkPrimaryKey.Value = True + +End + +Public Sub Form_Open() + + Dim sField As String + + If $bEdit Then + Me.Text = ("Edit Index") + lblTitle.Text = Me.Text + If $sIndex <> "PRIMARY" Then txtName.Enabled = False + txtName.Text = $sIndex + For Each sField In modMain.$Connection.MySQL.Index.Columns($sTable, $sIndex) + lstFields.Add(sField) + Next + Endif + +End + +Public Sub btnCancel_Click() + + Me.Close() + +End + +Public Sub tbnOK_Click() + + If $bEdit Then + If chkPrimaryKey.Value Then + modMain.$Connection.MySQL.Index.Delete($sTable, "PRIMARY") + modMain.$Connection.MySQL.Index.PrimaryKey($sTable, lstFields.List) + Else + modMain.$Connection.MySQL.Index.Modify(txtName.Text, lstFields.List, $sTable) + Endif + Else + If chkPrimaryKey.Value Then + modMain.$Connection.MySQL.Index.PrimaryKey($sTable, lstFields.List) + Else + modMain.$Connection.MySQL.Index.Add(txtName.Text, lstFields.List, $sTable) + Endif + Endif + Me.Close() + Catch + modMain.Error() + +End + +Public Sub cmbFields_Click() + + lstFields.Add(cmbFields.Text) + +End + +Public Sub lstFields_Menu() + + mnuDelete.Popup() + +End + +Public Sub Action_Activate(Name As String) As Boolean + + If Name = "Delete" Then lstFields.Remove(lstFields.Index) + +End diff --git a/app/examples/Database/MySQLExample/.src/CreateObjects/FNewIndex.form b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewIndex.form new file mode 100644 index 00000000..1b732e44 --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewIndex.form @@ -0,0 +1,70 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,36,46) + Text = ("Create Index") + Icon = Picture["icons/16/Index.png"] + Resizable = False + { mnuDelete Menu + Text = ("Delete") + Visible = False + { mnuDelete2 Menu + Action = "Delete" + Text = ("Delete") + Picture = Picture["icon:/16/trash"] + Shortcut = "Del" + } + } + { lblTitle Label + MoveScaled(1,1,34,5) + Font = Font["+4"] + Background = Color.LightBackground + Text = ("Create Index") + Alignment = Align.Center + } + { lblName Label + MoveScaled(1,8,11,3) + Font = Font["+1"] + Text = ("Name:") + } + { txtName TextBox + MoveScaled(13,8,22,3) + } + { lblFields Label + MoveScaled(1,12,11,3) + Font = Font["+1"] + Text = ("Fields:") + } + { lstFields ListBox + MoveScaled(13,12,22,19) + } + { cmbFields ComboBox + MoveScaled(13,32,22,3) + } + { chkPrimaryKey CheckBox + MoveScaled(1,37,34,3) + Text = ("Primary Key") + } + { tbnOK Button + MoveScaled(1,41,13,4) + Text = ("&Ok") + Picture = Picture["icon:/16/ok"] + Default = True + } + { btnCancel Button + MoveScaled(22,41,13,4) + Text = ("&Cancel") + Picture = Picture["icon:/16/cancel"] + Cancel = True + } +} + +# Gambas Action File 3.0 + +{ Actions + { Action Delete + Text = "Delete" + Shortcut = "Del" + Picture = "icon:/16/trash" + } +} diff --git a/app/examples/Database/MySQLExample/.src/CreateObjects/FNewRoutine.class b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewRoutine.class new file mode 100644 index 00000000..e0bdb26b --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewRoutine.class @@ -0,0 +1,65 @@ +' Gambas class file + +Private $sRutine As String +Private $bEdit As Boolean = False + +Public Sub _new(Optional Rutine As String) + + If Rutine Then + $sRutine = Rutine + $bEdit = True + Endif + txtName.Text = $sRutine + +End + +Public Sub Form_Open() + + If $bEdit Then + Me.Text = ("Edit Routine") + lblTitle.Text = Me.Text + txtName.Enabled = False + txtParameters.Text = modMain.$Connection.MySQL.Routines.Parameters($sRutine) + txtReturns.Text = modMain.$Connection.MySQL.Routines.Returns($sRutine) + txtData.Text = modMain.$Connection.MySQL.Routines.Definition($sRutine) + Else + txtData.Text = "BEGIN\n \nEND" + Endif + +End + +Public Sub btnCancel_Click() + + Me.Close() + +End + +Public Sub tbnOK_Click() + + If $bEdit Then + modMain.$Connection.MySQL.Routines.Modify($sRutine, txtData.Text, Split(Trim(txtParameters.Text)), txtReturns.Text) + Else + modMain.$Connection.MySQL.Routines.Add(txtName.Text, txtData.Text, Split(Trim(txtParameters.Text)), txtReturns.Text) + Endif + Me.Close() + Catch + modMain.Error() + +End + +Public Sub btnClue_Click() + + If txtName.Text = "FooProcedure" Then + txtName.Text = "FooFunction" + txtParameters.Text = "Param1 INT,Param2 VARCHAR(200)" + txtReturns.Text = "INT" + txtData.Text = "BEGIN\n SELECT `User` FROM `mysql`.`user` WHERE `User` = `Param2`;\n" + txtData.Text &= " RETURN `Param1`\nEND" + Else + txtName.Text = "FooProcedure" + txtParameters.Text = "Param1 INT,Param2 VARCHAR(200)" + txtReturns.Text = "" + txtData.Text = "BEGIN\n SELECT `User` FROM `mysql`.`user` WHERE `User` = `Param2`;\nEND" + Endif + +End diff --git a/app/examples/Database/MySQLExample/.src/CreateObjects/FNewRoutine.form b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewRoutine.form new file mode 100644 index 00000000..6db63ba7 --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewRoutine.form @@ -0,0 +1,71 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,73,58) + Action = "Show a clue" + Text = ("Create Routine") + Icon = Picture["icons/16/Routine.png"] + Resizable = False + { lblTitle Label + MoveScaled(1,1,71,5) + Font = Font["+4"] + Background = Color.LightBackground + Text = ("Create Routine") + Alignment = Align.Center + Border = Border.Sunken + } + { lblName Label + MoveScaled(1,8,11,3) + Font = Font["+1"] + Text = ("Name:") + } + { txtName TextBox + MoveScaled(15,8,57,3) + } + { lblParameters Label + MoveScaled(1,12,13,3) + Font = Font["+1"] + Text = ("Parameters:") + } + { txtParameters TextBox + MoveScaled(15,12,57,3) + ToolTip = ("Comma separated values: Hola1 INT,Hola2 CHAR(5)") + } + { lblReturns Label + MoveScaled(1,16,10,3) + Font = Font["+1"] + Text = ("Returns:") + } + { txtReturns TextBox + MoveScaled(15,16,57,3) + } + { txtData TextArea + MoveScaled(1,20,71,32) + } + { btnClue Button + MoveScaled(1,53,5,4) + ToolTip = ("Show a clue") + Picture = Picture["icon:/22/help"] + } + { tbnOK Button + MoveScaled(44,53,13,4) + Text = ("&Ok") + Picture = Picture["icon:/16/ok"] + Default = True + } + { btnCancel Button + MoveScaled(59,53,13,4) + Text = ("&Cancel") + Picture = Picture["icon:/16/cancel"] + Cancel = True + } +} + +# Gambas Action File 3.0 + +{ Actions + { Action Show a clue + Text = "Create Routine" + Picture = "icons/16/Routine.png" + } +} diff --git a/app/examples/Database/MySQLExample/.src/CreateObjects/FNewTable.class b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewTable.class new file mode 100644 index 00000000..13070aeb --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewTable.class @@ -0,0 +1,55 @@ +' Gambas class file + +Private $sTable As String +Private $bEdit As Boolean = False + +Public Sub _new(Optional Table As String) + + If Table Then + $sTable = Table + $bEdit = True + Endif + txtName.Text = $sTable + +End + +Public Sub Form_Open() + + cmbEngine.List = modMain.$Connection.MySQL.Engines + cmbCharset.List = modMain.$Connection.MySQL.Charsets + If $bEdit Then + Me.Text = ("Edit Table") + lblTitle.Text = Me.Text + txtName.Enabled = False + cmbEngine.Index = cmbEngine.Find(modMain.$Connection.MySQL.Table.Engine($sTable)) + cmbCharset.Index = cmbCharset.Find(modMain.$Connection.MySQL.Table.Charset($sTable)) + Else + cmbEngine.Index = cmbEngine.Find("InnoDB") + cmbCharset.Index = cmbCharset.Find("utf8") + Endif + Catch + modMain.Error() + +End + +Public Sub btnCancel_Click() + + Me.Close() + +End + +Public Sub tbnOK_Click() + + If $bEdit Then + modMain.$Connection.MySQL.Table.Modify($sTable,, cmbEngine.Text, cmbCharset.Text) + Else + modMain.$Connection.MySQL.Field.Add("Field01", modMain.$Connection.MySQL.DataTypes.Serial) + modMain.$Connection.MySQL.Table.Add(txtName.Text, cmbEngine.Text, cmbCharset.Text) + Endif + modMain.$hFBrowser.LoadDatabases() + modMain.$hFTables.SearchInfo() + Me.Close() + Catch + modMain.Error() + +End diff --git a/app/examples/Database/MySQLExample/.src/CreateObjects/FNewTable.form b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewTable.form new file mode 100644 index 00000000..a28aa27e --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewTable.form @@ -0,0 +1,54 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,36,28) + Text = ("Create Table") + Icon = Picture["icons/16/Table.png"] + Resizable = False + { lblTitle Label + MoveScaled(1,1,34,5) + Font = Font["+4"] + Background = Color.LightBackground + Text = ("Create Table") + Alignment = Align.Center + Border = Border.Sunken + } + { lblName Label + MoveScaled(1,8,11,3) + Font = Font["+1"] + Text = ("Name:") + } + { txtName TextBox + MoveScaled(13,8,22,3) + } + { lblEngine Label + MoveScaled(1,13,11,3) + Font = Font["+1"] + Text = ("Engine:") + } + { cmbEngine ComboBox + MoveScaled(13,13,22,3) + ReadOnly = True + } + { lblCharset Label + MoveScaled(1,18,11,3) + Font = Font["+1"] + Text = ("Charset:") + } + { cmbCharset ComboBox + MoveScaled(13,18,22,3) + ReadOnly = True + } + { btnCancel Button + MoveScaled(22,23,13,4) + Text = ("&Cancel") + Picture = Picture["icon:/16/cancel"] + Cancel = True + } + { tbnOK Button + MoveScaled(1,23,13,4) + Text = ("&Ok") + Picture = Picture["icon:/16/ok"] + Default = True + } +} diff --git a/app/examples/Database/MySQLExample/.src/CreateObjects/FNewTrigger.class b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewTrigger.class new file mode 100644 index 00000000..dc57a785 --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewTrigger.class @@ -0,0 +1,62 @@ +' Gambas class file + +Private $sTable As String +Private $sTrigger As String +Private $bEdit As Boolean = False + +Public Sub _new(Table As String, Optional Trigger As String) + + $sTable = Table + $sTrigger = Trigger + cmbTime.Add("AFTER") + cmbTime.Add("BEFORE") + cmbEvent.Add("DELETE") + cmbEvent.Add("INSERT") + cmbEvent.Add("UPDATE") + If Trigger Then + txtName.Text = Trigger + cmbTime.Text = modMain.$Connection.MySQL.Trigger.Time($sTrigger) + cmbEvent.Text = modMain.$Connection.MySQL.Trigger.Event($sTrigger) + $bEdit = True + Endif + +End + +Public Sub Form_Open() + + If $bEdit Then + Me.Text = ("Edit Trigger") + lblTitle.Text = Me.Text + txtName.Enabled = False + Endif + If $sTrigger Then txtData.Text = modMain.$Connection.MySQL.Trigger.Info($sTrigger) + +End + +Public Sub btnCancel_Click() + + Me.Close() + +End + +Public Sub tbnOK_Click() + + If $bEdit Then + modMain.$Connection.MySQL.Trigger.Modify($sTrigger, $sTable, cmbTime.Text, cmbEvent.Text, txtData.Text) + Else + modMain.$Connection.MySQL.Trigger.Add(txtName.Text, $sTable, cmbTime.Text, cmbEvent.Text, txtData.Text) + Endif + Me.Close() + Catch + modMain.Error() + +End + +Public Sub btnClue_Click() + + txtName.Text = "FooTrigger" + cmbEvent.Index = 0 + cmbTime.Index = 0 + txtData.Text = "BEGIN\n INSERT INTO `MyTABLE` VALUES ('VALUES');\nEND)" + +End diff --git a/app/examples/Database/MySQLExample/.src/CreateObjects/FNewTrigger.form b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewTrigger.form new file mode 100644 index 00000000..1b38930e --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewTrigger.form @@ -0,0 +1,64 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,73,55) + Text = ("Create Trigger") + Icon = Picture["icons/16/Trigger.png"] + Resizable = False + { lblTitle Label + MoveScaled(1,1,71,5) + Font = Font["+4"] + Background = Color.LightBackground + Text = ("Create Trigger") + Alignment = Align.Center + Border = Border.Sunken + } + { lblName Label + MoveScaled(1,8,11,3) + Font = Font["+1"] + Text = ("Name:") + } + { txtName TextBox + MoveScaled(13,8,59,3) + } + { lblTime Label + MoveScaled(1,13,11,3) + Font = Font["+1"] + Text = ("Time:") + } + { cmbTime ComboBox + MoveScaled(13,13,15,3) + ReadOnly = True + List = [] + } + { lblEvent Label + MoveScaled(30,13,11,3) + Font = Font["+1"] + Text = ("Event:") + } + { cmbEvent ComboBox + MoveScaled(42,13,15,3) + ReadOnly = True + List = [] + } + { btnClue Button + MoveScaled(1,50,5,4) + ToolTip = ("Show a clue") + Picture = Picture["icon:/22/help"] + } + { tbnOK Button + MoveScaled(44,50,13,4) + Text = ("&Ok") + Picture = Picture["icon:/16/ok"] + Default = True + } + { btnCancel Button + MoveScaled(59,50,13,4) + Text = ("&Cancel") + Picture = Picture["icon:/16/cancel"] + Cancel = True + } + { txtData TextArea + MoveScaled(1,17,71,32) + } +} diff --git a/app/examples/Database/MySQLExample/.src/CreateObjects/FNewView.class b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewView.class new file mode 100644 index 00000000..c81ca558 --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewView.class @@ -0,0 +1,45 @@ +' Gambas class file + +Private $bEdit As Boolean = False + +Public Sub _new(Optional View As String) + + If View Then + txtName.Text = View + $bEdit = True + txtData.Text = modMain.$Connection.MySQL.View.Definition(txtName.Text) & "\n" + Endif + +End + +Public Sub Form_Open() + + If $bEdit Then + Me.Text = ("Edit View") + lblTitle.Text = Me.Text + txtName.Enabled = False + Endif + +End + +Public Sub btnCancel_Click() + + Me.Close() + +End + +Public Sub tbnOK_Click() + + modMain.$Connection.MySQL.View.Add(txtName.Text, txtData.Text, $bEdit) + Me.Close() + Catch + modMain.Error() + +End + +Public Sub btnClue_Click() + + txtName.Text = "FooView" + txtData.Text = "SELECT * FROM `mysql`.`user`" + +End diff --git a/app/examples/Database/MySQLExample/.src/CreateObjects/FNewView.form b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewView.form new file mode 100644 index 00000000..38e94b7d --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/CreateObjects/FNewView.form @@ -0,0 +1,44 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,73,50) + Text = ("Create View") + Icon = Picture["icons/16/View.png"] + Resizable = False + { lblTitle Label + MoveScaled(1,1,71,5) + Font = Font["+4"] + Background = Color.LightBackground + Text = ("Create View") + Alignment = Align.Center + Border = Border.Sunken + } + { lblName Label + MoveScaled(1,8,11,3) + Font = Font["+1"] + Text = ("Name:") + } + { txtName TextBox + MoveScaled(13,8,59,3) + } + { btnClue Button + MoveScaled(1,45,5,4) + ToolTip = ("Show a clue") + Picture = Picture["icon:/22/help"] + } + { tbnOK Button + MoveScaled(44,45,13,4) + Text = ("&Ok") + Picture = Picture["icon:/16/ok"] + Default = True + } + { btnCancel Button + MoveScaled(59,45,13,4) + Text = ("&Cancel") + Picture = Picture["icon:/16/cancel"] + Cancel = True + } + { txtData TextArea + MoveScaled(1,12,71,32) + } +} diff --git a/app/examples/Database/MySQLExample/.src/FConnect.class b/app/examples/Database/MySQLExample/.src/FConnect.class new file mode 100644 index 00000000..f4e5f7e9 --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/FConnect.class @@ -0,0 +1,46 @@ +' Gambas class file + +Public Sub btnCancel_Click() + + Me.Close(True) + +End + +Public Sub btnConnect_Click() + + modMain.$Host = txtServer.Text + modMain.$Password = txtPassword.Text + modMain.$Port = txtPort.Text + modMain.$User = txtUser.Text + Me.Close(False) + Catch + Message.Error(Error.Text) + +End + +Public Sub btnClear_Click() + + txtPassword.Text = Null + txtPort.Text = Null + txtServer.Text = Null + txtUser.Text = Null + txtPassword.SetFocus() + +End + +Public Sub Form_Open() + + txtServer.Text = Settings["/Conecction/Host", "localhost"] + txtUser.Text = Settings["/Conecction/User", "root"] + txtPort.Text = Settings["/Conecction/Port", "3306"] + txtPassword.SetFocus() + +End + +Public Sub Form_Close() + + If txtServer.Text Then Settings["/Conecction/Host"] = txtServer.Text + If txtUser.Text Then Settings["/Conecction/User"] = txtUser.Text + If txtPort.Text Then Settings["/Conecction/Port"] = txtPort.Text + +End diff --git a/app/examples/Database/MySQLExample/.src/FConnect.form b/app/examples/Database/MySQLExample/.src/FConnect.form new file mode 100644 index 00000000..1e29323b --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/FConnect.form @@ -0,0 +1,73 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,49,33) + Text = ("MySQL GUI") + Icon = Picture["icons/16/Admin.png"] + Resizable = False + { lblTitle Label + MoveScaled(1,1,47,5) + Font = Font["+4"] + Background = Color.LightBackground + Text = ("MySQL Example") + Alignment = Align.Center + Border = Border.Sunken + } + { frmMain Frame + MoveScaled(1,8,47,19) + Text = ("Connect to a MySQL Server") + { lblServer Label + MoveScaled(1,3,19,3) + Text = ("Server:") + Alignment = Align.Right + } + { txtServer TextBox Texts + Name = "txtServer" + MoveScaled(21,3,25,3) + } + { lblPort Label + MoveScaled(1,7,19,3) + Text = ("Port:") + Alignment = Align.Right + } + { txtPort TextBox Texts + Name = "txtPort" + MoveScaled(21,7,25,3) + } + { lblUser Label + MoveScaled(1,11,19,3) + Text = ("User:") + Alignment = Align.Right + } + { txtUser TextBox Texts + Name = "txtUser" + MoveScaled(21,11,25,3) + } + { lblPassword Label + MoveScaled(1,15,19,3) + Text = ("Password:") + Alignment = Align.Right + } + { txtPassword TextBox + MoveScaled(21,15,25,3) + Password = True + } + } + { btnConnect Button + MoveScaled(1,28,15,4) + Text = ("&Connect") + Picture = Picture["icon:/16/connect"] + Default = True + } + { btnClear Button + MoveScaled(17,28,15,4) + Text = ("&Clear") + Picture = Picture["icon:/16/clear"] + } + { btnCancel Button + MoveScaled(33,28,15,4) + Text = ("&Cancel") + Picture = Picture["icon:/16/cancel"] + Cancel = True + } +} diff --git a/app/examples/Database/MySQLExample/.src/FMessage.class b/app/examples/Database/MySQLExample/.src/FMessage.class new file mode 100644 index 00000000..8cdb33f7 --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/FMessage.class @@ -0,0 +1,21 @@ +' Gambas class file + +Public Sub _new(Message As String) + + txaMesage.Text = Message + +End + +Public Sub Form_KeyPress() + + If Key.Code = Key.Esc Then Me.Close() + +End + +Public Sub txaMesage_KeyPress() + + If Key.Code = 81 Then '81 is q (in lowercase) + If Key.Alt Then txaMesage.Text &= "\n\n\n" & modMain.$Connection.MySQL.Query + Endif + +End diff --git a/app/examples/Database/MySQLExample/.src/FMessage.form b/app/examples/Database/MySQLExample/.src/FMessage.form new file mode 100644 index 00000000..e0a2267c --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/FMessage.form @@ -0,0 +1,12 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,67,39) + Text = ("Message") + Icon = Picture["icons/16/Warning.png"] + Resizable = False + { txaMesage TextArea + MoveScaled(1,1,65,37) + Wrap = True + } +} diff --git a/app/examples/Database/MySQLExample/.src/FTables.class b/app/examples/Database/MySQLExample/.src/FTables.class new file mode 100644 index 00000000..7d4fd2d7 --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/FTables.class @@ -0,0 +1,1186 @@ +' Gambas class file + +Private $sColumnSort As String + +Public Procedure _new() + + 'tvwTables definition + tvwTables.Columns.Count = 7 + tvwTables.Columns[0].Title = ("Name") + tvwTables.Columns[1].Title = ("Rows") + tvwTables.Columns[2].Title = ("Engine") + tvwTables.Columns[3].Title = ("Charset") + tvwTables.Columns[4].Title = ("Collation") + tvwTables.Columns[5].Title = ("Size") + tvwTables.Columns[6].Title = ("Update Time") + + 'tvwViews definition + tvwViews.Columns.Count = 7 + tvwViews.Columns[0].Title = ("Name") + tvwViews.Columns[1].Title = ("Updatable") + tvwViews.Columns[2].Title = ("Definer") + tvwViews.Columns[3].Title = ("Security") + tvwViews.Columns[4].Title = ("Check") + tvwViews.Columns[5].Title = ("Charset") + tvwViews.Columns[6].Title = ("Collation") + + 'tvwIndex definition + tvwIndexes.Columns.Count = 4 + tvwIndexes.Columns[0].Title = ("Name") + tvwIndexes.Columns[1].Title = ("Column") + tvwIndexes.Columns[2].Title = ("Collation") + tvwIndexes.Columns[3].Title = ("Type") + + 'tvwProcedures definition + tvwProcedures.Columns.Count = 8 + tvwProcedures.Columns[0].Width = 30 + tvwProcedures.Columns[1].Title = ("Name") + tvwProcedures.Columns[2].Title = ("Returns") + tvwProcedures.Columns[3].Title = ("Creation Time") + tvwProcedures.Columns[4].Title = ("Update Time") + tvwProcedures.Columns[5].Title = ("Type") + tvwProcedures.Columns[6].Title = ("Definer") + tvwProcedures.Columns[7].Title = ("Comment") + + 'tvwFields definition + tvwFields.Columns.Count = 10 + tvwFields.Columns[0].Width = 30 + tvwFields.Columns[1].Title = ("Name") + tvwFields.Columns[2].Title = ("Default") + tvwFields.Columns[3].Title = ("Nullable") + tvwFields.Columns[4].Title = ("DataType") + tvwFields.Columns[5].Title = ("Key") + tvwFields.Columns[6].Title = ("Extra") + tvwFields.Columns[7].Title = ("Charset") + tvwFields.Columns[8].Title = ("Collation") + tvwFields.Columns[9].Title = ("Comment") + + 'tvwTrigger definition + tvwTriggers.Columns.Count = 5 + tvwTriggers.Columns[0].Title = ("Name") + tvwTriggers.Columns[1].Title = ("Event") + tvwTriggers.Columns[2].Title = ("Table") + tvwTriggers.Columns[3].Title = ("Timing") + tvwTriggers.Columns[4].Title = ("Definer") + + 'tvwEvents definition + tvwEvents.Columns.Count = 19 + tvwEvents.Columns[0].Title = ("Name") + tvwEvents.Columns[1].Title = ("Definer") + tvwEvents.Columns[2].Title = ("Time Zone") + tvwEvents.Columns[3].Title = ("Type") + tvwEvents.Columns[4].Title = ("Execute At") + tvwEvents.Columns[5].Title = ("Interval Value") + tvwEvents.Columns[6].Title = ("Interval Field") + tvwEvents.Columns[7].Title = ("SQL Mode") + tvwEvents.Columns[8].Title = ("Starts") + tvwEvents.Columns[9].Title = ("Ends") + tvwEvents.Columns[10].Title = ("On Completion") + tvwEvents.Columns[11].Title = ("Created") + tvwEvents.Columns[12].Title = ("Last Altered") + tvwEvents.Columns[13].Title = ("Last Executed") + tvwEvents.Columns[14].Title = ("Originator") + tvwEvents.Columns[15].Title = ("Charset") + tvwEvents.Columns[16].Title = ("Collation") + tvwEvents.Columns[17].Title = ("Database Collation") + tvwEvents.Columns[18].Title = ("Comment") + + Catch + modMain.Error() + +End + +Public Procedure SearchInfo() 'Search for the info in the database + + Inc Application.Busy + tvwTables.Clear() + tvwTables.Rows.Count = 0 + tvwViews.Clear() + tvwViews.Rows.Count = 0 + tvwIndexes.Clear() + tvwIndexes.Rows.Count = 0 + tvwFields.Clear() + tvwFields.Rows.Count = 0 + tvwProcedures.Clear() + tvwProcedures.Rows.Count = 0 + tvwTriggers.Clear() + tvwTriggers.Rows.Count = 0 + tvwEvents.Clear() + tvwEvents.Rows.Count = 0 + + tabData[2].Text = ("Indexes") + tabData[3].Text = ("Fields") + 'Database's info + textResult.Text = modMain.$Connection.MySQL.DataBase.Info(modMain.$Connection.Name) + + TableInfo() + + 'Returns if the database is information_schema + If modMain.$Connection.Name = "information_schema" Then + Dec Application.Busy + Return + Endif + + ViewInfo() + + IndexInfo() + + RoutinesInfo() + + TriggersInfo() + + If modMain.$bSchemaOk Then EventInfo() + + Dec Application.Busy + Catch + modMain.Error() + +End + +Public Procedure FieldInfo(Optional Column As Integer) 'Field's Info + + Dim iCounter As Integer + + If tvwTables.Rows.Count = 0 Or tvwTables.Row = -1 Then Return 'Empty set or not table selected + tabData[3].Text = ("Fields on:") & " " & tvwTables[tvwTables.Row, 0].Text + Select (Column) + Case 1 + $sColumnSort = "COLUMN_NAME" + Case 2 + $sColumnSort = "COLUMN_DEFAULT" + Case 3 + $sColumnSort = "IS_NULLABLE" + Case 4 + $sColumnSort = "COLUMN_TYPE" + Case 5 + $sColumnSort = "COLUMN_KEY" + Case 6 + $sColumnSort = "EXTRA" + Case 7 + $sColumnSort = "CHARACTER_SET_NAME" + Case 8 + $sColumnSort = "COLLATION_NAME" + Case 9 + $sColumnSort = "COLUMN_COMMENT" + Default + $sColumnSort = "COLUMN_NAME" + End Select + modMain.$hResult = modMain.$Connection.Exec("SELECT `COLUMN_KEY`, `DATA_TYPE`, `EXTRA`, `COLUMN_NAME`, `COLUMN_DEFAULT`, `IS_NULLABLE`, `COLUMN_TYPE`, `CHARACTER_SET_NAME`, `COLLATION_NAME`, `COLUMN_COMMENT` FROM `information_schema`.`COLUMNS` WHERE `TABLE_NAME` = '" & tvwTables[tvwTables.Row, 0].Text & "' AND `TABLE_SCHEMA` = '" & modMain.$Connection.Name & "' ORDER BY `" & $sColumnSort & "`") + tvwFields.Rows.Count = modMain.$hResult.Count + For iCounter = 0 To modMain.$hResult.Max + Select (Upper(modMain.$hResult!DATA_TYPE)) + Case "INT", "MEDIUMINT", "TINYINT", "BOOL", "BOOLEAN", "SMALLINT", "INTEGER", "FLOAT", "BIGINT", "SERIAL", "DOUBLE", "DOUBLEPRECISION", "DECIMAL", "DEC" + tvwFields[iCounter, 0].Picture = Picture["icons/16/Numeric.png"] + Case "VARCHAR", "CHAR", "BIT", "BINARY", "VARBINARY", "TINYTEXT", "TEXT", "MEDIUMTEXT", "LONGTEXT", "SET", "ENUM" + tvwFields[iCounter, 0].Picture = Picture["icons/16/String.png"] + Case "DATE", "DATETIME", "TIME", "TIMESTAMP", "YEAR" + tvwFields[iCounter, 0].Picture = Picture["icons/16/Datetime.png"] + Case "TINYBLOB", "MEDIUMBLOB", "LONGBLOB", "BLOB" + tvwFields[iCounter, 0].Picture = Picture["icons/16/Blob.png"] + Default + tvwFields[iCounter, 0].Picture = Picture["icons/16/Field.png"] + End Select + Select (Upper(modMain.$hResult!COLUMN_KEY)) + Case "PRI" + tvwFields[iCounter, 0].Picture = Picture["icons/16/Primarykey.png"] + Case "MUL" + tvwFields[iCounter, 0].Picture = Picture["icons/16/Column_FK.png"] + Default + End Select + tvwFields[iCounter, 0].Alignment = Align.Center + tvwFields[iCounter, 1].Text = modMain.$hResult!COLUMN_NAME + tvwFields[iCounter, 2].Text = modMain.$hResult!COLUMN_DEFAULT + tvwFields[iCounter, 3].Text = modMain.$hResult!IS_NULLABLE + tvwFields[iCounter, 4].Text = modMain.$hResult!COLUMN_TYPE + tvwFields[iCounter, 5].Text = modMain.$hResult!COLUMN_KEY + tvwFields[iCounter, 6].Text = modMain.$hResult!EXTRA + tvwFields[iCounter, 7].Text = modMain.$hResult!CHARACTER_SET_NAME + tvwFields[iCounter, 8].Text = modMain.$hResult!COLLATION_NAME + tvwFields[iCounter, 9].Text = modMain.$hResult!COLUMN_COMMENT + If (iCounter Mod 2) = 0 Then + tvwFields[iCounter, 0].Background = Color.RGB(239, 243, 247) + tvwFields[iCounter, 1].Background = Color.RGB(239, 243, 247) + tvwFields[iCounter, 2].Background = Color.RGB(239, 243, 247) + tvwFields[iCounter, 3].Background = Color.RGB(239, 243, 247) + tvwFields[iCounter, 4].Background = Color.RGB(239, 243, 247) + tvwFields[iCounter, 5].Background = Color.RGB(239, 243, 247) + tvwFields[iCounter, 6].Background = Color.RGB(239, 243, 247) + tvwFields[iCounter, 7].Background = Color.RGB(239, 243, 247) + tvwFields[iCounter, 8].Background = Color.RGB(239, 243, 247) + tvwFields[iCounter, 9].Background = Color.RGB(239, 243, 247) + Endif + modMain.$hResult.MoveNext() + Next + tvwFields.Columns[0].Width = -1 + tvwFields.Columns[1].Width = -1 + tvwFields.Columns[2].Width = -1 + tvwFields.Columns[3].Width = -1 + tvwFields.Columns[4].Width = -1 + tvwFields.Columns[5].Width = -1 + tvwFields.Columns[6].Width = -1 + tvwFields.Columns[7].Width = -1 + tvwFields.Columns[8].Width = -1 + tvwFields.Columns[9].Width = -1 + + Catch + modMain.Error() + +End + +Public Procedure TableInfo(Optional Column As Integer) 'Table's Info + + Dim iCounter As Integer + + tvwTables.Clear() + Select (Column) + Case 0 + $sColumnSort = "TABLE_NAME" + Case 1 + $sColumnSort = "TABLE_ROWS" + Case 2 + $sColumnSort = "ENGINE" + Case 3 + $sColumnSort = "CHARSET" + Case 4 + $sColumnSort = "TABLE_COLLATION" + Case 5 + $sColumnSort = "DATA_LENGTH" + Case 6 + $sColumnSort = "UPDATE_TIME" + Default + $sColumnSort = "TABLE_NAME" + End Select + + modMain.$hResult = modMain.$Connection.Exec("SELECT `a`.`TABLE_NAME` AS `TABLE_NAME`, `a`.`ENGINE` AS ENGINE, `a`.`TABLE_ROWS` AS TABLE_ROWS, `a`.`UPDATE_TIME` AS UPDATE_TIME, `b`.`CHARACTER_SET_NAME` AS CHARSET, `a`.`TABLE_COLLATION` AS TABLE_COLLATION FROM `information_schema`.`TABLES` `a`, `information_schema`.`COLLATIONS` `b` WHERE `a`.`TABLE_SCHEMA` = '" & modMain.$Connection.Name & "' AND `a`.`TABLE_COLLATION` = `b`.`COLLATION_NAME` ORDER BY `" & $sColumnSort & "`") + tvwTables.Rows.Count = modMain.$hResult.Count + For iCounter = 0 To modMain.$hResult.Max + tvwTables[iCounter, 0].Text = modMain.$hResult!TABLE_NAME + If modMain.$hResult!TABLE_ROWS <> Null Then tvwTables[iCounter, 1].Text = Format(modMain.$hResult!TABLE_ROWS, "#,#") + tvwTables[iCounter, 1].Alignment = Align.Right + tvwTables[iCounter, 2].Text = modMain.$hResult!ENGINE + tvwTables[iCounter, 3].Text = modMain.$hResult!CHARSET + tvwTables[iCounter, 4].Text = modMain.$hResult!TABLE_COLLATION + If modMain.$hResult!UPDATE_TIME = Null + tvwTables[iCounter, 6].Picture = Picture["icons/24/Null.png"] + Else + tvwTables[iCounter, 6].Text = modMain.$hResult!UPDATE_TIME + Endif + tvwTables[iCounter, 5].Text = Format((modMain.$Connection.Exec("SELECT `DATA_LENGTH` FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = '" & modMain.$Connection.Name & "' AND `TABLE_NAME` = '" & modMain.$hResult!TABLE_NAME & "'")!DATA_LENGTH / 1024), "#,#.00 KB") + tvwTables[iCounter, 5].Alignment = Align.Right + If (iCounter Mod 2) = 0 Then + tvwTables[iCounter, 0].Background = Color.RGB(239, 243, 247) + tvwTables[iCounter, 1].Background = Color.RGB(239, 243, 247) + tvwTables[iCounter, 2].Background = Color.RGB(239, 243, 247) + tvwTables[iCounter, 3].Background = Color.RGB(239, 243, 247) + tvwTables[iCounter, 4].Background = Color.RGB(239, 243, 247) + tvwTables[iCounter, 5].Background = Color.RGB(239, 243, 247) + tvwTables[iCounter, 6].Background = Color.RGB(239, 243, 247) + Endif + modMain.$hResult.MoveNext() + Next + tvwTables.Columns[0].Width = -1 + tvwTables.Columns[1].Width = -1 + tvwTables.Columns[2].Width = -1 + tvwTables.Columns[3].Width = -1 + tvwTables.Columns[4].Width = -1 + tvwTables.Columns[5].Width = -1 + tvwTables.Columns[6].Width = -1 + + Catch + modMain.Error() + +End + +Public Procedure ViewInfo(Optional Column As Integer) 'View's Info + + Dim iCounter As Integer + + Select (Column) + Case 0 + $sColumnSort = "TABLE_NAME" + Case 1 + $sColumnSort = "IS_UPDATABLE" + Case 2 + $sColumnSort = "DEFINER" + Case 3 + $sColumnSort = "SECURITY_TYPE" + Case 4 + $sColumnSort = "CHECK_OPTION" + Case 5 + $sColumnSort = "CHARACTER_SET_CLIENT" + Case 6 + $sColumnSort = "COLLATION_CONNECTION" + Default + $sColumnSort = "TABLE_NAME" + End Select + modMain.$hResult = modMain.$Connection.Exec("SELECT * FROM `information_schema`.`VIEWS` WHERE `TABLE_SCHEMA` = '" & modMain.$Connection.Name & "' ORDER BY `" & $sColumnSort & "`") + tvwViews.Rows.Count = modMain.$hResult.Count + If modMain.$hResult.Available Then + tvwViews.Rows.Count = modMain.$hResult.Count + For iCounter = 0 To modMain.$hResult.Max + tvwViews[iCounter, 0].Text = modMain.$hResult!TABLE_NAME + tvwViews[iCounter, 1].Text = modMain.$hResult!IS_UPDATABLE + tvwViews[iCounter, 2].Text = modMain.$hResult!DEFINER + tvwViews[iCounter, 3].Text = modMain.$hResult!SECURITY_TYPE + tvwViews[iCounter, 4].Text = modMain.$hResult!CHECK_OPTION + If modMain.$bSchemaOk Then + tvwViews[iCounter, 5].Text = modMain.$hResult!CHARACTER_SET_CLIENT + tvwViews[iCounter, 6].Text = modMain.$hResult!COLLATION_CONNECTION + Else + tvwViews[iCounter, 5].Text = ("Not available") + tvwViews[iCounter, 6].Text = ("Not available") + Endif + If (iCounter Mod 2) = 0 Then + tvwViews[iCounter, 0].Background = Color.RGB(239, 243, 247) + tvwViews[iCounter, 1].Background = Color.RGB(239, 243, 247) + tvwViews[iCounter, 2].Background = Color.RGB(239, 243, 247) + tvwViews[iCounter, 3].Background = Color.RGB(239, 243, 247) + tvwViews[iCounter, 4].Background = Color.RGB(239, 243, 247) + tvwViews[iCounter, 5].Background = Color.RGB(239, 243, 247) + tvwViews[iCounter, 6].Background = Color.RGB(239, 243, 247) + Endif + modMain.$hResult.MoveNext() + Next + Endif + tvwViews.Columns[0].Width = -1 + tvwViews.Columns[1].Width = -1 + tvwViews.Columns[2].Width = -1 + tvwViews.Columns[3].Width = -1 + tvwViews.Columns[4].Width = -1 + tvwViews.Columns[5].Width = -1 + tvwViews.Columns[6].Width = -1 + + Catch + modMain.Error() + +End + +Public Procedure IndexInfo(Optional Column As Integer) 'Index's Info + + Dim iCounter As Integer + + If tvwTables.Rows.Count = 0 Or tvwTables.Row = -1 Then Return 'Empty set or not table selected + tabData[2].Text = ("Indexes on:") & " " & tvwTables[tvwTables.Row, 0].Text + tvwIndexes.Clear() + ' Select (Column) + ' Case 0 + ' $sColumnSort = "Key_name" + ' Case 1 + ' $sColumnSort = "Column_name" + ' Case 2 + ' $sColumnSort = "Collation" + ' Case 3 + ' $sColumnSort = "Index_type" + ' Default + ' $sColumnSort = "Key_name" + ' End Select + + modMain.$hResult = modMain.$Connection.Exec("SHOW INDEX FROM `" & modMain.$Connection.Name & "`.`" & tvwTables[tvwTables.Row, 0].Text & "`") + If modMain.$hResult.Available Then + tvwIndexes.Rows.Count = modMain.$hResult.Count + For iCounter = 0 To modMain.$hResult.Max + tvwIndexes[iCounter, 0].Text = modMain.$hResult!Key_name + tvwIndexes[iCounter, 1].Text = modMain.$hResult!Column_name + tvwIndexes[iCounter, 2].Text = modMain.$hResult!Collation + tvwIndexes[iCounter, 3].Text = modMain.$hResult!Index_type + If (iCounter Mod 2) = 0 Then + tvwIndexes[iCounter, 0].Background = Color.RGB(239, 243, 247) + tvwIndexes[iCounter, 1].Background = Color.RGB(239, 243, 247) + tvwIndexes[iCounter, 2].Background = Color.RGB(239, 243, 247) + tvwIndexes[iCounter, 3].Background = Color.RGB(239, 243, 247) + Endif + modMain.$hResult.MoveNext() + Next + Endif + tvwIndexes.Columns[0].Width = -1 + tvwIndexes.Columns[1].Width = -1 + tvwIndexes.Columns[2].Width = -1 + tvwIndexes.Columns[3].Width = -1 + + Catch + modMain.Error() + +End + +Public Procedure RoutinesInfo(Optional Column As Integer) 'Rotines's Info + + Dim iCounter As Integer + + tvwProcedures.Clear() + Select (Column) + Case 0 + $sColumnSort = "ROUTINE_TYPE" + Case 1 + $sColumnSort = "ROUTINE_NAME" + Case 2 + $sColumnSort = "DTD_IDENTIFIER" + Case 3 + $sColumnSort = "CREATED" + Case 4 + $sColumnSort = "LAST_ALTERED" + Case 5 + $sColumnSort = "ROUTINE_TYPE" + Case 6 + $sColumnSort = "DEFINER" + Case 7 + $sColumnSort = "ROUTINE_COMMENT" + Default + $sColumnSort = "ROUTINE_NAME" + End Select + + modMain.$hResult = modMain.$Connection.Exec("SELECT * FROM `information_schema`.`ROUTINES` WHERE `ROUTINE_SCHEMA` = '" & modMain.$Connection.Name & "' ORDER BY `" & $sColumnSort & "`") + If modMain.$hResult.Available Then + tvwProcedures.Rows.Count = modMain.$hResult.Count + For iCounter = 0 To modMain.$hResult.Max + If modMain.$hResult!ROUTINE_TYPE = "FUNCTION" Then + tvwProcedures[iCounter, 0].Picture = Picture["icons/16/Function.png"] + Else + tvwProcedures[iCounter, 0].Picture = Picture["icons/16/Routine.png"] + Endif + tvwProcedures[iCounter, 0].Alignment = Align.Center + tvwProcedures[iCounter, 1].Text = modMain.$hResult!ROUTINE_NAME + tvwProcedures[iCounter, 2].Text = modMain.$hResult!DTD_IDENTIFIER + tvwProcedures[iCounter, 3].Text = modMain.$hResult!CREATED + tvwProcedures[iCounter, 4].Text = modMain.$hResult!LAST_ALTERED + tvwProcedures[iCounter, 5].Text = modMain.$hResult!ROUTINE_TYPE + tvwProcedures[iCounter, 6].Text = modMain.$hResult!DEFINER + tvwProcedures[iCounter, 7].Text = modMain.$hResult!ROUTINE_COMMENT + If (iCounter Mod 2) = 0 Then + tvwProcedures[iCounter, 0].Background = Color.RGB(239, 243, 247) + tvwProcedures[iCounter, 1].Background = Color.RGB(239, 243, 247) + tvwProcedures[iCounter, 2].Background = Color.RGB(239, 243, 247) + tvwProcedures[iCounter, 3].Background = Color.RGB(239, 243, 247) + tvwProcedures[iCounter, 4].Background = Color.RGB(239, 243, 247) + tvwProcedures[iCounter, 5].Background = Color.RGB(239, 243, 247) + tvwProcedures[iCounter, 6].Background = Color.RGB(239, 243, 247) + tvwProcedures[iCounter, 7].Background = Color.RGB(239, 243, 247) + Endif + modMain.$hResult.MoveNext() + Next + Endif + tvwProcedures.Columns[0].Width = -1 + tvwProcedures.Columns[1].Width = -1 + tvwProcedures.Columns[2].Width = -1 + tvwProcedures.Columns[3].Width = -1 + tvwProcedures.Columns[4].Width = -1 + tvwProcedures.Columns[5].Width = -1 + tvwProcedures.Columns[6].Width = -1 + tvwProcedures.Columns[7].Width = -1 + + Catch + modMain.Error() + +End + +Public Procedure EventInfo(Optional Column As Integer) 'Event's Info + + Dim iCounter As Integer + + tvwEvents.Clear() + Select (Column) + Case 0 + $sColumnSort = "EVENT_NAME" + Case 1 + $sColumnSort = "DEFINER" + Case 2 + $sColumnSort = "TIME_ZONE" + Case 3 + $sColumnSort = "EVENT_TYPE" + Case 4 + $sColumnSort = "EXECUTE_AT" + Case 5 + $sColumnSort = "INTERVAL_VALUE" + Case 6 + $sColumnSort = "INTERVAL_FIELD" + Case 7 + $sColumnSort = "SQL_MODE" + Case 8 + $sColumnSort = "STARTS" + Case 9 + $sColumnSort = "ENDS" + Case 10 + $sColumnSort = "ON_COMPLETION" + Case 11 + $sColumnSort = "CREATED" + Case 12 + $sColumnSort = "LAST_ALTERED" + Case 13 + $sColumnSort = "LAST_EXECUTED" + Case 14 + $sColumnSort = "ORIGINATOR" + Case 15 + $sColumnSort = "CHARACTER_SET_CLIENT" + Case 16 + $sColumnSort = "COLLATION_CONNECTION" + Case 17 + $sColumnSort = "DATABASE_COLLATION" + Case 18 + $sColumnSort = "EVENT_COMMENT" + Default + $sColumnSort = "EVENT_NAME" + End Select + + modMain.$hResult = modMain.$Connection.Exec("SELECT * FROM `information_schema`.`EVENTS` WHERE `EVENT_SCHEMA` = '" & modMain.$Connection.Name & "' ORDER BY `" & $sColumnSort & "`") + If modMain.$hResult.Available Then + tvwEvents.Rows.Count = modMain.$hResult.Count + For iCounter = 0 To modMain.$hResult.Max + tvwEvents[iCounter, 0].Text = modMain.$hResult!EVENT_NAME + tvwEvents[iCounter, 1].Text = modMain.$hResult!DEFINER + tvwEvents[iCounter, 2].Text = modMain.$hResult!TIME_ZONE + tvwEvents[iCounter, 3].Text = modMain.$hResult!EVENT_TYPE + tvwEvents[iCounter, 4].Text = modMain.$hResult!EXECUTE_AT + tvwEvents[iCounter, 5].Text = modMain.$hResult!INTERVAL_VALUE + tvwEvents[iCounter, 6].Text = modMain.$hResult!INTERVAL_FIELD + tvwEvents[iCounter, 7].Text = modMain.$hResult!SQL_MODE + tvwEvents[iCounter, 8].Text = modMain.$hResult!STARTS + tvwEvents[iCounter, 9].Text = modMain.$hResult!ENDS + tvwEvents[iCounter, 10].Text = modMain.$hResult!ON_COMPLETION + tvwEvents[iCounter, 11].Text = modMain.$hResult!CREATED + tvwEvents[iCounter, 12].Text = modMain.$hResult!LAST_ALTERED + tvwEvents[iCounter, 13].Text = modMain.$hResult!LAST_EXECUTED + tvwEvents[iCounter, 14].Text = modMain.$hResult!ORIGINATOR + tvwEvents[iCounter, 15].Text = modMain.$hResult!CHARACTER_SET_CLIENT + tvwEvents[iCounter, 16].Text = modMain.$hResult!COLLATION_CONNECTION + tvwEvents[iCounter, 17].Text = modMain.$hResult!DATABASE_COLLATION + tvwEvents[iCounter, 18].Text = modMain.$hResult!EVENT_COMMENT + If (iCounter Mod 2) = 0 Then + tvwEvents[iCounter, 0].Background = Color.RGB(239, 243, 247) + tvwEvents[iCounter, 1].Background = Color.RGB(239, 243, 247) + tvwEvents[iCounter, 2].Background = Color.RGB(239, 243, 247) + tvwEvents[iCounter, 3].Background = Color.RGB(239, 243, 247) + tvwEvents[iCounter, 4].Background = Color.RGB(239, 243, 247) + tvwEvents[iCounter, 5].Background = Color.RGB(239, 243, 247) + tvwEvents[iCounter, 6].Background = Color.RGB(239, 243, 247) + tvwEvents[iCounter, 7].Background = Color.RGB(239, 243, 247) + tvwEvents[iCounter, 8].Background = Color.RGB(239, 243, 247) + tvwEvents[iCounter, 9].Background = Color.RGB(239, 243, 247) + tvwEvents[iCounter, 10].Background = Color.RGB(239, 243, 247) + tvwEvents[iCounter, 11].Background = Color.RGB(239, 243, 247) + tvwEvents[iCounter, 12].Background = Color.RGB(239, 243, 247) + tvwEvents[iCounter, 13].Background = Color.RGB(239, 243, 247) + tvwEvents[iCounter, 14].Background = Color.RGB(239, 243, 247) + tvwEvents[iCounter, 15].Background = Color.RGB(239, 243, 247) + tvwEvents[iCounter, 16].Background = Color.RGB(239, 243, 247) + tvwEvents[iCounter, 17].Background = Color.RGB(239, 243, 247) + tvwEvents[iCounter, 18].Background = Color.RGB(239, 243, 247) + Endif + modMain.$hResult.MoveNext() + Next + Endif + tvwEvents.Columns[0].Width = -1 + tvwEvents.Columns[1].Width = -1 + tvwEvents.Columns[2].Width = -1 + tvwEvents.Columns[3].Width = -1 + tvwEvents.Columns[4].Width = -1 + tvwEvents.Columns[5].Width = -1 + tvwEvents.Columns[6].Width = -1 + tvwEvents.Columns[7].Width = -1 + tvwEvents.Columns[8].Width = -1 + tvwEvents.Columns[9].Width = -1 + tvwEvents.Columns[10].Width = -1 + tvwEvents.Columns[11].Width = -1 + tvwEvents.Columns[12].Width = -1 + tvwEvents.Columns[13].Width = -1 + tvwEvents.Columns[14].Width = -1 + tvwEvents.Columns[15].Width = -1 + tvwEvents.Columns[16].Width = -1 + tvwEvents.Columns[17].Width = -1 + tvwEvents.Columns[18].Width = -1 + + Catch + modMain.Error() + +End + +Public Procedure TriggersInfo(Optional Column As Integer) 'Table's Info + + Dim iCounter As Integer + + tvwTriggers.Clear() + Select (Column) + Case 0 + $sColumnSort = "TRIGGER_NAME" + Case 1 + $sColumnSort = "EVENT_MANIPULATION" + Case 2 + $sColumnSort = "EVENT_OBJECT_TABLE" + Case 3 + $sColumnSort = "ACTION_TIMING" + Case 4 + $sColumnSort = "DEFINER" + Default + $sColumnSort = "TRIGGER_NAME" + End Select + + 'Triggers Info + modMain.$hResult = modMain.$Connection.Exec("SELECT `TRIGGER_NAME`, `EVENT_MANIPULATION`, `EVENT_OBJECT_TABLE`, `ACTION_TIMING`, `DEFINER` FROM `information_schema`.`TRIGGERS` WHERE `TRIGGER_SCHEMA` = '" & modMain.$Connection.Name & "' ORDER BY `" & $sColumnSort & "`") + If modMain.$hResult.Available Then + tvwTriggers.Rows.Count = modMain.$hResult.Count + For iCounter = 0 To modMain.$hResult.Max + tvwTriggers[iCounter, 0].Text = modMain.$hResult!TRIGGER_NAME + tvwTriggers[iCounter, 1].Text = modMain.$hResult!EVENT_MANIPULATION + tvwTriggers[iCounter, 2].Text = modMain.$hResult!EVENT_OBJECT_TABLE + tvwTriggers[iCounter, 3].Text = modMain.$hResult!ACTION_TIMING + tvwTriggers[iCounter, 4].Text = modMain.$hResult!DEFINER + If (iCounter Mod 2) = 0 Then + tvwTriggers[iCounter, 0].Background = Color.RGB(239, 243, 247) + tvwTriggers[iCounter, 1].Background = Color.RGB(239, 243, 247) + tvwTriggers[iCounter, 2].Background = Color.RGB(239, 243, 247) + tvwTriggers[iCounter, 3].Background = Color.RGB(239, 243, 247) + tvwTriggers[iCounter, 4].Background = Color.RGB(239, 243, 247) + Endif + modMain.$hResult.MoveNext() + Next + Endif + tvwTriggers.Columns[0].Width = -1 + tvwTriggers.Columns[1].Width = -1 + tvwTriggers.Columns[2].Width = -1 + tvwTriggers.Columns[3].Width = -1 + tvwTriggers.Columns[4].Width = -1 + + Catch + modMain.Error() + +End + +Public Sub Form_Open() + + Me.Text = "mysql://" & modMain.$Connection.User & "@" & modMain.$Connection.Host & "/" & modMain.$Connection.Name + cmbDatabases.List = modMain.$Connection.MySQL.Databases + cmbDatabases.Index = cmbDatabases.Find(modMain.$Connection.Name) + SearchInfo() + +End + +'***************************** Procedures for tables ************************** +Public Sub tvwTables_Select() + + If tvwTables.Row = -1 Then Return + textResult.Clear() + textResult.Text = modMain.$Connection.MySQL.Table.Info(tvwTables[tvwTables.Row, 0].Text) + FieldInfo() + IndexInfo() + Select (tvwTables.Column) + Case 0 + tvwTables.Edit() + Case 1, 5 + Return + Case 2 + tvwTables.Edit(modMain.$Connection.MySQL.Engines, True) + Case 3 + tvwTables.Edit(modMain.$Connection.MySQL.Charsets, True) + Case 4 + tvwTables.Edit(modMain.$Connection.MySQL.Collations, True) + Default + tvwTables.Edit() + End Select + Catch + modMain.Error() + +End + +Public Sub tvwTables_Save(Row As Integer, Column As Integer, Value As String) + + 'Alters the table definition, the value is never saved into the TableView, it is used to make the update + If tbtLock.Value Then Return + Select (Column) + Case 0 + modMain.$Connection.MySQL.Table.Rename(tvwTables[Row, 0].Text, Value) + Case 1, 5 + Return + Case 2 + modMain.$Connection.MySQL.Table.ModifyColumn(tvwTables[Row, 0].Text, "ENGINE",, Value) + Case 3 + modMain.$Connection.MySQL.Table.ModifyColumn(tvwTables[Row, 0].Text, "CHARACTER SET",, Value & " COLLATE " & Value & "_bin") + Case 4 + modMain.$Connection.MySQL.Table.ModifyColumn(tvwTables[Row, 0].Text, "CHARACTER SET",, tvwTables[Row, 3].Text & " COLLATE " & Value) + Default + End Select + RefreshData(tvwTables.Row, tabData.Index) + Catch + modMain.Error() + +End + +Public Sub tvwTables_DblClick() + + tabData.Index = 3 'Fields + +End +'***************************** End of Procedures for tables ******************* + +'***************************** Procedures for views *************************** +Public Sub tvwViews_Click() + + If tvwViews.Row = -1 Then Return + textResult.Text = modMain.$Connection.MySQL.View.Info(tvwViews[tvwViews.Row, 0].Text) + ViewInfo() + Catch + modMain.Error() + +End + +Public Sub tvwViews_DblClick() + + modMain.$hFNewView = New FNewView(Null, tvwViews[tvwViews.Row, 0].Text) + modMain.$hFNewView.ShowModal() + Catch + modMain.Error() + +End + +Public Sub tvwViews_Select() + + tvwViews_Click() + +End +'***************************** End of Procedures for views ******************** + +'***************************** Procedures for fields ********************* +Public Sub tvwFields_Click() + + 'If the tbtLock is true then the change is not made + If tbtLock.Value Then Return + Select (tvwFields.Column) + Case 0, 5, 6 + Return + Case 1, 2, 9 + tvwFields.Edit() + Case 3 + tvwFields.Edit(["YES", "NO"], True) + Case 7 + tvwFields.Edit(modMain.$Connection.MySQL.Charsets, True) + Case 8 + tvwFields.Edit(modMain.$Connection.MySQL.Collations, True) + Default + tvwFields.Edit() + End Select + Catch + modMain.Error() + +End + +Public Sub tvwFields_DblClick() + + 'If the tbtLock is true then the change is not made + If tbtLock.Value Then Return + If ValidateTableSelected() Then + modMain.$hFNewField = New FNewField(tvwTables[tvwTables.Row, 0].Text, Null, tvwFields[tvwFields.Row, 1].Text) + modMain.$hFNewField.ShowModal() + Endif + FieldInfo() + Catch + modMain.Error() + +End + +Public Sub tvwFields_Save(Row As Integer, Column As Integer, Value As String) + + Dim sDefinition As String + + Select (Column) + Case 0, 5, 6, 7, 8 + Return + Case 1 'Field name + modMain.$Connection.MySQL.Field.Rename(tvwTables[tvwTables.Row, 0].Text, tvwFields[Row, Column].Text, Value) + Case 2 'Default + If Value = "" Then + modMain.$Connection.MySQL.Table.ModifyColumn(tvwTables[tvwTables.Row, 0].Text, "ALTER", tvwFields[Row, 1].Text, "DROP DEFAULT") + Else + modMain.$Connection.MySQL.Table.ModifyColumn(tvwTables[tvwTables.Row, 0].Text, "ALTER", tvwFields[Row, 1].Text, "SET DEFAULT '" & Value & "'") + Endif + Case 3 'Nullable + sDefinition = tvwFields[Row, 4].Text + If Value = "NO" Then sDefinition &= " NOT NULL" + If tvwFields[Row, 2].Text <> "" Then sDefinition &= " DEFAULT '" & tvwFields[Row, 2].Text & "'" + If tvwFields[Row, 9].Text <> "" Then sDefinition &= " COMMENT '" & tvwFields[Row, 2].Text & "'" + modMain.$Connection.MySQL.Table.ModifyColumn(tvwTables[tvwTables.Row, 0].Text, "MODIFY", tvwFields[Row, 1].Text, sDefinition) + Case 4 'Datatype + sDefinition = Value + If tvwFields[Row, 3].Text = "NO" Then sDefinition &= " NOT NULL" + If tvwFields[Row, 2].Text <> "" Then sDefinition &= " DEFAULT '" & tvwFields[Row, 2].Text & "'" + If tvwFields[Row, 9].Text <> "" Then sDefinition &= " COMMENT '" & tvwFields[Row, 2].Text & "'" + modMain.$Connection.MySQL.Table.ModifyColumn(tvwTables[tvwTables.Row, 0].Text, "MODIFY", tvwFields[Row, 1].Text, sDefinition) + Case 9 'Comment + sDefinition = tvwFields[Row, 4].Text + If tvwFields[Row, 3].Text = "NO" Then sDefinition &= " NOT NULL" + If tvwFields[Row, 2].Text <> "" Then sDefinition &= " DEFAULT '" & tvwFields[Row, 2].Text & "'" + If Value <> "" Then sDefinition &= " COMMENT '" & Value & "'" + modMain.$Connection.MySQL.Table.ModifyColumn(tvwTables[tvwTables.Row, 0].Text, "MODIFY", tvwFields[Row, 1].Text, sDefinition) + Default + End Select + RefreshData(tvwTables.Row, tabData.Index) + Catch + modMain.Error() + +End +'***************************** End of Procedures for fields ******************** + +'***************************** Procedures for procedures *********************** +Public Sub tvwProcedures_Click() + + If tvwProcedures.Row = -1 Then Return + textResult.Text = modMain.$Connection.MySQL.Routines.Info(tvwProcedures[tvwProcedures.Row, 1].Text, modMain.$Connection.Name) + Catch + modMain.Error() + +End + +Public Sub tvwProcedures_DblClick() + + modMain.$hFNewRoutine = New FNewRoutine(Null, tvwProcedures[tvwProcedures.Row, 1].Text) + modMain.$hFNewRoutine.ShowModal() + RoutinesInfo() + Catch + modMain.Error() + +End + +Public Sub tvwProcedures_Select() + + tvwProcedures_Click() + +End +'***************************** End of Procedures for procedures **************** + +'***************************** Procedures for triggers ************************* +Public Sub tvwTriggers_Click() + + If tvwTriggers.Row = -1 Then Return + textResult.Text = modMain.$Connection.MySQL.Trigger.Info(tvwTriggers[tvwTriggers.Row, 0].Text, modMain.$Connection.Name) + Catch + modMain.Error() + +End + +Public Sub tvwTriggers_DblClick() + + modMain.$hFNewTrigger = New FNewTrigger(tvwTables[tvwTables.Row, 0].Text, Null, tvwTriggers[tvwTriggers.Row, 0].Text) + modMain.$hFNewTrigger.ShowModal() + TriggersInfo() + Catch + modMain.Error() + +End + +Public Sub tvwTriggers_Select() + + tvwTriggers_Click() + +End +'***************************** End of Procedures for triggers ****************** + +Public Sub tabData_Click() + + Select (tabData.Index) + Case 0 'Tables + tbtNew.ToolTip = ("New Table") + tbtDelete.ToolTip = ("Delete Table") + Case 1 'Views + tbtNew.ToolTip = ("New View") + tbtDelete.ToolTip = ("Delete View") + Case 2 'Indexes + tbtNew.ToolTip = ("New Index") + tbtDelete.ToolTip = ("Delete Index") + Case 3 'Fileds + tbtNew.ToolTip = ("New Field") + tbtDelete.ToolTip = ("Delete Field") + Case 4 'Routines + tbtNew.ToolTip = ("New Routine") + tbtDelete.ToolTip = ("Delete Routine") + Case 5 'Triggers + tbtNew.ToolTip = ("New Trigger") + tbtDelete.ToolTip = ("Delete Trigger") + Case 6 'Events + tbtNew.ToolTip = ("New Event") + tbtDelete.ToolTip = ("Delete Event") + Default + End Select + Catch + modMain.Error() + +End + +Public Sub Action_Activate(Name As String) As Boolean + + Select (Name) + Case "NewItem" 'tbtNew, F2 + If tbtLock.Value Then Return + NewItem() + RefreshData(tvwTables.Row, tabData.Index) + Case "EditItem" 'tbtNew, Ctrl + E + If tbtLock.Value Then Return + EditItem() + RefreshData(tvwTables.Row, tabData.Index) + Case "DeleteItem" 'tbtDelete, Del + If tbtLock.Value Then Return + DeleteItem() + RefreshData(tvwTables.Row, tabData.Index) + Case "Refresh" 'F5, tbtRefresh + RefreshData(tvwTables.Row, tabData.Index) + Case "NewDatabase" 'tbtNewDatabase + modMain.$hFNewDatabase = New FNewDatabase + modMain.$hFNewDatabase.ShowModal() + RefreshData(tvwTables.Row, tabData.Index) + Form_Open() + Case "DeleteDatabase" 'tbtDeleteDatabase + If Message.Question(Subst(("Do you realy want to delete the database: &1?"), modMain.$Connection.Name), ("&Yes"), ("&No")) = 1 Then + modMain.$Connection.MySQL.DataBase.Delete(modMain.$Connection.Name, False) + modMain.$Connection.MySQL.Use("mysql") + Form_Open() + Endif + RefreshData(tvwTables.Row, tabData.Index) + Case "Lock" + tbtDeleteDatabase.Enabled = Not tbtDeleteDatabase.Enabled + tbtNewDatabase.Enabled = Not tbtNewDatabase.Enabled + tbtNew.Enabled = Not tbtNew.Enabled + tbtDelete.Enabled = Not tbtDelete.Enabled + Default + End Select + Catch + modMain.Error() + +End + +Private Function ValidateTableSelected() As Boolean + + If tvwTables.Row = -1 Then Return False + Return True + +End + +Public Procedure NewItem() + + 'Add the item + Select (tabData.Index) + Case 0 'Tables + modMain.$hFNewTable = New FNewTable + modMain.$hFNewTable.ShowModal() + Case 1 'Views + modMain.$hFNewView = New FNewView(Null) + modMain.$hFNewView.ShowModal() + Case 2 'Indexes + If ValidateTableSelected() Then + modMain.$hFNewIndex = New FNewIndex(tvwTables[tvwTables.Row, 0].Text) + modMain.$hFNewIndex.ShowModal() + Endif + Case 3 'Fileds + If ValidateTableSelected() Then + modMain.$hFNewField = New FNewField(tvwTables[tvwTables.Row, 0].Text) + modMain.$hFNewField.ShowModal() + Endif + Case 4 'Routines + modMain.$hFNewRoutine = New FNewRoutine + modMain.$hFNewRoutine.ShowModal() + Case 5 'Triggers + If ValidateTableSelected() Then + modMain.$hFNewTrigger = New FNewTrigger(tvwTables[tvwTables.Row, 0].Text) + modMain.$hFNewTrigger.ShowModal() + Endif + Case 6 'Events + modMain.$hFNewEvent = New FNewEvent + modMain.$hFNewEvent.ShowModal() + Default + End Select + RefreshData(tvwTables.Row, tabData.Index) + +End + +Public Procedure EditItem() + + Select (tabData.Index) + Case 0 'Tables + modMain.$hFNewTable = New FNewTable(Null, tvwTables[tvwTables.Row, 0].Text) + modMain.$hFNewTable.ShowModal() + TableInfo() + Case 1 'Views + tvwViews_DblClick() + Case 2 'Indexes + tvwIndexes_DblClick() + Case 3 'Fileds + tvwFields_DblClick() + Case 4 'Routines + tvwProcedures_DblClick() + Case 5 'Triggers + tvwTriggers_DblClick() + Case 6 'Events + tvwEvents_DblClick() + Default + End Select + Catch + modMain.Error() + +End + +Public Procedure DeleteItem() + + Select (tabData.Index) + Case 0 'Tables + If Message.Question(Subst(("Do you realy want to delete the table: &1?"), tvwTables[tvwTables.Row, 0].Text), ("&Yes"), ("&No")) = 1 Then modMain.$Connection.MySQL.Table.Delete([tvwTables[tvwTables.Row, 0].Text], False) + Case 1 'Views + If Message.Question(Subst(("Do you realy want to delete the view: &1?"), tvwViews[tvwViews.Row, 0].Text), ("&Yes"), ("&No")) = 1 Then modMain.$Connection.MySQL.View.Delete([tvwViews[tvwViews.Row, 0].Text], False) + Case 2 'Indexes + If Message.Question(Subst(("Do you realy want to delete the index: &1?"), tvwIndexes[tvwIndexes.Row, 0].Text), ("&Yes"), ("&No")) = 1 Then modMain.$Connection.MySQL.Index.Delete(tvwTables[tvwTables.Row, 0].Text, tvwIndexes[tvwIndexes.Row, 0].Text) + Case 3 'Fileds + If Message.Question(Subst(("Do you realy want to delete the field: &1?"), tvwFields[tvwFields.Row, 1].Text), ("&Yes"), ("&No")) = 1 Then modMain.$Connection.MySQL.Table.ModifyColumn(tvwTables[tvwTables.Row, 0].Text, "DROP", tvwFields[tvwFields.Row, 1].Text) + Case 4 'Routines + If Message.Question(Subst(("Do you realy want to delete the routine: &1?"), tvwProcedures[tvwProcedures.Row, 1].Text), ("&Yes"), ("&No")) = 1 Then modMain.$Connection.MySQL.Routines.Delete(tvwProcedures[tvwProcedures.Row, 1].Text, False) + Case 5 'Triggers + If Message.Question(Subst(("Do you realy want to delete the trigger: &1?"), tvwTriggers[tvwTriggers.Row, 0].Text), ("&Yes"), ("&No")) = 1 Then modMain.$Connection.MySQL.Trigger.Delete(tvwTriggers[tvwTriggers.Row, 0].Text, False) + Case 6 'Events + If Message.Question(Subst(("Do you realy want to delete the event: &1?"), tvwEvents[tvwEvents.Row, 0].Text), ("&Yes"), ("&No")) = 1 Then modMain.$Connection.MySQL.Event.Delete(tvwEvents[tvwEvents.Row, 0].Text, False) + Default + End Select + modMain.$hFBrowser.SetMessage(("Item deleted."), 1) + +End + +Public Procedure RefreshData(Table As Integer, Tab As Integer) + + textResult.Clear() + SearchInfo() + If Table = -1 Then Table = 0 + tvwTables.Row = Table + FieldInfo() + IndexInfo() + tabData.Index = Tab + +End + +Public Procedure SetEditor() + + textResult.SetStyle() + +End + +'***************************** Procedures for events ************************* +Public Sub tvwEvents_Click() + + textResult.Text = modMain.$Connection.MySQL.Event.Info(tvwEvents[tvwEvents.Row, 0].Text, modMain.$Connection.Name) + Catch + modMain.Error() + +End + +Public Sub tvwEvents_DblClick() + + If Not modMain.$bSchemaOk Then Return + modMain.$hFNewEvent = New FNewEvent(Null, tvwEvents[tvwEvents.Row, 0].Text) + modMain.$hFNewEvent.ShowModal() + EventInfo() + Catch + modMain.Error() + +End + +Public Sub tvwEvents_Select() + + tvwEvents_Click() + +End + +'***************************** Procedures for indexes ************************* +Public Sub tvwIndexes_DblClick() + + modMain.$hFNewIndex = New FNewIndex(tvwTables[tvwTables.Row, 0].Text, Null, tvwIndexes[tvwIndexes.Row, 0].Text) + modMain.$hFNewIndex.ShowModal() + IndexInfo() + Catch + modMain.Error() + +End +'***************************** End of Procedures for indexes ************************* + +'**************************** Procedures for sorting info ******************** +Public Sub tvwFields_ColumnClick(Column As Integer) + + FieldInfo(Column) + +End + +Public Sub tvwTables_ColumnClick(Column As Integer) + + TableInfo(Column) + +End + +Public Sub tvwViews_ColumnClick(Column As Integer) + + ViewInfo(Column) + +End + +Public Sub tvwIndexes_ColumnClick(Column As Integer) + + IndexInfo(Column) + +End + +Public Sub tvwProcedures_ColumnClick(Column As Integer) + + RoutinesInfo(Column) + +End + +Public Sub tvwTriggers_ColumnClick(Column As Integer) + + TriggersInfo(Column) + +End + +Public Sub tvwEvents_ColumnClick(Column As Integer) + + EventInfo(Column) + +End +'**************************** End of Procedures for sorting info ************** + +Public Sub tvwTables_Menu() + + mnuItem.Popup() + +End + +Public Sub tvwViews_Menu() + + mnuItem.Popup() + +End + +Public Sub tvwIndexes_Menu() + + mnuItem.Popup() + +End + +Public Sub tvwFields_Menu() + + mnuItem.Popup() + +End + +Public Sub tvwProcedures_Menu() + + mnuItem.Popup() + +End + +Public Sub tvwTriggers_Menu() + + mnuItem.Popup() + +End + +Public Sub tvwEvents_Menu() + + mnuItem.Popup() + +End + +Public Sub cmbDatabases_Click() + + modMain.$Connection.MySQL.Use(cmbDatabases.Text) + Me.Text = "mysql://" & modMain.$Connection.User & "@" & modMain.$Connection.Host & "/" & modMain.$Connection.Name + SearchInfo() + +End diff --git a/app/examples/Database/MySQLExample/.src/FTables.form b/app/examples/Database/MySQLExample/.src/FTables.form new file mode 100644 index 00000000..fb079f0a --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/FTables.form @@ -0,0 +1,206 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,99,72) + Tag = "Catalogs" + Text = ("Tables") + Icon = Picture["icons/16/Table.png"] + Arrangement = Arrange.Fill + { mnuItem Menu + Text = ("Item") + Visible = False + { mnuNewItem Menu + Action = "NewItem" + Text = ("New Item") + Picture = Picture["icons/16/New.png"] + Shortcut = "F2" + } + { mnuEditItem Menu + Action = "EditItem" + Text = ("Edit Item") + Picture = Picture["icon:/16/edit"] + Shortcut = "Ctrl+E" + } + { mnuDeleteItem Menu + Action = "DeleteItem" + Text = ("Delete Item") + Picture = Picture["icon:/16/trash"] + Shortcut = "Ctrl+Del" + } + { mnuRefresh Menu + Action = "Refresh" + Text = ("Refresh") + Picture = Picture["icons/16/Refresh.png"] + Shortcut = "F5" + } + } + { vplMain VSplit + MoveScaled(0,0,98,71) + Expand = True + { vbxTables VBox + MoveScaled(1,1,97,37) + { tbrMain ToolBar + MoveScaled(0,1,84,4) + { tbtLock ToolButton + MoveScaled(0,0,4,4) + ToolTip = ("Lock") + Action = "Lock" + Picture = Picture["icons/16/Lock.png"] + Toggle = True + } + { Separator2 Separator + MoveScaled(5,0,1,4) + } + { tbtNew ToolButton + MoveScaled(7,0,4,4) + ToolTip = ("New Table") + Action = "NewItem" + Picture = Picture["icons/16/New.png"] + } + { tbtDelete ToolButton + MoveScaled(11,0,4,4) + ToolTip = ("Delete Table") + Action = "DeleteItem" + Picture = Picture["icon:/16/trash"] + } + { tbtRefresh ToolButton + MoveScaled(15,0,4,4) + ToolTip = ("Refresh") + Action = "Refresh" + Picture = Picture["icons/16/Refresh.png"] + } + { Separator1 Separator + MoveScaled(19,0,1,4) + } + { tbtNewDatabase ToolButton + MoveScaled(21,0,4,4) + ToolTip = ("New Database") + Action = "NewDatabase" + Picture = Picture["icons/16/Database.png"] + } + { tbtDeleteDatabase ToolButton + MoveScaled(27,0,4,4) + ToolTip = ("Delete Database") + Action = "DeleteDatabase" + Picture = Picture["icon:/16/remove"] + } + { Separator3 Separator + MoveScaled(32,0,1,4) + } + { cmbDatabases ComboBox + MoveScaled(35,0,24,4) + ReadOnly = True + Sorted = True + } + } + { tabData TabStrip + MoveScaled(1,8,95,26) + Expand = True + Arrangement = Arrange.Fill + Count = 7 + Index = 0 + Text = ("Tables") + Picture = Picture["icons/16/Table.png"] + { tvwTables TableView + MoveScaled(1,3,41,16) + Mode = Select.Single + Header = GridView.Both + } + Index = 1 + Text = ("Views") + Picture = Picture["icons/16/View.png"] + { tvwViews TableView + MoveScaled(1,2,35,13) + Expand = True + Mode = Select.Single + Header = GridView.Both + } + Index = 2 + Text = ("Indexes") + Picture = Picture["icons/16/Index.png"] + { tvwIndexes TableView + MoveScaled(1,3,40,15) + Expand = True + Mode = Select.Single + Header = GridView.Both + } + Index = 3 + Text = ("Fields on:") + Picture = Picture["icons/16/Field.png"] + { tvwFields TableView + MoveScaled(2,3,39,16) + Mode = Select.Single + Header = GridView.Both + } + Index = 4 + Text = ("Routines") + Picture = Picture["icons/16/Routine.png"] + { tvwProcedures TableView + MoveScaled(1,3,41,16) + Expand = True + Mode = Select.Single + Header = GridView.Both + } + Index = 5 + Text = ("Triggers") + Picture = Picture["icons/16/Trigger.png"] + { tvwTriggers TableView + MoveScaled(1,2,41,16) + Expand = True + Mode = Select.Single + Header = GridView.Both + } + Index = 6 + Text = ("Events") + Picture = Picture["icon:/16/clock"] + { tvwEvents TableView + MoveScaled(2,2,41,16) + Expand = True + Mode = Select.Single + Header = GridView.Both + } + Index = 0 + } + } + { textResult TextArea + MoveScaled(1,39,96,32) + } + } +} + +# Gambas Action File 3.0 + +{ Actions + { Action DeleteDatabase + Text = "Delete Database" + Picture = "icon:/16/remove" + } + { Action DeleteItem + Text = "Delete Item" + Shortcut = "Ctrl+Del" + Picture = "icon:/16/trash" + } + { Action EditItem + Text = "Edit Item" + Shortcut = "Ctrl+E" + Picture = "icon:/16/edit" + } + { Action Lock + Text = "Lock" + Picture = "icons/16/Lock.png" + } + { Action NewDatabase + Text = "New Database" + Picture = "icons/16/Database.png" + } + { Action NewItem + Text = "New Item" + Shortcut = "F2" + Picture = "icons/16/New.png" + } + { Action Refresh + Text = "Refresh" + Shortcut = "F5" + Picture = "icons/16/Refresh.png" + } +} diff --git a/app/examples/Database/MySQLExample/.src/modMain.module b/app/examples/Database/MySQLExample/.src/modMain.module new file mode 100644 index 00000000..1c969160 --- /dev/null +++ b/app/examples/Database/MySQLExample/.src/modMain.module @@ -0,0 +1,69 @@ +' Gambas module file + +Public $Connection As New Connection +Public $hResult As Result +Public $Host As String +Public $Password As String +Public $Port As String +Public $User As String +Public $bSchemaOk As Boolean = True +Public $hFTables As FTables +Public $hFNewTable As FNewTable +Public $hFNewView As FNewView +Public $hFNewDatabase As FNewDatabase +Public $hFNewIndex As FNewIndex +Public $hFNewRoutine As FNewRoutine +Public $hFMessage As FMessage +Public $hFNewTrigger As FNewTrigger +Public $hFNewField As FNewField +Public $hFNewEvent As FNewEvent +Public $hFConnect As FConnect + +Public Procedure Main() + + $hFConnect = New FConnect + If $hFConnect.ShowModal() Or Not $Host Or Not $Password Or Not $Port Or Not $User Then Return + With $Connection + .Type = "mysql" + .Name = "mysql" + .Host = $Host + .Password = $Password + .Port = $Port + .User = $User + .Open() + End With + If Not $Connection.Opened Then Return + If CInt($Connection.MySQL.Version.MinorVersion()) < 1 Then + $bSchemaOk = False + Message.Warning(("Seems that your MySQL version is lower than 5.1.\ntherefore you will get some error and warning messages.")) + Endif + Try $Connection.MySQL.Use(Settings["/General/LastDatabase", "mysql"]) + $hFTables = New FTables + $hFTables.ShowModal() + Catch + Message.Error(Error.Where & "::" & Error.Text) + +End + +Public Procedure Error(Optional Message As String) + + Dec Application.Busy + If Error.Text Like "*MySQL server has gone away" Then + $Connection.Close() + $Connection = Null + $Connection = New Connection + With $Connection + .Type = "mysql" + .Name = "mysql" + .Host = $Host + .Password = $Password + .Port = $Port + .User = $User + .Open() + End With + Endif + If Not Message Then Message = Error.Where & "::" & Error.Text + modMain.$hFMessage = New FMessage(Message) + modMain.$hFMessage.ShowModal() + +End diff --git a/app/examples/Database/MySQLExample/icons/16/Admin.png b/app/examples/Database/MySQLExample/icons/16/Admin.png new file mode 100644 index 0000000000000000000000000000000000000000..44ff99df10f2fb1f32768671d75eca895e88652e GIT binary patch literal 1099 zcmV-R1ho5!P)w{4;0HGr`YL|;LMybw1`OLe3ZZj=>olLreB5j#*3GDHojh)b0s;gJ z4iQapgE(An1qTTN0Rk;MMO%TBZl=F$qr6aeiXJO900000000320SgTe7ab!N8zBe^ z3;+ND0001ox5KN>*tON)v(?|H&DeObz&nSZjJ?c}!_$tz(vri~lf~7P#nqa~*oC~! zE{duhcamhMzG zz|(EC%x$&JZnVv2ugG1g!aSL{2y>Spgr+QwuQ!&ra<$C6+vc~~gv&~zq z$V{TYHZ~)W+cH#Ng@2;p(l_;eWoXORcaJbP>ro%9qy(W&b9fqnwoV#JL%cj!d_WAqr`1;!H z^SR&bp3~)u$K7$c(NU(uGMKy`h^(j5;OX=Cyx!}k*XX3z=$X*sgv8ovw9ZPU#6zIL zE03{EqrrE&(1gO*h{oKL&ESyB--g87bh^`7tjJ5K$xEijIGDIkrNU*h&2_rdd%o3p zywq*C&|k33T(Z$+u*_4d%1@`nR;tHbuF7Ds%xAgOXRpg~vB}p~F}eT%07-OGPE!B? z0000000000Gm_Bo>BxvC0)PAOW&@gndtn~w*AH=6q>Z|vuAGE?Jo@%NsHg-d+}toT z%gj9&@U}WOr=Hcbz7Z7A-VPysK zg@i>sy}W&V{Y1ssfCB8|68-^!LBS!RVc`*y9IOnSQjt;7F|l#+35iL`DblPAGP0>@ z>9HA^S=l+cdHHhk3Ma3nhW#tu>Rn;}MiVRA1^$m?p%`L6XZS5VMUCIn9-95d1 z{SzimnmlFdwCOWc8PsOZnmuRky!i_jE?T@~=`wW&jpZv=u3Eij?Yi|FHg4LyMUz2G zduwmsw(UE1?%KU)?>-$}23EcO2M!)OeB|h{<0np@(l=mWH8eVX=Ipui7cO49e8t#= zm4TJj)a>fD>o;!Rx_!sof)ymdYH4L{bN8;ToxKAqM1a-N$=Su#&D{gU1^}|JV=qq- Rh@b!f002ovPDHLkV1n0V@Bf6>|CG+}V~oa(oW?P&LPD);d(ORUy{(+*|8u?XN}S#RO0|lT#6q<~2y+M! zdk_e75CB?x0At1gW6lg=ylQZLTD4jLQUCx-003hEDU_5DgtZ8S&IonPV|awDxVRyE zApki5LZw1uy<=avU}JoFxz5h#|Np|+*bs9N4PXyofOwP#+`_`r(#o0%EMQ}6 zXK&)*=;Z9;%FF^1aI>La-;UEwZ85JE9 z8yBCz$sm)Ml$4a5lA4yDk&&6j#mxY8v1WF5PHtX)L17UOFCWxLjQj$ELdC)&qGB)s gpoqAHq^KAp0BThwQ%&gz2mk;807*qoM6N<$f+9>2VgLXD literal 0 HcmV?d00001 diff --git a/app/examples/Database/MySQLExample/icons/16/Column_FK.png b/app/examples/Database/MySQLExample/icons/16/Column_FK.png new file mode 100644 index 0000000000000000000000000000000000000000..3a2999f124ac2d04088eadd26b5394dc115eeb0c GIT binary patch literal 529 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMf&j6ng*Z=?j1DQaOlbV_y6Jw;M zl@b?Mk)K}}6Jx5T1{BXoNT|rmEA;R%k(MqKt3=I1Ysj&>9m2Pv?%t#onm zla^*>VgeZi22SGQC7PPvQc^68j4&}MZ73+1p{mM)q!=QhFCgFrRF5H!tbNC#Mdxj=FZOld-nWaz50J==ikW4_aPx`Y;Eu4=KfDe z_!JuYI3Qr3v-5Fx_q%?6TO1swo0%=nWSs>x+NvbT4;UECiib319^TVnlz#Y7UGm;T zy%WdetlmD$l4aqJ`TSx+oHhr$O7WNeTsJ8$jp92!?rfStNy-K?tV!*=ih!o{db&7< zNL)@%aA5DrU{E{IqITfSp)REZ$MTLIJlQJn;MvA)8=pRX+{F2T`^HUc3oA~pLPyq? zxv?>K@7UV7y6jY7N_rG`&u(9x(4?SC0*sQ8mj4?ZDp_4sQ#%^ER?VuKu%~U=G_w%a z>3!?w?Q2}NaEjoWC_UL^;b0E=R|a~r#>L#qDa(r`Uq&pd;^SjrT*3d}drF}QDC9g{ L{an^LB{Ts5Hh!x| literal 0 HcmV?d00001 diff --git a/app/examples/Database/MySQLExample/icons/16/Database.png b/app/examples/Database/MySQLExample/icons/16/Database.png new file mode 100644 index 0000000000000000000000000000000000000000..a4f2fa4cdd49b69bfef57ea38b3c825fcdd07eda GIT binary patch literal 805 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47&iy_gt-3y{~suFVXgY*^=fBV zDxFv=e`LP&{#g>cr-}CEgS6k@rE_4=?tYK`^DKZ25c`1Z?x~6p_Ol}{ zCufPm*sdpMi2&J84m+QiDSUgo@s2+J$GbK6&y)rV-rQ=uXM!+9<-Oew$EJgH-Q8_} zWSYp8^?Ez{gzjtsI>un{46S9YQb4JmVyTO(RW7bnJhx2##C+)!3uI0%lsz(EA>L0A zVhA$%;zIf7yOaJtTlDwQw0{q${(C&<|$|NCm)-zT&GJz4ng z<;MT-kN^90>F0|ze;-Z#cfaq~lhw~pCqF!q_4Y>J_opkr-JACORN#-rgVZ@UZ8%+gblV9R2_0hFgIf1XYJ{bt|A^`?){)_r__=;xwLi}$y}CZ}=HcoKJ5moU zve`4+@Ypi*Q!9<{?DPHm?%2o-$I?t6Kl3vG`6I{i{f9cw_a7SHe|-A7dMEeWkE&eX zf2e)`@$OUBzki)<1}pEs`1j)BdVd`WVR>ymaW)nQpn-QhT^vIsE+;1>q@<)Ir6r~& zKY#FqX_KUc#Lmi?yLW7D_U@^z`1!+;iD_TmKgM^Bjt3PNHaQ(~V4P@RKf$BIC1A;l z85RK!N?KNG*X$Ma>=XloyreV~CQq3&Y1XuP6K77<)n*r(;D74m+0*(OI$Gz#7`Qd2 z9boaAdVuLv>Qm9FKUqVsnr_t!TIImFb=R-9W6PdRySA;Yl-GAbgV-UST-ga+u`La9 zH+cT?&2U)G7;)gjiq*T-_b=GK{{9V?oVJxSceXCQ%91S|ZC%YCyntc)j>VIwZ0_#f eJZ17?3vmYfr4ApfrT=~hB^FOtKbLh*2~7a3w3D>} literal 0 HcmV?d00001 diff --git a/app/examples/Database/MySQLExample/icons/16/Datetime.png b/app/examples/Database/MySQLExample/icons/16/Datetime.png new file mode 100644 index 0000000000000000000000000000000000000000..0baf9a18ad1aa2cc5d161065067a22196763c43d GIT binary patch literal 1140 zcmV-)1dIELP)zrFwf z0313xCQVHS4GqP_!q?>N%hlP*&CtTo+L@S^xw^U3=I`$L|NZsr^YrPk-sO&^vxS9* z$=KoW`~Um@|Lp(&z2V|ze21*m?2DPBgMx(rnMMD5DgSB~|7H;XXcwrOlhNAX`R?QC z|Npnu)JsoKX@{Q3 zz=yWb(Bkm4r>%>Om*VE-v)1Lj;J0b{KM=2 z;`98Any$Xz@5tiu(%$Fd+}h#F!SUP9x}TVrueZGB`MJW&eSmZ|S z=JMC!=JxUM(>gVO=&cpQY z>*(9l+uGN0eSNvk&gcLC!r0if)%4cj=lb^Z?&96>@bKp1;N#-p&BnZJgoLBZ%hCS+ z)BgU@{{F1j*VyCi<>cex(8cKH?R4zyWzNpv=gw$7+}z>C#?Gm! zvRbybYS-6WxVXW@&bYY1m6f1KlaoFGP(%O#07`UHPE!B?00000004UV`T6;X0dac` zC^vP9GGBVE(Bu91`M~`^{c`>JPvk7|!PDDD*Y?=>-A@sY)|*=<8ea0+{a&vTbc6WGrdV73*egJ=ffr5jCg@%WSiHeJijUNCYj*pO$l9QB`mY0~B znwud2BAlI`pP-?lqok##r>G+a03@lZtE{cAuduPQv$Q291^~6Tx45~wyS%-=zrex5 zCnx|Z!^FkL$H>Xb%goKr&(JCWE78)^)YaD4*xB0J+uSTI0509$-{9fmFEBCVSAIB`3o8JOr5%W@7_nRUr$)OcH52}Kfiwm`gF_p?}78@Z{D`;``52m|Nrm*`#0tK zb*Hwr-r2KnzkmPv|Nm3}|4;b#E$!B=^lR5*_wF@JNon7|fA;U+wVyvHUAdBS_H6R; z?A>cyTWfpF^ghrL9wkA3zyL-Ard2AM#}erUe1!GU=OEK_TEU2mQY6Nq?pqC}sYEAip+Qgg=G2mg*1a>lPJH|60oV+#2D z`YzC<<(@8%ArhC96BL*Xj0`t(aB*(lw6VCriFJpIi|vskJ0CLH2u+$7cQ5GDo&ZKW z$w>Kl`~M7;M1%>*wwy2}x}2w+ES3 z666OoCaq(p(%pB0F1tfl8J{UXwdX(+P%hEa#W6(U^3=ZDd<_O1&f(>Wvz>qckJrB4 zW2koQ1oy*$jJdycbe6a;==W6ONfBJIfk``>{S3B)nzX w*L>#NvIC!wzr57u9e-9P^_j$jd0*;fJ6c$LcPa(H1X{-6>FVdQ&MBb@0MLYGXaE2J literal 0 HcmV?d00001 diff --git a/app/examples/Database/MySQLExample/icons/16/Index.png b/app/examples/Database/MySQLExample/icons/16/Index.png new file mode 100644 index 0000000000000000000000000000000000000000..391fd0041c3e5d65b852d9b9db2fe6896fdca447 GIT binary patch literal 1122 zcmV-o1fBbdP)_9tq*ECvaF40s;X5007{wE5e>Kj&d3o5(WSO z0Ih`?n0q90S{7kU5+xoA4h#kW000000JVq+(5pI(a2|DC7g0eJDiPMBrl$S*v;Y6P|NpW7 z|H{9@#s2^Q=>Pwi`u#(dng9Q*|NoT#{+Iv%oaE-Ih>wW0zQyo!;S)!qJby(2U8# ziQLnk^}3;v}ga7J<|LlkV?uY;IiU073|L%eD%18L&r2puU|KooD z=7Rs_d;j5c^wwtX$57U^M*ixl{@HH%&sFBYOU|i1yOblhlr26yxK9880Ah4fPE!B? z0000000000001+E2?h%b2ru211uE9_^WIbrK;D%HpYhA|lLPdpC+~po`+M)uJn#L1 z7VpzH2=DiM^Ug8{=J?uQ7lZP>u5v^h1X2Fx(57fqE*=m923mquDIf*|+Tq&g0003M zNklt)JUABD1%2lh^tX;R> z#MF$ze8a{~b(=SD*}84}j-3{kRt(m=cJJA{Z{NQC2M!*xu{GmhuseL@=&|D`PM$h_ z=B&MgBL{=ix$_q;Ub=kc>NRHPx# literal 0 HcmV?d00001 diff --git a/app/examples/Database/MySQLExample/icons/16/Lock.png b/app/examples/Database/MySQLExample/icons/16/Lock.png new file mode 100644 index 0000000000000000000000000000000000000000..a39c1a9afa9c5d31e1d7892a1ffccef8416dc2a0 GIT binary patch literal 1195 zcmV;c1XTNpP)f0008bP)t-s00018 zlPr0dq3#GSLnp0mcBvBj0Ez>uZ9ewD6pikg0y zwwbTQtG>;+%G0K|%ay0WhMKc&gPnbrww$rWx60F*tHghjtYvwUdXu!1sllY969@OXZ$*8@_tHR8YtGtArw9nV#tGmjEp{a+Ws;aum zk)^zuufm(J$cme`uEWflv%-a-vW}&=+~MfG$kwB@#HF>x;pOX^t-+D0yq2uQlBL0@ zz{-!RxqX?dsJO`V_4e%V^3vJj?C$aP_4c*G(TbzCkf^_nqQ0KC!ib}@d6lN7wZ-%F z_3G{Lth>kS?eO&U^|8OsgrBjBq`HTlxsIl^g`ci>lA@!t!t(O-^7He!#L%_D&hYW_ zuDr{Co2`SMwSJYcft#v!k)WZlzx4F~9Jac;@Vi85LvF{{Gu<9s&XrA1FP0wAkCZe?lrD9~C(Rh;je`0W3*G zK~xyi0U-h2{r~^~009940|W&I2LS;900000009UI3JVMk4i69!0RR91000sb6cu4& zV`LT=7#RQn000^r9A#!_XlZI|Y#kmS001B%B5iJOaB*^Tbai$kBqabQCwF*xdV73* zet&?0f+#5fDuaZDhKGoWii>lMjgF5i04$J^l9QB`mX~RmnVOrNEdVZ^o}ZwhqNAgv zrKYE-sV@L9s;jK6uCK7Lv9hzYwYD(;GPk(7y1Tr+zQ4S{!NS8c05mnk#m2wK$jQ9Q z%goI-Hvl*}&d<=%($mz{*4NnCIy(S7JwDpo+}+;a;NjxqKR`hM0YXDWTV?=P#TeawY{tz*&@4h`4B3xO|0n{1s-P1LEQ<+>;2@kF=Pxt?S{gM zX*=H9Fkyk%gck;kT5z>*Mlu)BcroL|I~ybxyjsAR5h4Sg>M&wLXYcg5+E2P6wPMnY zQ3Iao@kED58VC)zbYI3{b3{t-lmoBL_}_#PJ%n03)L>8rfgT+_Q%~fc2`gS2@LZ4o zbQsoPNDZC}{YnhXfz>S?lD-#P@tpps$73A?8t^sXs_|eJ1A4IT$=K~|_BG*O7kd7_ zc)zLnPG@JQf|T(Gxq>0y5T8quWIdYl={BrvI9ysrq3J(!^Y`8v z7jMb>x2ICxXQM{<=pH4w$}WZyzh~>?uD!Fa-Z&KmFtSH@1d-`)8hYqrs`3N_*RYj zTax`?nEzv(|8$=4m!7iE-v5ND>VB&EhOzmKv-ym$?~t?bpuY5(q_xZ3|ES6Kp}+2= z!SJBF>8#B5xX9ML$>W!!x5e21uFLqa%k8Pf@wU+Msk_(etANy~m5!OMzt;bux#hCU z_LQvMldtBPuh`0sa=N6cjhnK-)&G{V=6saUpuF*utJt5t@2JG*qrmR0xVX8`|Ea_D zx6tpJwd1wS^^>jKnzQGOrP*wGe7Vlf=l}o0*x0qq|CX@fm$2)Os^ou{(~+*~fSAT( zeuSgT%hCS+)BgU@{{F1j*Rsq1nz!wWq}86g@u|V*n6Teff{JIbu$uk-q5l4({{El- z{+a##Zoa;*#{Z$Z?6uGLjiua{ujYuN-(-NSI&XAh$;ou>?R4zyWzNp9$^Vh8>3)^m zj;!!@j?jCN&1iY1QDS#mwzg{5*IT%_k*MK>n$>oPwsnA^dx4dOhmJ^-lPI0cB>(^b zLUdA2Qvd)5H%3rZaFM8~Vy*i8`S|ez^d`Y9?f&E6D(v7T<=`yo!QtCR&_W?^Mx=iubxW`F=5UMFW4 zS2uSLPpE*Gw~w!%e?VYRFjRmqBs45MA~GsE1}eZG8yBCDn3SB73KbAYOV7y6%FfBn zg9-@d7Zes1mz0*3GYT;R0fTTwWmR=eZC!nXh^QDyK)kW3xuvzOy+cB>Q%V{rAk)>| z)7#fSVdA98Q>MzwF*3+cn?7Uatl4ws&YQnr;UWb^2BpPImM&YqV&$sUYu2t?zd@Nn zW#gvJTefc7zGLUEUAyV|I)z#BCIA>^N rY{Fn_W^Q3=Wo=_?XYb%>Y{Cct>$+5S?~kx!00000NkvXXu0mjf`SVAR literal 0 HcmV?d00001 diff --git a/app/examples/Database/MySQLExample/icons/16/Primarykey.png b/app/examples/Database/MySQLExample/icons/16/Primarykey.png new file mode 100644 index 0000000000000000000000000000000000000000..e09d139ed0f17256939edef506853bb342c5410f GIT binary patch literal 585 zcmV-P0=E5$P)GV;?QwU!0sy$1H-N%Pe(^4mT0&mePO1M=1{(YPbm!9dcl z5&!@I_u^0Aw-*2a0QBBO(ySB!0088~7W?a0kar0H000000OH3a`sPjg(dPI6at8S0OX{Oef#;!pk5 zDE;zq{q9)(>1h4hF#Xad{qbr2>{9*bLjB-1{n#u0&?EfmO#I+G{Mau1(kA@QA^qh` z{M|PG^N07}JpJ%={qAA?>rwsZL;d48{oXH>xYH^C002RBQchC<000Mb!^wdT0=W0| z&k<0{wu1wb#0`bM5it3D2?25W{j4Mc(Yh(m>^TL`@EXtSG0*Nr&%PMX`$Jmwh8iaq zT3hA40001#NklQT8CjTsoV-GKgrbtN9NbhD)yOC{bzy|P3>wjz zTG~i_2AvpPJw{{!{a6D-WIlsYoUw@tvVdv4nK=`(fJK6(l^n8wwT-PEihzo}1Jnor Xs^=3K{;}=3xW13 zmjw9%?U(Ji{43?(EE5UynSaBbKhJja+4fUh@cSVy_RSBAtPInye|7r(0jRvz)5S4F z;&N&KOQ9wMo|ftfP3#>_>KZ5Z{kNX9q|D9jrv1sf$xEV>|DF8Vqw!hqr$a!XK|ueW z8#(2_WjL5*rcULP%bLK@|2X~Yk?a_qSuei!F=SubP0l+XkK*n639 literal 0 HcmV?d00001 diff --git a/app/examples/Database/MySQLExample/icons/16/Routine.png b/app/examples/Database/MySQLExample/icons/16/Routine.png new file mode 100644 index 0000000000000000000000000000000000000000..7a83453bbaf40f2db075fcfd4470ae438f6b9541 GIT binary patch literal 827 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 B`jG$t literal 0 HcmV?d00001 diff --git a/app/examples/Database/MySQLExample/icons/16/Trigger.png b/app/examples/Database/MySQLExample/icons/16/Trigger.png new file mode 100644 index 0000000000000000000000000000000000000000..0ef24449c87af539ad5b2c1b38747f8b327e8da7 GIT binary patch literal 930 zcmV;T16}-yP)aSRvYASqRTZLqr zVMA#|I6~K%Yn6&$8LA-~y&DM93Ujz~MRYJEsv#hvA-j|9}A3aDca>$gkw z!%y$LL)WoYwUkD>hZoJ77tNUtq+kH{#8B$DJ?pkJ>$EK4t|{889oM4~zKboKZWrRN zGv~H3sACARatP3v34?2dJU=_wrY8}#6b#S~cffd%fR95;K>(2h0Imuf%ODEQ3wgVH zk9?0pM?nOR1puuFCf6h&&>#)X4_doihqzVt103psI8P6LQ z$r>-JGZ&N^0G9v&rU(F;1r2oo9?~Bh&K?cQ5d_N$0L%se!3qGh3jm}B8O<6Epa2V# z01C~j1a{8+#y>dW`ut-LjilB2`ttpHdh9+Q+|TF`EeW>akA=~vw6-v2Jxcb^ zyzXnB=^B-~&bI&n0OLtSK~xyiV_<*+MkZz!RyKARmxGhbKY*Kumk-M47YGar4hant z6oT-DMMT3RBBP>X#Ka}Q0+O+D@d=4Z$tkI6QeXk;^o-1`?3~=Z`~n#eUsg_Dp|Gg9 zq_nJDQ3)iVtfHz`QCU@8Q(LFbz@VY2rCr~kqpPRiXkch$%)nsM)ZEhA*4|-iW^Tb? zX~n=`-PzUM)7#f?V`~R-!-R>GCQq3`AhW>=`c+}u4pw|IH``1(Qk01}Wtqwq6OJOBUy07*qoM6N<$ Eg0Fg!u>b%7 literal 0 HcmV?d00001 diff --git a/app/examples/Database/MySQLExample/icons/16/View.png b/app/examples/Database/MySQLExample/icons/16/View.png new file mode 100644 index 0000000000000000000000000000000000000000..255a8e23be181824fda3537107fb9df1e694b637 GIT binary patch literal 697 zcmV;q0!ICbP)T)mm)jm%;hw>;2^F{o?8U;pzR}=ltE}{MzOG*W>)v;r!Cz z`_JC{%-#ErxAL9I`R(!jJ4M&&^Zw@X{o?NZ-|YR{>iv+r?wrT>_WJ*!#`@gl{LbC` zm$~od@crKG{o3mN*693>xa*q5_VoGxr_J~J{QvX#{_6Ao;qLv{==_$t=-ur7+3Ee( z=ls&;{EfBenZxt(_x_~E^3&q`&EouuvE-M)@b2~fpTX>wxbMl}{D`gKmA&oi^Zc5* z<;vjvmAU7|-us5C+>^TM=kWZ5rr3g`)q$YWfS=Kkvf;to`-G<1k+$aO^8Uo#`;4pF zz1jPZv*YCO{oU*R(d7HP*!zg3)wB9eVNOAm&y3p@2vm;00wkYPE#B|PZm5oAm{B=0002oNklB?5Kc|frFEii<^g+k6%DgNLWOai9t*pqEWq~w&;G@!QhjLfX;943a`y!?W~A}7z{lGxJhvT`Pdipr{L|A3nG+PeDkhRjAL f24)r}WWWjly{9gAMsoG@00000NkvXXu0mjfQWmu$ literal 0 HcmV?d00001 diff --git a/app/examples/Database/MySQLExample/icons/16/Warning.png b/app/examples/Database/MySQLExample/icons/16/Warning.png new file mode 100644 index 0000000000000000000000000000000000000000..4997cb9222cb0ed478b3c36eae0b36fc0ff1186b GIT binary patch literal 543 zcmV+)0^t3LP)A{= zedXol@$vD9h=_J}cK!YRxw*N5f`Y=r!j+Ykh=_=ZiHTBDQn|Ug^78VFi;GZDP}SAd zprD{QI5^(k-pXJ=3G605<>O=l}2T@3642hlhv9$H!`FYQDa{VPRpBk&%0Q zd)wpx;Nal;`uc-|gWKEN^YinFh=`Y$m(kJDot>Sks;X~qZ(UtoUS3{pZEa>qnH2y4 z04{V=PE!B?06~bAm6erYYTEqmrekgD?O|c+rUI4irj?bI?WSSsrfur&V{Pi~remb0 z4|6Y{0001SQ3;>{)AYA$?_0a$T002ovPDHLkV1nCU*Nd$B zVb9#-lCGGcGWox7z7aFCa^R_ld1)$6hTK}>NzBT3GJ8BsLJXCetvWp?%aky@*XN$b T_|VJ>XcmK~tDnm{r-UW|sJS1i literal 0 HcmV?d00001 diff --git a/app/examples/Database/PictureDatabase/.directory b/app/examples/Database/PictureDatabase/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Database/PictureDatabase/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Database/PictureDatabase/.icon.png b/app/examples/Database/PictureDatabase/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..983d37059f21a3a981c41ead71ba92c498b2a8c2 GIT binary patch literal 4228 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 akN*eZUZ?bJ#UmI10000, 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: PictureDatabase\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2011-03-20 21:43+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: .project:1 +msgid "Picture Database Viewer" +msgstr "Visualitzador de la base de dades d'imatges" + +#: FormPictureDatabase.class:68 +msgid "Thumb" +msgstr "Miniatura" + +#: FormPictureDatabase.class:70 +msgid "Description" +msgstr "Descripció" + +#: FormPictureDatabase.class:101 +msgid "Add image to database" +msgstr "Afegeix una imatge a la base de dades" + +#: FormPictureDatabase.class:113 +msgid "Are you sure you want to delete image " +msgstr "Segur que voleu suprimir la imatge" + +#: FormPictureDatabase.class:114 +msgid "" +" from the database:\n" +"\n" +msgstr "" +"de la base de dades:\n" +"\n" + +#: FormPictureDatabase.class:115 +msgid "Cancel" +msgstr "Canceŀla" + +#: FormPictureDatabase.class:115 +msgid "Delete" +msgstr "Suprimeix" + +#: FormPictureDatabase.class:127 +msgid "Save image from database" +msgstr "Desa la imatge de la base de dades" + +#: FormPictureDatabase.class:131 +msgid "" +"Error saving image:\n" +"\n" +msgstr "" +"Error en desar la imatge:\n" +"\n" + +#: FormPictureDatabase.class:252 +msgid "Picture Database" +msgstr "Base de dades d'imatges" + +#: FormPictureDatabase.class:276 +msgid "Remove Image from database" +msgstr "Suprimeix la imatge de la base de dades" + +#: FormPictureDatabase.class:286 +msgid "Export image from database" +msgstr "Exporta la imatge de la base de dades" + +#: FormPictureDatabase.class:296 +msgid "Update image description" +msgstr "Actualitza la descripció de la imatge" + diff --git a/app/examples/Database/PictureDatabase/.lang/cs.po b/app/examples/Database/PictureDatabase/.lang/cs.po new file mode 100644 index 00000000..944ccb3e --- /dev/null +++ b/app/examples/Database/PictureDatabase/.lang/cs.po @@ -0,0 +1,75 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Picture Database Viewer" +msgstr "Prohlížeč obrázkové databáze" + +#: FormPictureDatabase.class:68 +msgid "Thumb" +msgstr "Náhled" + +#: FormPictureDatabase.class:70 +msgid "Description" +msgstr "Popis" + +#: FormPictureDatabase.class:113 +msgid "Are you sure you want to delete image " +msgstr "Jste si jisti, že chcete smazat obrázek" + +#: FormPictureDatabase.class:114 +msgid "" +" from the database:\n" +"\n" +msgstr "" +" z databáze:\n" +"\n" + +#: FormPictureDatabase.class:115 +msgid "Cancel" +msgstr "Zrušit" + +#: FormPictureDatabase.class:115 +msgid "Delete" +msgstr "Smazat" + +#: FormPictureDatabase.class:127 +msgid "Save image from database" +msgstr "Uložit obázek z databáze" + +#: FormPictureDatabase.class:131 +msgid "" +"Error saving image:\n" +"\n" +msgstr "" +"Chyba při ukládání obrázku:\n" +"\n" + +#: FormPictureDatabase.form:21 +msgid "Picture Database" +msgstr "Obrázková databáze" + +#: FormPictureDatabase.form:39 +msgid "Add image to database" +msgstr "Přidej obtázek do databáze" + +#: FormPictureDatabase.form:45 +msgid "Remove Image from database" +msgstr "Odstranit obrázek z databáze" + +#: FormPictureDatabase.form:55 +msgid "Export image from database" +msgstr "Export obrázku z databáze" + +#: FormPictureDatabase.form:65 +msgid "Update image description" +msgstr "Aktualizace popisu obrázku" diff --git a/app/examples/Database/PictureDatabase/.lang/de.po b/app/examples/Database/PictureDatabase/.lang/de.po new file mode 100644 index 00000000..5a0fb81b --- /dev/null +++ b/app/examples/Database/PictureDatabase/.lang/de.po @@ -0,0 +1,76 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Picture Database Viewer" +msgstr "Bilddatenbank-Betrachter" + +#: FormPictureDatabase.class:68 +msgid "Thumb" +msgstr "Vorschau" + +#: FormPictureDatabase.class:70 +msgid "Description" +msgstr "Beschreibung" + +#: FormPictureDatabase.class:113 +msgid "Are you sure you want to delete image " +msgstr "Soll dieses Bild wirklich gelöscht werden " + +#: FormPictureDatabase.class:114 +msgid "" +" from the database:\n" +"\n" +msgstr "" +" aus der Datenbank:\n" +"\n" + +#: FormPictureDatabase.class:115 +msgid "Cancel" +msgstr "Abbrechen" + +#: FormPictureDatabase.class:115 +msgid "Delete" +msgstr "Löschen" + +#: FormPictureDatabase.class:127 +msgid "Save image from database" +msgstr "Bild aus der Datenbank spechern" + +#: FormPictureDatabase.class:131 +msgid "" +"Error saving image:\n" +"\n" +msgstr "" +"Fehler beim Speichern des Bildes:\n" +"\n" + +#: FormPictureDatabase.form:21 +msgid "Picture Database" +msgstr "Bilddatenbank" + +#: FormPictureDatabase.form:39 +msgid "Add image to database" +msgstr "Bild zur Datenbank hinzufügen" + +#: FormPictureDatabase.form:45 +msgid "Remove Image from database" +msgstr "Bild aus der Datenbank entfernen" + +#: FormPictureDatabase.form:55 +msgid "Export image from database" +msgstr "Bild aus der Datenbank exportieren" + +#: FormPictureDatabase.form:65 +msgid "Update image description" +msgstr "Bildbeschreibung aktualisieren" diff --git a/app/examples/Database/PictureDatabase/.lang/es.po b/app/examples/Database/PictureDatabase/.lang/es.po new file mode 100644 index 00000000..65910ccc --- /dev/null +++ b/app/examples/Database/PictureDatabase/.lang/es.po @@ -0,0 +1,36 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FormPictureDatabase.class:270 +msgid "Add image to database" +msgstr "Agregar imagen a la base de datos" + +#: FormPictureDatabase.class:288 +msgid "Export image from database" +msgstr "Exportar imagen desde la base de datos" + +#: FormPictureDatabase.class:252 +msgid "Picture Database" +msgstr "Base de datos de imágenes" + +#: .project:1 +msgid "Picture Database Viewer" +msgstr "Visor de la base de datos de imágenes" + +#: FormPictureDatabase.class:277 +msgid "Remove Image from database" +msgstr "Remover imagen de la base de datos" + +#: FormPictureDatabase.class:299 +msgid "Update image description" +msgstr "Actualizar descripción de la imagen" + diff --git a/app/examples/Database/PictureDatabase/.lang/nl.po b/app/examples/Database/PictureDatabase/.lang/nl.po new file mode 100644 index 00000000..bf304c93 --- /dev/null +++ b/app/examples/Database/PictureDatabase/.lang/nl.po @@ -0,0 +1,67 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PictureDatabase 3.5.90\n" +"PO-Revision-Date: 2014-09-25 21:01 UTC\n" +"Last-Translator: Willy Raets \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Picture Database Viewer" +msgstr "AfbeeldingsDatabase Viewer" + +#: FormPictureDatabase.form:21 +msgid "Picture Database" +msgstr "AfbeeldingsDatabase" + +#: FormPictureDatabase.form:39 +msgid "Add image to database" +msgstr "Afbeelding aan database toevoegen" + +#: FormPictureDatabase.form:45 +msgid "Remove Image from database" +msgstr "Verwijder Afbeelding uit Database" + +#: FormPictureDatabase.form:55 +msgid "Export image from database" +msgstr "Exporteer afbeelding uit database" + +#: FormPictureDatabase.form:65 +msgid "Update image description" +msgstr "Afbeeldingomschrijving updaten" + +#: FormPictureDatabase.class:68 +msgid "Thumb" +msgstr "Pictogrammen" + +#: FormPictureDatabase.class:70 +msgid "Description" +msgstr "Omschrijving" + +#: FormPictureDatabase.class:113 +msgid "Are you sure you want to delete image " +msgstr "Weet je zeker dat je de afbeelding wilt verwijderen?" + +#: FormPictureDatabase.class:114 +msgid " from the database:\n\n" +msgstr " van de database:\n\n" + +#: FormPictureDatabase.class:115 +msgid "Delete" +msgstr "Verwijder" + +#: FormPictureDatabase.class:115 +msgid "Cancel" +msgstr "Annuleer" + +#: FormPictureDatabase.class:127 +msgid "Save image from database" +msgstr "Afbeelding uit database opslaan" + +#: FormPictureDatabase.class:131 +msgid "Error saving image:\n\n" +msgstr "Fout bij opslaan van afbeelding:\n\n" + diff --git a/app/examples/Database/PictureDatabase/.lang/ru.po b/app/examples/Database/PictureDatabase/.lang/ru.po new file mode 100644 index 00000000..703b9564 --- /dev/null +++ b/app/examples/Database/PictureDatabase/.lang/ru.po @@ -0,0 +1,194 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-30 08:04+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Database/PictureDatabase/.project:25 +msgid "Picture Database Viewer" +msgstr "Просмотрщик базы данных изображений" + +#: app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:1 +msgid "sqlite3" +msgstr "sqlite3" + +#: app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:2 +msgid "mysql" +msgstr "mysql" + +#: app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:3 +msgid "postgresql" +msgstr "postgresql" + +#: app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:4 +msgid "Could not open database connection" +msgstr "Не удалось открыть соединение с базой данных" + +#: app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:5 +msgid "Database not found. Creating new database" +msgstr "База данных не найдена. Создание новой базы данных" + +#: app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:6 +msgid "Could not open database" +msgstr "Не удалось открыть базу данных" + +#: app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:7 app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:9 app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:12 app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:18 +msgid "pictures" +msgstr "изображения" + +#: app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:8 +msgid "Database tables not found. Creating new pictures table" +msgstr "Таблицы базы данных не найдены. Создание новой таблицы изображений" + +#: app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:10 +msgid "Database connection error:" +msgstr "Ошибка подключения к базе данных:" + +#: app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:11 +msgid "Error:" +msgstr "Ошибка:" + +#: app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:13 +msgid "Image" +msgstr "Изображение" + +#: app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:14 +msgid "added:" +msgstr "добавлено:" + +#: app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:15 +msgid "Done in" +msgstr "Завершено за" + +#: app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:16 +msgid "s" +msgstr "с" + +#: app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:17 +msgid "Add database record error


Error:
" +msgstr "Ошибка добавления записи базы данных
Ошибка:
" + +#: app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:19 +msgid "Select database records error
Error:
" +msgstr "Ошибка выбора записей базы данных
Ошибка:
" + +#: app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:20 +msgid "Update database record error
Error:
" +msgstr "Ошибка обновления записи базы данных
Ошибка:
" + +#: app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:21 +msgid "Delete database record error
Error:
" +msgstr "Ошибка удаления записи базы данных
Ошибка:
" + +#: app/examples/Database/PictureDatabase/.src/ModuleDatabase.module:22 +msgid "Error closing database" +msgstr "Ошибка закрытия базы данных" + +#: app/examples/Database/PictureDatabase/.src/FormPictureDatabase.class:101 app/examples/Database/PictureDatabase/.src/FormPictureDatabase.form:19 +msgid "Add image to database" +msgstr "Добавить изображение в базу данных" + +#: app/examples/Database/PictureDatabase/.src/FormPictureDatabase.class:113 +msgid "Are you sure you want to delete image " +msgstr "Вы уверены, что хотите удалить изображение " + +#: app/examples/Database/PictureDatabase/.src/FormPictureDatabase.class:114 +msgid "" +" from the database:\n" +"\n" +msgstr "" +" из базы данных:\n" +"\n" + +#: app/examples/Database/PictureDatabase/.src/FormPictureDatabase.class:115 +msgid "Delete" +msgstr "Удалить" + +#: app/examples/Database/PictureDatabase/.src/FormPictureDatabase.class:115 +msgid "Cancel" +msgstr "Отмена" + +#: app/examples/Database/PictureDatabase/.src/FormPictureDatabase.class:127 +msgid "Save image from database" +msgstr "Сохранить изображение из базы данных" + +#: app/examples/Database/PictureDatabase/.src/FormPictureDatabase.class:131 +msgid "" +"Error saving image:\n" +"\n" +msgstr "" +"Ошибка сохранения изображения:\n" +"\n" + +#: app/examples/Database/PictureDatabase/.src/FormPictureDatabase.class:208 +msgid "All Graphics" +msgstr "Все графические" + +#: app/examples/Database/PictureDatabase/.src/FormPictureDatabase.class:211 +msgid "Portable Network Graphics" +msgstr "Портативная сетевая графика" + +#: app/examples/Database/PictureDatabase/.src/FormPictureDatabase.class:213 +msgid "Joint Photographic Experts Group" +msgstr "Объединённая группа фото-экспертов" + +#: app/examples/Database/PictureDatabase/.src/FormPictureDatabase.class:215 +msgid "Windows Bitmap" +msgstr "Растр Windows" + +#: app/examples/Database/PictureDatabase/.src/FormPictureDatabase.class:217 +msgid "Graphics Interchange Format" +msgstr "Графический формат обмена" + +#: app/examples/Database/PictureDatabase/.src/FormPictureDatabase.class:219 +msgid "X PixMap" +msgstr "X PixMap" + +#: app/examples/Database/PictureDatabase/.src/FormPictureDatabase.class:222 +msgid "All Files" +msgstr "Все файлы" + +#: app/examples/Database/PictureDatabase/.src/FormPictureDatabase.form:5 +msgid "Picture Database" +msgstr "База данных изображений" + +#: app/examples/Database/PictureDatabase/.src/FormPictureDatabase.form:24 +msgid "Remove Image from database" +msgstr "Удалить изображение из базы данных" + +#: app/examples/Database/PictureDatabase/.src/FormPictureDatabase.form:32 +msgid "Export image from database" +msgstr "Экспортировать изображение из базы данных" + +#: app/examples/Database/PictureDatabase/.src/FormPictureDatabase.form:40 +msgid "Update image description" +msgstr "Обновить описание изображения" + +#: app/examples/Database/PictureDatabase/.src/workaround:1 +msgid "Thumb" +msgstr "Эскиз" + +#: app/examples/Database/PictureDatabase/.src/workaround:2 +msgid "Description" +msgstr "Описание" + diff --git a/app/examples/Database/PictureDatabase/.project b/app/examples/Database/PictureDatabase/.project new file mode 100644 index 00000000..1f962604 --- /dev/null +++ b/app/examples/Database/PictureDatabase/.project @@ -0,0 +1,25 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.5.90 +Title=Picture Database Viewer +Startup=FormPictureDatabase +Icon=Images/image-x-generic.png +Version=3.6.2 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.form +Component=gb.db +Authors="Timothy Marshal-Nichols\ntimothy.marshal-nichols@ntlworld.com" +Environment="GB_GUI=gb.gtk" +TabSize=2 +Translate=1 +Language=fr +Maintainer=fabien +Vendor=Princeton +Address=fabien@arcalis +License=General Public Licence +Packager=1 +Systems=slackware +Menus=slackware:"Electronics" +Categories=slackware:"Database;Documentation" +Groups=slackware:"Development/Tools" diff --git a/app/examples/Database/PictureDatabase/.src/FormPictureDatabase.class b/app/examples/Database/PictureDatabase/.src/FormPictureDatabase.class new file mode 100644 index 00000000..7e3b884d --- /dev/null +++ b/app/examples/Database/PictureDatabase/.src/FormPictureDatabase.class @@ -0,0 +1,227 @@ +' Gambas class file + +''' +' Name: FormPictureDatabase +' Author: Timothy Marshal-Nichols +' eMail: timothy.marshal-nichols@ntlworld.com +' Version: 1.0 +' Version Date: April 2007 +' Version History: +' +''' +' Licence Information +' +' This program is free software; you can redistribute it and/or modify +' it under the terms of the GNU General Public License as published by +' the Free Software Foundation; either version 2 of the License, or +' (at your option) any later version. +' +' This program is distributed in the hope that it will be useful, +' but WITHOUT ANY WARRANTY; without even the implied warranty of +' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +' GNU General Public License for more details. +' +' You should have received a copy of the GNU General Public License +' along with this program; if not, write to the Free Software +' Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +' +' http://www.gnu.org/licenses/gpl.html +' +''' +' Description: +' +' Provides the interface to the pictures database. +' +''' +' Developed using Gambas2 Version +' +' Version: 1.9.48 +' +' Gambas Components Used: +' +' gb - Gambas internal native classes +' gb.qt - Graphical QT toolkit component +' +' Look in the Project menu then Properties... and select +' the Components tab. Check that the listed components +' are in the project. +' +''' +' External Dependencies: +' +' None. +' +''' +' Class Usage: +' +' Set as startup class +' +''' + +Public Sub Form_Open() + + 'DB.Debug = True + + Me.Center() + Dialog.Path = User.Home + GridViewImages.Columns.Count = 2 + GridViewImages.Columns[0].Text = ("Thumb") + GridViewImages.Columns[0].Width = 1.5 * ModuleDatabase.ThumbSize + GridViewImages.Columns[1].Text = ("Description") + GridViewImages.Columns[1].Width = 300 + ' Open database + ' + ' Use somthing like this for a SQLite3 database + ModuleDatabase.OpenDatabase("sqlite3", User.Home, Application.Name & ".db", "", "") + ' + ' Use somthing like this for a MySQL database + 'ModuleDatabase.OpenDatabase("mysql", "", Application.Name, "root", "") + ' + ' Use somthing like this for a PostgreSQL database + 'ModuleDatabase.OpenDatabase("postgresql", "localhost", Application.Name, "timothy", "password") + ' + ' Display the database content + ModuleDatabase.Select() + DisplayImages() +Catch + PanelButtons.Enabled = False + Message.Warning(ERROR.Text) +End + +Public Sub Form_Close() + ModuleDatabase.CloseDatabase() +End + +''' +''' Buttons +''' + +Public Sub ToolButtonAdd_Click() + Dialog.Filter = FileFilter(True) + Dialog.Title = ("Add image to database") + If Dialog.OpenFile() Then Return + ModuleDatabase.Add(Dialog.Path) + ModuleDatabase.Select() + DisplayImages() +Catch + Message.Warning(ERROR.Text) +End + +Public Sub ToolButtonRemove_Click() + Dim m As String + If GridViewImages.Row >= 0 Then + m = ("Are you sure you want to delete image ") & (GridViewImages.Row + 1) + m &= (" from the database:\n\n") & TextAreaDescription.Text + If Message.Question(m, ("Delete"), ("Cancel")) = 1 Then + ModuleDatabase.Delete(GridViewImages.Row) + ModuleDatabase.Select() + DisplayImages() + End If + End If +Catch + Message.Warning(ERROR.Text) +End + +Public Sub ToolButtonExport_Click() + Dialog.Filter = FileFilter(False) + Dialog.Title = ("Save image from database") + If Dialog.SaveFile() Then Return + PictureBoxImage.Picture.Save(Dialog.Path) +Catch + Message.Warning(("Error saving image:\n\n") & ERROR.Text) +End + +Public Sub ToolButtonUpdate_Click() + ModuleDatabase.Update(GridViewImages.Row, TextAreaDescription.Text) + GridViewImages[GridViewImages.Row, 1].Text = TextAreaDescription.Text +Catch + Message.Warning(ERROR.Text) +End + +''' +''' GridView events +''' + +Public Sub GridViewImages_Click() + If GridViewImages.Row >= 0 Then + ShowImage(GridViewImages.Row) + End If +End + +''' +''' Functions +''' + +Private Sub DisplayImages() + Dim i As Integer + Dim tempFile As String + Dim tempPicture As String + GridViewImages.Clear() + GridViewImages.Rows.Count = ModuleDatabase.ResultPictures.Count + If ModuleDatabase.ResultPictures.Count > 0 Then + tempFile = Temp() & ".png" + For Each ModuleDatabase.ResultPictures + i = ModuleDatabase.ResultPictures.Index + tempPicture = ModuleDatabase.ResultPictures["thumb"].Data + If tempPicture Then + File.Save(tempFile, tempPicture) + GridViewImages[i, 0].Picture = Picture.Load(tempFile) + End If + GridViewImages[i, 1].Text = ModuleDatabase.ResultPictures["description"] + Next + GridViewImages.Row = 0 + ShowImage(0) + Else + TextAreaDescription.Text = "" + PictureBoxImage.Picture = Null + PictureBoxImage.Resize(1, 1) + End If + If Exist(tempFile) Then Kill tempFile + GridViewImages.Rows.Height = ModuleDatabase.ThumbSize + ToolButtonRemove.Enabled = (GridViewImages.Rows.Count > 0) + ToolButtonExport.Enabled = ToolButtonRemove.Enabled + ToolButtonUpdate.Enabled = ToolButtonRemove.Enabled +End + +Private Sub ShowImage(Row As Integer) + Dim tempFile As String + Dim tempPicture As String + tempFile = Temp() & ".png" + ModuleDatabase.ResultPictures.MoveTo(Row) + TextAreaDescription.Text = ModuleDatabase.ResultPictures["description"] + If tempFile Then + 'tempPicture = ModuleDatabase.ResultPictures["image"].Data + File.Save(tempFile, ModuleDatabase.ResultPictures["image"].Data) + PictureBoxImage.Picture = Picture.Load(tempFile) + PictureBoxImage.Resize(PictureBoxImage.Picture.Width, PictureBoxImage.Picture.Height) + Else + PictureBoxImage.Picture = Null + End If + If Exist(tempFile) Then Kill tempFile +End + +' Filter for our user file open dialog. All image types supported by Gambas +Private Function FileFilter(Optional All As Boolean = False) As String[] + Dim filter As New String[] + If All Then + filter.Add("*.png;*.jpeg;*.jpg;*.bmp;*.gif;*.xpm") + filter.Add(("All Graphics")) + End If + filter.Add("*.png") + filter.Add(("Portable Network Graphics")) + filter.Add("*.jpeg *.jpg") + filter.Add(("Joint Photographic Experts Group")) + filter.Add("*.bmp") + filter.Add(("Windows Bitmap")) + filter.Add("*.gif") + filter.Add(("Graphics Interchange Format")) + filter.Add("*.xpm") + filter.Add(("X PixMap")) + If All Then + filter.Add("*") + filter.Add(("All Files")) + End If + Return filter +End + +''' End of class FormPictureDatabase ''' diff --git a/app/examples/Database/PictureDatabase/.src/FormPictureDatabase.form b/app/examples/Database/PictureDatabase/.src/FormPictureDatabase.form new file mode 100644 index 00000000..49edc095 --- /dev/null +++ b/app/examples/Database/PictureDatabase/.src/FormPictureDatabase.form @@ -0,0 +1,67 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,62,47) + Text = ("Picture Database") + Icon = Picture["Images/image-x-generic.png"] + Arrangement = Arrange.Vertical + { HSplit1 HSplit + MoveScaled(0,0,60,46) + Expand = True + { PanelButtons Panel + MoveScaled(0,0,21,42) + Arrangement = Arrange.Vertical + { HPanel1 HPanel + MoveScaled(0,0,21,5) + AutoResize = True + { ToolButtonAdd ToolButton + MoveScaled(0,0,5,5) + ToolTip = ("Add image to database") + Picture = Picture["Images/list-add.png"] + } + { ToolButtonRemove ToolButton + MoveScaled(5,0,5,5) + ToolTip = ("Remove Image from database") + Picture = Picture["Images/list-remove.png"] + } + { Separator1 Separator + MoveScaled(8,0,2,4) + } + { ToolButtonExport ToolButton + MoveScaled(10,0,5,5) + ToolTip = ("Export image from database") + Picture = Picture["Images/document-save-as.png"] + } + { Separator2 Separator + MoveScaled(14,0,2,4) + } + { ToolButtonUpdate ToolButton + MoveScaled(16,0,5,5) + ToolTip = ("Update image description") + Picture = Picture["Images/document-save.png"] + } + } + { GridViewImages GridView + MoveScaled(1,6,19,28) + Expand = True + Header = GridView.Both + Border = False + } + } + { VSplit1 VSplit + MoveScaled(23,1,34,44) + { TextAreaDescription TextArea + MoveScaled(0,0,23,7) + Wrap = True + Border = False + } + { ScrollView1 ScrollView + MoveScaled(0,7,24,35) + { PictureBoxImage PictureBox + MoveScaled(0,0,18,25) + Stretch = True + } + } + } + } +} diff --git a/app/examples/Database/PictureDatabase/.src/ModuleDatabase.module b/app/examples/Database/PictureDatabase/.src/ModuleDatabase.module new file mode 100644 index 00000000..374caf69 --- /dev/null +++ b/app/examples/Database/PictureDatabase/.src/ModuleDatabase.module @@ -0,0 +1,215 @@ +' Gambas module file + +''' +' Name: ModuleDatabase +' Author: Timothy Marshal-Nichols +' eMail: timothy.marshal-nichols@ntlworld.com +' Version: 1.0 +' Version Date: April 2007 +' Version History: +' +''' +' Licence Information +' +' This program is free software; you can redistribute it and/or modify +' it under the terms of the GNU General Public License as published by +' the Free Software Foundation; either version 2 of the License, or +' (at your option) any later version. +' +' This program is distributed in the hope that it will be useful, +' but WITHOUT ANY WARRANTY; without even the implied warranty of +' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +' GNU General Public License for more details. +' +' You should have received a copy of the GNU General Public License +' along with this program; if not, write to the Free Software +' Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +' +' http://www.gnu.org/licenses/gpl.html +' +''' +' Description: +' +' Provides the interface to the pictures database. +' +''' +' Developed using Gambas2 Version +' +' Version: 1.9.48 +' +' Gambas Components Used: +' +' gb - Gambas internal native classes +' gb.db - Database access +' +' Look in the Project menu then Properties... and select +' the Components tab. Check that the listed components +' are in the project. +' +''' +' External Dependencies: +' +' The required type of database must exist. +' +''' +' Class Usage: +' +' Open the pictures database. If the database or table does not +' exist then they are created. +' +' Use somthing like this for a SQLite3 database +' +' ModuleDatabase.OpenDatabase("sqlite3", User.Home, Application.Name, "", "") +' +' Use somthing like this for a MySQL database +' +' ModuleDatabase.OpenDatabase("mysql", "localhost", Application.Name, "mysql", "password") +' +' Use somthing like this for a PostgreSQL database +' +' ModuleDatabase.OpenDatabase("postgresql", "localhost", Application.Name, "timothy", "password") +' +' Call the Select() method to update items and then use ResultPictures to access the data. +' +' ModuleDatabase.Select() +' ModuleDatabase.ResultPictures.MoveTo(Row) +' +' You can then use the Add(), Update() and Delete() methods to change the database. +' +' ModuleDatabase.Add(Path) +' ModuleDatabase.Update(Row, NewDescription) +' ModuleDatabase.Delete(Row) +' +' Call the CloseDatabase method before you quit your application +' +' ModuleDatabase.CloseDatabase() +' +''' + +Public Const ThumbSize As Integer = 36 +Public ResultPictures As Result + +Private databaseConnection As New Connection +Private tempFile As String + +Public Sub _init() + tempFile = Temp() & ".png" +End + +' Opens the pictures database. If the database or table does not +' exist then they are created. +Public Sub OpenDatabase(DBType As String, DBHost As String, DBName As String, UserName As String, UserPassword As String) + Dim pictureTable As Table + Dim errorMessageHeader As String + ' If you wnat to see the commands sent to the + ' database then uncommant this line + ' DB.Debug = TRUE + ' DBName = Lower(DBName) + ' Open a connection (to the database server only) + databaseConnection.Type = Lower(DBType) + databaseConnection.Host = DBHost + databaseConnection.Name = "" + databaseConnection.Login = UserName + databaseConnection.Password = UserPassword + databaseConnection.Port = "" + ' Open the connection + Try databaseConnection.Open() + If Error Then + errorMessageHeader = ("Could not open database connection") & " " & DBHost + Error.Raise(Error.Text) + End If + ' Check if the server connection has a database with the + ' required database name. + If Not databaseConnection.Databases.Exist(DBName) Then + Print ("Database not found. Creating new database") + ' Create a new database + databaseConnection.Databases.Add(DBName) + ' I found I needed this with a SQLite database + ' (but not with a MySQL database) + Wait 0.5 + End If + ' Close the server connection + databaseConnection.Close() + ' Open a connection to the database + databaseConnection.Host = DBHost + databaseConnection.Name = DBName + Try databaseConnection.Open() + If Error Then + errorMessageHeader = ("Could not open database") & " " & DBName & " on " & DBHost + Error.Raise(Error.Text) + End If + ' Check if the database has a pictures table + If Not databaseConnection.Tables.Exist("pictures") Then + Print ("Database tables not found. Creating new pictures table") + ' Add a picture table to the database + pictureTable = databaseConnection.Tables.Add("pictures") + pictureTable.Fields.Add("id", db.Serial) ' id field as autoinc integer + pictureTable.Fields.Add("thumb", db.Blob) ' thumb field as blob + pictureTable.Fields.Add("image", db.Blob) ' ' image field as blob + pictureTable.Fields.Add("description", db.String, 0) ' description field as unlimited string + pictureTable.PrimaryKey = ["id"] + pictureTable.Update() + End If +Catch + If errorMessageHeader = "" Then + errorMessageHeader = ("Database connection error:") & " " & DBName & " on " & DBHost + End If + Error.Raise("" & errorMessageHeader & "
" & ("Error:") & "
" & DConv(Error.Text)) +End + +Public Sub Add(ImagePath As String) + Dim img As Image + Dim newPicture As Result + 'Dim pictureData As String + Dim scale As Float + Dim eTime As Float + newPicture = databaseConnection.Create("pictures") + ' Save temp image as png file + img = Image.Load(ImagePath) + img.Save(tempFile) + newPicture["image"] = File.Load(tempFile) + ' Create image thumb + If img.Width > thumbSize Or img.Height > thumbSize Then + ' Calc factor to scale isotropic + scale = Min(ThumbSize / img.Width, ThumbSize / img.Height) + img = img.Stretch(img.Width * scale, img.Height * scale) + img.Save(tempFile) + End If + newPicture["thumb"] = File.Load(tempFile) + ' Add description and update + newPicture["description"] = ("Image") & " " & File.BaseName(ImagePath) & " " & ("added:") & " " & Format(Now, "dddd, dd mmmm yyyy hh:nn:ss") + eTime = Timer + newPicture.Update() + Print ("Done in") & " "; Format(Timer - eTime, "#.###"); " " & ("s") + If Exist(tempFile) Then Kill tempFile +Catch + Error.Raise(("Add database record error
Error:
") & DConv(Error.Text)) +End + +Public Sub Select() + ResultPictures = databaseConnection.Edit("pictures") +Catch + Error.Raise(("Select database records error
Error:
") & DConv(Error.Text)) +End + +Public Sub Update(Row As Integer, Description As String) + ResultPictures.MoveTo(Row) + ResultPictures["description"] = Conv(Description, Desktop.Charset, databaseConnection.Charset) + ResultPictures.Update() +Catch + Error.Raise(("Update database record error
Error:
") & DConv(Error.Text)) +End + +Public Sub Delete(Row As Integer) + ResultPictures.MoveTo(Row) + ResultPictures.Delete() +Catch + Error.Raise(("Delete database record error
Error:
") & DConv(Error.Text)) +End + +Public Sub CloseDatabase() + Try databaseConnection.Close() + If Error Then Print ("Error closing database") +End + +''' End of ModuleDatabase ''' diff --git a/app/examples/Database/PictureDatabase/Images/document-save-as.png b/app/examples/Database/PictureDatabase/Images/document-save-as.png new file mode 100644 index 0000000000000000000000000000000000000000..fcd8c919711476175e6a2d5cb21df82ec8bcbb74 GIT binary patch literal 845 zcmV-T1G4;yP)hVPfM9)Y zTY7SQfo*PZYj}udZg6XEaBFUGYi@9BZg6XEaBJu1=iuPrZg6X7X=G+-WXsFT$jHc5 zS5sA2Q#fafkG9)&snuhk&O2<8M}4DosMKqv(@KD-UYf^SmcdhuwOEq9V4cfuaBFpW zY-ov-RC0TAb!+za_F$aKgN1rjcZW1-O4+Sr?&ndsQhplq= z?d`a@xasNW=jZ3s*v#VM;jyu>(9qCrbY*UIWzNpd-rwKf-rnBc-`?Kd-{0N<007_L z-{Ilm=;-Lm%F6EU?(p#M@bK~Q@bLQi`v3p`I}llY0000tbW%=J0G;jh$~!Rn^Y#7R zhzxxLg`Nb&yt@eAFq8FSO2vV?YNL@;MowS)ftkFlKo{#H373$lv<00B8k zL_t&-({0Z8Q^GJ5!11{E-g^(MxHSq6YK^A=pBB4$i4gI zT`mYAl$DL4oZLKQEx(|!sCahHQBqoF)$)qUD(AdoVR5OtCe5{V^$n=8soCX{TUy&v z+}_a%XP0wXkypBVQrz1|pjE6uYwKd}7d)^*MG0217>VFPw?-LbSn(*zCT47lxoyBh z+u9C=e+%BlI^JXZ67cZBA?&K^k>^;Ey(h4LY6m7~z~{PZ_zaKX)h`&+;Bnh!;%Prt z4a4Wfe#WSFWkXUx3sQP5JfV~ZwSa`|HzT)qa6v;@)kA>6`_YFnH2z4EJ>lo%^fG}6 zCE>^`5A!JJ;RuiM=o=6saq|9=>NEEB{R1TUH_c|uG|eQNmMol+;K_JKQv^+uf13FN Xun>Ufps_sO00000NkvXXu0mjf*fGY; literal 0 HcmV?d00001 diff --git a/app/examples/Database/PictureDatabase/Images/document-save.png b/app/examples/Database/PictureDatabase/Images/document-save.png new file mode 100644 index 0000000000000000000000000000000000000000..a89f010f2137b11b520783313bc5fdf2ed1837d2 GIT binary patch literal 903 zcmV;219<$2P)hVPfM9)Y zTY7SQfo*PZYj}udZg6XEaBFUGYi@9BZg6XEaBJu1=iuPrZg6X7X=G+-WXsFT$jHc5 zS5sA2Q#fafkG9)&snuhk&O2<8M}4DosMKqv(@KD-UYf^SmcdhuwOEq9V4cfuaBFpW zY-ov-RC0TAb!+za_F$aKgN1rjcZW1-O4+Sr?&ndsQhplq= z?d`a@xasNW=jZ3s*v#VM;jyu>(9qEH^Yg~cz{$?T;^X1*@$t^i&f($V&CSis%*@Eh z$lKf7k&%&@n3$uaqOh>Ava+(fySu!+yv4=E(b3Vsz`)kl*4Nk9l$4a0mzSlbrKzc@ ztgNiMy1K!^!NkPG$;rvZ#l*+Q$1kRBK>z>%H*``?QvjXq^vXLh`t$Yu-Q-){`~Cj* zNx8k$SxE8z{qYOkt{HRFp|XT_X+$t*R<(ov{*SSo{{B`uBMY*N0003-NkliqvqbO1bxWT>a7L_M9Y3~qE{@f+GFS%R*03ad~ z(xRecKxnaX@d=6DJ;tQulu%7gOV2R%8vFVOGP8a;J0~{}T{hx}W1OlPl?)z5< d0-Y#KT|XI$hBxuiCnf*@002ovPDHLkV1n+n60fcu?H8t$*42J5P7M z`+R!Ij+MEcn={)srZ%rnY*-styE>|BWmx(0ppvEjg^RuO7TN{oH_Y67l={b^p)b zcNgz$>{)oQW8T5GIs2Pu?Q58^w|2^oyvnZRtdhLW%~@?5J;IA;tvNM!{qfC*wjaH? zapC5}GghCRw(`W(6~`wpJ2r92(URKk?9#Ttz`(rPsrA$Lctw?ZMi#HwesRT)OUt)k zT(<4v(ybSkY&pMZ^SPdx>w|)WOY0{VRCY{Re%wE<+%+U`{>t6+R_>a&V%MDIJEtz# z(mQi)d}3O7L{vdpV`x}-OaH>YS?j$c3m!dsWbU41>z8ZmpKI-tt?!hiY!<0t60U9$ zVrb)UXzgca?`Lf5t7H;p>=gU>@ngr35{KXt+kip~pF9(fEMxa9BiD2-t8i5lUoGnh zRTDo0=M)R~Br~@px5!$jkTNT;jO>!;qMF|Nwh5=toU-&xjm)0l5mmo=`|cx0j+{Js zvY?{VAt1{!AbZEIU55@Gdi(b6^B2!wynL~4{o1XiqNjn$PNgKsFPNdR>0jP##%cV` z9XdR0ykc_7>RP%6CWdNCvclXf99*32%uL^SZ5}f)Fcx{bIEF}EPEJtZG+33u=)vrfHr7|Kq_lXnW<}kyvbwda>K7YZo7*w9WoggEra2^PXG=$0SF^jTr>BdDo0s$Z z>*vc)*wDCse!W9NK!JxxMnr{6N=OM$M1;PXo}HqhrlqQ?sjjWEv9>jPO2;z4ytq2Y z#K1yN&&5VO+>E{`nc7A@QAF-j};v-e>>ALY7g;e%reVt{x`ue)){fUQ<`Oe;+b9YY;rxeig0sW%Q>Ja%l^k|jJWISveq a9FiD(XU>n6v6Zg`6%wAVelF{r5}E)!3h_Pw literal 0 HcmV?d00001 diff --git a/app/examples/Database/PictureDatabase/Images/list-add.png b/app/examples/Database/PictureDatabase/Images/list-add.png new file mode 100644 index 0000000000000000000000000000000000000000..d4d751c9e4c163533061b83a0a1577f145d6acd3 GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EW)6(*k@#T!FMn>JlJH3;?R!dgket zGfy`I(dnlLF2C4)@%f&M&-Yz^x#`r?-4~v3Klg0g*=JkNJll5W+0^Z~r);}DY0Iq% zn{V}QyxFz>X4~4E&8u$Iuee^j?E3tD50)H!R5_tMtW&-3P7y8Ph% zsw0oJ9!50+9mHP}2G25qZ=bq5x;i_#y*<16?rmaW(_g$u61{f$xJX*kGjoF{>4~Y%VkyrbJYixLHRso77w#%Dvr|*E cGh@qQVkkA{aBa={%?1iDPgg&ebxsLQ06^xHVE_OC literal 0 HcmV?d00001 diff --git a/app/examples/Database/PictureDatabase/Images/list-remove.png b/app/examples/Database/PictureDatabase/Images/list-remove.png new file mode 100644 index 0000000000000000000000000000000000000000..902624de5a28d1191b6f4ce9e6163cea028fcd6d GIT binary patch literal 282 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 M07*qoM6N<$f=#3V(f|Me literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/AnalogWatch/.lang/ru.po b/app/examples/Drawing/AnalogWatch/.lang/ru.po new file mode 100644 index 00000000..28a5cfeb --- /dev/null +++ b/app/examples/Drawing/AnalogWatch/.lang/ru.po @@ -0,0 +1,72 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Drawing/AnalogWatch/.project:19 +msgid "Analog watch" +msgstr "Аналоговые часы" + +#: app/examples/Drawing/AnalogWatch/.project:20 +msgid "" +"Analog watch example.\n" +"\n" +"This example uses the Paint class to draw an anti-aliased analog watch." +msgstr "" +"Пример аналоговых часов.\n" +"\n" +"В этом примере класс Paint используется для рисования аналоговых часов с сглаживанием." + +#: app/examples/Drawing/AnalogWatch/.src/FrmClock.class:122 +msgid "" +"Analog Clock Example Program for Gambas\n" +"Written by: Ahmad Kamal and Benoît Minisini" +msgstr "" +"Пример программы аналоговых часов для Gambas\n" +"Авторы: Ахмад Камаль и Бенуа Минисини" + +#: app/examples/Drawing/AnalogWatch/.src/FrmClock.form:5 +msgid "Analog clock" +msgstr "Аналоговые часы" + +#: app/examples/Drawing/AnalogWatch/.src/FrmClock.form:8 +msgid "File" +msgstr "Файл" + +#: app/examples/Drawing/AnalogWatch/.src/FrmClock.form:11 +msgid "&About" +msgstr "О программе" + +#: app/examples/Drawing/AnalogWatch/.src/FrmClock.form:17 +msgid "E&xit" +msgstr "Выход" + +#: app/examples/Drawing/AnalogWatch/.src/FrmClock.form:23 +msgid "" +"Resize Window and the clock will follow \n" +"Right click for a menu" +msgstr "" +"Изменить размер окна, и часы последуют тому же\n" +"Правая кнопка мыши для меню" + diff --git a/app/examples/Drawing/AnalogWatch/.project b/app/examples/Drawing/AnalogWatch/.project new file mode 100644 index 00000000..6e9aed87 --- /dev/null +++ b/app/examples/Drawing/AnalogWatch/.project @@ -0,0 +1,18 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.6.90 +Title=Analog watch +Startup=FrmClock +Icon=timer.png +Version=1.0.0 +Component=gb.image +Component=gb.gui +Description="Analog watch example.\n\nThis example uses the Paint class to draw an anti-aliased analog watch." +Environment="GB_GUI=gb.qt" +TabSize=2 +Maintainer=fabien +Vendor=Example +Address=fabien@arcalis +License=General Public Licence +Packager=1 +Screenshot=2014-12-14.png +Translate=1 diff --git a/app/examples/Drawing/AnalogWatch/.src/FrmClock.class b/app/examples/Drawing/AnalogWatch/.src/FrmClock.class new file mode 100644 index 00000000..0a163bfc --- /dev/null +++ b/app/examples/Drawing/AnalogWatch/.src/FrmClock.class @@ -0,0 +1,152 @@ +' Gambas class file + +'***********Analog Clock Example Program************************ +'***********By: Ahmad Kamal ****************** +'***********Written for Gambas: gambas.sourceforge.net********** +'***********V1.0: 22-July-2003*************************************** +'***********V1.1: 24-July-2003 Optimized by Benoit himself ;)***** + +Private $iLast As Integer +Private $dNow As Date + +' Fixed coordinate system +' We use the transformation matrix for scaling +Private Const W As Integer = 1024 +Private Const H As Integer = 1024 + +Public Sub TimerClk_Timer() + + If Second(Now) = $iLast Then Return + $dNow = Now + + dwgArea.Refresh + +End + +' Main routine that updates the clock + +Public Sub DrawClock() + + Dim angle As Float + Dim dNow As Date + Dim eScale As Float + Dim sTime As String + + eScale = Min(dwgArea.Width / W, dwgArea.Height / H) + + Paint.Translate(dwgArea.W / 2, dwgArea.H / 2) + Paint.Scale(eScale, eScale) + + dNow = $dNow + $iLast = Second(dNow) + + Paint.Brush = Paint.Color(&HDCDCDC&) 'Light gray color + Paint.Arc(0, 0, W / 2) + Paint.Fill + Paint.Brush = Paint.Color(dwgArea.Background) + Paint.Arc(0, 0, W / 2 * 0.9) + Paint.Fill + + sTime = Format(dNow, "hh:nn:ss") + + Paint.Font.Bold = True + Paint.Font.Size = 60 + Paint.Brush = Paint.Color(Color.Black) + Paint.Text(sTime, -W / 2, -H * 0.4, W, H * 0.1, Align.Top) + Paint.Fill + + ' Draw seconds + angle = Second(dNow) / 60 * Pi(2) - Pi(0.5) 'The angle that the arm makes, with a line from clock center to 12O'clock + + Paint.Brush = Paint.Color(Color.SetAlpha(Color.Red, 128)) + Paint.LineWidth = 6 + Paint.MoveTo(0, 0) + Paint.LineTo(Cos(angle) * W / 2, Sin(angle) * H / 2) + Paint.Stroke + + ' Draw minutes + angle = CFloat(Time(dNow)) * 24 * Pi(2) - Pi(0.5) + + Paint.Brush = Paint.Color(Color.SetAlpha(Color.Black, 128)) + Paint.MoveTo(Cos(angle) * W * 0.45, Sin(angle) * H * 0.45) + Paint.LineTo(Sin(angle) * W * 0.05, -Cos(angle) * H * 0.05) + Paint.LineTo(-Sin(angle) * W * 0.05, Cos(angle) * H * 0.05) + Paint.Fill + + ' Draw hours + angle = CFloat(Time(dNow)) * 2 * Pi(2) - Pi(0.5) + + Paint.Brush = Paint.Color(Color.SetAlpha(Color.Black, 128)) + Paint.MoveTo(Cos(angle) * W * 0.35, Sin(angle) * H * 0.35) + Paint.LineTo(Sin(angle) * W * 0.05, -Cos(angle) * H * 0.05) + Paint.LineTo(-Sin(angle) * W * 0.05, Cos(angle) * H * 0.05) + Paint.Fill + + ' Draw circle on the center of the clock to hide the arms intersection + + Paint.Brush = Paint.Color(Color.Black) + Paint.Arc(0, 0, 0.1 * W) + Paint.Fill + + DrawFrame + +End + +' Draw the clock frame + +Public Sub DrawFrame() + + Dim I As Integer + Dim angle As Float + + Paint.Brush = Paint.Color(Color.SetAlpha(Color.Black, 64)) + + For I = 0 To 59 + If I % 5 = 0 Then + Paint.LineWidth = 12 + Else + Paint.LineWidth = 2 + Endif + angle = Pi(2) * I / 60 + Paint.MoveTo(Cos(angle) * 0.45 * W, Sin(angle) * 0.45 * H) + Paint.LineTo(Cos(angle) * W / 2, Sin(angle) * H / 2) + Paint.Stroke + Next + +End + + +Public Sub MenuAbout_Click() + + Dim AboutMessage As String + AboutMessage = ("Analog Clock Example Program for Gambas\nWritten by: Ahmad Kamal and Benoît Minisini") + + Message.info(AboutMessage) + +End + + +Public Sub MenuExit_Click() + + Me.Close + +End + + +Public Sub DwgArea_Menu() + + MenuPopUp.popup + +End + +Public Sub DwgArea_Draw() + + DrawClock + +End + +Public Sub Form_Open() + + TimerClk_Timer + +End diff --git a/app/examples/Drawing/AnalogWatch/.src/FrmClock.form b/app/examples/Drawing/AnalogWatch/.src/FrmClock.form new file mode 100644 index 00000000..c8746890 --- /dev/null +++ b/app/examples/Drawing/AnalogWatch/.src/FrmClock.form @@ -0,0 +1,30 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(52.2857,29,39,39) + Text = ("Analog clock") + Arrangement = Arrange.Fill + { MenuPopUp Menu + Text = ("File") + Visible = False + { MenuAbout Menu + Text = ("&About") + Shortcut = "F11" + } + { MenuSep Menu + } + { MenuExit Menu + Text = ("E&xit") + } + } + { DwgArea DrawingArea + MoveScaled(2,0,21,24) + Background = Color.LightBackground + ToolTip = ("Resize Window and the clock will follow \nRight click for a menu") + } + { TimerClk #Timer + #MoveScaled(17.1429,2.2857) + Enabled = True + Delay = 250 + } +} diff --git a/app/examples/Drawing/AnalogWatch/timer.png b/app/examples/Drawing/AnalogWatch/timer.png new file mode 100644 index 0000000000000000000000000000000000000000..6708fdd27788c95fe589ee232dff093831b8041a GIT binary patch literal 2778 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 literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/Barcode/.directory b/app/examples/Drawing/Barcode/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Drawing/Barcode/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Drawing/Barcode/.icon.png b/app/examples/Drawing/Barcode/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a4e3ec072e2c2cc337c467973d2ee992b03419c1 GIT binary patch literal 3990 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\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FMain.class:280 +msgid "About..." +msgstr "Quant a..." + +#: .project:2 +msgid "A module to print EAN-13 barcodes. The barcode is constructed from first principles (http://en.wikipedia.org/wiki/European_Article_Number). The barcode can be formatted for screen or printer." +msgstr "Un mòdul per a imprimir codis de barres EAN-13. Els codis de barres es construeixen des de zero (http://en.wikipedia.org/wiki/European_Article_Number). El codi de barres pot tenir format per pantalla o per impressora." + +#: FMain.class:221 +msgid "Barcode" +msgstr "Codi de barres" + +#: .project:1 +msgid "Barcode Printing" +msgstr "Impressió de codi de barres" + +#: FMain.class:285 +msgid "E&xit" +msgstr "&Surt" + +#: FMain.class:236 +msgid "Height" +msgstr "Alçada" + +#: FMain.class:72 +msgid "Please enter a valid 13 digit EAN-13 number" +msgstr "Introduïu un número EAN-13 vàlid de 13 dígits" + +#: FMain.class:226 +msgid "PosX" +msgstr "-" + +#: FMain.class:231 +msgid "PosY" +msgstr "-" + +#: FMain.class:275 +msgid "&Print Barcode" +msgstr "Im&primeix el codi de barres" + +#: FMain.class:269 +msgid "&Refresh Barcode" +msgstr "&Actualitza el codi de barres" + +#: FMain.class:246 +msgid "Size for printer" +msgstr "Mida per la impressora" + +#: FMain.class:251 +msgid "Size for screen" +msgstr "Mida per la pantalla" + +#: FMain.class:153 +msgid "" +"This program was made by Charles Guerin and\n" +"modified by Benoît Minisini." +msgstr "" +"Aquest programa va ser creat per Charles Guerin i\n" +"modificat per Benoît Minisini." + +#: FMain.class:241 +msgid "Width" +msgstr "Amplada" + diff --git a/app/examples/Drawing/Barcode/.lang/cs.po b/app/examples/Drawing/Barcode/.lang/cs.po new file mode 100644 index 00000000..9368d9a5 --- /dev/null +++ b/app/examples/Drawing/Barcode/.lang/cs.po @@ -0,0 +1,76 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Barcode Printing" +msgstr "Tisk čárových kódů" + +#: .project:2 +msgid "A module to print EAN-13 barcodes. The barcode is constructed from first principles (http://en.wikipedia.org/wiki/European_Article_Number). The barcode can be formatted for screen or printer." +msgstr "Modul pro tisk čárových kódů EAN-13. Čárového kódu je postaven z prvních principů (http://en.wikipedia.org/wiki/European_Article_Number). Čárový kód může být formátovány pro obrazovku nebo tiskárnu." + +#: FMain.class:72 +msgid "Please enter a valid 13 digit EAN-13 number" +msgstr "Zadejte prosím platné 13-ti místné číslo EAN-13" + +#: FMain.class:153 +msgid "" +"This program was made by Charles Guerin and\n" +"modified by Benoît Minisini." +msgstr "" +"Tento program byl vytvořil Charles Guerin a\n" +"upravil Benoît Minisini." + +#: FMain.form:57 +msgid "Barcode" +msgstr "Čárový kód" + +#: FMain.form:62 +msgid "PosX" +msgstr "Pozice X" + +#: FMain.form:67 +msgid "PosY" +msgstr "Pozice Y" + +#: FMain.form:72 +msgid "Height" +msgstr "Výška" + +#: FMain.form:77 +msgid "Width" +msgstr "Šířka" + +#: FMain.form:83 +msgid "Size for printer" +msgstr "Velikost pro tiskárnu" + +#: FMain.form:89 +msgid "Size for screen" +msgstr "Velikost pro obrazovku" + +#: FMain.form:107 +msgid "&Refresh Barcode" +msgstr "&Obnovit čárový kód" + +#: FMain.form:114 +msgid "&Print Barcode" +msgstr "&Tisk čárového kódu" + +#: FMain.form:119 +msgid "About..." +msgstr "O programu..." + +#: FMain.form:124 +msgid "E&xit" +msgstr "&Ukončit" diff --git a/app/examples/Drawing/Barcode/.lang/de.po b/app/examples/Drawing/Barcode/.lang/de.po new file mode 100644 index 00000000..7067c161 --- /dev/null +++ b/app/examples/Drawing/Barcode/.lang/de.po @@ -0,0 +1,76 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Barcode Printing" +msgstr "Barcode drucken" + +#: .project:2 +msgid "A module to print EAN-13 barcodes. The barcode is constructed from first principles (http://en.wikipedia.org/wiki/European_Article_Number). The barcode can be formatted for screen or printer." +msgstr "Ein Modul, um EAN-13 Barcodes zu drucken. Der Barcode wird nach den Regeln (http://en.wikipedia.org/wiki/European_Article_Number) gebildet. Der Barcode kann für den Bildschirm oder für den Drucker formattiert werden." + +#: FMain.class:72 +msgid "Please enter a valid 13 digit EAN-13 number" +msgstr "Bitte gib eine gültige 13-stellige EAN-13 Zahl ein" + +#: FMain.class:153 +msgid "" +"This program was made by Charles Guerin and\n" +"modified by Benoît Minisini." +msgstr "" +"Dieses Programm wurde von Charles Guerin geschrieben\n" +"und von Benoît Minisini verändert." + +#: FMain.form:57 +msgid "Barcode" +msgstr "-" + +#: FMain.form:62 +msgid "PosX" +msgstr "-" + +#: FMain.form:67 +msgid "PosY" +msgstr "-" + +#: FMain.form:72 +msgid "Height" +msgstr "Höhe" + +#: FMain.form:77 +msgid "Width" +msgstr "Breite" + +#: FMain.form:83 +msgid "Size for printer" +msgstr "Größe für Drucker" + +#: FMain.form:89 +msgid "Size for screen" +msgstr "Größe für Bildschirm" + +#: FMain.form:107 +msgid "&Refresh Barcode" +msgstr "Barcode &neu laden" + +#: FMain.form:114 +msgid "&Print Barcode" +msgstr "Barcode &drucken" + +#: FMain.form:119 +msgid "About..." +msgstr "Über..." + +#: FMain.form:124 +msgid "E&xit" +msgstr "&Beenden" diff --git a/app/examples/Drawing/Barcode/.lang/ru.po b/app/examples/Drawing/Barcode/.lang/ru.po new file mode 100644 index 00000000..781038ca --- /dev/null +++ b/app/examples/Drawing/Barcode/.lang/ru.po @@ -0,0 +1,90 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Drawing/Barcode/.project:22 +msgid "Barcode Printing" +msgstr "Печать штрих-кодов" + +#: app/examples/Drawing/Barcode/.project:23 +msgid "A module to print EAN-13 barcodes. The barcode is constructed from first principles (http://en.wikipedia.org/wiki/European_Article_Number). The barcode can be formatted for screen or printer." +msgstr "Модуль для печати штрих-кодов EAN-13. Штрих-код создан на основе первых принципов (https://ru.wikipedia.org/wiki/European_Article_Number). Штрих-код может быть отформатирован для экрана или принтера." + +#: app/examples/Drawing/Barcode/.src/FMain.class:72 +msgid "Please enter a valid 13 digit EAN-13 number" +msgstr "Пожалуйста, введите действительный 13-значный номер EAN-13" + +#: app/examples/Drawing/Barcode/.src/FMain.class:153 +msgid "" +"This program was made by Charles Guerin and\n" +"modified by Benoît Minisini." +msgstr "" +"Эта программа была создана Чарльзом Гереном\n" +"и модифицирована Бенуа Минисини." + +#: app/examples/Drawing/Barcode/.src/FMain.form:29 +msgid "Barcode" +msgstr "Штрих-код" + +#: app/examples/Drawing/Barcode/.src/FMain.form:33 +msgid "PosX" +msgstr "ПозX" + +#: app/examples/Drawing/Barcode/.src/FMain.form:37 +msgid "PosY" +msgstr "ПозY" + +#: app/examples/Drawing/Barcode/.src/FMain.form:41 +msgid "Height" +msgstr "Высота" + +#: app/examples/Drawing/Barcode/.src/FMain.form:45 +msgid "Width" +msgstr "Ширина" + +#: app/examples/Drawing/Barcode/.src/FMain.form:50 +msgid "Size for printer" +msgstr "Размер для принтера" + +#: app/examples/Drawing/Barcode/.src/FMain.form:55 +msgid "Size for screen" +msgstr "Размер для экрана" + +#: app/examples/Drawing/Barcode/.src/FMain.form:70 +msgid "&Refresh Barcode" +msgstr "Освежить штрих-код" + +#: app/examples/Drawing/Barcode/.src/FMain.form:76 +msgid "&Print Barcode" +msgstr "Печать штрих-кода" + +#: app/examples/Drawing/Barcode/.src/FMain.form:80 +msgid "About..." +msgstr "О программе..." + +#: app/examples/Drawing/Barcode/.src/FMain.form:84 +msgid "E&xit" +msgstr "Выход" + diff --git a/app/examples/Drawing/Barcode/.project b/app/examples/Drawing/Barcode/.project new file mode 100644 index 00000000..5bbad76a --- /dev/null +++ b/app/examples/Drawing/Barcode/.project @@ -0,0 +1,21 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.5.90 +Title=Barcode Printing +Startup=FMain +Icon=barcode.png +Version=3.6.2 +VersionFile=1 +Component=gb.image +Component=gb.gui +Description="A module to print EAN-13 barcodes. The barcode is constructed from first principles (http://en.wikipedia.org/wiki/European_Article_Number). The barcode can be formatted for screen or printer." +Environment="GB_GUI=gb.gtk" +TabSize=2 +Translate=1 +Language=de +Maintainer=charles +Address=c_guerin@o2.co.uk +License=General Public Licence +Packager=1 +Systems=ubuntu +Menus=ubuntu:"Apps/Programming" +Groups=ubuntu:"Development/Databases" diff --git a/app/examples/Drawing/Barcode/.src/FMain.class b/app/examples/Drawing/Barcode/.src/FMain.class new file mode 100644 index 00000000..9207a99b --- /dev/null +++ b/app/examples/Drawing/Barcode/.src/FMain.class @@ -0,0 +1,161 @@ +' Gambas class file + +Public bcHeight As Integer +Public barThickness As Integer +'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +Public Sub SizeForScreen() + 'set up typical defaults for barcode size on screen + txtPosX.Text = "60" + txtPosY.text = "8" + txtHeight.Text = "150" + txtWidth.Text = "5" +End +'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +Public Sub SizeForPrinter() + 'set up typical defaults for barcode size on printer + txtPosX.Text = "500" + txtPosY.text = "400" + txtHeight.Text = "250" + txtWidth.Text = "7" +End +'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +Public Sub ChkInput() + + ' make sure only valid characters + Select Key.Code + Case Key.BackSpace, Key.Tab, Key.Delete, Key.Enter, Key.Return, Key.Escape + Default + If Key.Text And If InStr("0123456789", Key.Text) = 0 Then Stop Event + End Select + +End +'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + + +Public Sub Form_Open() + 'DrawingArea1.Cached = TRUE + txtBarcode.SetFocus + SizeForScreen + txtBarcode.Text = "8711577011208" 'sample barcode (so what's it for then?) + txtBarcode.Select +End +'------------------------------------------------------------------- +Public Sub btnExit_Click() + + FMain.Close +End + +Private Sub DrawBarCode(Optional bPrinter As Boolean) + + If Not bPrinter Then + + 'DrawingArea1.Refresh + 'Draw.Begin(DrawingArea1) + Draw.Clear + modCrBcode.PrintBarcode(txtBarcode.Text, Val(txtPosX.text), Val(txtPosY.text), Val(txtHeight.text), Val(txtWidth.text), True) + 'Draw.End() + + Else + + Draw.Begin(printer) + modCrBcode.PrintBarcode(txtBarcode.Text, Val(txtPosX.text), Val(txtPosY.text), Val(txtHeight.text), Val(txtWidth.text), False) + Draw.End() + + Endif + +End + + +Public Sub btnRun_Click() + + If Len(txtBarcode.Text) <> 13 Then + Message.Error(("Please enter a valid 13 digit EAN-13 number")) + Else + If Val(txtPosX.Text) = 0 Then + If rbutScreen Then + txtPosX.Text = "40" + Else + txtPosX.Text = "500" + Endif + Endif + If Val(txtPosY.Text) = 0 Then + If rbutScreen Then + txtPosY.Text = "0" + Else + txtPosY.Text = "300" + Endif + Endif + If Val(txtHeight.Text) = 0 Then + If rbutScreen Then + txtHeight.Text = "150" + Else + txtHeight.Text = "250" + Endif + Endif + If Val(txtWidth.Text) = 0 Then + If rbutScreen Then + txtWidth.Text = "5" + Else + txtWidth.Text = "7" + Endif + Endif + + 'DrawBarCode + DrawingArea1.Refresh + + Endif + +End +'------------------------------------------------------------------- +Public Sub rbutPrinter_Click() + SizeForPrinter +End +'------------------------------------------------------------------- +Public Sub rbutScreen_Click() + SizeForScreen +End +'------------------------------------------------------------------- +Public Sub txtPosX_KeyPress() + ChkInput +End +'------------------------------------------------------------------- +Public Sub txtBarcode_KeyPress() + ChkInput +End +'------------------------------------------------------------------- +Public Sub txtPosY_KeyPress() + ChkInput +End +'------------------------------------------------------------------- +Public Sub txtHeight_KeyPress() + ChkInput +End +'------------------------------------------------------------------- +Public Sub txtWidth_KeyPress() + ChkInput +End +'------------------------------------------------------------------- + +' PUBLIC SUB Form_Resize() +' +' DrawBarCode +' +' END + +Public Sub btnPrint_Click() + + DrawBarCode(True) + +End + +Public Sub btnAbout_Click() + + Message.Info(("This program was made by Charles Guerin and\nmodified by Benoît Minisini.")) + +End + +Public Sub DrawingArea1_Draw() + + DrawBarCode + +End diff --git a/app/examples/Drawing/Barcode/.src/FMain.form b/app/examples/Drawing/Barcode/.src/FMain.form new file mode 100644 index 00000000..1a293c03 --- /dev/null +++ b/app/examples/Drawing/Barcode/.src/FMain.form @@ -0,0 +1,88 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,106,62) + Icon = Picture["barcode.png"] + Arrangement = Arrange.Vertical + Spacing = True + Margin = True + Padding = 8 + { Panel1 Panel + MoveScaled(1,1,95,8) + { txtBarcode TextBox + MoveScaled(0,4,24,4) + } + { txtPosX TextBox + MoveScaled(25,4,8,4) + } + { txtPosY TextBox + MoveScaled(34,4,8,4) + } + { txtHeight TextBox + MoveScaled(43,4,8,4) + } + { txtWidth TextBox + MoveScaled(52,4,8,4) + } + { Label1 Label + MoveScaled(0,0,18,4) + Text = ("Barcode") + } + { Label2 Label + MoveScaled(25,0,7,4) + Text = ("PosX") + } + { Label3 Label + MoveScaled(34,0,6,4) + Text = ("PosY") + } + { Label4 Label + MoveScaled(43,0,8,4) + Text = ("Height") + } + { Label5 Label + MoveScaled(52,0,8,4) + Text = ("Width") + } + { rbutPrinter RadioButton + MoveScaled(63,3,27,4) + Visible = False + Text = ("Size for printer") + } + { rbutScreen RadioButton + MoveScaled(63,0,27,4) + Visible = False + Text = ("Size for screen") + Value = True + } + } + { DrawingArea1 DrawingArea + MoveScaled(1,10,104,45) + Background = Color.TextBackground + Expand = True + Border = Border.Sunken + } + { HBox1 HBox + MoveScaled(1,56,104,5) + Spacing = True + { btnRun Button + MoveScaled(0,0,25.1429,4) + Text = ("&Refresh Barcode") + Default = True + } + { btnPrint Button + MoveScaled(26,0,25,4) + Visible = False + Text = ("&Print Barcode") + } + { btnAbout Button + MoveScaled(52,0,25.1429,4) + Text = ("About...") + } + { btnExit Button + MoveScaled(78,0,25.1429,4) + Text = ("E&xit") + Cancel = True + } + } +} diff --git a/app/examples/Drawing/Barcode/.src/modCrBcode.module b/app/examples/Drawing/Barcode/.src/modCrBcode.module new file mode 100644 index 00000000..453a0e5a --- /dev/null +++ b/app/examples/Drawing/Barcode/.src/modCrBcode.module @@ -0,0 +1,98 @@ +' Gambas module file + +Public Sub PrintBarcode(bcode As String, posX As Integer, posY As Integer, bcHeight As Integer, barThickness As Integer, SorP As Boolean) + Dim structure As New String[10] + 'DIM enc AS String[10, 3]. I did it the following way 'cos I get not get the prg to read a multi-dimension array! + Dim enc1 As New String[10] + Dim enc2 As New String[10] + Dim enc3 As New String[10] + Dim fontSizeScreen As New Integer[10] + Dim fontSizePrinter As New Integer[10] + + Dim first6 As String ' encoding for first 6: l-code(1), g-code(2) + Dim j As Integer + Dim l As Integer + Dim k As Integer + Dim frst As Integer 'the first digit + Dim num As Integer 'each digit in turn + Dim bars As String ' the bars for the digit + 'Dim thkns As Integer 'thickness of each bar + Dim LinePos As Integer 'used to horizontaly locate the next bar + + ' + structure = ["111111", "112122", "112212", "112221", "121122", "122112", "122211", "121212", "121221", "122121"] + enc1 = ["0001101", "0011001", "0010011", "0111101", "0100011", "0110001", "0101111", "0111011", "0110111", "0001011"] + enc2 = ["0100111", "0110011", "0011011", "0100001", "0011101", "0111001", "0000101", "0010001", "0001001", "0010111"] + enc3 = ["1110010", "1100110", "1101100", "1000010", "1011100", "1001110", "1010000", "1000100", "1001000", "1110100"] + fontSizeScreen = [6, 9, 12, 16, 20, 24, 26, 28, 28, 30] + fontSizePrinter = [2, 2, 2, 4, 4, 6, 6, 8, 8, 10] + + frst = Val(Left(bcode, 1)) + first6 = structure[frst] + + 'draw 1st 2 deep bars----------------------------------------------- + For l = 1 To barThickness + Draw.Line(l + posX, 1 + posY, l + posX, bcHeight * 1.2 + posY) + Next + LinePos = LinePos + barThickness * 2 'allows for following gap + For l = 1 To barThickness + Draw.Line(LinePos + l + posX, 1 + posY, LinePos + l + posX, bcHeight * 1.2 + posY) + Next + LinePos = LinePos + barThickness + '--------------------------------------------------------------- + For j = 2 To 13 'loop through each of the 12 digits + num = Val(Mid$(bcode, j, 1)) 'find the individual number IN the first 6 + If j < 8 Then 'different for first 6 + If Val(Mid(first6, j - 1, 1)) = 1 Then 'find the bars making up that number (L,G or R) + bars = enc1[num] + Else + bars = enc2[num] + Endif + Else + bars = enc3[num] + Endif + + 'put the 2 middle deep bars---------------------------------------- + If j = 8 Then + LinePos = LinePos + barThickness + For l = 1 To barThickness + Draw.Line(linepos + l + posX, 1 + posY, linepos + l + posX, bcHeight * 1.2 + posY) + Next + LinePos = LinePos + barThickness * 2 'allows for following gap + For l = 1 To barThickness + Draw.Line(LinePos + l + posX, 1 + posY, LinePos + l + posX, bcHeight * 1.2 + posY) + Next + LinePos = LinePos + barThickness * 2 'allows for following gap + Endif + '--------------------------------------------------------------- + For k = 1 To 7 'draw bars for single digit + If Mid(bars, k, 1) = "1" Then + For l = 1 To barThickness + Draw.Line(linepos + l + posX, 1 + posY, LinePos + l + posX, bcHeight + posY) + Next + Endif + linepos = LinePos + barThickness + Next + Next + + 'draw last 2 deep bars------------------------------------------------ + For l = 1 To barThickness + Draw.Line(linepos + l + posX, 1 + posY, linepos + l + posX, bcHeight * 1.2 + posY) + Next + LinePos = LinePos + barThickness * 2 'allows for following gap + For l = 1 To barThickness + Draw.Line(LinePos + l + posX, 1 + posY, LinePos + l + posX, bcHeight * 1.2 + posY) + Next + '--------------------------------------------------------------- + 'write the barcode text + If SorP Then + Draw.Font.Size = fontSizeScreen[barThickness - 1] + Else + Draw.Font.Size = fontSizePrinter[barThickness - 1] + Endif + Draw.Text(Left(bcode, 1), posX - barThickness * 6, posY + bcHeight * 1.02) + Draw.Text(Mid(bcode, 2, 6), posX + barThickness * 9, posY + bcHeight * 1.02) + Draw.Text(Right(bcode, 6), posX + barThickness * 58, posY + bcHeight * 1.02) + + +End diff --git a/app/examples/Drawing/Barcode/barcode.png b/app/examples/Drawing/Barcode/barcode.png new file mode 100644 index 0000000000000000000000000000000000000000..a62216848a8334bb7eddc90a77d633afcbfa8ccb GIT binary patch literal 765 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 literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/Chart/.lang/ca.po b/app/examples/Drawing/Chart/.lang/ca.po new file mode 100644 index 00000000..612abf34 --- /dev/null +++ b/app/examples/Drawing/Chart/.lang/ca.po @@ -0,0 +1,85 @@ +# Catalan translation of Chart +# Copyright (C) 2000-2010 Benoît Minisini. +# This file is distributed under the same license as the Chart package. +# Jordi Sayol , 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: Chart\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2010-12-16 23:34+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FormChart.class:129 +msgid "Example to make a Bar Chart" +msgstr "Exemple de fer un gràfic de barres" + +#: FormChart.class:146 FormData.class:172 +msgid "&Close" +msgstr "&Tanca" + +#: FormChart.class:151 +msgid "&About" +msgstr "&Quant a" + +#: FormChart.class:158 +msgid "(%)" +msgstr "-" + +#: FormData.class:62 +msgid "Chart example" +msgstr "Exemple de gràfic" + +#: FormData.class:67 +msgid "Data 1" +msgstr "Dada 1" + +#: FormData.class:72 +msgid "Data 2" +msgstr "Dada 2" + +#: FormData.class:77 +msgid "Data 3" +msgstr "Dada 3" + +#: FormData.class:82 +msgid "Data 4" +msgstr "Dada 4" + +#: FormData.class:87 +msgid "Data 5" +msgstr "Dada 5" + +#: FormData.class:92 +msgid "Data 6" +msgstr "Dada 6" + +#: FormData.class:97 +msgid "Data 7" +msgstr "Dada 7" + +#: FormData.class:102 +msgid "Data 8" +msgstr "Dada 8" + +#: FormData.class:107 +msgid "Data 9" +msgstr "Dada 9" + +#: FormData.class:112 +msgid "Data 10" +msgstr "Dada 10" + +#: FormData.class:167 +msgid "&Draw it" +msgstr "&Dibuixa'l" + +#~ msgid "Bar Chart" +#~ msgstr "Gràfic de barres" diff --git a/app/examples/Drawing/Chart/.lang/cs.po b/app/examples/Drawing/Chart/.lang/cs.po new file mode 100644 index 00000000..b785f3f3 --- /dev/null +++ b/app/examples/Drawing/Chart/.lang/cs.po @@ -0,0 +1,84 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Bar Chart" +msgstr "Sloupcový graf" + +#: FormChart.form:13 +msgid "Example to make a Bar Chart" +msgstr "Příklad na vytvoření sloupcového grafu" + +#: FormChart.form:30 FormData.form:130 +msgid "&Close" +msgstr "&Zavřít" + +#: FormChart.form:35 +msgid "&About" +msgstr "&O..." + +#: FormChart.form:42 +msgid "(%)" +msgstr "-" + +#: FormData.form:30 +msgid "Chart example" +msgstr "Příklad grafu" + +#: FormData.form:35 +msgid "Data 1" +msgstr "-" + +#: FormData.form:40 +msgid "Data 2" +msgstr "-" + +#: FormData.form:45 +msgid "Data 3" +msgstr "-" + +#: FormData.form:50 +msgid "Data 4" +msgstr "-" + +#: FormData.form:55 +msgid "Data 5" +msgstr "-" + +#: FormData.form:60 +msgid "Data 6" +msgstr "-" + +#: FormData.form:65 +msgid "Data 7" +msgstr "-" + +#: FormData.form:70 +msgid "Data 8" +msgstr "-" + +#: FormData.form:75 +msgid "Data 9" +msgstr "Data 9" + +#: FormData.form:80 +msgid "Data 10" +msgstr "-" + +#: FormData.form:125 +msgid "&Draw it" +msgstr "&Kresli" + +#: FormData.form:135 +msgid "&Random" +msgstr "&Náhodně" diff --git a/app/examples/Drawing/Chart/.lang/de.po b/app/examples/Drawing/Chart/.lang/de.po new file mode 100644 index 00000000..f6a4cdbc --- /dev/null +++ b/app/examples/Drawing/Chart/.lang/de.po @@ -0,0 +1,81 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Bar Chart" +msgstr "Balkendiagramm" + +#: FormChart.form:13 +msgid "Example to make a Bar Chart" +msgstr "Beispiel für ein Balkendiagramm" + +#: FormChart.form:30 FormData.form:139 +msgid "&Close" +msgstr "&Schließen" + +#: FormChart.form:35 +msgid "&About" +msgstr "&Über" + +#: FormChart.form:42 +msgid "(%)" +msgstr "-" + +#: FormData.form:29 +msgid "Chart example" +msgstr "Diagramm-Beispiel" + +#: FormData.form:34 +msgid "Data 1" +msgstr "Wert 1" + +#: FormData.form:39 +msgid "Data 2" +msgstr "Wert 2" + +#: FormData.form:44 +msgid "Data 3" +msgstr "Wert 3" + +#: FormData.form:49 +msgid "Data 4" +msgstr "Wert 4" + +#: FormData.form:54 +msgid "Data 5" +msgstr "Wert 5" + +#: FormData.form:59 +msgid "Data 6" +msgstr "Wert 6" + +#: FormData.form:64 +msgid "Data 7" +msgstr "Wert 7" + +#: FormData.form:69 +msgid "Data 8" +msgstr "Wert 8" + +#: FormData.form:74 +msgid "Data 9" +msgstr "Wert 9" + +#: FormData.form:79 +msgid "Data 10" +msgstr "Wert 10" + +#: FormData.form:134 +msgid "&Draw it" +msgstr "&Zeichnen" + diff --git a/app/examples/Drawing/Chart/.lang/es.po b/app/examples/Drawing/Chart/.lang/es.po new file mode 100644 index 00000000..89edca99 --- /dev/null +++ b/app/examples/Drawing/Chart/.lang/es.po @@ -0,0 +1,78 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FormChart.class:129 +msgid "Example to make a Bar Chart" +msgstr "Ejemplo para hacer un Gráfico de Barras" + +#: FormChart.class:146 FormData.class:172 +msgid "&Close" +msgstr "&Cerrar" + +#: FormChart.class:151 +msgid "&About" +msgstr "&Acerca de" + +#: FormChart.class:158 +msgid "(%)" +msgstr "(%)" + +#: FormData.class:62 +msgid "Chart example" +msgstr "Ejemplo de gráficos" + +#: FormData.class:67 +msgid "Data 1" +msgstr "Dato 1" + +#: FormData.class:72 +msgid "Data 2" +msgstr "Dato 2" + +#: FormData.class:77 +msgid "Data 3" +msgstr "Dato 3" + +#: FormData.class:82 +msgid "Data 4" +msgstr "Dato 4" + +#: FormData.class:87 +msgid "Data 5" +msgstr "Dato 5" + +#: FormData.class:92 +msgid "Data 6" +msgstr "Dato 6" + +#: FormData.class:97 +msgid "Data 7" +msgstr "Dato 7" + +#: FormData.class:102 +msgid "Data 8" +msgstr "Dato 8" + +#: FormData.class:107 +msgid "Data 9" +msgstr "Dato 9" + +#: FormData.class:112 +msgid "Data 10" +msgstr "Dato 10" + +#: FormData.class:167 +msgid "&Draw it" +msgstr "&Dibujarlo" + +#~ msgid "Bar Chart" +#~ msgstr "Gráfico de barras" diff --git a/app/examples/Drawing/Chart/.lang/ru.po b/app/examples/Drawing/Chart/.lang/ru.po new file mode 100644 index 00000000..041f5ac3 --- /dev/null +++ b/app/examples/Drawing/Chart/.lang/ru.po @@ -0,0 +1,114 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-28 09:00+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Drawing/Chart/.project:18 +msgid "Bar Chart" +msgstr "Гистограмма" + +#: app/examples/Drawing/Chart/.project:19 +msgid "Example to make bar chart" +msgstr "Пример создания гистограммы" + +#: app/examples/Drawing/Chart/.src/FormChart.class:104 +msgid "

Example to make bar chart

\n" +msgstr "

Пример создания гистограммы

\n" + +#: app/examples/Drawing/Chart/.src/FormChart.class:105 +msgid "This example has made by : " +msgstr "Этот пример сделан: " + +#: app/examples/Drawing/Chart/.src/FormChart.class:109 +msgid "Thank You" +msgstr "Спасибо" + +#: app/examples/Drawing/Chart/.src/FormChart.class:110 app/examples/Drawing/Chart/.src/FormChart.form:20 app/examples/Drawing/Chart/.src/FormData.form:83 +msgid "&Close" +msgstr "Закрыть" + +#: app/examples/Drawing/Chart/.src/FormChart.form:6 +msgid "Example to make a Bar Chart" +msgstr "Пример создания гистограммы" + +#: app/examples/Drawing/Chart/.src/FormChart.form:24 +msgid "&About" +msgstr "О программе" + +#: app/examples/Drawing/Chart/.src/FormChart.form:30 +msgid "(%)" +msgstr "(%)" + +#: app/examples/Drawing/Chart/.src/FormData.form:5 +msgid "Chart example" +msgstr "Пример диаграммы" + +#: app/examples/Drawing/Chart/.src/FormData.form:9 +msgid "Data 1" +msgstr "№ 1" + +#: app/examples/Drawing/Chart/.src/FormData.form:13 +msgid "Data 2" +msgstr "№ 2" + +#: app/examples/Drawing/Chart/.src/FormData.form:17 +msgid "Data 3" +msgstr "№ 3" + +#: app/examples/Drawing/Chart/.src/FormData.form:21 +msgid "Data 4" +msgstr "№ 4" + +#: app/examples/Drawing/Chart/.src/FormData.form:25 +msgid "Data 5" +msgstr "№ 5" + +#: app/examples/Drawing/Chart/.src/FormData.form:29 +msgid "Data 6" +msgstr "№ 6" + +#: app/examples/Drawing/Chart/.src/FormData.form:33 +msgid "Data 7" +msgstr "№ 7" + +#: app/examples/Drawing/Chart/.src/FormData.form:37 +msgid "Data 8" +msgstr "№ 8" + +#: app/examples/Drawing/Chart/.src/FormData.form:41 +msgid "Data 9" +msgstr "№ 9" + +#: app/examples/Drawing/Chart/.src/FormData.form:45 +msgid "Data 10" +msgstr "№ 10" + +#: app/examples/Drawing/Chart/.src/FormData.form:79 +msgid "&Draw it" +msgstr "Рисовать это" + +#: app/examples/Drawing/Chart/.src/FormData.form:87 +msgid "&Random" +msgstr "Случайно" + diff --git a/app/examples/Drawing/Chart/.project b/app/examples/Drawing/Chart/.project new file mode 100644 index 00000000..d8073a77 --- /dev/null +++ b/app/examples/Drawing/Chart/.project @@ -0,0 +1,17 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.0.0 +Title=Bar Chart +Description="Example to make bar chart" +Startup=FormData +Icon=graph.png +Version=3.6.2 +VersionFile=1 +Component=gb.image +Component=gb.gui +TabSize=2 +Translate=1 +Language=fr +Maintainer=fabien +Vendor=Princeton +Address=fabien@arcalis +License=General Public Licence diff --git a/app/examples/Drawing/Chart/.src/FormChart.class b/app/examples/Drawing/Chart/.src/FormChart.class new file mode 100644 index 00000000..a78f456f --- /dev/null +++ b/app/examples/Drawing/Chart/.src/FormChart.class @@ -0,0 +1,112 @@ +' Gambas class file + +' ====================================== +' This example is to make a bar chart +' using DrawingArea +' may be it can help you to make a chart +' if you have any question you can send to +' yudi@kecoak.or.id +' Thank You + + +Public total As Integer +Public value As Float[] + +Public Sub btnClose_Click() + + Me.Close + +End + +Public Sub _new() + + Me.Center + +End + + +Public Sub Form_Open() + + Draw_Chart + +End + +Public Sub Draw_Chart() + + Dim i As Integer + + Dim skala_1 As Integer + Dim skala_2 As Integer + + Dim distance_x As Float + Dim distance_y As Float + + Dim width_draw As Integer + Dim tot As Integer + Dim colors As Integer[] + Dim bottom As Integer + Dim sumdata As Integer + + colors = New Integer[] + colors.Resize(total + 1) + + For i = 1 To total + sumdata = sumdata + value[i] + Next + + If sumdata = 0 Then sumdata = 1 + + For i = 1 To total + value[i] = (value[i] / sumdata) * 10 + Next + + drwchart.Clear + + draw.Begin(drwchart) + + skala_1 = drwchart.ClientH / 11 + distance_y = drwchart.ClientH - skala_1 + bottom = distance_y + 8 + + For i = 0 To 100 Step 10 + draw.Foreground = color.black + draw.Text(i, 0, distance_y) + draw.Line(25, distance_y + 8, drwchart.clientw, distance_y + 8) + distance_y = distance_y - skala_1 + Next + + draw.Line(30, 0, 30, drwchart.ClientH) + + skala_2 = (drwchart.ClientW - 30) \ 10 + distance_x = skala_2 + 30 + width_draw = skala_2 / 2 + + For i = 1 To Total + draw.LineWidth = 1 + draw.Foreground = color.Black + draw.Text(i, distance_x - (width_draw / 2) - 16, drwchart.ClientH - drwChart.Font.Height, 32, drwChart.Font.Height, Align.Center) + draw.Line(distance_x - (width_draw / 2), 0, distance_x - (width_draw / 2), drwchart.ClientH - skala_1 + 8) + draw.LineWidth = width_draw + draw.Foreground = color.RGB(i * 100, i * 10, i * 50) + colors[i] = draw.Foreground + tot = skala_1 * value[i] + skala_1 - 8 + draw.Line(distance_x - (width_draw / 2), bottom, distance_x - (width_draw / 2), drwchart.ClientH - tot) + distance_x = distance_x + skala_2 + Next + + Draw.End + +End + +Public Sub btnAbout_Click() + + Dim i As String + i = ("

Example to make bar chart

\n") + i = i & ("This example has made by : ") & Chr(10) + i = i & " Yudi Astira" & Chr(10) + i = i & " yudi@kecoak.or.id" & Chr(10) + i = i & " necrose #hdteam on Dal.Net" & Chr(10) + i = i & ("Thank You") + message.Info(i, ("&Close")) + +End diff --git a/app/examples/Drawing/Chart/.src/FormChart.form b/app/examples/Drawing/Chart/.src/FormChart.form new file mode 100644 index 00000000..241f2a5d --- /dev/null +++ b/app/examples/Drawing/Chart/.src/FormChart.form @@ -0,0 +1,32 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,72,51) + Background = &HFFEFBF& + Text = ("Example to make a Bar Chart") + Resizable = False + { bg PictureBox + MoveScaled(1,1,70.1429,43.1429) + Background = &HFFFFFF& + Border = Border.Plain + } + { drwChart DrawingArea + MoveScaled(2,2,69,41) + Background = &HFFFFFF& + Cached = True + } + { btnClose Button + MoveScaled(50,45,21,5) + Text = ("&Close") + } + { btnAbout Button + MoveScaled(1,45,21,5) + Text = ("&About") + Picture = Picture["graph.png"] + } + { TextLabel1 TextLabel + MoveScaled(2,2,4,3.5714) + Background = &HFFFFFF& + Text = ("(%)") + } +} diff --git a/app/examples/Drawing/Chart/.src/FormData.class b/app/examples/Drawing/Chart/.src/FormData.class new file mode 100644 index 00000000..971cb001 --- /dev/null +++ b/app/examples/Drawing/Chart/.src/FormData.class @@ -0,0 +1,43 @@ +' Gambas class file + +Public Sub btnClose_Click() + + Me.Close + +End + +Public Sub btnDraw_Click() + Dim total As Integer + total = 10 + With FormChart + .value = New Float[] + .total = total + .value.Resize(total + 1) + Try .value[1] = Val(textbox1.Text) + Try .value[2] = Val(textbox2.Text) + Try .value[3] = Val(textbox3.Text) + Try .value[4] = Val(textbox4.Text) + Try .value[5] = Val(textbox5.Text) + Try .value[6] = Val(textbox6.Text) + Try .value[7] = Val(textbox7.Text) + Try .value[8] = Val(textbox8.Text) + Try .value[9] = Val(textbox9.Text) + Try .value[10] = Val(textbox10.Text) + .Show + End With + +End + +Public Sub btnRandom_Click() + + Dim hCtrl As Control + + For Each hCtrl In Me.Children + + If hCtrl Is TextBox Then + TextBox(hCtrl).Text = CStr(Int(Exp(Rnd(Log(2), 6)))) + Endif + + Next + +End diff --git a/app/examples/Drawing/Chart/.src/FormData.form b/app/examples/Drawing/Chart/.src/FormData.form new file mode 100644 index 00000000..3a003188 --- /dev/null +++ b/app/examples/Drawing/Chart/.src/FormData.form @@ -0,0 +1,89 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(29.7143,16.1429,50,53) + Text = ("Chart example") + Resizable = False + { TextLabel1 TextLabel + MoveScaled(3,2,6.7143,3.1429) + Text = ("Data 1") + } + { TextLabel2 TextLabel + MoveScaled(3,7,6.7143,3.1429) + Text = ("Data 2") + } + { TextLabel3 TextLabel + MoveScaled(3,12,6.7143,3.1429) + Text = ("Data 3") + } + { TextLabel4 TextLabel + MoveScaled(3,17,6.7143,3.1429) + Text = ("Data 4") + } + { TextLabel5 TextLabel + MoveScaled(3,22,6.7143,3.1429) + Text = ("Data 5") + } + { TextLabel6 TextLabel + MoveScaled(3,27,6.7143,3.1429) + Text = ("Data 6") + } + { TextLabel7 TextLabel + MoveScaled(3,32,6.7143,3.1429) + Text = ("Data 7") + } + { TextLabel8 TextLabel + MoveScaled(3,37,6.7143,3.1429) + Text = ("Data 8") + } + { TextLabel9 TextLabel + MoveScaled(3,42,6.7143,3.1429) + Text = ("Data 9") + } + { TextLabel10 TextLabel + MoveScaled(3,47,9,3) + Text = ("Data 10") + } + { TextBox1 TextBox + MoveScaled(13,2,14,4) + } + { TextBox2 TextBox + MoveScaled(13,7,14,4) + } + { TextBox3 TextBox + MoveScaled(13,12,14,4) + } + { TextBox4 TextBox + MoveScaled(13,17,14,4) + } + { TextBox5 TextBox + MoveScaled(13,22,14,4) + } + { TextBox6 TextBox + MoveScaled(13,27,14,4) + } + { TextBox7 TextBox + MoveScaled(13,32,14,4) + } + { TextBox8 TextBox + MoveScaled(13,37,14,4) + } + { TextBox9 TextBox + MoveScaled(13,42,14,4) + } + { TextBox10 TextBox + MoveScaled(13,47,14,4) + } + { btnDraw Button + MoveScaled(30,2,19,4) + Text = ("&Draw it") + } + { btnClose Button + MoveScaled(30,12,19,4) + Text = ("&Close") + } + { btnRandom Button + MoveScaled(30,7,19,4) + Text = ("&Random") + } +} diff --git a/app/examples/Drawing/Chart/graph.png b/app/examples/Drawing/Chart/graph.png new file mode 100644 index 0000000000000000000000000000000000000000..dfa033e005c085fcbae902f0900eb747abae34f4 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv=>VS)S0MfW|9>EP;J^Ve<3B?K z1Calp;s236#?e3trjj7PUA|@^hjBG|MB2#)B4;(#u zQ-X&_LCeL-**Rd#1EGS#LKi^+PjByoN(@_AGh8z=3@&tS*^)9rSLx|fRgI_u&K)~; zEZ{0B*^(g6a4RS-j%Ul##fv4cip_~SA+TVwu9t>GBcrg!0wo>>hC9aP7QZ8UCj+f# N@O1TaS?83{1OT}0NqhhR literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/Clock/.directory b/app/examples/Drawing/Clock/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Drawing/Clock/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Drawing/Clock/.icon.png b/app/examples/Drawing/Clock/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..273c0703b97d94a5a105c6a5c20f9824f26e6697 GIT binary patch literal 4367 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 JPDHLkV1i|-R1^RJ literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/Clock/.icon/16.png b/app/examples/Drawing/Clock/.icon/16.png new file mode 100644 index 0000000000000000000000000000000000000000..b298e08375a4526c31c5182fa0986fc20aeb0dba GIT binary patch literal 949 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 QLjV8(07*qoM6N<$f~@Ra7ytkO literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/Clock/.lang/ca.po b/app/examples/Drawing/Clock/.lang/ca.po new file mode 100644 index 00000000..aaff886d --- /dev/null +++ b/app/examples/Drawing/Clock/.lang/ca.po @@ -0,0 +1,63 @@ +# Catalan translation of Clock +# Copyright (C) 2000-2010 Benoît Minisini. +# This file is distributed under the same license as the Clock package. +# Jordi Sayol , 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: Clock\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2010-12-16 23:34+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FClock.class:224 +msgid "About" +msgstr "Quant a" + +#: .project:2 +msgid "A clock example made by Fabien Bodard." +msgstr "Un exemple de rellotge fet per en Fabien Bodard." + +#: FClock.class:212 +msgid "Always on top" +msgstr "Sempre per damunt" + +#: FClock.class:179 +msgid "central" +msgstr "central" + +#: .project:1 +msgid "Clock" +msgstr "Rellotge" + +#: FClock.class:184 +msgid "Clock 1" +msgstr "Rellotge 1" + +#: FClock.class:190 +msgid "Clock 2" +msgstr "Rellotge 2" + +#: FClock.class:196 +msgid "Clock 3" +msgstr "Rellotge 3" + +#: FClock.class:203 +msgid "Clock 4" +msgstr "Rellotge 4" + +#: FClock.class:232 +msgid "Quit" +msgstr "Surt" + +#: FClock.class:216 +msgid "Show Window" +msgstr "Mostra la finestra" + diff --git a/app/examples/Drawing/Clock/.lang/cs.po b/app/examples/Drawing/Clock/.lang/cs.po new file mode 100644 index 00000000..a881de9b --- /dev/null +++ b/app/examples/Drawing/Clock/.lang/cs.po @@ -0,0 +1,56 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Clock" +msgstr "Hodiny" + +#: .project:2 +msgid "A clock example made by Fabien Bodard." +msgstr "Příklad hodiny od Fabien Bodard." + +#: FClock.form:25 +msgid "central" +msgstr "centrální" + +#: FClock.form:30 +msgid "Clock 1" +msgstr "Hodiny 1" + +#: FClock.form:36 +msgid "Clock 2" +msgstr "Hodiny 2" + +#: FClock.form:42 +msgid "Clock 3" +msgstr "Hodiny 3" + +#: FClock.form:49 +msgid "Clock 4" +msgstr "Hodiny 4" + +#: FClock.form:57 +msgid "Always on top" +msgstr "Vždy nahoře" + +#: FClock.form:62 +msgid "Show Window" +msgstr "Ukaž okno" + +#: FClock.form:70 +msgid "About" +msgstr "O programu" + +#: FClock.form:77 +msgid "Quit" +msgstr "Ukončit" diff --git a/app/examples/Drawing/Clock/.lang/de.po b/app/examples/Drawing/Clock/.lang/de.po new file mode 100644 index 00000000..5a54a3bb --- /dev/null +++ b/app/examples/Drawing/Clock/.lang/de.po @@ -0,0 +1,57 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Clock" +msgstr "Uhr" + +#: .project:2 +msgid "A clock example made by Fabien Bodard." +msgstr "Ein Beispiel für eine Uhr von Fabien Bodard." + +#: FClock.form:25 +msgid "central" +msgstr "zentral" + +#: FClock.form:30 +msgid "Clock 1" +msgstr "Uhr 1" + +#: FClock.form:36 +msgid "Clock 2" +msgstr "Uhr 2" + +#: FClock.form:42 +msgid "Clock 3" +msgstr "Uhr 3" + +#: FClock.form:49 +msgid "Clock 4" +msgstr "Uhr 4" + +#: FClock.form:57 +msgid "Always on top" +msgstr "Immer im Vordergrund" + +#: FClock.form:62 +msgid "Show Window" +msgstr "Fenster zeigen" + +#: FClock.form:70 +msgid "About" +msgstr "Über" + +#: FClock.form:77 +msgid "Quit" +msgstr "Beenden" + diff --git a/app/examples/Drawing/Clock/.lang/es.po b/app/examples/Drawing/Clock/.lang/es.po new file mode 100644 index 00000000..30fc57cd --- /dev/null +++ b/app/examples/Drawing/Clock/.lang/es.po @@ -0,0 +1,53 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FClock.class:195 +msgid "central" +msgstr "central" + +#: FClock.class:200 +msgid "Clock 1" +msgstr "Reloj 1" + +#: FClock.class:206 +msgid "Clock 2" +msgstr "Reloj 2" + +#: FClock.class:212 +msgid "Clock 3" +msgstr "Reloj 3" + +#: FClock.class:219 +msgid "Clock 4" +msgstr "Reloj 4" + +#: FClock.class:228 +msgid "Always on top" +msgstr "Siempre al frente" + +#: FClock.class:233 +msgid "Show Window" +msgstr "Mostrar ventana" + +#: FClock.class:242 +msgid "About" +msgstr "Acerca de" + +#: FClock.class:250 +msgid "Quit" +msgstr "Salir" + +#~ msgid "Clock" +#~ msgstr "Reloj" + +#~ msgid "A clock example made by Fabien Bodard." +#~ msgstr "Un ejemplo de reloj hecho por Fabien Bodard." diff --git a/app/examples/Drawing/Clock/.lang/ru.po b/app/examples/Drawing/Clock/.lang/ru.po new file mode 100644 index 00000000..9bc18f6e --- /dev/null +++ b/app/examples/Drawing/Clock/.lang/ru.po @@ -0,0 +1,84 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Drawing/Clock/.project:22 +msgid "Clock" +msgstr "Часы" + +#: app/examples/Drawing/Clock/.project:23 +msgid "A clock example made by Fabien Bodard." +msgstr "Пример часов, сделанный Фабьеном Бодаром." + +#: app/examples/Drawing/Clock/.src/FClock.class:137 +msgid "" +"This example was made by Fabien BODARD\n" +"and was optimized by Benoît MINISINI\n" +"\n" +"Note that the 3rd clock is Microsoft copyrighted.\n" +"You will find it on the future version of windows." +msgstr "" +"Этот пример был сделан Фабьен Бодард\n" +"и был оптимизирован Бенуа Минисини\n" +"\n" +"Обратите внимание, что третьи часы принадлежат Microsoft.\n" +"Вы найдёте их в будущей версии Windows." + +#: app/examples/Drawing/Clock/.src/FClock.form:9 +msgid "central" +msgstr "центральный" + +#: app/examples/Drawing/Clock/.src/FClock.form:13 +msgid "Clock 1" +msgstr "Часы 1" + +#: app/examples/Drawing/Clock/.src/FClock.form:18 +msgid "Clock 2" +msgstr "Часы 2" + +#: app/examples/Drawing/Clock/.src/FClock.form:23 +msgid "Clock 3" +msgstr "Часы 3" + +#: app/examples/Drawing/Clock/.src/FClock.form:29 +msgid "Clock 4" +msgstr "Часы 4" + +#: app/examples/Drawing/Clock/.src/FClock.form:35 +msgid "Always on top" +msgstr "Всегда сверху" + +#: app/examples/Drawing/Clock/.src/FClock.form:39 +msgid "Show Window" +msgstr "Показать окно" + +#: app/examples/Drawing/Clock/.src/FClock.form:45 +msgid "About" +msgstr "О программе" + +#: app/examples/Drawing/Clock/.src/FClock.form:50 +msgid "Quit" +msgstr "Выход" + diff --git a/app/examples/Drawing/Clock/.project b/app/examples/Drawing/Clock/.project new file mode 100644 index 00000000..265c5cb9 --- /dev/null +++ b/app/examples/Drawing/Clock/.project @@ -0,0 +1,21 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.8.90 +Title=Clock +Startup=FClock +Icon=img/clock_bg_big4.png +Version=3.8.90 +VersionFile=1 +Component=gb.image +Component=gb.gui +Description="A clock example made by Fabien Bodard." +Environment="GB_GUI=gb.qt5" +TabSize=2 +Translate=1 +Language=fr +Maintainer=fabien +Vendor=Princeton +Address=fabien@arcalis +License=General Public Licence +Prefix=1 +Packager=1 +Systems=mandrake diff --git a/app/examples/Drawing/Clock/.src/FClock.class b/app/examples/Drawing/Clock/.src/FClock.class new file mode 100644 index 00000000..461dcff5 --- /dev/null +++ b/app/examples/Drawing/Clock/.src/FClock.class @@ -0,0 +1,170 @@ +' Gambas class file + +Private picHour As Image +Private picMinute As Image +Private picSecond As Image +Private Clock As Image +Private Buffer As Picture +Private HE As Integer +Private WI As Integer +'PRIVATE BackPicture AS String +Private $MX As Integer +Private $MY As Integer +Private $hMenu As Menu + + +Public Sub DrawTime() + + Dim tmpImg As Image + 'Dim hPict As Picture + Dim hPict As Image + Dim I As Integer + + WI = Clock.Width + HE = Clock.Height + + ' hPict = Clock.Picture + ' Draw.Begin(hPict) + ' tmpImg = picHour.Rotate(- Hour(Now) * Pi(2 / 12)) + ' Draw.Image(tmpImg, WI / 2 - tmpImg.Width / 2, HE / 2 - tmpImg.Height / 2) + ' tmpImg = picMinute.Rotate(- Minute(Now) * Pi(2 / 60)) + ' Draw.Image(tmpImg, WI / 2 - tmpImg.Width / 2, HE / 2 - tmpImg.Height / 2) + ' tmpImg = picSecond.Rotate(- Second(Now) * Pi(2 / 60)) + ' Draw.Image(tmpImg, WI / 2 - tmpImg.Width / 2, HE / 2 - tmpImg.Height / 2) + ' Draw.End + ' + ' Me.Picture = hPict + + 'hPict = New Image(Clock.W, Clock.H, Color.Transparent) + 'hPict.Draw(Clock, 0, 0) + hPict = Clock.Copy() + + 'Draw.Begin(hPict) + 'tmpImg = picHour.Rotate(- Hour(Now) * Pi(2 / 12)) + tmpImg = picHour.Rotate(-((Hour(Now) * 60) + Minute(Now)) * Pi(1 / 360)) + hPict.PaintImage(tmpImg, WI / 2 - tmpImg.Width / 2, HE / 2 - tmpImg.Height / 2) + tmpImg = picMinute.Rotate(-Minute(Now) * Pi(2 / 60)) + hPict.PaintImage(tmpImg, WI / 2 - tmpImg.Width / 2, HE / 2 - tmpImg.Height / 2) + tmpImg = picSecond.Rotate(-Second(Now) * Pi(2 / 60)) + hPict.PaintImage(tmpImg, WI / 2 - tmpImg.Width / 2, HE / 2 - tmpImg.Height / 2) + 'Draw.End + + Me.Picture = hPict.Picture + 'Me.Mask = Not mnuShowWindow.Value + +End + +Private Sub SetClock(iClock As Integer) + + Dim hImage As Image + Dim hBuffer As Image + Dim hMenu As Menu + Dim X, Y As Integer + Dim iColor As Integer + Dim iGray As Integer + + hImage = Image.Load("img/clock_bg_big" & iClock & ".png") + + ' hBuffer = NEW Image(hImage.Width + 2, hImage.Height + 2, TRUE) + ' hBuffer.Draw(hImage, 1, 0) + ' hBuffer.Draw(hImage, 1, 2) + ' hBuffer.Draw(hImage, 0, 1) + ' hBuffer.Draw(hImage, 2, 1) + ' + ' FOR X = 0 TO hImage.Width - 1 + ' FOR Y = 0 TO hImage.Height - 1 + ' iColor = hBuffer[X, Y] + ' iGray = &H80 'Color[iColor].Value + ' iColor = Color.RGB(iGray, iGray, iGray, Color[iColor].Alpha) + ' hBuffer[X, Y] = iColor + ' NEXT + ' NEXT + ' + ' hBuffer.Draw(hImage, 1, 1) + ' hImage = hBuffer + + Clock = hImage '.Picture + DrawTime + + For Each hMenu In mnuPopup.Children + If hMenu.Tag Then + hMenu.Checked = Val(hMenu.Tag) = iClock + Endif + Next + +End + + +Public Sub Form_Open() + + picMinute = Image.Load("img/arrow_min.png") + picHour = Image.Load("img/arrow_hour.png") + picSecond = Image.Load("img/arrow_sec.png") + + SetClock(3) + Timer1.Enabled = True + +End + +Public Sub Timer1_Timer() + + DrawTime() + +End + + +Public Sub Form_Menu() + + mnuPopup.Popup + +End + +Public Sub mnuClock_Click() + + SetClock(Val(Last.Tag)) + +End + + +Public Sub mnuQuit_Click() + + Me.Close + +End + +Public Sub mnuAbout_Click() + + Message(("This example was made by Fabien BODARD\nand was optimized by Benoît MINISINI\n\nNote that the 3rd clock is Microsoft copyrighted.\nYou will find it on the future version of windows.")) + +End + +Public Sub Form_MouseDown() + + $MX = Mouse.ScreenX - Me.X + $MY = Mouse.ScreenY - Me.Y + +End +' +Public Sub Form_MouseMove() + + If Mouse.Left Then Me.Move(Mouse.ScreenX - $MX, Mouse.ScreenY - $MY) + +End + +Public Sub mnuOntop_Click() + + 'mnuOnTop.Checked = Not mnuOntop.Checked + Me.TopOnly = Not Me.TopOnly + +End + + +Public Sub mnuShowWindow_Click() + + 'mnuShowWindow.Checked = Not mnuShowWindow.Checked + 'ME.Border = If(mnuShowWindow.Checked, Window.Fixed, Window.None) + Me.Mask = Not mnuShowWindow.Value + Me.SkipTaskbar = Not mnuShowWindow.Value + Me.Border = mnuShowWindow.Value + +End diff --git a/app/examples/Drawing/Clock/.src/FClock.form b/app/examples/Drawing/Clock/.src/FClock.form new file mode 100644 index 00000000..798c6fb6 --- /dev/null +++ b/app/examples/Drawing/Clock/.src/FClock.form @@ -0,0 +1,55 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(80.1429,67,43,43) + Mask = True + Border = False + SkipTaskbar = True + { mnuPopup Menu + Text = ("central") + Visible = False + { mnuClock1 Menu mnuClock + Name = "mnuClock1" + Text = ("Clock 1") + Tag = "1" + } + { mnuClock2 Menu mnuClock + Name = "mnuClock2" + Text = ("Clock 2") + Tag = "2" + } + { mnuClock3 Menu mnuClock + Name = "mnuClock3" + Text = ("Clock 3") + Checked = True + Tag = "3" + } + { mnuClock4 Menu mnuClock + Name = "mnuClock4" + Text = ("Clock 4") + Tag = "4" + } + { mn2 Menu + } + { mnuOntop Menu + Text = ("Always on top") + Toggle = True + } + { mnuShowWindow Menu + Text = ("Show Window") + Toggle = True + } + { mnu1 Menu + } + { mnuAbout Menu + Text = ("About") + } + { mn Menu + } + { mnuQuit Menu + Text = ("Quit") + } + } + { Timer1 #Timer + } +} diff --git a/app/examples/Drawing/Clock/img/arrow_hour.png b/app/examples/Drawing/Clock/img/arrow_hour.png new file mode 100644 index 0000000000000000000000000000000000000000..ec7462df9d539033373b317298a4d4c236a140bd GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^CxG}E2Mdt2jb=|}U| xd-_3~>}@wGCJn6edX4(dbMqKcy^NK&VUGO{6~WgZ6D5m5@}91KF6*2UngC$Cg9-ou literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/Clock/img/arrow_min.png b/app/examples/Drawing/Clock/img/arrow_min.png new file mode 100644 index 0000000000000000000000000000000000000000..af461315674bbc32c6b0b9dec173040777d67ea9 GIT binary patch literal 420 zcmeAS@N?(olHy`uVBq!ia0vp^CxG}E2Mdt2jb=|}U|`Jlba4!+xb^n#Lf=+HiMEUU zO-d})=1J@-(?kU{(h`N$b~M>KFiV}4|Fy(2y=i;prI0c#vTtUn4*_E?q zPQQNss`tNlSzj5R|9D&Um7z{p#chIwV-icJ;Gkoq^}m0%?zxHa_00$E+p6zOXx}+| zcV&d_V~%Q;$~l+kJS+U#qx?qjN$tL8+4sWFTO5+hKk@m_xig<%NxI)qK2dou?b)8H sV}jo}KH16}f8JY#2oPAnVA2Q5>KHr>1dVDrS(rhxp00i_>zopr0GpYIG5`Po literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/Clock/img/arrow_sec.png b/app/examples/Drawing/Clock/img/arrow_sec.png new file mode 100644 index 0000000000000000000000000000000000000000..e5c42ad358eba98bf9d357e753223a6f0ada4260 GIT binary patch literal 1253 zcmeAS@N?(olHy`uVBq!ia0vp^e}VWn2Q!eIwkhc{0|VpH0G|+7AU9?E|4}rgL*UYz zN8-SUoL&;-7tFxK&Lb!;qo}5BU~1*y>g694!WzaA!5zgH6DN|8B$Xb5TR9bFPXT(c<0a*Adv&6W%u=cG8sOX=yWO=ggg7v~Y37(&Z}~SFdef zzp;1A#BDpK@0zt|-+}{&mK`~^=ESK@XSbfexcl=&!JBu_ zKD_+&<^8uGUw{4i{jYxSHA@BtCJRp&$B>F!Z*Sgo>SGjfdnj-*W(r%qR;S5DkNt}( z9TY`USDAPUab>Exx`teTEoK$Xe!ps6!rXV|?k*maR6Jpb^}3=JL+K1Y2ib+p0TW9Y zUTMfSSh=w;SoDJ7N+D3DiO<3HGUEyfD+W<-_63h#Fof91Hh3*y4(Kdl(9*oXUiZm! zS3`+btDeHrdCRyxGGCT3YARoN?DtG^SAz)Gmn~CEr|BuAKEJ@ab*^@!zunR zYbqZq#X4y1a1o!t)%}7gsE`xLym-R{~Y~ zsmD6J(ptdnQT`q%^m{4L%-@W$4pkA3;uGXTfkN}*b~Svl02(##3y}A(3ds8+2~_Z} zNl#&K&SGv4=H?Q{%on1u4pQ$HaeF8)2J+U-)>G)+5A>|CEzpXyDnRA8{lzCNy9YGk z<#(XaVTM?TUlz{d6VlvYFkM=H9w>C0CDviqZ!hr)&z1v)4w=L{M8yEjJG~ibUg}gm zh1%IbyY7nvu8U@~X$boFyt=akR{0B_@vFaQ7m literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/Clock/img/clock_bg_big1.png b/app/examples/Drawing/Clock/img/clock_bg_big1.png new file mode 100644 index 0000000000000000000000000000000000000000..3001659b1c75dc56c6aac7aa1975eb9dac7525ba GIT binary patch literal 19642 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

QG{Eg$ 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 Y&*?+QoVXDF=Y$Pfr*zZ{)huuQAHMzFDF6Tf literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/Clock/img/clock_bg_big3.png b/app/examples/Drawing/Clock/img/clock_bg_big3.png new file mode 100644 index 0000000000000000000000000000000000000000..53f378eb97ee763fffb6385fa08cf6f02b949237 GIT binary patch literal 50841 zcmW(-WmJ^g8XhE-4gu+M;2^?)bT`rx(p>`5-JQ~)bR!@g(%m7F1Jcsn(tS5~Eg1j6 zV!qjLJhct~pdf|$g5(7R0>PAiFRl#!y$9d7Xei({$0~jW0`Y@Li;Jkb&F$a2H@qJF zNcrV~W^3V8@btshWcIF7l$P>m2&;g;{t1QRCgPyzGtFmA`t76Lt(UVz^F;F+2396W zXmtL5ZAWzw<4UA>;c8eNhWUP?M{#jEMM=}r$^1YEQhsIeiK_OiR0;ujZ`KZ~c>4-b7 zupYdo)FQRqdcMw7v%rwpgZL)(=+>}#5sNn?ng~gRR5*cEZJNDIt7M8XO49hJa#5+R zwRPDa%i6Ruwa-QH9i2<>$6c1ke-(PIQ=^YE^SZ|M9*~Nf&I3fss}84}4{pwlI&Ghf zj8@CT!^8RhUEh_krTiYJLc>_P9N%#o+i_ZUr|?=r-6AVfLpLN2aKwU)v139yc%+C! z#+-E@B%@fNqmH^nsRf-djO2pnL)8YvC{DVe1s3M)BtH4djSbb+4nEG#=e=cRW$$XW z4z4BhPWCGvZz`5rrcN(p_LlUhZ{~m8ud+O>cK!bSn^ZP`0?~ERd3w)Dw>^uMbIY9~ zbr?z#g)(=*>9rKP<<3fD8aa5BS|Bp*Jj-(5M;t+p*aMBF^MN>=zV|VwwI@SuD(|kd z=8i_3uj?cZJi0yhe(Xzm_bF3LTbs{)tuKnczOIhK_qY>PKMunt;o`;kQrAT%w$Cv~ zC^qH8-{9cjBj#^1OTEN=6X5Y}>Z|JN{)i=m$77c#4xw&jw%7YM6TbY>sIZM)9?_Ud za{H`aW&whOgb+X#8$=P3bN6@02?xo4fo%H*hJhPG4TVBu2Thi_vA_eUsi`sRHaYE( zPM7O?HYgW)9pq8oZ|`UeJT8?Vyv+4|KHq-L^=P(ob+TrwtD|$5mXMI(n+MO8$2}# zb|WIi$VD$}o+F7+aUm-Ul~W$Sz(RD|d2oD3 zpGM8Hz~Yy&cq}7z0#ddNx^OzYBuyfIh`yaZKiZ|4+*4tMCxFUt%l)7J=;`-Xkwu&U zDq+E_{+Su#>RG0`x;neVg+_X2orYtgl9CeNhw&JnvvKYFzir><--!D{4yJt$)Y~uL z+FobYe@?yVPCqpsHp8#g!fZQ|%}X}bjDLe)RU%$tp(Tf;9%b27p0{YzAI8`CACkye zUO!?Oxr(n!I5|$*mzy-kO?sYoOW1eN9^b!?+te#nOoP{aB;}GRaMUaA6jt+nS6AE) zjbyv$yquhz%w9XP`Zqd-@N0OC*E+3!^VHF)c3G?F+3lpy{j|_sYMxX~o2QM

Ctj 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 literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/Clock/img/clock_bg_big4.png b/app/examples/Drawing/Clock/img/clock_bg_big4.png new file mode 100644 index 0000000000000000000000000000000000000000..91bdb307ec43d140ab3fcaa753d85bdf8ebe076d GIT binary patch literal 21425 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

fW?v-S#gJ_5ey@ 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 literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/Fractal/.directory b/app/examples/Drawing/Fractal/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Drawing/Fractal/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Drawing/Fractal/.hidden/screenshots/2014-12-14.png b/app/examples/Drawing/Fractal/.hidden/screenshots/2014-12-14.png new file mode 100644 index 0000000000000000000000000000000000000000..be2de25ed3710725ae1ee2e61e0bbf5d24ab7a92 GIT binary patch literal 152730 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

wP{jbT0hbxc`gsE+TZ7XbB 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 JPDHLkV1hqvs7C+* literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/Fractal/.lang/cs.po b/app/examples/Drawing/Fractal/.lang/cs.po new file mode 100644 index 00000000..92f007d1 --- /dev/null +++ b/app/examples/Drawing/Fractal/.lang/cs.po @@ -0,0 +1,60 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Fractal" +msgstr "-" + +#: .project:2 +msgid "Mandelbrot Fractal with Just-In-Time compilation" +msgstr "Mandelbrot Fractal s Just-In-Time kompilací" + +#: FFractal.class:95 +msgid "Press F to deactivate Just-In-Time compilation" +msgstr "Stiskněte tlačítko F pro deaktivaci Just-In-Time kompilace" + +#: FFractal.class:97 +msgid "Press F to activate Just-In-Time compilation" +msgstr "Stiskněte tlačítko F pro aktivaci Just-In-Time kompilace" + +#: FFractal.class:102 +msgid "Press R to hide rectangle optimization" +msgstr "Stisknutím klávesy R skrýt obdélník optimalizace" + +#: FFractal.class:104 +msgid "Press R to show rectangle optimization" +msgstr "Stisknutím tlačítka R se zobrazí obdélník optimalizace" + +#: FFractal.class:108 +msgid "Zoom" +msgstr "-" + +#: FFractal.class:108 +msgid "Speed" +msgstr "Rychlost" + +#: FFractal.class:108 +msgid "Fast" +msgstr "Rychle" + +#: FFractal.class:108 +msgid "Slow" +msgstr "Pomalu" + +#: FFractal.class:108 +msgid "Max" +msgstr "-" + +#: FFractal.class:108 +msgid "Tasks" +msgstr "Úkoly" + diff --git a/app/examples/Drawing/Fractal/.lang/fr.po b/app/examples/Drawing/Fractal/.lang/fr.po new file mode 100644 index 00000000..aa2462dc --- /dev/null +++ b/app/examples/Drawing/Fractal/.lang/fr.po @@ -0,0 +1,61 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Fractal" +msgstr "Fractal" + +#: .project:2 +msgid "Mandelbrot Fractal with Just-In-Time compilation" +msgstr "Fractale de Mandelbort avec compilation Just-In-Time" + +#: FFractal.class:95 +msgid "Press F to deactivate Just-In-Time compilation" +msgstr "Appuyez sur F pour désactiver la compilation \"juste à-temps\"" + +#: FFractal.class:97 +msgid "Press F to activate Just-In-Time compilation" +msgstr "Appuyez sur F pour activer la compilation \"juste à-temps\"" + +#: FFractal.class:102 +msgid "Press R to hide rectangle optimization" +msgstr "Appuyez sur R pour cacher l'optimisation par rectangles" + +#: FFractal.class:104 +msgid "Press R to show rectangle optimization" +msgstr "Appuyez sur R pour afficher l'optimisation par rectangles" + +#: FFractal.class:108 +msgid "Fast" +msgstr "Rapide" + +#: FFractal.class:108 +msgid "Max" +msgstr "Max" + +#: FFractal.class:108 +msgid "Slow" +msgstr "Lente" + +#: FFractal.class:108 +msgid "Speed" +msgstr "Vitesse" + +#: FFractal.class:108 +msgid "Tasks" +msgstr "Tâches" + +#: FFractal.class:108 +msgid "Zoom" +msgstr "Zoom" + diff --git a/app/examples/Drawing/Fractal/.lang/ru.po b/app/examples/Drawing/Fractal/.lang/ru.po new file mode 100644 index 00000000..d309da9a --- /dev/null +++ b/app/examples/Drawing/Fractal/.lang/ru.po @@ -0,0 +1,80 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Drawing/Fractal/.project:19 +msgid "Fractal" +msgstr "Фрактал" + +#: app/examples/Drawing/Fractal/.project:20 +msgid "" +"Mandelbrot Fractal with Just-In-Time compilation.\n" +"\n" +"This example allows to freely zoom into the Mandelbrot fractal in real-time. You can toggle just-in-time compilation by hitting the \"F\" key." +msgstr "" +"Фрактал Мандельброта с компиляцией точно по времени.\n" +"\n" +"Этот пример позволяет свободно увеличивать фрактал Мандельброта в реальном времени. Вы можете включить компиляцию точно по времени, нажав клавишу «F»." + +#: app/examples/Drawing/Fractal/.src/FFractal.class:104 +msgid "Press F to deactivate Just-In-Time compilation" +msgstr "Нажмите F деактивировать компиляцию точно по времени" + +#: app/examples/Drawing/Fractal/.src/FFractal.class:106 +msgid "Press F to activate Just-In-Time compilation" +msgstr "Нажмите F активировать компиляцию точно по времени" + +#: app/examples/Drawing/Fractal/.src/FFractal.class:111 +msgid "Press R to hide rectangle optimization" +msgstr "Нажмите R скрыть прямоугольную оптимизацию" + +#: app/examples/Drawing/Fractal/.src/FFractal.class:113 +msgid "Press R to show rectangle optimization" +msgstr "Нажмите R показать прямоугольную оптимизацию" + +#: app/examples/Drawing/Fractal/.src/FFractal.class:117 +msgid "Zoom" +msgstr "Масштаб" + +#: app/examples/Drawing/Fractal/.src/FFractal.class:117 +msgid "Speed" +msgstr "Скорость" + +#: app/examples/Drawing/Fractal/.src/FFractal.class:117 +msgid "Fast" +msgstr "Быстро" + +#: app/examples/Drawing/Fractal/.src/FFractal.class:117 +msgid "Slow" +msgstr "Медленно" + +#: app/examples/Drawing/Fractal/.src/FFractal.class:117 +msgid "Max" +msgstr "Макс" + +#: app/examples/Drawing/Fractal/.src/FFractal.class:117 +msgid "Tasks" +msgstr "Задачи" + diff --git a/app/examples/Drawing/Fractal/.project b/app/examples/Drawing/Fractal/.project new file mode 100644 index 00000000..5673cb3e --- /dev/null +++ b/app/examples/Drawing/Fractal/.project @@ -0,0 +1,18 @@ +# Gambas Project File 3.0 +Title=Fractal +Startup=FFractal +Icon=icon.png +Version=1.0.0 +Component=gb.image +Component=gb.gui +Component=gb.form +Description="Mandelbrot Fractal with Just-In-Time compilation.\n\nThis example allows to freely zoom into the Mandelbrot fractal in real-time. You can toggle just-in-time compilation by hitting the \"F\" key." +Authors="Benoît Minisini" +Environment="GB_GUI=gb.qt5" +TabSize=2 +Translate=1 +Language=en +Vendor=Example +Packager=1 +Tags=JustInTime +screenshot=2014-12-14.png diff --git a/app/examples/Drawing/Fractal/.src/FFractal.class b/app/examples/Drawing/Fractal/.src/FFractal.class new file mode 100644 index 00000000..2e2769f2 --- /dev/null +++ b/app/examples/Drawing/Fractal/.src/FFractal.class @@ -0,0 +1,245 @@ +' Gambas class file + +Private $hRose As Image +Private $fScale As Float = 0.0078125 +Private ITER_MAX As Integer = 128 +Private $aColor As New Integer[64] +Private $XC As Float +Private $YC As Float +Private $MX As Integer +Private $MY As Integer +Private $XX As Float +Private $YY As Float +Private $bFast As Boolean +Private $bRect As Boolean + +Private NTASK As Integer = 8 +Private $aTask As New FractalTask[NTASK] +Private $aResult As New Image[NTASK] + +Public Sub FractalTask_Kill() + + Dim hTask As FractalTask = Last + Dim aResult As Integer[] + Dim hImage As Image + + 'Print hTask.Index; ": *KILL*" + Try aResult = hTask.Value + If aResult Then + hImage = New Image(hTask.Width, hTask.Height) + hImage.Pixels = aResult + $aResult[hTask.Index] = hImage + dwgFractal.Refresh + Endif + +End + +' Public Sub FractalTask_Read(Data As String) +' +' Dim hTask As FractalTask = Last +' Print hTask.Index; ": "; Data +' +' End +' +' Public Sub FractalTask_Error(Data As String) +' +' Dim hTask As FractalTask = Last +' Print hTask.Index; "= "; Data +' +' End + +Public Sub dwgFractal_Draw() + + Dim hImage As Image + Dim X, Y, I, J As Float + Dim YT As Integer + Dim HT As Integer + Dim H As Integer + + 'hImage = New Image(Draw.Clip.W, Draw.Clip.H) + For I = 0 To Paint.W Step $hRose.W + For J = 0 To Paint.H Step $hRose.H + 'hImage.DrawImage($hRose, I, J) + Paint.DrawImage($hRose, I, J) + Next + Next + + X = $XC - (dwgFractal.W / 2) * $fScale + Y = $YC - (dwgFractal.H / 2) * $fScale + + 'If $bFast Then + + ' FastDrawFractalRect(hImage, X, Y, $fScale, 0, 0, hImage.W, hImage.H) + ' Draw.Image(hImage, Draw.Clip.X, Draw.Clip.Y) + + 'Else + + 'Draw.Image(hImage, Draw.Clip.X, Draw.Clip.Y) + HT = CInt(Paint.H) \ NTASK + For I = 0 To NTASK - 1 + If $aResult[I] Then + If I < (NTASK - 1) Then + H = HT + Else + H = Paint.H - YT + Endif + Paint.DrawImage($aResult[I], 0, YT, Paint.W, H) + Endif + 'RunTask(0, X, Y, 0, YT, hImage.W, HT) + 'Y += HT * $fScale + YT += HT + Next + 'RunTask(I, X, Y, 0, YT, hImage.W, hImage.H - HT) + 'DrawFractalRect(hImage, X, Y, $fScale, 0, 0, hImage.W, hImage.H) + 'Endif + + + Paint.Background = Color.SetAlpha(Color.White, 128) + Paint.Rectangle(4, 4, Draw.Font.Height * 26, Draw.Font.Height * 3 + 32) + Paint.Fill + + YT = 12 + + If $bFast Then + Draw.Text(("Press F to deactivate Just-In-Time compilation"), 12, YT) + Else + Draw.Text(("Press F to activate Just-In-Time compilation"), 12, YT) + Endif + + YT += Draw.Font.Height + 8 + If $bRect Then + Draw.Text(("Press R to hide rectangle optimization"), 12, YT) + Else + Draw.Text(("Press R to show rectangle optimization"), 12, YT) + Endif + + YT += Draw.Font.Height + 8 + Draw.Text(("Zoom") & ": " & CStr((Log2($fScale) + 6) * 8) & " " & ("Speed") & ": " & If($bFast, ("Fast"), ("Slow")) & " " & ("Max") & ": " & ITER_MAX & " " & ("Tasks") & ": " & NTASK, 12, YT) + +End + +Public Sub dwgFractal_MouseWheel() + + Dim fNewScale As Float + + If Mouse.Delta < 0 Then + If Log2($fScale) >= -6 Then Return + fNewScale = $fScale * Sqr(Sqr(Sqr(2))) + ITER_MAX -= 4 + Else + If Log2($fScale) < -50 Then Return + fNewScale = $fScale / Sqr(Sqr(Sqr(2))) + ITER_MAX += 4 + Endif + + $XC += $fScale * (Mouse.X - dwgFractal.W / 2) + $YC += $fScale * (Mouse.Y - dwgFractal.H / 2) + + $fScale = fNewScale + + $XC -= $fScale * (Mouse.X - dwgFractal.W / 2) + $YC -= $fScale * (Mouse.Y - dwgFractal.H / 2) + + If timRedraw.Enabled Then Return + timRedraw.Start + +End + +Public Sub Form_Open() + + Dim I As Integer + + $hRose = Image.Load("rose.jpg") + For I = 0 To $aColor.Max + $aColor[I] = Color.HSV(360 * I / $aColor.Max, 255, 255) + Next + + Me.Center + +End + +Public Sub dwgFractal_MouseDown() + + $MX = Mouse.X + $MY = Mouse.Y + $XX = $XC + $YY = $YC + +End + +Public Sub dwgFractal_MouseMove() + + $XC = $XX + ($MX - Mouse.X) * $fScale + $YC = $YY + ($MY - Mouse.Y) * $fScale + + If timRedraw.Enabled Then Return + timRedraw.Start + +End + + +Public Sub Form_KeyPress() + + If UCase(Key.Text) = "F" Then + $bFast = Not $bFast + If $bFast Then + FractalTask.FastDrawFractalRect(Null, 0, 0, 0, 0, 0, 0, 0) + Endif + Redraw(False) + Else If UCase(Key.Text) = "R" Then + $bRect = Not $bRect + Redraw(False) + Else If Key.Code = Key.Esc Then + Me.Close + Endif + +End + +Private Sub Redraw(bClear As Boolean) + + Dim I As Integer + Dim XO As Float + Dim YO As Float + Dim HT As Integer + + XO = $XC - (Me.ClientW / 2) * $fScale + YO = $YC - (Me.ClientH / 2) * $fScale + + HT = Me.ClientH \ NTASK + + For I = 0 To $aTask.Max + + If $aTask[I] Then Try $aTask[I].Stop + If bClear Then $aResult[I] = Null + + If I = $aTask.Max Then HT = Me.ClientH - HT * $aTask.Max + + $aTask[I] = New FractalTask(XO, YO, $fScale, Me.ClientW, HT, ITER_MAX, $aColor, $bFast, $bRect) As "FractalTask" + $aTask[I].Index = I + + YO += HT * $fScale + + Next + + dwgFractal.Refresh + +End + +Public Sub Form_Resize() + + Redraw(False) '(True) + +End + +Public Sub timRedraw_Timer() + + Dim I As Integer + + For I = 0 To $aTask.Max + If $aTask[I].Running Then Return + Next + + Redraw(False) + timRedraw.Stop + +End diff --git a/app/examples/Drawing/Fractal/.src/FFractal.form b/app/examples/Drawing/Fractal/.src/FFractal.form new file mode 100644 index 00000000..9c92b104 --- /dev/null +++ b/app/examples/Drawing/Fractal/.src/FFractal.form @@ -0,0 +1,18 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,83,64) + Arrangement = Arrange.Fill + { dwgFractal DrawingArea + MoveScaled(6,6,24,24) + Font = Font["+2"] + Background = &HFFFFFF& + Foreground = &H000000& + Focus = True + NoBackground = True + } + { timRedraw #Timer + #MoveScaled(58,26) + Delay = 100 + } +} diff --git a/app/examples/Drawing/Fractal/.src/FractalTask.class b/app/examples/Drawing/Fractal/.src/FractalTask.class new file mode 100644 index 00000000..debfe3a3 --- /dev/null +++ b/app/examples/Drawing/Fractal/.src/FractalTask.class @@ -0,0 +1,324 @@ +' Gambas class file + +Inherits Task + +Public Width As Integer +Public Height As Integer +Public Index As Integer + +Private $XO As Float +Private $YO As Float +Private $SF As Float +Private $bFast As Boolean +Private $iIterMax As Integer +Private $bRect As Boolean +Private $aColor As Integer[] + +Static Private ITER_MAX As Integer +Static Private DRAW_RECT As Boolean +Static Private COLORS As Integer[] + +Public Sub _new(XO As Float, YO As Float, SF As Float, W As Integer, H As Integer, iIterMax As Integer, aColor As Integer[], bFast As Boolean, bRect As Boolean) + + $XO = XO + $YO = YO + $SF = SF + Width = W + Height = H + $aColor = aColor + $bFast = bFast + $bRect = bRect + $iIterMax = iIterMax + +End + +Public Sub Main() As Variant + + Dim hImage As New Image(Width, Height, Color.Transparent) + + ITER_MAX = $iIterMax + DRAW_RECT = $bRect + COLORS = $aColor + + If $bFast Then + FastDrawFractalRect(hImage, $XO, $YO, $SF, 0, 0, Width, Height) + Else + DrawFractalRect(hImage, $XO, $YO, $SF, 0, 0, Width, Height) + Endif + Return hImage.Pixels + +End + +Static Private Sub DrawFractalRect(hImage As Image, XO As Float, YO As Float, SF As Float, X As Integer, Y As Integer, W As Integer, H As Integer) + + Dim I, J, K, C, CC As Integer + Dim XF, YF, XF0, YF0, XF1, YF1 As Float + Dim ZX, ZY, T As Float + Dim bSame As Boolean + Dim bRect As Boolean = DRAW_RECT + + XF0 = XO + X * SF + YF0 = YO + Y * SF + + If W <= 4 And If H <= 4 Then Goto CALC_ALL + + XF1 = XF0 + (W - 1) * SF + YF1 = YF0 + (H - 1) * SF + + If Sgn(XF0) + Sgn(XF1) Or If Sgn(YF0) + Sgn(YF1) Then + + C = 0 + + XF = XF0 + YF = YF0 + I = X + J = Y + GoSub CALC_POINT + CC = C + bSame = True + + XF += SF + For I = X To X + W - 1 + YF = YF0 + J = Y + GoSub CALC_POINT + YF = YF1 + J = Y + H - 1 + GoSub CALC_POINT + XF += SF + Next + + YF = YF0 + SF + For J = Y + 1 To Y + H - 2 + XF = XF0 + I = X + GoSub CALC_POINT + XF = XF1 + I = X + W - 1 + GoSub CALC_POINT + YF += SF + Next + + If bSame Then + If CC Then hImage.FillRect(X + 1, Y + 1, W - 2, H - 2, CC) + If bRect Then + hImage.PaintRect(X + 1, Y + 1, W - 2, H - 2, &HC0FFFFFF&) + Endif + Return + Endif + + Inc X + Inc Y + W -= 2 + H -= 2 + + Endif + + If W >= H Then + DrawFractalRect(hImage, XO, YO, SF, X, Y, W \ 2, H) + DrawFractalRect(hImage, XO, YO, SF, X + (W \ 2), Y, W - (W \ 2), H) + Else + DrawFractalRect(hImage, XO, YO, SF, X, Y, W, H \ 2) + DrawFractalRect(hImage, XO, YO, SF, X, Y + (H \ 2), W, H - (H \ 2)) + Endif + + Return + +CALC_ALL: + + XF = XF0 + For I = X To X + W - 1 + YF = YF0 + For J = Y To Y + H - 1 + + ZX = 0 + ZY = 0 + + For K = 0 To ITER_MAX - 1 + + T = ZX * ZX - ZY * ZY + XF + ZY = 2 * ZX * ZY + YF + + If ((T * T) + (ZY * ZY)) > 4 Then Break + + ZX = T + + Next + + If K < ITER_MAX Then hImage[I, J] = COLORS[K And 63] + + YF += SF + Next + XF += SF + Next + Return + +CALC_POINT: + + ZX = 0 + ZY = 0 + + For K = 0 To ITER_MAX - 1 + + T = ZX * ZX - ZY * ZY + XF + ZY = 2 * ZX * ZY + YF + + If ((T * T) + (ZY * ZY)) > 4 Then Break + + ZX = T + + Next + + If K < ITER_MAX Then + K = K And 63 + C = COLORS[K] + If C <> CC Then bSame = False + hImage[I, J] = C + Else + C = 0 + If C <> CC Then bSame = False + Endif + + Return + +End + +Fast Static Public Sub FastDrawFractalRect(hImage As Image, XO As Float, YO As Float, SF As Float, X As Integer, Y As Integer, W As Integer, H As Integer) + + Dim I, J, K, C, CC As Integer + Dim XF, YF, XF0, YF0, XF1, YF1 As Float + Dim ZX, ZY, T As Float + Dim bSame As Boolean + Dim bRect As Boolean = DRAW_RECT + + If Not hImage Then Return + + XF0 = XO + X * SF + YF0 = YO + Y * SF + + If W <= 4 And If H <= 4 Then Goto CALC_ALL + + XF1 = XF0 + (W - 1) * SF + YF1 = YF0 + (H - 1) * SF + + If Sgn(XF0) + Sgn(XF1) Or If Sgn(YF0) + Sgn(YF1) Then + + C = 0 + + XF = XF0 + YF = YF0 + I = X + J = Y + GoSub CALC_POINT + CC = C + bSame = True + + 'XF += SF + For I = X To X + W - 1 + YF = YF0 + J = Y + GoSub CALC_POINT + YF = YF1 + J = Y + H - 1 + GoSub CALC_POINT + XF += SF + Next + + YF = YF0 + SF + For J = Y + 1 To Y + H - 2 + XF = XF0 + I = X + GoSub CALC_POINT + XF = XF1 + I = X + W - 1 + GoSub CALC_POINT + YF += SF + Next + + If bSame Then + If CC Then hImage.FillRect(X + 1, Y + 1, W - 2, H - 2, CC) + If bRect Then + hImage.PaintRect(X + 1, Y + 1, W - 2, H - 2, &HC0FFFFFF&) + Endif + Return + Endif + + Inc X + Inc Y + W -= 2 + H -= 2 + + Endif + + If W >= H Then + FastDrawFractalRect(hImage, XO, YO, SF, X, Y, W \ 2, H) + FastDrawFractalRect(hImage, XO, YO, SF, X + (W \ 2), Y, W - (W \ 2), H) + Else + FastDrawFractalRect(hImage, XO, YO, SF, X, Y, W, H \ 2) + FastDrawFractalRect(hImage, XO, YO, SF, X, Y + (H \ 2), W, H - (H \ 2)) + Endif + + ' FastDrawFractalRect(hImage, XO, YO, SF, X, Y, W \ 2, H \ 2) + ' FastDrawFractalRect(hImage, XO, YO, SF, X + (W \ 2), Y, W - (W \ 2), H \ 2) + ' FastDrawFractalRect(hImage, XO, YO, SF, X, Y + (H \ 2), W \ 2, H - (H \ 2)) + ' FastDrawFractalRect(hImage, XO, YO, SF, X + (W \ 2), Y + (H \ 2), W - (W \ 2), H - (H \ 2)) + Return + +CALC_ALL: + + XF = XF0 + For I = X To X + W - 1 + YF = YF0 + For J = Y To Y + H - 1 + + ZX = 0 + ZY = 0 + + For K = 0 To ITER_MAX - 1 + + T = ZX * ZX - ZY * ZY + XF + ZY = 2 * ZX * ZY + YF + + If ((T * T) + (ZY * ZY)) > 4 Then Break + + ZX = T + + Next + + If K < ITER_MAX Then hImage[I, J] = COLORS[K And 63] + + YF += SF + Next + XF += SF + Next + Return + +CALC_POINT: + + ZX = 0 + ZY = 0 + + For K = 0 To ITER_MAX - 1 + + T = ZX * ZX - ZY * ZY + XF + ZY = 2 * ZX * ZY + YF + + If ((T * T) + (ZY * ZY)) > 4 Then Break + + ZX = T + + Next + + If K < ITER_MAX Then + K = K And 63 + C = COLORS[K] + If C <> CC Then bSame = False + hImage[I, J] = C + Else + C = 0 + If C <> CC Then bSame = False + Endif + + Return + +End diff --git a/app/examples/Drawing/Fractal/icon.png b/app/examples/Drawing/Fractal/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..03e7cbbfd0279c192012d0b74085e4db69e21eea GIT binary patch literal 4737 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 P00000NkvXXu0mjfyoc68 literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/Fractal/rose.jpg b/app/examples/Drawing/Fractal/rose.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8913cdf64fa15bc387b556aeedc69d3de576eec8 GIT binary patch literal 26938 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 VW=mx72`jhVa^=bx)Kl9(|JejX?3(}p literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/GSLSpline/.directory b/app/examples/Drawing/GSLSpline/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Drawing/GSLSpline/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Drawing/GSLSpline/.icon.png b/app/examples/Drawing/GSLSpline/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..884121225d557ea52e34561a8e0f9ef4a73db60d GIT binary patch literal 4045 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 literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/GSLSpline/.lang/ru.po b/app/examples/Drawing/GSLSpline/.lang/ru.po new file mode 100644 index 00000000..bc8666a9 --- /dev/null +++ b/app/examples/Drawing/GSLSpline/.lang/ru.po @@ -0,0 +1,54 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Drawing/GSLSpline/.project:16 +msgid "Gnu Scientific Library demo" +msgstr "Демонстрация научной библиотеки Gnu" + +#: app/examples/Drawing/GSLSpline/.src/FMain.class:122 +msgid "

Gnu Scientific Library example

Made by Juergen Zdero (juergen@zdero.eu) and Benoît Minisini (gambas@users.sourceforge.net)" +msgstr "

Пример научной библиотеки Gnu

Сделан Юрген Здеро (juergen@zdero.eu) и Бенуа Минисини (gambas@users.sourceforge.net)" + +#: app/examples/Drawing/GSLSpline/.src/FMain.form:5 +msgid "Gnu Scientific Library Example" +msgstr "Пример научной библиотеки Gnu" + +#: app/examples/Drawing/GSLSpline/.src/FMain.form:21 +msgid "Cubic &spline" +msgstr "Куб. сплайн" + +#: app/examples/Drawing/GSLSpline/.src/FMain.form:26 +msgid "&Clear" +msgstr "Очистить" + +#: app/examples/Drawing/GSLSpline/.src/FMain.form:35 +msgid "About..." +msgstr "О программе..." + +#: app/examples/Drawing/GSLSpline/.src/FMain.form:40 +msgid "Close" +msgstr "Закрыть" + diff --git a/app/examples/Drawing/GSLSpline/.project b/app/examples/Drawing/GSLSpline/.project new file mode 100644 index 00000000..53d83a13 --- /dev/null +++ b/app/examples/Drawing/GSLSpline/.project @@ -0,0 +1,15 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.4.90 +Title=Gnu Scientific Library demo +Startup=FMain +Icon=spline.png +Version=3.6.2 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.form +Authors="Juergen Zdero\nBenoît Minisini" +TabSize=3 +SourcePath=/home/op/SDB/Programming/gambas/gambas3_projects/GSL/demo +Packager=1 +Translate=1 diff --git a/app/examples/Drawing/GSLSpline/.src/FMain.class b/app/examples/Drawing/GSLSpline/.src/FMain.class new file mode 100644 index 00000000..c81e131c --- /dev/null +++ b/app/examples/Drawing/GSLSpline/.src/FMain.class @@ -0,0 +1,130 @@ +' Gambas class file + +Library "libgsl:0" + +Private Extern gsl_spline_alloc(pInterpType As Pointer, iSize As Integer) As Pointer +Private Extern gsl_spline_init(pSpline As Pointer, ax As Pointer, ay As Pointer, iSize As Integer) As Integer +Private Extern gsl_spline_eval(pSpline As Pointer, x As Float, pAcc As Pointer) As Float +Private Extern gsl_interp_accel_alloc() As Pointer +Private Extern gsl_spline_free(pSpline As Pointer) +Private Extern gsl_interp_accel_free(pAcc As Pointer) + +Public pointsArr_x As New Float[] +Public pointsArr_y As New Float[] +Public splineArr_x As New Integer[] +Public splineArr_y As New Integer[] + +Public Sub btnCubicSpline_Click() + + Dim xi As Integer + Dim acc As Pointer + Dim spline As Pointer + Dim gsl_interp_cspline As Pointer + + If pointsArr_x.Length < 3 Then Return + + gsl_interp_cspline = Pointer@(System.GetExternSymbol("libgsl:0", "gsl_interp_cspline")) + acc = gsl_interp_accel_alloc() + spline = gsl_spline_alloc(gsl_interp_cspline, pointsArr_x.Count) + gsl_spline_init(spline, pointsArr_x.Data, pointsArr_y.Data, pointsArr_x.Count) + + xi = pointsArr_x[0] + While xi < pointsArr_x[pointsArr_x.Max] + splineArr_x.Add(xi) + splineArr_y.Add(gsl_spline_eval(spline, xi, acc)) + xi += 1 + Wend + dwgGraph.Refresh + + gsl_spline_free(spline) + gsl_interp_accel_free(acc) + +End + +Public Sub dwgGraph_MouseDown() + + splineArr_x.Clear + splineArr_y.Clear + If (pointsArr_x.Length = 0) Or If (Mouse.X > pointsArr_x[pointsArr_x.Max]) Then + pointsArr_x.Add(Mouse.X) + pointsArr_y.Add(Mouse.Y) + Else + dwgGraph.Background = &HFF8080 + Endif + dwgGraph.Refresh + +End + +Public Sub dwgGraph_MouseUp() + + If dwgGraph.Background <> Color.White Then dwgGraph.Background = Color.White + +End + +Public Sub dwgGraph_Draw() + + Dim i As Integer + + 'lines + paint.Brush = paint.Color(Color.DarkGray) + Paint.LineWidth = 0.5 + paint.Font.Size = 10 + For i = 0 To pointsArr_x.Max + If i = 0 Then + Paint.MoveTo(pointsArr_x[i], pointsArr_y[i]) + Else + Paint.LineTo(pointsArr_x[i], pointsArr_y[i]) + Endif + Next + paint.Stroke + + 'numbers + For i = 0 To pointsArr_x.Max + paint.Text(i + 1, pointsArr_x[i], pointsArr_y[i] - 8) + Next + paint.Fill + + 'points + paint.Brush = paint.Color(Color.red) + For i = 0 To pointsArr_x.Max + Paint.Arc(pointsArr_x[i], pointsArr_y[i], 3) + Paint.Fill + Next + + 'spline + If splineArr_x.Count Then + paint.Brush = paint.Color(Color.DarkMagenta) + Paint.LineWidth = 1.0 + For i = 0 To splineArr_x.Max + If i = 0 Then + Paint.MoveTo(splineArr_x[i], splineArr_y[i]) + Else + Paint.LineTo(splineArr_x[i], splineArr_y[i]) + Endif + Next + paint.Stroke + Endif + +End + +Public Sub btnClear_Click() + + pointsArr_x.Clear + pointsArr_y.Clear + splineArr_x.Clear + splineArr_y.Clear + dwgGraph.Refresh + +End + +Public Sub btnAbout_Click() + + Message.Info(("

Gnu Scientific Library example

Made by Juergen Zdero (juergen@zdero.eu) and Benoît Minisini (gambas@users.sourceforge.net)")) + +End + +Public Sub btnClose_Click() + + Me.Close + +End diff --git a/app/examples/Drawing/GSLSpline/.src/FMain.form b/app/examples/Drawing/GSLSpline/.src/FMain.form new file mode 100644 index 00000000..50296ecb --- /dev/null +++ b/app/examples/Drawing/GSLSpline/.src/FMain.form @@ -0,0 +1,45 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,93,60) + Text = ("Gnu Scientific Library Example") + Icon = Picture["spline.png"] + Arrangement = Arrange.Vertical + Spacing = True + Margin = True + { dwgGraph DrawingArea + MoveScaled(2,2,61,36) + Background = &HFFFFFF& + Expand = True + Border = Border.Sunken + } + { HBox1 HBox + MoveScaled(2,41,87,6) + Spacing = True + { btnCubicSpline Button + MoveScaled(0,0,21,6) + Text = ("Cubic &spline") + Picture = Picture["icon:/medium/pen"] + } + { btnClear Button + MoveScaled(22,0,21,6) + Text = ("&Clear") + Picture = Picture["icon:/medium/erase"] + } + { Panel1 Panel + MoveScaled(44,1,1,5) + Expand = True + } + { btnAbout Button + MoveScaled(44,0,21,6) + Text = ("About...") + Picture = Picture["icon:/medium/info"] + } + { btnClose Button + MoveScaled(66,0,21,6) + Text = ("Close") + Picture = Picture["icon:/medium/close"] + Cancel = True + } + } +} diff --git a/app/examples/Drawing/GSLSpline/spline.png b/app/examples/Drawing/GSLSpline/spline.png new file mode 100644 index 0000000000000000000000000000000000000000..0f2bf708db45123cb5529b36d97bd931528fadd7 GIT binary patch literal 1632 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, 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: Gravity\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2010-12-16 23:34+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FMain.class:248 +msgid "0" +msgstr "-" + +#: FAbout.class:24 +msgid "About gbGravity" +msgstr "Quant a gbGravity" + +#: FMain.class:302 +msgid "About gbGravity..." +msgstr "Quant al gbGravity..." + +#: FMain.class:167 +msgid "Add a Ball" +msgstr "Afegeix un bola" + +#: FMain.class:192 +msgid "Add more Balls" +msgstr "Afegeix més boles" + +#: FMain.class:289 +msgid "Ball out of Range" +msgstr "Bola fora de rang" + +#: FAbout.class:51 +msgid "by Iman Karim" +msgstr "per Iman Karim" + +#: FMain.class:216 +msgid "Choose Point:" +msgstr "Punt triat:" + +#: FMain.class:313 +msgid "Clear each Frame" +msgstr "Neteja cada marc" + +#: FMain.class:204 +msgid "Click and hold on Gamefield and move your Mouse!" +msgstr "Fes un clic mantingut dins del camp de joc i mou el teu ratolí!" + +#: FMain.class:221 +msgid "ComboBox1" +msgstr "ComboBox1" + +#: FMain.class:265 +msgid "Current Ball aX:" +msgstr "Bola actual aX:" + +#: FMain.class:276 +msgid "Current Ball aY:" +msgstr "Bola actual aY:" + +#: FMain.class:243 +msgid "Current Ball X:" +msgstr "Bola actual X:" + +#: FMain.class:254 +msgid "Current Ball Y:" +msgstr "Bola actual Y:" + +#: FMain.class:179 +msgid "Floor Slide 0.9" +msgstr "Terra relliscós 0.9" + +#: FMain.class:228 +msgid "Focus Point" +msgstr "Punt amb el focus" + +#: FAbout.class:36 +msgid "gbGravity" +msgstr "gbGravity" + +#: FMain.class:155 +msgid "gbGravity - Iman Karim" +msgstr "gbGravity - Iman Karim" + +#: FMain.class:307 +msgid "Gravity" +msgstr "Gravetat" + +#: FMain.class:161 +msgid "Gravity 0.9" +msgstr "Gravity 0.9" + +#: FAbout.class:41 +msgid "Gravity like Simulator" +msgstr "Simulador de gravetat" + +#: .project:1 +msgid "Gravity Simulator" +msgstr "Simulador de gravetat" + +#: FAbout.class:56 +msgid "Ok - kool!" +msgstr "D'acord - Guai!" + +#: FMain.class:212 +msgid "Point Setup" +msgstr "Configuració del punt" + +#: FMain.class:234 +msgid "Randomize Kick" +msgstr "Sortida aleatoria" + +#: FMain.class:319 +msgid "Sky" +msgstr "Cel" + +#: FAbout.class:62 +msgid "Thanks to the Gambas team!" +msgstr "Gràcies a l'equip del Gambas!" + +#: FAbout.class:46 +msgid "Written in Gambas 1.9.46" +msgstr "Escrit amb Gambas 1.9.46" + diff --git a/app/examples/Drawing/Gravity/.lang/cs.po b/app/examples/Drawing/Gravity/.lang/cs.po new file mode 100644 index 00000000..a55f0a13 --- /dev/null +++ b/app/examples/Drawing/Gravity/.lang/cs.po @@ -0,0 +1,128 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Gravity Simulator" +msgstr "Gravitace sinulítoru" + +#: FAbout.form:14 +msgid "About gbGravity" +msgstr "O gbGravity" + +#: FAbout.form:26 +msgid "gbGravity" +msgstr "-" + +#: FAbout.form:31 +msgid "Gravity like Simulator" +msgstr "Gravitace jako simulátor" + +#: FAbout.form:36 +msgid "Written in Gambas 1.9.46" +msgstr "Napsáno v Gambasu 1.9.46" + +#: FAbout.form:41 +msgid "by Iman Karim" +msgstr "od Iman Karim" + +#: FAbout.form:46 +msgid "Ok - kool!" +msgstr "Ok - skvělé!" + +#: FAbout.form:52 +msgid "Thanks to the Gambas team!" +msgstr "Díky týmu Gambas!" + +#: FMain.form:35 +msgid "gbGravity - Iman Karim" +msgstr "-" + +#: FMain.form:41 +msgid "Gravity 0.9" +msgstr "Gravitace 0.9" + +#: FMain.form:47 +msgid "Add a Ball" +msgstr "Přidej míč" + +#: FMain.form:59 +msgid "Floor Slide 0.9" +msgstr "Zaokrouhlený snímek 0.9" + +#: FMain.form:72 +msgid "Add more Balls" +msgstr "Přidej více míčů" + +#: FMain.form:84 +msgid "Click and hold on Gamefield and move your Mouse!" +msgstr "Klikněte a podržte na hracím poli a přesuňte myš!" + +#: FMain.form:92 +msgid "Point Setup" +msgstr "Nastavení bodu" + +#: FMain.form:96 +msgid "Choose Point:" +msgstr "Vyber bod:" + +#: FMain.form:103 +msgid "ComboBox1" +msgstr "-" + +#: FMain.form:108 +msgid "Focus Point" +msgstr "Zaměřený bod" + +#: FMain.form:114 +msgid "Randomize Kick" +msgstr "Náhodný kop" + +#: FMain.form:123 +msgid "Current Ball X:" +msgstr "Aktuální míč X:" + +#: FMain.form:128 +msgid "0" +msgstr "-" + +#: FMain.form:134 +msgid "Current Ball Y:" +msgstr "Aktuální míč Y:" + +#: FMain.form:145 +msgid "Current Ball aX:" +msgstr "Aktuální míč aX:" + +#: FMain.form:156 +msgid "Current Ball aY:" +msgstr "Aktuální míč aY:" + +#: FMain.form:169 +msgid "Ball out of Range" +msgstr "Míč mimo rozsah" + +#: FMain.form:182 +msgid "About gbGravity..." +msgstr "O gbGravity..." + +#: FMain.form:187 +msgid "Gravity" +msgstr "Gravitace" + +#: FMain.form:193 +msgid "Clear each Frame" +msgstr "Čistý každý snímek" + +#: FMain.form:199 +msgid "Sky" +msgstr "Obloha" diff --git a/app/examples/Drawing/Gravity/.lang/de.po b/app/examples/Drawing/Gravity/.lang/de.po new file mode 100644 index 00000000..39c38c14 --- /dev/null +++ b/app/examples/Drawing/Gravity/.lang/de.po @@ -0,0 +1,129 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Gravity Simulator" +msgstr "Schwerkraftsimulator" + +#: FAbout.form:14 +msgid "About gbGravity" +msgstr "Über gbGravity" + +#: FAbout.form:26 +msgid "gbGravity" +msgstr "gbSchwerkraft" + +#: FAbout.form:31 +msgid "Gravity like Simulator" +msgstr "Schwerkraftsimulator" + +#: FAbout.form:36 +msgid "Written in Gambas 1.9.46" +msgstr "Geschrieben in Gambas 1.9.46" + +#: FAbout.form:41 +msgid "by Iman Karim" +msgstr "von Iman Karim" + +#: FAbout.form:46 +msgid "Ok - kool!" +msgstr "-" + +#: FAbout.form:52 +msgid "Thanks to the Gambas team!" +msgstr "Danke an das Gambas Team!" + +#: FMain.form:35 +msgid "gbGravity - Iman Karim" +msgstr "gbSchwerkraft - Iman Karim" + +#: FMain.form:41 +msgid "Gravity 0.9" +msgstr "Schwerkraft 0.9" + +#: FMain.form:47 +msgid "Add a Ball" +msgstr "Ball hinzufügen" + +#: FMain.form:59 +msgid "Floor Slide 0.9" +msgstr "Bodenreibung 0.9" + +#: FMain.form:72 +msgid "Add more Balls" +msgstr "Mehrere hinzufügen" + +#: FMain.form:84 +msgid "Click and hold on Gamefield and move your Mouse!" +msgstr "Aufs Spielfeld klicken und die Maus bewegen!" + +#: FMain.form:92 +msgid "Point Setup" +msgstr "Punkt Auswahl" + +#: FMain.form:96 +msgid "Choose Point:" +msgstr "Punkt wählen:" + +#: FMain.form:103 +msgid "ComboBox1" +msgstr "-" + +#: FMain.form:108 +msgid "Focus Point" +msgstr "Brennpunkt" + +#: FMain.form:114 +msgid "Randomize Kick" +msgstr "Zufälliger Abstoß" + +#: FMain.form:123 +msgid "Current Ball X:" +msgstr "Dieser Ball X:" + +#: FMain.form:128 +msgid "0" +msgstr "-" + +#: FMain.form:134 +msgid "Current Ball Y:" +msgstr "Dieser Ball Y:" + +#: FMain.form:145 +msgid "Current Ball aX:" +msgstr "Dieser Ball aX:" + +#: FMain.form:156 +msgid "Current Ball aY:" +msgstr "Dieser Ball aY:" + +#: FMain.form:169 +msgid "Ball out of Range" +msgstr "Ball außerhalb des Feldes" + +#: FMain.form:182 +msgid "About gbGravity..." +msgstr "Über gbGravity..." + +#: FMain.form:187 +msgid "Gravity" +msgstr "Schwerkraft" + +#: FMain.form:193 +msgid "Clear each Frame" +msgstr "Alle Frames löschen" + +#: FMain.form:199 +msgid "Sky" +msgstr "Himmel" + diff --git a/app/examples/Drawing/Gravity/.lang/es.po b/app/examples/Drawing/Gravity/.lang/es.po new file mode 100644 index 00000000..eb75a96f --- /dev/null +++ b/app/examples/Drawing/Gravity/.lang/es.po @@ -0,0 +1,126 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FAbout.class:26 +msgid "About gbGravity" +msgstr "Acerca de gbGravity" + +#: FAbout.class:38 +msgid "gbGravity" +msgstr "gbGravity" + +#: FAbout.class:43 +msgid "Gravity like Simulator" +msgstr "Gravity como simulador" + +#: FAbout.class:48 +msgid "Written in Gambas 1.9.46" +msgstr "Escrito en Gambas 1.9.46" + +#: FAbout.class:53 +msgid "by Iman Karim" +msgstr "por Iman Karim" + +#: FAbout.class:58 +msgid "Ok - kool!" +msgstr "Ok - ¡Genial!" + +#: FAbout.class:64 +msgid "Thanks to the Gambas team!" +msgstr "¡Gracias al grupo de Gambas!" + +#: FMain.class:270 +msgid "gbGravity - Iman Karim" +msgstr "gbGravity - Iman Karim" + +#: FMain.class:276 +msgid "Gravity 0.9" +msgstr "Gravedad 0.9" + +#: FMain.class:282 +msgid "Add a Ball" +msgstr "Agregar una bola" + +#: FMain.class:294 +msgid "Floor Slide 0.9" +msgstr "Porción del piso 0.9" + +#: FMain.class:307 +msgid "Add more Balls" +msgstr "Agregar más bolas" + +#: FMain.class:319 +msgid "Click and hold on Gamefield and move your Mouse!" +msgstr "¡Click y sostenga sobre el campo de juego y mueva su ratón!" + +#: FMain.class:327 +msgid "Point Setup" +msgstr "Punto de configuración" + +#: FMain.class:331 +msgid "Choose Point:" +msgstr "Seleccionar punto:" + +#: FMain.class:336 +msgid "ComboBox1" +msgstr "ComboBox1" + +#: FMain.class:343 +msgid "Focus Point" +msgstr "Punto de enfoque" + +#: FMain.class:349 +msgid "Randomize Kick" +msgstr "Golpe aleatorio" + +#: FMain.class:358 +msgid "Current Ball X:" +msgstr "Bola activa X:" + +#: FMain.class:363 +msgid "0" +msgstr "0" + +#: FMain.class:369 +msgid "Current Ball Y:" +msgstr "Bola activa Y:" + +#: FMain.class:380 +msgid "Current Ball aX:" +msgstr "Bola activa aX" + +#: FMain.class:391 +msgid "Current Ball aY:" +msgstr "Bola activa aY" + +#: FMain.class:404 +msgid "Ball out of Range" +msgstr "Bola fuera de rango" + +#: FMain.class:417 +msgid "About gbGravity..." +msgstr "Acerca de gbGravity..." + +#: FMain.class:422 +msgid "Gravity" +msgstr "Gravedad" + +#: FMain.class:428 +msgid "Clear each Frame" +msgstr "Limpiar cada cuadro" + +#: FMain.class:434 +msgid "Sky" +msgstr "Cielo" + +#~ msgid "Gravity Simulator" +#~ msgstr "Simulador de gravedad" diff --git a/app/examples/Drawing/Gravity/.lang/ru.po b/app/examples/Drawing/Gravity/.lang/ru.po new file mode 100644 index 00000000..7ba57083 --- /dev/null +++ b/app/examples/Drawing/Gravity/.lang/ru.po @@ -0,0 +1,162 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-28 09:00+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Drawing/Gravity/.project:20 +msgid "Gravity Simulator" +msgstr "Симулятор гравитации" + +#: app/examples/Drawing/Gravity/.project:21 app/examples/Drawing/Gravity/.src/FAbout.form:19 +msgid "Gravity like Simulator" +msgstr "Симулятор гравитации" + +#: app/examples/Drawing/Gravity/.src/FAbout.form:5 +msgid "About gbGravity" +msgstr "О гравитоне" + +#: app/examples/Drawing/Gravity/.src/FAbout.form:15 +msgid "gbGravity" +msgstr "Гравитон" + +#: app/examples/Drawing/Gravity/.src/FAbout.form:23 +msgid "Written in Gambas 1.9.46" +msgstr "Написано в Gambas 1.9.46" + +#: app/examples/Drawing/Gravity/.src/FAbout.form:27 +msgid "by Iman Karim" +msgstr "от Иман Карим" + +#: app/examples/Drawing/Gravity/.src/FAbout.form:31 +msgid "Ok - kool!" +msgstr "ОК!" + +#: app/examples/Drawing/Gravity/.src/FAbout.form:36 +msgid "Thanks to the Gambas team!" +msgstr "Спасибо команде Gambas!" + +#: app/examples/Drawing/Gravity/.src/FMain.class:100 app/examples/Drawing/Gravity/.src/FMain.class:122 app/examples/Drawing/Gravity/.src/FMain.class:186 +msgid "ALL" +msgstr "ВСЕ" + +#: app/examples/Drawing/Gravity/.src/FMain.class:152 app/examples/Drawing/Gravity/.src/FMain.class:169 +msgid "Gravity:" +msgstr "Гравитация:" + +#: app/examples/Drawing/Gravity/.src/FMain.class:161 +msgid "Gravity: off" +msgstr "Гравитация: выкл" + +#: app/examples/Drawing/Gravity/.src/FMain.class:162 +msgid "Floor Slide: off" +msgstr "Слайд: выкл" + +#: app/examples/Drawing/Gravity/.src/FMain.class:170 app/examples/Drawing/Gravity/.src/FMain.class:205 +msgid "Floor Slide:" +msgstr "Слайд:" + +#: app/examples/Drawing/Gravity/.src/FMain.form:5 +msgid "gbGravity - Iman Karim" +msgstr "Гравитон - Иман Карим" + +#: app/examples/Drawing/Gravity/.src/FMain.form:10 +msgid "Gravity 0.9" +msgstr "Гравитация 0.9" + +#: app/examples/Drawing/Gravity/.src/FMain.form:15 +msgid "Add a Ball" +msgstr "Добавить мяч" + +#: app/examples/Drawing/Gravity/.src/FMain.form:25 +msgid "Floor Slide 0.9" +msgstr "Слайд 0.9" + +#: app/examples/Drawing/Gravity/.src/FMain.form:36 +msgid "Add more Balls" +msgstr "Добавить ещё мячей" + +#: app/examples/Drawing/Gravity/.src/FMain.form:46 +msgid "Click and hold on Gamefield and move your Mouse!" +msgstr "Нажать и удерживать игровое поле и двигать мышью!" + +#: app/examples/Drawing/Gravity/.src/FMain.form:53 +msgid "Point Setup" +msgstr "Настройка точки" + +#: app/examples/Drawing/Gravity/.src/FMain.form:56 +msgid "Choose Point:" +msgstr "Выбрать точку:" + +#: app/examples/Drawing/Gravity/.src/FMain.form:61 +msgid "ComboBox1" +msgstr "Комбинированный_список_1" + +#: app/examples/Drawing/Gravity/.src/FMain.form:65 +msgid "Focus Point" +msgstr "Точка фокусировки" + +#: app/examples/Drawing/Gravity/.src/FMain.form:70 +msgid "Randomize Kick" +msgstr "Случайный удар" + +#: app/examples/Drawing/Gravity/.src/FMain.form:77 +msgid "Current Ball X:" +msgstr "Текущий мяч X:" + +#: app/examples/Drawing/Gravity/.src/FMain.form:81 app/examples/Drawing/Gravity/.src/FMain.form:90 app/examples/Drawing/Gravity/.src/FMain.form:99 app/examples/Drawing/Gravity/.src/FMain.form:108 +msgid "0" +msgstr "0" + +#: app/examples/Drawing/Gravity/.src/FMain.form:86 +msgid "Current Ball Y:" +msgstr "Текущий мяч Y:" + +#: app/examples/Drawing/Gravity/.src/FMain.form:95 +msgid "Current Ball aX:" +msgstr "Текущий мяч aX:" + +#: app/examples/Drawing/Gravity/.src/FMain.form:104 +msgid "Current Ball aY:" +msgstr "Текущий мяч aY:" + +#: app/examples/Drawing/Gravity/.src/FMain.form:115 +msgid "Ball out of Range" +msgstr "Мяч вне диапазона" + +#: app/examples/Drawing/Gravity/.src/FMain.form:127 +msgid "About gbGravity..." +msgstr "О гравитоне..." + +#: app/examples/Drawing/Gravity/.src/FMain.form:131 +msgid "Gravity" +msgstr "Гравитация" + +#: app/examples/Drawing/Gravity/.src/FMain.form:136 +msgid "Clear each Frame" +msgstr "Очищ. каждый кадр" + +#: app/examples/Drawing/Gravity/.src/FMain.form:141 +msgid "Sky" +msgstr "Небо" + diff --git a/app/examples/Drawing/Gravity/.project b/app/examples/Drawing/Gravity/.project new file mode 100644 index 00000000..3580a1e9 --- /dev/null +++ b/app/examples/Drawing/Gravity/.project @@ -0,0 +1,18 @@ +# Gambas Project File 3.0 +Title=Gravity Simulator +Startup=FMain +Icon=gravity.png +Version=3.13.90 +VersionFile=1 +Component=gb.image +Component=gb.gui +Description="Gravity like Simulator" +Environment="GB_GUI=gb.qt5" +TabSize=2 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence +Packager=1 diff --git a/app/examples/Drawing/Gravity/.src/FAbout.class b/app/examples/Drawing/Gravity/.src/FAbout.class new file mode 100644 index 00000000..1d524d09 --- /dev/null +++ b/app/examples/Drawing/Gravity/.src/FAbout.class @@ -0,0 +1,8 @@ +' Gambas class file + + +Public Sub Button1_Click() + + FAbout.Hide + +End diff --git a/app/examples/Drawing/Gravity/.src/FAbout.form b/app/examples/Drawing/Gravity/.src/FAbout.form new file mode 100644 index 00000000..86cdcc9a --- /dev/null +++ b/app/examples/Drawing/Gravity/.src/FAbout.form @@ -0,0 +1,42 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,54,21) + Text = ("About gbGravity") + Resizable = False + { PictureBox1 PictureBox + MoveScaled(1,1,9,9) + Picture = Picture["gravity.png"] + Stretch = True + } + { Label1 Label + MoveScaled(11,1,17,4) + Font = Font["+2"] + Text = ("gbGravity") + } + { Label2 Label + MoveScaled(25,1,28,4) + Text = ("Gravity like Simulator") + Alignment = Align.Right + } + { Label3 Label + MoveScaled(21,5,32,4) + Text = ("Written in Gambas 1.9.46") + Alignment = Align.Right + } + { Label4 Label + MoveScaled(31,9,22,3) + Text = ("by Iman Karim") + Alignment = Align.Right + } + { Button1 Button + MoveScaled(1,13,52,4) + Text = ("Ok - kool!") + } + { Label5 Label + MoveScaled(1,17,52,3) + Font = Font["-1"] + Text = ("Thanks to the Gambas team!") + Alignment = Align.Center + } +} diff --git a/app/examples/Drawing/Gravity/.src/FMain.class b/app/examples/Drawing/Gravity/.src/FMain.class new file mode 100644 index 00000000..3fd7b8c1 --- /dev/null +++ b/app/examples/Drawing/Gravity/.src/FMain.class @@ -0,0 +1,232 @@ +' Gambas class file + +' Written by Iman Karim +' http://home.inf.fh-rhein-sieg.de/~ikarim2s/ +' 14.11.2006 + +Private Objects As New Collection +Private world_Gravity As Float = 0.9 +Private world_Bounce As Float = 0.7 +Private world_SlideFloor As Float = 0.9 +Private isDrawing As Boolean + +Private Sub AddBall(Optional x As Integer = -1, Optional y As Integer = -1) + Dim cBall As New CBall + If x = -1 Then + cBall.x = Rnd(1, 100) + cBall.y = Rnd(1, 100) + Else + cBall.x = x + cBall.y = y + End If + cBall.ax = Rnd(-100, 100) + cBall.col = Rnd(1, 90000000) + objects.Add(cBall, Str(objects.Count + 1)) + cB.Add(Str(objects.Count)) +End + + +Private Sub DoGravity() + Dim myBall As CBall + For Each myBall In Objects + If togGrav.value Then myBall.ay = myBall.ay + world_Gravity '// Make Gravity + myBall.x = myBall.x + myBall.ax '// Move Ball + myBall.y = myBall.y + myBall.ay + If myBall.x >= dW.width - 5 Or myBall.x <= 0 Then '// Ball collidated on wall (left/right) + myBall.ax = (myBall.ax * world_Bounce) * -1 '// Reverse Ball direction and include world_Bounce + End If + If myBall.y > dW.Height - 10 Or myBall.y < 10 Then '// Ball collidated on Floor or Sky + If myball.y < 10 And togSky.value = False Then myball.ay = (myball.ay * world_Bounce) * -1 '// If Sky is disabled no not bounce + If myball.y > 10 Then myball.ay = (myball.ay * world_Bounce) * -1 '// On floor make bounce for sure + End If + If (((dW.Height - 10) - myBall.y) <= 1) And (Abs(myBall.ay) <= 2) And togGrav.Value Then '// If ball is n floor and to slow to jump up again stop the ball (y) + myball.y = (dW.Height - 10) + myball.ay = 0 + End If + + If myball.ay = 0 And myball.y = (dW.Height - 10) Then '// If ball is already on floor decrease the roll speed depending on world_SlideFloor factor. + If myball.ax < 0.1 Then + myball.ax = Abs(myball.ax) * world_SlideFloor * -1 + Else If myball.ax > 0.1 Then + myball.ax = Abs(myball.ax) * world_SlideFloor + Else + myball.ax = 0 '// If ball is moving to slow stop it + End If + End If + + If myball.y > dW.Height - 10 Then '// Make sure befor painting that the ball is inside your viewport. (floor) + myball.y = dW.Height - 10 + Else If myball.y <= 10 And togSky.Value = False Then + myball.y = 12 + End If + If myball.x > dW.width - 5 Then '// Make sure befor painting that the ball is inside your viewport. (left\right wall) + myball.x = dW.Width - 5 + Else If myball.x < 0 Then + myball.x = 0 + End If + Next +End + +Private Sub DrawWorld() + Dim myBall As CBall + Dim index As Integer + If isDrawing = False Then + isDrawing = True + Try Draw.begin(dW) + 'Draw.Rect(3, 12, dW.Width - 6, dW.Height - 17) + Draw.FillStyle = 1 + Draw.FillColor = Color.White + For Each myBall In Objects + index = index + 1 + Draw.Foreground = myBall.col + Draw.Ellipse(myBall.x, myBall.y, 5, 5) + If Str(index) = cB.Text Then + Draw.FillStyle = 0 + Draw.Foreground = Color.Red + If togFocus.value Then Draw.Ellipse(myBall.x - 3, myBall.y - 3, 11, 11) + lblX.Caption = Str(Round(myBall.x)) + lblY.Caption = Str(Round(myBall.y)) + If myball.y <= 0 Then + lblOutOfRange.Visible = True + Else + lblOutOfRange.Visible = False + End If + lblaX.Caption = Str(Round(myBall.ax)) + lblaY.Caption = Str(Round(myBall.ay)) + Draw.FillStyle = 1 + End If + Next + Draw.End + If cB.Text = ("ALL") Then + lblX.Caption = "%null%" + lblY.Caption = "%null%" + lblaX.Caption = "%null%" + lblaY.Caption = "%null%" + lblOutOfRange.Visible = False + End If + isDrawing = False + End If +End + +Private Sub Render() + + DoGravity + If togClear.Value Then dW.Clear() + Wait 0.001 + DrawWorld + +End + + +Public Sub Form_Open() + cb.Add(("ALL")) +End + +Public Sub Button1_Click() + AddBall +End + +Public Sub Timer1_Timer() + + Render + +End + +Public Sub Form_Resize() + Timer1.Enabled = False + + 'DO + ' WAIT 1 + 'LOOP WHILE modGravity.isDrawing + + dw.Width = Me.Width - dw.Left - 10 + dw.Height = Me.Height - dw.top - 10 + Timer1.Enabled = True + + +End + + +Public Sub Slider1_Change() + + lblGrav.Caption = ("Gravity:") & " " & Str(Slider1.Value / 100) + world_Gravity = Slider1.Value / 100 + +End + + +Public Sub togGrav_Click() + + If Not togGrav.Value Then + lblGrav.Caption = ("Gravity: off") + lblSlide.Caption = ("Floor Slide: off") + Slider1.Enabled = False + Slider2.Enabled = False + world_SlideFloor = 1 + Else + Slider1.Enabled = True + Slider2.Enabled = True + lblGrav.Caption = ("Gravity:") & " " & Str(Slider1.Value / 100) + lblSlide.Caption = ("Floor Slide:") & " " & Str(Slider2.Value / 100) + world_SlideFloor = Slider2.Value / 100 + End If + +End + +Public Sub cmdRandomize_Click() + Dim myBall As CBall + Dim index As Integer + cmdRandomize.Enabled = False + Draw.begin(dW) + Draw.FillStyle = 1 + For Each myBall In Objects + index = index + 1 + Draw.Foreground = myBall.col + Draw.Ellipse(myBall.x, myBall.y, 5, 5) + If Str(index) = cB.Text Or cB.Text = ("ALL") Then + myBall.ax = Rnd(1, 100) + myBall.ay = Rnd(1, 100) + End If + Next + Draw.End + cmdRandomize.Enabled = True +End + + + +Public Sub dW_MouseMove() + If togAddMore.Value Then + AddBall(Mouse.x, Mouse.Y) + End If +End + +Public Sub Slider2_Change() + + lblSlide.Caption = ("Floor Slide:") & " " & Str(Slider2.Value / 100) + world_SlideFloor = Slider2.Value / 100 + +End + + +Public Sub togAddMore_Click() + + If togAddMore.Value Then + lbladdmore.visible = True + Else + lblAddMore.visible = False + End If + +End + +Public Sub dW_MouseUp() + + togAddMore.Value = False + lblAddMore.visible = False + +End + +Public Sub lblAbout_MouseDown() + + FAbout.ShowModal + +End diff --git a/app/examples/Drawing/Gravity/.src/FMain.form b/app/examples/Drawing/Gravity/.src/FMain.form new file mode 100644 index 00000000..97c2845c --- /dev/null +++ b/app/examples/Drawing/Gravity/.src/FMain.form @@ -0,0 +1,143 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,121,73) + Text = ("gbGravity - Iman Karim") + Icon = Picture["gravity.png"] + Resizable = False + { lblGrav TextLabel + MoveScaled(61,1,21,3) + Text = ("Gravity 0.9") + Alignment = Align.Left + } + { Button1 Button + MoveScaled(1,1,25,6) + Text = ("Add a Ball") + } + { Slider1 Slider + MoveScaled(42,1,18,3) + MinValue = 1 + Step = 10 + Value = 90 + } + { lblSlide TextLabel + MoveScaled(61,4,21,3) + Text = ("Floor Slide 0.9") + Alignment = Align.Left + } + { Slider2 Slider + MoveScaled(42,4,18,3) + MinValue = 50 + Step = 10 + Value = 90 + } + { togAddMore ToggleButton + MoveScaled(1,8,25,6) + Text = ("Add more Balls") + } + { dW DrawingArea + MoveScaled(27,8,93,64) + Border = Border.Plain + Cached = True + { lblAddMore TextLabel + MoveScaled(1,1,24,10) + Visible = False + Background = &HFFFFDF& + Text = ("Click and hold on Gamefield and move your Mouse!") + Alignment = Align.Center + Border = Border.Plain + } + } + { Frame1 Frame + MoveScaled(1,15,25,53) + Text = ("Point Setup") + { TextLabel1 TextLabel + MoveScaled(1,3,23,4) + Text = ("Choose Point:") + } + { cB ComboBox + MoveScaled(1,7,23,4) + ReadOnly = True + Text = ("ComboBox1") + } + { togFocus ToggleButton + MoveScaled(1,12,23,4) + Text = ("Focus Point") + Value = True + } + { cmdRandomize Button + MoveScaled(1,17,23,5) + Text = ("Randomize Kick") + } + { Separator1 Separator + MoveScaled(1,22,23,2) + } + { Label1 Label + MoveScaled(2,24,21,3) + Text = ("Current Ball X:") + } + { lblX Label + MoveScaled(1,27,14,3) + Text = ("0") + Alignment = Align.Center + } + { Label2 Label + MoveScaled(2,30,21,3) + Text = ("Current Ball Y:") + } + { lblY Label + MoveScaled(1,33,14,3) + Text = ("0") + Alignment = Align.Center + } + { Label6 Label + MoveScaled(2,36,21,3) + Text = ("Current Ball aX:") + } + { lblAX Label + MoveScaled(1,39,14,3) + Text = ("0") + Alignment = Align.Center + } + { Label4 Label + MoveScaled(2,42,21,3) + Text = ("Current Ball aY:") + } + { lblAY Label + MoveScaled(1,45,14,3) + Text = ("0") + Alignment = Align.Center + } + { lblOutOfRange Label + MoveScaled(1,48,23,4) + Visible = False + Foreground = &HFF0000& + Text = ("Ball out of Range") + } + } + { Timer1 #Timer + #MoveScaled(54,20) + Enabled = True + Delay = 50 + } + { lblAbout Label + MoveScaled(1,68,25,4) + Font = Font["Underline"] + Mouse = Mouse.Pointing + Text = ("About gbGravity...") + } + { togGrav ToggleButton + MoveScaled(27,1,14,6) + Text = ("Gravity") + Value = True + } + { togClear ToggleButton + MoveScaled(82,1,22,6) + Text = ("Clear each Frame") + Value = True + } + { togSky ToggleButton + MoveScaled(105,1,15,6) + Text = ("Sky") + } +} diff --git a/app/examples/Drawing/Gravity/.src/cBall.class b/app/examples/Drawing/Gravity/.src/cBall.class new file mode 100644 index 00000000..27e0ae75 --- /dev/null +++ b/app/examples/Drawing/Gravity/.src/cBall.class @@ -0,0 +1,9 @@ +' Gambas class file + +' This Class represents a single ball. +Public x As Float +Public y As Float +Public col As Integer +'PUBLIC weight AS Float 'Weight not implemented ;) +Public ax As Float +Public ay As Float diff --git a/app/examples/Drawing/Gravity/gravity.png b/app/examples/Drawing/Gravity/gravity.png new file mode 100644 index 0000000000000000000000000000000000000000..e4e425e74166b10fb70f988c22f6b679a4b3afc1 GIT binary patch literal 7084 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 literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/OnScreenDisplay/.lang/ca.po b/app/examples/Drawing/OnScreenDisplay/.lang/ca.po new file mode 100644 index 00000000..e01b52ce --- /dev/null +++ b/app/examples/Drawing/OnScreenDisplay/.lang/ca.po @@ -0,0 +1,27 @@ +# Catalan translation of OnScreenDisplay +# Copyright (C) 2000-2010 Benoît Minisini. +# This file is distributed under the same license as the OnScreenDisplay package. +# Jordi Sayol , 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: OnScreenDisplay\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2010-12-16 23:35+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: .project:1 +msgid "Masked window example" +msgstr "Exemple de finestra enmascarada" + +#: FOnScreenDisplay.form:8 +msgid "What time is it ?" +msgstr "Quina hora és?" diff --git a/app/examples/Drawing/OnScreenDisplay/.lang/cs.po b/app/examples/Drawing/OnScreenDisplay/.lang/cs.po new file mode 100644 index 00000000..8112a521 --- /dev/null +++ b/app/examples/Drawing/OnScreenDisplay/.lang/cs.po @@ -0,0 +1,20 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Masked window example" +msgstr "Příklad maskovaného okna" + +#: FOnScreenDisplay.form:8 +msgid "What time is it ?" +msgstr "Kolik je hodin ?" diff --git a/app/examples/Drawing/OnScreenDisplay/.lang/de.po b/app/examples/Drawing/OnScreenDisplay/.lang/de.po new file mode 100644 index 00000000..c5dd7a6b --- /dev/null +++ b/app/examples/Drawing/OnScreenDisplay/.lang/de.po @@ -0,0 +1,21 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Masked window example" +msgstr "Beispiel für ein transparentes Fenster" + +#: FOnScreenDisplay.form:8 +msgid "What time is it ?" +msgstr "Wieviel Uhr ist es?" + diff --git a/app/examples/Drawing/OnScreenDisplay/.lang/es.po b/app/examples/Drawing/OnScreenDisplay/.lang/es.po new file mode 100644 index 00000000..79e8bc33 --- /dev/null +++ b/app/examples/Drawing/OnScreenDisplay/.lang/es.po @@ -0,0 +1,15 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FOnScreenDisplay.class:79 +msgid "What time is it ?" +msgstr "¿Qué hora es?" diff --git a/app/examples/Drawing/OnScreenDisplay/.lang/ru.po b/app/examples/Drawing/OnScreenDisplay/.lang/ru.po new file mode 100644 index 00000000..eba336a9 --- /dev/null +++ b/app/examples/Drawing/OnScreenDisplay/.lang/ru.po @@ -0,0 +1,34 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Drawing/OnScreenDisplay/.project:19 +msgid "Masked window example" +msgstr "Пример маскированного окна" + +#: app/examples/Drawing/OnScreenDisplay/.src/FOnScreenDisplay.form:5 +msgid "What time is it ?" +msgstr "Сколько времени?" + diff --git a/app/examples/Drawing/OnScreenDisplay/.project b/app/examples/Drawing/OnScreenDisplay/.project new file mode 100644 index 00000000..fb949611 --- /dev/null +++ b/app/examples/Drawing/OnScreenDisplay/.project @@ -0,0 +1,17 @@ +# Gambas Project File 3.0 +Title=Masked window example +Startup=FOnScreenDisplay +Icon=icon.png +Version=3.13.90 +VersionFile=1 +Component=gb.image +Component=gb.gui +Environment="GB_GUI=gb.qt5" +TabSize=2 +Translate=1 +Language=fr +Maintainer=fabien +Vendor=Princeton +Address=fabien@arcalis +License=General Public Licence +Packager=1 diff --git a/app/examples/Drawing/OnScreenDisplay/.src/FOnScreenDisplay.class b/app/examples/Drawing/OnScreenDisplay/.src/FOnScreenDisplay.class new file mode 100644 index 00000000..c42367af --- /dev/null +++ b/app/examples/Drawing/OnScreenDisplay/.src/FOnScreenDisplay.class @@ -0,0 +1,67 @@ +' Gambas class file + +Private $sLast As String +Private $MX As Integer +Private $MY As Integer + +Public Sub Form_Open() + + Me.Font = Font["64"] + Me.Resize(Me.Font.TextWidth("00:00:00") + 64, Me.Font.Height + 16) + Redraw +End + +Public Sub Timer1_Timer() + + Redraw + +End + +Private Sub Redraw() + + Dim hImage As Image + Dim sText As String + Dim iInd As Integer + + sText = Str(Time) + If sText = $sLast Then Return + + hImage = New Image(Me.Width, Me.Height, Color.Transparent) + + Paint.Begin(hImage) + Paint.Font = Font["64"] + Paint.LineWidth = 4 + + For iInd = 8 To 0 Step -1 + Paint.Brush = Paint.Color(Color.RGB(&h43 - iInd * &h43 / 8, &hC7 - iInd * &hC7 / 8, &hFF - iInd * &HFF / 8)) + Paint.DrawText(sText, iInd, iInd - 8, hImage.W, hImage.H, Align.Center) + Paint.Rectangle(iInd + 4, iInd + 4, hImage.Width - 14, hImage.Height - 14) + Paint.Stroke + Next + + Paint.End + + Me.Picture = hImage.Picture +' Me.Mask = True + $sLast = sText + +End + +Public Sub Form_KeyPress() + + If Key.Code = Key["Esc"] Then Me.Close + +End + +Public Sub Form_MouseDown() + + $MX = Mouse.ScreenX - Me.X + $MY = Mouse.ScreenY - Me.Y + +End + +Public Sub Form_MouseMove() + + Me.Move(Mouse.ScreenX - $MX, Mouse.ScreenY - $MY) + +End diff --git a/app/examples/Drawing/OnScreenDisplay/.src/FOnScreenDisplay.form b/app/examples/Drawing/OnScreenDisplay/.src/FOnScreenDisplay.form new file mode 100644 index 00000000..4c71a2e5 --- /dev/null +++ b/app/examples/Drawing/OnScreenDisplay/.src/FOnScreenDisplay.form @@ -0,0 +1,12 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(27,61,49,13) + Text = ("What time is it ?") + Mask = True + Border = False + { Timer1 #Timer + Enabled = True + Delay = 250 + } +} diff --git a/app/examples/Drawing/OnScreenDisplay/icon.png b/app/examples/Drawing/OnScreenDisplay/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..26cc8686565b8f4a62a9948c453962381e83725d GIT binary patch literal 1300 zcmV+v1?&2WP) zO-xi*7>1v7e}+LF6=4J<)P@=)DJeVB6q+=(EE-Kp6Y5S&BxzlMwe7;1F2scfY!fxu zw5E+wNmES<8^S_aAzd{ZQ)$xRPZg`kARsdg^LOt(Ul#*|KWKp#-Sl1EbM8IgdB5-d z&U+91j~5K}b4QoFTvCQImy>cF5P9MwEucLoyvQd3Trwvo|9s9Z0y-# z1YCKjo(q7Nasfyrk|<>$B4qhYjG4?(3d1lK9C)F~UbX^d7$BfMVd-~#3S_#9&z*o$ z3eg(T8pBj`6HrRAd-rbo`ufCTjafdLVb%y{R{ogyOA(9j@& zY~K8Vw6y&qAAS0R)PLM8b5>y6wrv3P_4NU8_3BkdMn>4aeLDcLSPX!!t}be7YS^=9 z&#bnOIcaBS=OZy^^w-*ZdJp91=K~OlL^5;XaF~LE0swaG*g;1}2i4WpoIih_{{DU{ zDk|pGe0+QyfZW_%04&=^3y5e;)0mq;C=>!95C~-E0)YU-!@~gN<>gUVS4VMiF(*%+ zq_nh@wzjr839Mba7J$LQ!Rh{*-O@Ck(uD2p?Eq9&RRK^^QbIvN0jE!&2H@DSV+4ai zhK7b{YH9)?nM}?}ptiOafaAxHKk-gPW}Q$e$@tr;Q>Vzu$zku_y;N3KQdL#Op+kpg zZf*vkyStmSXV22x+e=wl8RyQOqp`7(O`A4l#jYjfh5T zjj0ss#FlaYN@bwYXh&n@gX;^T_M{JzgQBrl6hyO zltL}wc4QeIu_TZhMMSVI1IuwWjw^VcM#LlK%?AH3APAPSFqFyUR1`Jc=%PJP3hUnR zB$3DjQ_%-$olFzIe+B;R0Jbj+!!Q@Ou?Vi4M0=VW53ZA%2=Patf~4}Oj)#avCm^^Q z%ZXj%=JiM2&!6QdxUQ6dnY)<#Cjg#yh)mpP^xhy>e!EC^u8o-o&SZ?+$v8QMtI1jA z$9gFrf~$&fT#cG3y;9s9njkb3#&wbl_Xh=@>o64^XVo%`%JK~q6t5vX79~4Bz+}{B zy{#oPPLbrbXt^7W4pIAJJ@h@7z(@+>(#y3a4d_D%V82k+oBq+c}ribtV0000< KMNUMnLSTaPhgkvu literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/Painting/.directory b/app/examples/Drawing/Painting/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Drawing/Painting/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Drawing/Painting/.hidden/screenshots/2014-12-14.png b/app/examples/Drawing/Painting/.hidden/screenshots/2014-12-14.png new file mode 100644 index 0000000000000000000000000000000000000000..2ec5e978ff0e8c1516da613a362ec3b1c34db905 GIT binary patch literal 90069 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
ae7M*iV{BlxjlJvJnWUl8vf!=OcF|d* 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 Fe*nDbN8SJc literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/Tablet/.icon.png b/app/examples/Drawing/Tablet/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d18cb788766d05515525542556383861ffcb9801 GIT binary patch literal 3536 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 KMNUMnLSTZgF~HFP literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/Tablet/.lang/ru.po b/app/examples/Drawing/Tablet/.lang/ru.po new file mode 100644 index 00000000..6879e276 --- /dev/null +++ b/app/examples/Drawing/Tablet/.lang/ru.po @@ -0,0 +1,112 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Drawing/Tablet/.project:17 +msgid "Tablet" +msgstr "Планшет" + +#: app/examples/Drawing/Tablet/.project:18 +msgid "" +"Tablet event example.\n" +"\n" +"This example shows how to get extended event information about tablet pens. It draws colored lines whose width depends on the pen pressure." +msgstr "" +"Пример события планшета.\n" +"\n" +"В этом примере показано, как получить расширенную информацию о событиях для планшетов. Он рисует цветные линии, ширина которых зависит от давления пера." + +#: app/examples/Drawing/Tablet/.src/FMain.class:79 +msgid "Cursor" +msgstr "Курсор" + +#: app/examples/Drawing/Tablet/.src/FMain.class:81 +msgid "Eraser" +msgstr "Ластик" + +#: app/examples/Drawing/Tablet/.src/FMain.class:83 +msgid "Mouse" +msgstr "Мышь" + +#: app/examples/Drawing/Tablet/.src/FMain.class:85 +msgid "Pen" +msgstr "Перо" + +#: app/examples/Drawing/Tablet/.src/FMain.form:30 +msgid "red" +msgstr "красный" + +#: app/examples/Drawing/Tablet/.src/FMain.form:36 +msgid "Type" +msgstr "Тип" + +#: app/examples/Drawing/Tablet/.src/FMain.form:46 +msgid "X" +msgstr "X" + +#: app/examples/Drawing/Tablet/.src/FMain.form:56 +msgid "Y" +msgstr "Y" + +#: app/examples/Drawing/Tablet/.src/FMain.form:66 +msgid "XTilt" +msgstr "XTilt" + +#: app/examples/Drawing/Tablet/.src/FMain.form:76 +msgid "YTilt" +msgstr "YTilt" + +#: app/examples/Drawing/Tablet/.src/FMain.form:86 +msgid "Pressure" +msgstr "Давление" + +#: app/examples/Drawing/Tablet/.src/FMain.form:96 +msgid "Rotation" +msgstr "Поворот" + +#: app/examples/Drawing/Tablet/.src/FMain.form:120 +msgid "Clear" +msgstr "Очистить" + +#: app/examples/Drawing/Tablet/.src/FMain.form:130 +msgid "black" +msgstr "чёрный" + +#: app/examples/Drawing/Tablet/.src/FMain.form:138 +msgid "brown" +msgstr "коричневый" + +#: app/examples/Drawing/Tablet/.src/FMain.form:145 +msgid "yellow" +msgstr "жёлтый" + +#: app/examples/Drawing/Tablet/.src/FMain.form:152 +msgid "blue" +msgstr "синий" + +#: app/examples/Drawing/Tablet/.src/FMain.form:159 +msgid "green" +msgstr "зелёный" + diff --git a/app/examples/Drawing/Tablet/.project b/app/examples/Drawing/Tablet/.project new file mode 100644 index 00000000..acf53d4e --- /dev/null +++ b/app/examples/Drawing/Tablet/.project @@ -0,0 +1,16 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.6.90 +Title=Tablet +Startup=FMain +Icon=Icon.png +Version=1.0.0 +Component=gb.image +Component=gb.gui +Component=gb.form +Description="Tablet event example.\n\nThis example shows how to get extended event information about tablet pens. It draws colored lines whose width depends on the pen pressure." +Authors="Benoît Minisini, from an idea of Ricardo Díaz Martín" +TabSize=2 +Vendor=Example +Packager=1 +Screenshot=2014-12-14.png +Translate=1 diff --git a/app/examples/Drawing/Tablet/.src/FMain.class b/app/examples/Drawing/Tablet/.src/FMain.class new file mode 100644 index 00000000..c8124add --- /dev/null +++ b/app/examples/Drawing/Tablet/.src/FMain.class @@ -0,0 +1,178 @@ +' Gambas class file + +Private Const MAX_LINE_WIDTH As Float = 20 + +Private $hBuffer As Picture +Private $X As Float +Private $Y As Float +Private $aCoord As Float[] +Private $iColor As Integer +Private $hBound As Rect +Private $fPressure As Float + +Public Sub _new() + + Dim sLabel As String + Dim Y As Integer + + $hBuffer = New Picture(1024, 768) + $hBuffer.Fill(Color.White) + dwgDraw.ResizeContents($hBuffer.Width, $hBuffer.Height) + +End + +Public Sub Form_Open() + +End + +Private Sub PaintStroke(hDest As Picture) + + Dim I As Integer + Dim hTemp As Image + + If Not $aCoord Then Return + If $aCoord.Count < 6 Then Return + + hTemp = New Image($hBound.W, $hBound.H, Color.Transparent) + + Paint.Begin(hTemp) + Paint.LineCap = Paint.LineCapRound + Paint.Brush = Paint.Color($iColor) + Paint.Translate(-$hBound.X, -$hBound.Y) + + For I = 0 To $aCoord.Max - 3 Step 3 + + Paint.MoveTo($aCoord[I], $aCoord[I + 1]) + Paint.LineTo($aCoord[I + 3], $aCoord[I + 4]) + Paint.LineWidth = Max(0.5, $aCoord[I + 2] * MAX_LINE_WIDTH) + Paint.Stroke + + Next + + Paint.End + + 'hTemp.Opacity(0.5) + Paint.Begin(hDest) + Paint.DrawImage(hTemp, $hBound.X, $hBound.Y,,, 0.5) + Paint.End + +End + + +Public Sub dwgDraw_Draw() + + Dim hDraw As Picture + + hDraw = $hBuffer.Copy() + PaintStroke(hDraw) + + Draw.Picture(hDraw, -dwgDraw.ScrollX, -dwgDraw.ScrollY) + +End + +Private Sub UpdateInfo(Optional bUp As Boolean) + + Dim iColUp, iColDown As Integer + + Select Case Pointer.Type + Case Pointer.Cursor + lblType.Text = ("Cursor") + Case Pointer.Eraser + lblType.Text = ("Eraser") + Case Pointer.Mouse + lblType.Text = ("Mouse") + Case Pointer.Pen + lblType.Text = ("Pen") + End Select + + lblX.Text = Format($X, "0.000") + lblY.Text = Format($Y, "0.000") + lblXTilt.Text = Pointer.XTilt + lblYTilt.Text = Pointer.YTilt + lblPressure.Text = Pointer.Pressure + lblRotation.Text = Pointer.Rotation + + iColUp = Color.Default + iColDown = Color.LightForeground + + If bUp Then + If Mouse.Left Then panButton1.Background = iColUp + If Mouse.Middle Then panButton2.Background = iColUp + If Mouse.Right Then panButton3.Background = iColUp + Else + panButton1.Background = If(Mouse.Left, iColDown, iColUp) + panButton2.Background = If(Mouse.Middle, iColDown, iColUp) + panButton3.Background = If(Mouse.Right, iColDown, iColUp) + Endif + +End + + +Public Sub dwgDraw_MouseDown() + + $X = dwgDraw.ScrollX + Pointer.X + $Y = dwgDraw.ScrollY + Pointer.Y + $fPressure = 0.1 + + UpdateInfo + timScroll.Start + + If Not Mouse.Left Then Return + + $hBound = New Rect($X - MAX_LINE_WIDTH, $Y - MAX_LINE_WIDTH, MAX_LINE_WIDTH * 2, MAX_LINE_WIDTH * 2) + + $aCoord = [$X, $Y, If(Pointer.Type = Pointer.Mouse, $fPressure, Pointer.Pressure)] + +End + +Public Sub dwgDraw_MouseMove() + + $X = dwgDraw.ScrollX + Pointer.X + $Y = dwgDraw.ScrollY + Pointer.Y + + UpdateInfo + + If Not Mouse.Left Then Return + + $fPressure = Min($fPressure + 0.01, 1) + + $aCoord.Add($X) + $aCoord.Add($Y) + $aCoord.Add(If(Pointer.Type = Pointer.Mouse, $fPressure, Pointer.Pressure)) + + $hBound = $hBound.Union(Rect($X - MAX_LINE_WIDTH, $Y - MAX_LINE_WIDTH, MAX_LINE_WIDTH * 2, MAX_LINE_WIDTH * 2)) + + 'Debug $X;; $Y + + dwgDraw.View.Refresh($hBound.X - dwgDraw.ScrollX, $hBound.Y - dwgDraw.ScrollY, $hBound.W, $hBound.H) + +End + +Public Sub dwgDraw_MouseUp() + + UpdateInfo(True) + timScroll.Stop + + PaintStroke($hBuffer) + $aCoord.Clear + +End + +Public Sub timScroll_Timer() + + dwgDraw.EnsureVisible($X - 16, $Y - 16, 32, 32) + +End + +Public Sub btnClear_Click() + + $hBuffer.Fill(Color.White) + dwgDraw.View.Refresh + +End + +Public Sub btnColor_Click() + + $iColor = Last.Background + +End diff --git a/app/examples/Drawing/Tablet/.src/FMain.form b/app/examples/Drawing/Tablet/.src/FMain.form new file mode 100644 index 00000000..faeeeba0 --- /dev/null +++ b/app/examples/Drawing/Tablet/.src/FMain.form @@ -0,0 +1,174 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,105,83) + Icon = Picture["Icon.png"] + Arrangement = Arrange.Horizontal + { dwgDraw ScrollArea + MoveScaled(1,1,52,47) + Expand = True + Border = False + NoBackground = True + Tablet = True + } + { Separator1 Separator + MoveScaled(54,27,0,12) + Visible = False + } + { Panel2 Panel + MoveScaled(55,3,49,79) + Arrangement = Arrange.Vertical + Margin = True + { panInfo Panel + MoveScaled(0,0,49,79) + Margin = True + Border = Border.Plain + { ToggleButton4 ToggleButton btnColor + Name = "ToggleButton4" + MoveScaled(1,43,14,14.2857) + Background = &HFF0000& + Foreground = Color.DarkGray + Text = ("red") + Radio = True + } + { Label1 Label + MoveScaled(1,1,10,3) + Foreground = &H7F7F7F& + Text = ("Type") + Alignment = Align.Right + } + { lblType Label + MoveScaled(13,1,14,3) + Expand = True + } + { Label2 Label + MoveScaled(1,4,10,3) + Foreground = &H7F7F7F& + Text = ("X") + Alignment = Align.Right + } + { lblX Label + MoveScaled(13,4,14,3) + Expand = True + } + { Label3 Label + MoveScaled(1,7,10,3) + Foreground = &H7F7F7F& + Text = ("Y") + Alignment = Align.Right + } + { lblY Label + MoveScaled(13,7,14,3) + Expand = True + } + { Label4 Label + MoveScaled(1,10,10,3) + Foreground = &H7F7F7F& + Text = ("XTilt") + Alignment = Align.Right + } + { lblXTilt Label + MoveScaled(13,10,14,3) + Expand = True + } + { Label5 Label + MoveScaled(1,13,10,3) + Foreground = &H7F7F7F& + Text = ("YTilt") + Alignment = Align.Right + } + { lblYTilt Label + MoveScaled(13,13,14,3) + Expand = True + } + { Label6 Label + MoveScaled(1,16,10,3) + Foreground = &H7F7F7F& + Text = ("Pressure") + Alignment = Align.Right + } + { lblPressure Label + MoveScaled(13,16,14,3) + Expand = True + } + { Label7 Label + MoveScaled(1,19,10,3) + Foreground = &H7F7F7F& + Text = ("Rotation") + Alignment = Align.Right + } + { lblRotation Label + MoveScaled(13,19,14,3) + Expand = True + } + { Panel1 Panel + MoveScaled(18,25,10,5) + { panButton3 Panel + MoveScaled(8,0,2,5) + Border = Border.Plain + } + { panButton1 Panel + MoveScaled(0,0,2,5) + Border = Border.Plain + } + { panButton2 Panel + MoveScaled(4,0,2,5) + Border = Border.Plain + } + } + { btnClear Button + MoveScaled(14,34,18,7) + Text = ("Clear") + Picture = Picture["icon:/large/delete"] + } + { Separator2 Separator + MoveScaled(0,32,47,1) + } + { ToggleButton1 ToggleButton btnColor + Name = "ToggleButton1" + MoveScaled(31,59,14.2857,14.2857) + Background = &H000000& + Foreground = Color.DarkGray + Text = ("black") + Radio = True + Value = True + } + { ToggleButton2 ToggleButton btnColor + Name = "ToggleButton2" + MoveScaled(1,59,14.2857,14.2857) + Background = &HFF7F00& + Foreground = Color.DarkGray + Text = ("brown") + Radio = True + } + { ToggleButton3 ToggleButton btnColor + Name = "ToggleButton3" + MoveScaled(16,59,14.2857,14.2857) + Background = &HFFFF00& + Foreground = Color.DarkGray + Text = ("yellow") + Radio = True + } + { ToggleButton5 ToggleButton btnColor + Name = "ToggleButton5" + MoveScaled(31,43,14.2857,14.2857) + Background = Color.Cyan + Foreground = Color.DarkGray + Text = ("blue") + Radio = True + } + { ToggleButton6 ToggleButton btnColor + Name = "ToggleButton6" + MoveScaled(16,43,14.2857,14.2857) + Background = &H7FFF00& + Foreground = Color.DarkGray + Text = ("green") + Radio = True + } + } + } + { timScroll #Timer + #MoveScaled(30,54) + Delay = 50 + } +} diff --git a/app/examples/Drawing/Tablet/Icon.png b/app/examples/Drawing/Tablet/Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a526512bb5a2c1d369e4aefc5d39b60c5914ee9f GIT binary patch literal 3753 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 V*+a}sDck@6002ovPDHLkV1oU`2~Yq4 literal 0 HcmV?d00001 diff --git a/app/examples/Games/BeastScroll/.directory b/app/examples/Games/BeastScroll/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Games/BeastScroll/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Games/BeastScroll/.icon.png b/app/examples/Games/BeastScroll/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7de9e813eee880887318fe133be91adb7c569805 GIT binary patch literal 3371 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 Bc>DkW literal 0 HcmV?d00001 diff --git a/app/examples/Games/BeastScroll/.lang/ru.po b/app/examples/Games/BeastScroll/.lang/ru.po new file mode 100644 index 00000000..75375e68 --- /dev/null +++ b/app/examples/Games/BeastScroll/.lang/ru.po @@ -0,0 +1,56 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 04:17+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Games/BeastScroll/.project:20 +msgid "BeastScroll" +msgstr "Свиток зверя" + +#: app/examples/Games/BeastScroll/.project:21 +msgid "" +"Parallax scrolling demo.\n" +"\n" +"This example shows a parallax scrolling with a music playing in the background. It is based on the SDL2 components." +msgstr "" +"Параллакс-скроллинг демо.\n" +"\n" +"В этом примере показана прокрутка параллакса с фоновой музыкой. Он основан на компонентах SDL2." + +#: app/examples/Games/BeastScroll/.src/MMain.module:190 +msgid "FPS" +msgstr "кадр/с" + +#: app/examples/Games/BeastScroll/.src/MMain.module:192 +msgid "Toggle fullscreen" +msgstr "Переключить полный экран" + +#: app/examples/Games/BeastScroll/.src/MMain.module:193 +msgid "Take screenshot to ~/BeastScroll.png" +msgstr "Сделать скриншот в ~/BeastScroll.png" + +#: app/examples/Games/BeastScroll/.src/MMain.module:194 +msgid "Quit" +msgstr "Выход" + diff --git a/app/examples/Games/BeastScroll/.project b/app/examples/Games/BeastScroll/.project new file mode 100644 index 00000000..5006ab9f --- /dev/null +++ b/app/examples/Games/BeastScroll/.project @@ -0,0 +1,18 @@ +# Gambas Project File 3.0 +Title=BeastScroll +Startup=MMain +Icon=logo.png +Version=1.1.0 +Component=gb.image +Component=gb.sdl2 +Component=gb.sdl2.audio +Description="Parallax scrolling demo.\n\nThis example shows a parallax scrolling with a music playing in the background. It is based on the SDL2 components." +TabSize=2 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Example +Address=benoit@localhost +Url=www.endoftheinternet.com +License=General Public Licence +GambasVersion=3.7 diff --git a/app/examples/Games/BeastScroll/.src/MMain.module b/app/examples/Games/BeastScroll/.src/MMain.module new file mode 100644 index 00000000..831f1f99 --- /dev/null +++ b/app/examples/Games/BeastScroll/.src/MMain.module @@ -0,0 +1,215 @@ +' Gambas module file + +'Public Screen As New Window As "Screen" +Public ciel As Image +Public montagnes As Image +Public barriere As Image +Public sol1 As Image +Public sol2 As Image +Public sol3 As Image +Public nuage1 As Image +Public nuage2 As Image +Public nuage3 As Image +Public nuage4 As Image +Public arbre As Image +Public fireworks As Image +Public scrolltext As Image + +Public scroll As Integer +Public scrollb As Integer +Public scroll1 As Integer +Public scroll2 As Integer +Public scroll3 As Integer +Public scroll4 As Integer +Public scroll5 As Integer +Public scroll5b As Integer +Public scroll6 As Integer +Public speed As Integer + +Private $hWindow As Window +Private $nFrame As Integer + +Public Sub Main() + + $hWindow = New Window As "Window" + + With $hWindow + .Resize(640, 480) + .Framerate = 100 + .Resizable = False + .Show() + End With + + Music.Load("b-title.mod") + + ciel = image.Load("bgd1_ciel.png") + nuage1 = image.Load("sprite_nuages1.png") + montagnes = image.Load("bgd2_montagnes.png") + sol1 = image.Load("bgd3_sol1.png") + sol2 = image.Load("bgd4_sol2.png") + sol3 = image.Load("bgd5_sol3.png") + nuage1 = image.Load("sprite_nuages1.png") + nuage2 = image.Load("sprite_nuages2.png") + nuage3 = image.Load("sprite_nuages3.png") + nuage4 = image.Load("sprite_nuages4.png") + barriere = image.Load("sprite_barriere.png") + arbre = image.Load("sprite_arbre.png") + fireworks = image.Load("fireworks.png") + scrolltext = image.Load("scrolltext.png") + + speed = 2 + scroll = 0 + scrollb = 0 + scroll1 = 0 + scroll2 = 0 + scroll3 = 0 + scroll4 = 0 + scroll5 = Rnd(0, 640) + scroll5b = Rnd(0, 640) + scroll6 = 0 + + Music.Play(-1, 1) + +End + +Private Sub DrawText(sText As String, X As Integer, Y As Integer) As Integer + + Dim I As Integer + Dim J As Integer + + Draw.Background = Color.Black + For I = -1 To 1 + For J = -1 To 1 + Draw.Text(sText, X + I, Y + J) + Next + Next + Draw.Background = Color.White + Draw.Text(sText, X, Y) + + Return Y + Draw.Font.TextHeight(" ") + 4 + +End + +Public Sub Window_Draw() + + 'Dim hImage As Image + + '$hWindow.Clear + + '$hWindow.Clear + 'Goto PRINT_TEXT + + Dim Y As Integer + + scroll = scroll + speed + Dec (scroll1) + scroll2 = scroll2 - 2 + scroll3 = scroll3 - 3 + scroll4 = scroll4 - 4 + scroll5 = scroll5 - 5 + scroll5b = scroll5b - 2 + scroll6 = scroll6 - 5 + + If (scroll = 320) Then speed = -2 + If (scroll = -960) Then speed = 2 + scrollb = scroll + If (scrollb < -640) Then scrollb = -640 + If (scrollb > 0) Then scrollb = 0 + If (scroll1 = -640) Then scroll1 = 0 + If (scroll2 = -640) Then scroll2 = 0 + If (scroll3 < -640) Then scroll3 = scroll3 + 640 + If (scroll4 < -640) Then scroll4 = scroll4 + 640 + If (scroll5 < -640) Then scroll5 = scroll5 + 1280 + If (scroll5b < -640) Then scroll5b = scroll5b + 1280 + If (scroll6 < -640) Then scroll6 = scroll6 + 640 + + #If False + + hImage = New Image($hWindow.Width, $hWindow.Height) + + hImage.DrawImage(ciel, 0, 0) + hImage.DrawImage(montagnes, scroll1, 200) + hImage.DrawImage(montagnes, scroll1 + 640, 200) + hImage.DrawImage(sol1, scroll2, 420) + hImage.DrawImage(sol1, scroll2 + 640, 420) + hImage.DrawImage(sol2, scroll3, 430) + hImage.DrawImage(sol2, scroll3 + 640, 430) + hImage.DrawImage(sol3, scroll4, 450) + hImage.DrawImage(sol3, scroll4 + 640, 450) + + hImage.PaintImage(nuage1, scroll6, 0) + hImage.PaintImage(nuage1, scroll6 + 640, 0) + hImage.PaintImage(nuage2, scroll4, 82) + hImage.PaintImage(nuage2, scroll4 + 640, 82) + hImage.PaintImage(nuage3, scroll3, 120) + hImage.PaintImage(nuage3, scroll3 + 640, 120) + hImage.PaintImage(nuage4, scroll2, 138) + hImage.PaintImage(nuage4, scroll2 + 640, 138) + hImage.PaintImage(barriere, scroll5, 440) + hImage.PaintImage(arbre, scroll5b, 140) + hImage.PaintImage(fireworks, scrollb, 0) + hImage.PaintImage(scrolltext, scrollb + 640, 0) + + Draw.Image(hImage, 0, 0) + + #Else + + Draw.Image(ciel, 0, 0) + Draw.Image(montagnes, scroll1, 200) + Draw.Image(montagnes, scroll1 + 640, 200) + Draw.Image(sol1, scroll2, 420) + Draw.Image(sol1, scroll2 + 640, 420) + Draw.Image(sol2, scroll3, 430) + Draw.Image(sol2, scroll3 + 640, 430) + Draw.Image(sol3, scroll4, 450) + Draw.Image(sol3, scroll4 + 640, 450) + Draw.Image(nuage1, scroll6, 0) + Draw.Image(nuage1, scroll6 + 640, 0) + Draw.Image(nuage2, scroll4, 82) + Draw.Image(nuage2, scroll4 + 640, 82) + Draw.Image(nuage3, scroll3, 120) + Draw.Image(nuage3, scroll3 + 640, 120) + Draw.Image(nuage4, scroll2, 138) + Draw.Image(nuage4, scroll2 + 640, 138) + Draw.Image(barriere, scroll5, 440) + Draw.Image(arbre, scroll5b, 140) + Draw.Image(fireworks, scrollb, 0) + Draw.Image(scrolltext, scrollb + 640, 0) + + #Endif + +PRINT_TEXT: + + Inc $nFrame + 'If $nFrame = 1000 Then $hWindow.Close + + 'Print $hWindow.Framerate; " FPS\r"; + + Y = 10 + Draw.Font.Size = Font.DefaultHeight * 2 + Y = DrawText($hWindow.Framerate & " " & ("FPS"), 10, Y) + Draw.Font.Size = Font.DefaultHeight + Y = DrawText("[F1] " & ("Toggle fullscreen"), 10, Y) + Y = DrawText("[F5] " & ("Take screenshot to ~/BeastScroll.png"), 10, Y) + Y = DrawText("[ESC] " & ("Quit"), 10, Y) + +End + +Public Sub Window_Close() + + Music.Stop() + +End + +Public Sub Window_KeyPress() + + Select Case Key.Code + Case Key.F1 + $hWindow.FullScreen = Not $hWindow.FullScreen + Case Key.Esc + $hWindow.Close + Case Key.F5 + $hWindow.Screenshot().Save("~/BeastScroll.png") + End Select + +End diff --git a/app/examples/Games/BeastScroll/b-title.mod b/app/examples/Games/BeastScroll/b-title.mod new file mode 100644 index 0000000000000000000000000000000000000000..8eee2218f08f32104332087ef5f84dfd06a1f84c GIT binary patch literal 56838 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 I(C}yfU+STyG5`Po literal 0 HcmV?d00001 diff --git a/app/examples/Games/BeastScroll/bgd1_ciel.png b/app/examples/Games/BeastScroll/bgd1_ciel.png new file mode 100644 index 0000000000000000000000000000000000000000..f0a38160c3808fbbf328c2e6b84f31b3df599800 GIT binary patch literal 6797 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/BeastScroll/bgd2_montagnes.png b/app/examples/Games/BeastScroll/bgd2_montagnes.png new file mode 100644 index 0000000000000000000000000000000000000000..37ca6393ded1fa08b5503ff78879b22c9e87bf1a GIT binary patch literal 177395 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/BeastScroll/fireworks.png b/app/examples/Games/BeastScroll/fireworks.png new file mode 100644 index 0000000000000000000000000000000000000000..93fe0b6b202f7d5a730ffcdf1ac34a738f8236cb GIT binary patch literal 46710 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/BeastScroll/logo.png b/app/examples/Games/BeastScroll/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ef6427938a7b4bd52f271e6ba61d4484042b270f GIT binary patch literal 4768 zcmV;R5?}3!P)^uTx*Oa zG4}cptcZdIqz>Q=FqG-#%$zf)?YizCh%x3d0dJJt=g#l1bM~{ocfa4e*IIi$8wMC) zfB^;=V1NMz7+`?^kBAq4ee+O2-_u6+5T3U8=y9)xg63%3Dv;}JMhk|C4yr~c*$au4Ca^d4iD=JlDl{ZS-L1FL$ zi^NVkpT2uKF`+seueJXD5+-rl1f5Hoj~fT2N?6y+YySw+MiuY-7oK^_2E0| zZ*IZU4AhD$#-4Q%LV)_iGfut42n3RLqy&5WR(z)yb==;hmM$jNQcrsGCNl3YBGj{; z_INdYuly0w(TcWi868r?TJs@FK7$<}g0}ucI+|NC7e9+_Ch@Q^nzxctgP0A=aE44E zo9RR5ifGM^IAixB6fXh5_kA`#ayMo5OUa8cpx}PI0WXh z>m+9!Kn{VvZ6nF~|3QCSGtm|AQt0g>SHGOdwgx(r)tK+UhF(!cC>m$bai_hW3UNb}uSGJKyIbS`~`&`IaQ$190u zI+4?6qo+HlK6oxY@4rd1uNx~pg4+4l0)o^Fk5M{w1oB%Kll$N`LQSi&lC^}-xr|WF zuuq#&6oraI=2A>|F?9ZQxV}xx%~w-?$Q!=OO3D2C3TgX!|R7%4!tWVab zA_Uly)XI0zIy%WNT8QTqF&jUkXhd)_-T3b<#9O|U=y!gIpUu(t^n>{2mE^ZKQGN6& zpa{I@9-=tsY(i_^!Te0~JBd~gp~rUUdinvJOc&<#*$72|BL41LRt+5)4DR@?X}D;F zh7Lstflw5L5NJUYPgl?kk3ud51sCFp9ZO))#JZ$cITS0^i<+#UeD0Z;kqE_DCDDpX z5DHeT9HE7X&OMcq>9dGWoe2}BAr+l?D2l3wh|D>KKqy3TTpg~Wqw6M#qfSKCb%ao` zN7a#>ybu1Uy$G1*-!vi=1+8v>^kR{~_-Q1j&BPZ9juFKuEBm`46oo-}NbQb2Dw`!S zW&%P8()|TW#!td=J!tqCcWVQ3^Cs+K5v_ViPON$Q(KC%epyW$!xBtf}SaxoY-Ta1H zJ^0qhz(IRD1hHa5cvW82M)^pDus~=?Md14$zU4K&nes2Zw$okw*`jMILi>EDinlFI z0pCL+QBgqpAS9k55K`RH32r`ZjJj$fNYB6kdi z9fm%sJv^pzO|8FdjWX;4Sodi|$IcupPR?$>tz9Z7-_s@eX~OyAkCMjBTY9X<&o_Tb zMBRT_Y2c3YxBDVx`3M0*xCj&^9+jrSZz|z?js5hY;7cD(QBV{CLZApA0qopDB?1&U zt~9^}CH~s_qW527)0C(@e0>33z$Hn66!2&-tSz_z+&?0SDg4F}0WW9h!qp^}B1CYj zXYO-MeTG>j3g^T@AW@`3j}4FX!LLWCg+5E|t_V|fZ4ZP*SHKZcWEFGNDeLp3Y>%7A z#5qFAZjk}KK}bdQ@zHEo{5_IP@nVJP*AvkypdVj@69~7F~3ebbBjZdE14cqnOCOK zDm8BIE+7z8=`h`N$qO;sB0#C|S(Jl?y&lW#9W!M}z~I<2A1MVwk$Aq(VP&efM2Vc1 z)BSZ}&pt1r`sXdnYO$v>3Js1!k5wRNdjR}oV}`p-Wms78haDag%t;6)=+ID9Se&t0 z(7)p;N+9b?`iuah6u)hi(C5#I=rf|yzR*Moy-_QujOx7Y1z6l#1a<__;Y#w+QqGLJ zd`numQpozEbHTZd#dQGcpN0mmc_sr@n&9|yowTQLh$+GI+2m_1$m=xvCI?1bR%M|A z$&9GVXieqSewVEdJe^i}tWV{cevN%~NfYK3C$H{#@a6VG&wU;C!oEQ0cT)m>|G$^I z2fv(F*-ne%7K}8Q5tU7Rj9is8=_fACM9CrUY6(5bO{;XL!fep zt#g^y9ezU{zT}>bA2$J;fhWHmRihV|8%wTLm{hHK42u}VLOPWrqnB8!e~DeRP*jzi z@DZ*;jb0#U!j!NkvQln=j z?U&bz@^STnh!VbXO%cL%dQm11kGmPLZ{0}E}>o;Gv; zgHLZ;x!>@hd#0{yM{Lm}Nx!6&Kj%Ec=p=gksPtW8x`!@wgb#hTLZ{SG<0Z(D;HoM~ zJm1TR)2sMnWHfbsTbWR7A*pMu*2`%NmN3Td&gHv0ZhO*?+<2kae{@+z z>7RbC3{?W2#XH{9&!CK2R-XG>AK1*TktYp-$>EqO9~oDA5qp zWv?fCI-h^8PyXjk9ro(a2B4lZxa6AkBVAHS_0VDXs!DUBmc6sv0*{H|^hFZPwObe+Qt2`i zEG(~MxmrPw86_i4dO}GKEo>V8!WQf5OFN6pexGvRnO~tKEHifKi$nHfkOAX!Ep)0O zrKxi4_}Qj^_Bla^Az5$fB2W4N+S>Bb{IK(F8YyAXsF{eM!CUcB2-U}pNlZh-2xw%w zQ<$d4-q}vt9JN~pWm)N<3JOMu_k#w#JzZFZ0`ck?nh+!lDMp3Z=lQzhF+`ARaLcKlc zszybzlVHrCK2RRHu%`8xyEgFvfaWN{V%Q)jR8}cT{PHkUHox0an`uoqm5iNW4X^&i zDWSEq4(+tg`bN9msg2yWlE(5{GJz=b>fhjn$wwlb0)}Q%URFxBuN#@~B^lBf*S(cF z{f)1!ChoD!W)=)UQeJRUo_oG)g7?H~{bMvcGbDa-0 z>DxY^d<7C7E=ssNQnvR~L-(g*NDbuDY)$29NDgIg%Q6;?*`I7CO(GefAbdhWmCEMz z9Fg7Dl+H(ozfnG(DY^C&U`GHhx>=Mub~aDKDUuKwssnz*cMJ0HpLR5y8#co?zEwSK z&OYYHE1nJXoS?M~or020`6F8Df2OH{<}*HgdS9W~sGfo*e0)V9Jr6}wS*rxoFIvIt zV!k(dSTX(Txtrev7gT-6AxIGtX$gcX$p$ngtbdmYYd;X_0JFDNPSo2{TNj?Qvg7KV zr%iy7=P~hbEIMRr=FKB#xX;ywW`2H5%S2=S zZ!Wq>zI6IL**;DC$*yXzn;g0Q`NI#8E2h`TS8I&D0Tz!j?tfwKVe+CAPm&v_ChUi* zwfN`jF0M>O-k%tG=JzwkOQq1!RX4FA|J1Fm{a;A{FKy`M$cFUW#g+}Hd#WNUhSofA z+pyTDY5($|i9*puw72L{)wPM1ytZIhwF{P5P@V6>Dyt$H)+zx?6eZbdMk$m17@k*u zcB`BIeBIscec5MZ{N$;*rhAnm8vC2RlFmQJkss$@2sW+1yeB?*{Gnmz@}1XfdpgHw zM5sC*4^!T~dDCls)|y?_Y;deT)6OGx1KUv|Ng$xA)9lKj3@#Q3;Jo@pwKuJ6@g7YZ z7b#yy^E-LmRDWe|S-qg6V%+y%7!j%hnCccLXNOM|)tgpfy7paHv`TkZ^)e!;BR#PC zafRrp$pq+8iM++gLM+ z^7U`yTkh>Qbrk)7xc~rGOa1zB`BpJb$v#&fsnYh^x@z@%`S`87qjBYwQlU!mO~-c; zs{HR;M`_1xEE_%5(lqMYH?MrIH}K%D=!jhz^i}ZM81toI?c`$y_cmlKr?B7H)z*gH zsb4Y1JeXl)U-vTU=FYaZS(9Vt+Yj%3%&&t+KTd`-EDqpr3jQ7;X6`+i05>-eScC=-2L9nlZK7nx<(G}-Z+0(o8Kb=yuWYa z&`ekU*+`~GX-Q|hR-bkG6T4IYN@-B3DvRB*dGubB&5u|9yh@7WSIszKuDxlQoYvlO z^*bH$2X;qK+nvGx8!j;gr;Uo8o#`puU8B;z#ZR0!PU*Y!@z-BX0v)@e(Ky5i`xV3Q z-&$Ta&sg)`&#Lv{0qeeT?3~!9dS}A+H9sEN;NAg+-SYLd1n_Vr(fvcpT~WXIt^R;= z<6DKmE$40N$ZwkzJZf;d`yYC^udZ4jS+vjStQmcUt5ZL?arsr5(R*FCDp^%M{DTGS z2jx=dR5iHoeHm|GX#lqb(T=QE&kYB(OMFdz`CU6W>coar%g(1%)bv7sOLy?IHBa7k zjVaf@UlMI^uC3m%ZLFqogq6<>TVGH+CUtLnH#>6Dw9TWYo)Bo=l&Wi7e&wcY;EuXB z+xoH||LFnDiA41S^}@_CVfCO2UB=U@vE)hHpMKqjTmkZbHMTqN(WR-`o&T?&H~Y$_ z-#vCl(k_fwJzH#7Bo)5gJi@STCpu_G$_QKG4NDdW6z!o8g2{(wH@5Y`m+t+m2|zd0 zQ_`xj>S^KL^oJ(f0{aWcrUlxF<4&}=^KJmPjF^3EMM?jYf!>~RqIpF^$>+mcRAIj6 zIGOFPZ10o)lE*jfJS_G8v#o#qJW@C6m;0Y~{T_K0|4VSslyN`U(;oI%`o|uA2%EEC u%{Pbv1{h#~0R|XgfB^;=V1NPs0sjN$3>{sW=Zew*0000JRWB1 zhYM6kLtp9P3f6%_bf7vqP^b>nLk9}ifu`s{^L3!>@O&MJ4g?IT)qx^)pkQY3#KX;p zAJk*r1D*oafj|5W21A&@PzV?d05bu=`5w?(xCa4Pnv#-|m!Aa!0c+iOXFrSq^w!nV z13-4a+W`Q|7;1`g`u>YQKF0YzuA8cYO&>B#1Cl-*L;det+P}PH_1W5{7mNSTtchZ2 zWI<3$=qU&w>J^>9}P&@0o+B zL&+p7^Ul06$;J@>}Gikm_Ta z6oZ&Wf9BV$=(bmP?!Wu)Vb_*c=me}7q3d7@at7o#TO5(|SL0q9Z9^KWzdj^Ktqz%v z_E0f)3_V@o*}AD9mD7VyMqX zV!PADpZy`lo)n7-ND8P9up<7wycJrHgfZ1}{Aa{c`97OtmoEu`Nz6Fy7cgz{6%{9- zQq{Q1p&j^lhOEzM3JmOGho~ab-)9|rq*GY8&U}c?wWolty>h?gJXl(_tD?c33JG{d z<&h%YO>%RTErvm809^k9b`AmQ<5{=DYfP&0dlg`*_Kb+k`7iMBH@YG&i~YOk>2yF){4Lgxa)o5No$knnL8or4PS3itw{_?z`qXdv39N4nt*to;?OS*uwOCM*w&4XekM5>UM$g|g@;Pm; zCY1=G>zYr9B=lngF0N==7$hGOOaE$ICX}y+FgI#FOKD?ArPG$=zJL3-2;3HTZeR#I z<3D@5?cdTeTJA^A^!H)+vy@6b^&jkZ=;=Zz!d!beHG^5pcBKC9?N=?a0mC(_pV8XD z9EM$|4c$K(>f)-8XU}q#yFRfdGxGG&VCa2kfw?kK6p6PL=e<%6Jy?3f%%4Unk|?>( z;vHjQ{O(IaBkH?djD%VFEBO~sPnEH>6eJG#%IuDJ*3tpnPc@dhF{;t9H7EF(vod_j1J ztT{g+>kcL~Vlo=xYIrn<3V*r%nRvZ}%cZD3=Co#FFqP`K>}hv{^^5%Lmw|;sFN;sV zpm;8`7sF_6NWWh2v}f4ur%EhF+8ccLs2|1u54={q8=J-hMg#aMu@2SXyrzSy*Ee#T# zn})2s(s^yqUItH?&kn{>z8LN?-2rFaw5C^!hVvU+%ov|4Ct{~08sPnla#b2G8Yh9mY2InN zzR#(TU*s=r{5g46lb4A>6p|~SR?W$R>}9lNM6QX6^jfF`HlK5!o6f}7Ti`B{Xi#ke zWK<7j7N(TxB89&``dLqA&Jp%rIMwS}#46bkdr6EJO@`XH+QLfAqrr|#rJdwg)O*JY z*F`7=6v-yP7Ia2k0ZBU2NhTDH3YUw=7x~)S=*+#gl zWNBk5(t;h8#8`&2bmP{9I0##ihHU6|avO=&&#)W5eha2(_Dw1$@B+cBiW^*Eg<2c{ z9q1G|R6j$H{9>YIG&_xPo2}1fqnWMrf;Js=VJ7bc=EKy~Jq&YSP>ku~6VGC3E*4eN zLD!!#KGnM*bc=T1JSw>ztXj-tBKr<(H|#siSUsclBG`Ib!1=jG0$P(MXk7MuwM>af z?meUWF#CZ&!WJ7Lq4%~RJt`KbBm?nst42R**s--f$@}@A#kI$J8;ii;*j?B#@0wsHX7)h`hLA` z0*j}iy3ILC(8NDOI!5a?f?KkUV>;}1*xiS+`q|`i7=TPv{8A|j|VmDIS4i^l|1z_n*jBJ))*V+eDNR( z&FB4SL%rYb320GGBcRZYJN}|EaF@@QJ!25KSeahL`StHXHJrfzh@)sZLZw>2#HFNl z><}iKm{A`ZqgIJM&?aItH)S^qGU^VywVxRIPn%iH*|4fWUnQ>EbN*02b%jsc{T78ZC)~|Qk(MySLCw7jVuAs4ikS*AjGA1c3lv6=L9=9X zgBG9prpP4d(X5`wDAV@3l9izUFuba%fsJx&z~IPk*Olr$o=NHq@ay&(q0?&49m|ikXMuIE?<7C?92=ohF-AJsL=o5V29p#)xtRn4@MHkoR$++`|VO)x#_@ zhWP1r_iq`a#6dLB#!fbK!fByWO@U0?U*XLh<2TNn)@o510ykA(<`SN|p4Yv$=es6o z9q#^nWS%paRt*&w4jv=tceCajM~8A139}Om>g)XQtCzPxKj*jZ%eN9Ehu-;qIZcx# zbGz*}CD}o}ya?gB-P*(Qe90Y0^H9B>wYzNy<}LnYk-2hjGQ7rd)}l3|j~%}0Rphu%yz3== zOR-;}Moce-C96EQx;>sd6zC+R>s=t}P$aecg>3n;XOXh6qWaYVb+o>~TGrk>GOds8 zuQUy;c{rm@;-d~g8t#uNV5I|VI4Jke|1mQ2AcR&+h{hpHY^EG3qoJnwJEqipdjJ{v zL*dtSbzZgs9lTa77c}A2C*=Q`Y6+XPI;TMvUL^-aE&UP3!|k*0L#koH{keKV>HF^8FO(z=2TfpO%-a?;TA)I8^_TRJ8x?z%jAD zNZ9M1{g9jb&kW^jT@Tb&2%eWAXI6r!@hbNoQSl7(u{|Y^?4a8v6UfLs^dtA&mfcYK z^dDO~>2%GmJdYxq%vnHvH<1OwDW>-n%l1t<2{;k+{Kl@0z_iAs44v3(k$^NCUX#s| zW1@a#BTubNcIJ43Sl!r|Tg)IQ6@-jQJblyr=Wk3jV847TU(eH(YOiE<*esGi@x7W; z2=q>AeUeMm!5as+q}IVoiuqbLRSgt`K9uzT?DeAxNQ%b z`5l4>iR%&&))*CC`4_Ae+_KHpT`__`D!Zms%@K*=xKD@~R^*8C#@(=7^kg!lc6CL^ zn#<-zu~tfFGn1~DaAA%(#+ljMM}$zyRw*2fbff@YhUJ?tQ~v5`1sm>@44e%TKrd;3 zPLa*}9Y^qS_8o}|3^^v&L|b3=Q`!Wj|DVR&1o^Kw?r(2SauH0w6^Xjahd^(>+jV&X zA|~tvm;@DA*gri0ueomE*j-6xnx#=czp0>aaEjo$L+RTR9-VC-{ZmZWG%2v>>n6>5 z#9V!F5nk?Xin_GQ&SK4Pt!5q}N3Wmbi55lzTJI>2b zy~AsauJ6B$BiH7x^G1~R?$B?O3;5cg&c+0NPvfJon>zEYzKcBsV(HGrO_hHBvzYYM zXb}^f*uGfnOwtCnESUj(=Y}zA`dYVAM-BhxLGEew&kHsm#-~5D7hiwFMk{mR4F#KL ziw%O3qcBA{XV~7qr!3L}cv?ytgbhS9AVFng_AbS~+&!{?X0F860OeShq~82bujtK} z;%*h=~Nt92HNJA#`(NYlx^BA6{MB_u*QNja^^uJ!d z>;|k9S6mw(^6Ce7QSaL)_?pSFe41+ER{$>ULQ2ixRWT)RdTvf|L^tw@^65gTN8#nu zoSSxl-7h&(jKgNal7_LE{w?15>EcY(KPCWO2zduWSjcwG6KqCvbk=E6Q_9`MQ9KhY zMe4$fv?0k*b2kImuk46}6g8LMK)JE)E`;2NE$zcnm4Zi2*h^UbnnP!8q(LT5YFiqD zwmo)VO52*NX^!LM>5;d^`wN}rO)dlrdf06>>4@xW0xakfKWy8E;mvH*@?|%cJheiw ziR7hO=>UFXa9GXe9ln{<`+~gGPL@+qav0q<$#jv8dAZVDE935&QkA&UbP0X0h?0>O zTb7**JyL}uUMjeEp~=C1AZ)(U7B$<1wVL!%L(avtk7R6jl0+g=BkEmJf!_ErdF&sn zg=8CE((`>-&cK@crEGxKM`qeZnbZOSMUHXb@In|FXY84mjWX#z5CY=CryjBma8;ZvmPTiUu zi8IjaoPLR@%9!eMadvY-7?0Lq6Anj(ovNAP8FpLs_;n72D8g!~eY@1@^EDyLRrG`t zofLeiN;d^p~$t2>j>Q38;j>a0foA`*K8m2pZ#Z{z{n=b!0bAmN{99C zMD{P{T_i-XrCZGDLw-uo0?A<$(W_@K^2OmJYuURYF+fRb39cER1ur+21^j@jMhX#$ zD}vE0x?i%{KxVXyXkp`9*6>F~ZG$B%y+VmiT0-UX2e?h^;~FwUL8pI1=j{HQp7Qu6 zY_L2il+xi*>PGTNtju?52||mAxw`?-2U*Mmj{S|QqOMd%kuQmk$;_9Xz4z0RJBTX_ z#HujbckaFsRLJkmA2zc?YSXFtJ}v_Wpf}N?`)+LcSy#t-4fr2GC-LInNOoavM%&5k z3W1v>$+3^4Jh5_IekpV@`i>-E>$i)Gg7mK-m&TdSxaG+hAyDgs8zNdhH zUah_anP2bJgG${A9Na~hh>oi!)KXl@$99iZeHZ_smD$COj1PdWe7c(+LK;C6bDTa{ zz?lrrmkc5{$3~6-@aM^*UVD1m#5nmN!O*_>;RzPZMmx!GNV zGyn^&oHWB}*Km;dv@Ov>(?tXIwm)YdmIiCL26c-K;XzC=^M$^m6Br9@m1~Wby5^Ix zHt}}P#SdB4i@*H?PP=?g2bj?*vH%a{Il-wYJ{?iw4enDdX}IVmq*6h}^qB5V>)5)) zE|v*-d5!T3$-Q6uFQUzpOT$R4bCNARySq5e$DueAl)WF^h1S=^u+r+;uI6|V9HTb> z_EE26HaD=K8Pj11zx8qTNfbi)PbP&}20{)m5}&YdO&3S0PN~OI#-wQOR^;qTk_}0b z08sIP?986eqyGao#jC_%<=%EClV?sRPmXoBr5rI|yB&}n1Y`!r74QS*DfMC;B6Rvk zZ%Zh1&8fbqh1sJLX*EY>Z!NA`=-`d0 z#FYJpi@qxALPq8tZCw!e<;JSL{`aB=zf(txb0&IDr$(n9hR9UJsNw-%_7g2WrV#PS zwVJC@$y3oCw4YbA%iziskF7=6SIHttO=arpg9q|5PWDsB ze<5B=B0@uqLO4lNO4$r0j!wE$;ixYDfVE$wA?(fK+3VS{igt;3X@h)UZA?CwEBK`C z?)e?TCNQjDnq=|Z?(svrC_DBYV9{2yWm3%-Zdoz7$)9d7>Mz|MxtwqB!9xUXcI3GNa2dl@*fOFAnmDeu0Wi{7BpS#c*{Iph-Vobtao0d6A>VL4=ea$qX4wVdZg{|Phqfs1^-yE3vT?^JK@R5VwhNDzx{PrdRVZ}<#-IA_p`6$zxgr;|)fq@PUD+IQI- zwD5mTuNEyqOh5s;^H|8u<1%sUM6wCr+d6}f+Xg8yX&O12!)&y#psAO$ zRMNg@r~E+D01r(TfMNY_;0z--FCLXtf17#A-X;3cwC&xfBpl%ou6O5-a;@icfVU0k z+4bk|MBUs*p<8GVq?p*8U4J~u{2_&AyEml=eNi}U1iP<5*$)YQ%yK$9CD&ID1Mv{$ zsWL*XqXO=BT&RQ1L9MsZlNh(EOjX}pCa}H%P)b|bwJmN9oN>dvF2ABj9Y&PvEiMrj zG_V$m>ouVyylExOk+;v4I7ab=;>(po-ut|#F_-bDbmsjlq!@_O+!tX8oT^YTLtPFg z_6u~->u4RK#@C$YAZiyr9X;iQvX)q+aoCjH|Yf0rbc0%^urzON5r9YyWleCnt#>>%cnT3KR3 z;rVtm27UBsjga)k=U8nhSPhK8yjfGe?ja67Lxjh?L+q;j>0@nsd*ER1n91I4W~#pt zCkr|?|Lui#AkTXB?heVAQGVo$0ay_0x=;A+8mZV>D|?*mF;BMQ(UYc&;Q}Z)Y}z=P z59-RRG7=TUai__5l<8eb*zO}orfPz}Zp-6nwn)IQp63jxqJZ#~k^8=IgwLAq$s;A3 zTq!q^L#NN2A<{od;In6q)I#i?l2yd1#0R;EH3GCB3%1*f%f3p6B_ZUlk>`ikyEr?h z+fTBz%eV%RLI0s-o;%wu{+s_qKeeKm3qiY&NT2Z^e{> z1dwoj3QZ*BJqPJ|9BWzWggA9{S78(x>)T{W|5+=%lKZ7}NlXjF%Kx4hT(oda!Zopk z7Xz!K zD0Pn>om?#&H2z}IRYkc{Ko2%Q9mMC6sF1FGTUnpX^!eB*5n;cUa6d`8?5Ui?igX2YX{tO_v>YDJ8 zyc=O`xBT>%&6G;T!O|s=(Yp6tUY*J=kg!8W-A8@;;hwLcb{%%M0Wx1mLn&eSF@9U= z2dON@afRuI0Jk(yu4`dBSl(%#Z-CISeDX4a6J1O#k^4$pL;{kBefc_(JZyy=M!bG! zLI7`P;L^PJd|hQqQQBQg1H0YzLvbr`t(rr>J;L8Ao!(18DhPGe$Xe{bQ!QYU|9Rzh zy>#Be88!-Nl=H{QcN1^42`{gH-v{4cr8&Kk&J4Vu<_bHl{JZqj2KwLo1AoeG0Zpfc9lOL`j$7y`CgLxaPcgt5nejRP-g zzSDk2m2Rn&)9kZAAN4ECXWIv_ib%i700IF*Gix&r=ndhPf8{PaK zh~=6>k@91=mIo-s5n%xfRUwO{>shNwK-j3nZEbv?43?Gh)%Z{Hkjoi>q#^f-)zb*O&!j^!-pTR9^@gj=Xd9lfn(t*;l}Ac^5Kr zy_ClHsq`s66mLK_FrSq)$`}`W|K*qr|5l9;fRV+icf2pG+hUYpGYuh(DTcM^Zv$yKY{<3!l6{Pf5h< zcI3OybqhuP;|I?~pP}al7?~HwZXzhqMl6F@Pu_{fe()TY0)JcZta<-ta>~gK)Jt3{4r|(Q ze_!>x$&@Lf|4h#&9vss{#;*7jmVvZ^31PORqKpEuUSRbv0i0C4siK;8@_#|9FgA6( zD~Ohs8L|TMHH^3J{%J?6iS2tALq_ORDFXjFl8xl?N8~pZX^1!9Cbx!m%xrB$eZA1J z$muuAO#7MGqzzl;{-euo6k#j5lx^b7W$tNHn8E^H@gnR`Jsy9@g3b|*ihr92o>1{| zlB02Y7+)1GwHfZ2@?DggX*iZ*8Uz^uNY9hEo;2P5x%ln;62U3DIx(2y8Dkb+d(`%3 zfxN*o-;60cvv|}6*RZEfORSh;!x)n?;a|z?{iMiS#;b?%SZHRh{>WxKdDFeU>QM0B zn$D7CrYM15Y-=3q5BZU70YfhXQk0{X@djdRVLYV%k{s+}?z`Qz@N#32A-;xV9Xv!h z;MYGQ?Z%Vo&hNj&kMHsTjKObskiwFD_3~f<^@Dv4sN&+(U zT(8AAYBmm`Hb^r)xxI1cz5XlpdRj6uD`Q{#}hxsUqKR6yz zPfK%Hbe!k%KY$a7YzM(KOh5CmQHgDHp08IudjP70q35q(W1TvK)K14yUBPGb{o(b? zT~lcoZ#LkI;fVFn?^r~dW$nt^gy26x2gL`uBFFFl?JI1ZAk83?%K{YbZyWdkWA1%V zr6i)@&Yt-R#!o*+s5_6(UX#*GC1`2lMxiTH}ggkdBh=}h-&OdAVgHqwiQm}A z4CPt_xNKAu;YzAn&ChXPFsf%}G=6^THRSTn>rg=YQci|C?x2PWE%FndJO#EvO>zp1 zE=Cq(=rzc+Ux!2gg{5a*cDu8a4h}C?>dF$B$eDRlH>s% zAD4knKvKC|S(tBiu2TlPdIl31N zKFuU%d@Yr02Y4E25_9uM^|g}4GAsHLxklz5rTHkqS5hv6bOZ)}^RAf9Bvi}vEQc|% z2V7T5pxcNm_#rnMKjC2BHZim?J1D*1f~#4FRcF59sG0$=4p9fIBqHg)4X3*Si%hLu zFKNTr**t2ZAYCW1z98kyYf0TIkJ95d4e8(ZSV8Nktf#$Cj(3F@^y)g^_ zzvsjFo=*2kw?fZ0j571h1GFwhx~Sl_8gDo8XC-Z+b#N@P!SxM#*{1}7pU#zoZEIN> z-d#f0(^yG!te&M5D;rlC@71!uCM>06dqkS7cW97O+S2tPfl*26;nB|tVCbX$Z8*rX z05c&qHqS+vAp~uy$h5F$fDPIIj9BrnS-z*pMr$zJ5L5Wtne$~sJ2^+wxB{spa)c&{ ztb%D`M2iA^xj;kHtp+BDK^l7GH-q#3jaSVHRA`67R#CFnbQWRPN4X}Nk+Clm03unc2KJcNi zdYxVS_zw_NO^0 z3LJ{rR+P{c#WDulelrOiwuqdUMC@Hf{C%F&$B&-_YtIac_+3}~z9AI>&UlF7>z$TQ z#1qLWgrt~YEj-ghG*_+oZM}F{POx>#5{`r12r$>i*HpQl?(36?lS}D)9KEdvc&Uye zl05?jQO{Z%QmfqdO|HEKeG<`4keNIk7hB`O;8&4(Qh8-7Q6kp9MBluyD%7${^Iwkj z+-MUj$mQE8)g113$$o%++Y^0nv#FHQqr zOtFuK6*OCgAAK4bslQ6~Q*oyr`2J&qbHCOAp8l6)&aTO?D?jtzYmiC=AHlDNBX=FpD&`gQ&il15LiNniNEoqPDH~j}< zN8@`$QX=&~s6rN%_TtfjVtv#+lg8_O-{J$t#vgwhwP9QmHWdp=-tDtiC;0lWa(wI# z+jh_AiN|VLJdF{J2|Pnib`^CkwMzG?=h4yrV2~}#ddK&;OWpW-lxJd5x7|YwDV%@e z!3_)l(KmPOwh<@Uqee1nV-bF++Wz1CcjfsQidN^F+BX2kr|;cSy^I*RT-QZ8o29On zPfS;ed59KH1?>@&7*`A23>P4@s0BwqU=f_a*Rgittc;<4Rrtt<6=v%_N=2v53d7iF zjv6JkyiZQ@YwG)WF!z_930`_yK9NABhJ^} z$R6oI(8Lz7P8sxwHP~I;A<<*FxkXI@vO<$Y5horRJpYPlqLOPTYJX~9wFB${d`y7( z6EgjBbL!WF^~2_T)mRS3^Pbd6m@@g*fI6o*j?x%-064eWsATTI&Z1Mi`m zc%T@$5%1hKsmt|N1%Y=Q=0%zJ0WgPX>7s1d*uQhWGH{6lHf?iR*avD3+xqWs7C91u zeZ7Af|0|Fb4OP^SPbNw22yN9$>(3Fb}0YvwZ$VCqi#EQUS3 zVrxD4mKsmUA&?Lnc|svBRZiAjjYo!DG5i^Zu)V5GkiE{@1=PPB3hpBUoP`xR(vJX- zb@!+M_@)0nR9dbl51tywp$J2?U6kXFI}`dTe7Sh7=WRR<95eS>hhu5pnfg}fXP0pv z!9W|e2w*}NXW4($;^v)W;JQ(+Y?#%RTJ3Mw2F!yx@0@gFk?cp3?Kfp#kR6D9YK$-Rz_&);Jp=dFW1NyK4 zz2Z7A;0oIf831l)v7?*^@+k=Dk^Ef7`^D8~K=)V0&Jlc{>UT)BMqCJfZ8@uCRKTEs zNO>kJ3DPrX46ufwgU3ClmYKmV_Fysvq5p&1?OI{dHk0KmrJ+NwjK)KScot5!BG4q5Qp3ow#uxVd16B+Bri+2+< zfTX-eH%{yJIxrD3#GW9`S2kTGn6A_IobS~<; z@9%%>);?&cvlcg|rN0lHorojtBAbgZ;(igO0Rlu>t|?grS@MSksR3BiJ<^5uI)Ee= zIo!6!H?P_~3ze8vmXVl4Q;ohMEeivobVV+uIY6=b#=7@yb5!@3fU{>BNQ)G+1Q6GZ zB;4;gYsV2CI`b?>3MY%I_|XgDGZlikqI@%<$MflsJJKBeK1dML=!% zori%$q{Vk>Aelx`N{+#REIG#ob6}m(@ufD7>PE}YV(i4|o(TJ{tLJB#R|Q}0&o0Y? z$?j2L?0F6t(OD^u>fqrV;aCZ$Z7F5gn;1v}B50W%m_v~wd7zbEtlG-gor|o~l*}&q z{a!5omReJ9egX%^;vVqF5G}#g{ZR5zKiD=`)@!uS3}gJxX-naBi>xIpQ=FZ;fNFMY z;p{m4uv%xCv^x*AWzc#53`4Rb8Cz+O29w)(m+1g*xL!T7u?xrTQyt{BZxw;h=nCit zuQik&W9+&pq~Wid_sdu`VuApsfM3(S_FZYj$w>i#o{K|dJr*sO@4oL>>=K)LmEOC? z&r|aZ?GLQYT@2)-qbwlX6rm4a7h(g@$_dobhWuxaYldq;vjF&pBJ_}rgpNq#NE^=} zCHKT0yfiWxy@wV$=tgbunV}%OR-5U^Mg=D1Ao0~70O9X~H}u7XERt@yHmM~)(cwX* zx|$P}YHK^VTJN!S?rNTEb(*+DgI%A(EDf}AkUviVZ-JZTE>Vc42hzHb6%9a|qPoJx z#ORIQA-7WK$(^QsO6L?_`YUpH(3*zTD#oRl)0H^*4;fy3x9*-Y+-IS(`T;IccGmD3NSh@}0d zAb{#Wf!y>d`4jagpG4XJK+$0AU7{kghGf1k3!LH6U6D|st{wV0!1q}nyA+nbHLgk% zaYmmQ`@F&L!yGm^;+Vv8RJO&kSr7PV?(4M+QGvyF@?~s^TG)&0t+{nO`W!A|0(OR* zX@E`{R5vLl5;AY`76Dp~CgQ|Gvwfiz41Zj-0K)E~6He>3h**e@8`tcu`SR+y_|6f@ zFIJpcz?Q7}CoWT`p8mhNqvBLnEsOviC=3zfCVFL=oq+JoHF*s#45E4&_jyZDK6yq> z>ZgB9b5SCK{vFAP#S6N~t`XdTprI8{B6ofC=J=v5$^Z(V{Zja8*Nw{mEUgCjb#%VQ zeLe7S&F;q?oJ8jUMy@+wj#KpQkumy@Nrk0{g`nF6V2cL)@f$OcMmi>F;hXjc0`Xjb zk!|boc%f88G38UwAR$Rk5AIc-^-=)2(vMt((<9|-pon&Q=Prx`W|JZs^Wk`m-{LcPp~O zUE(zcXqWo*^=z{b@JgK(4Lwjb&Sl9N0!Zng!**4~2R>!}k%TiXSjdup=fTAFXSNIs zFOtBB#Z?C6l-x*$E<_xfI86w#rG_s$#JVn>) zbg`Vn6@mT7xKf%9|eWvmF1T2G!L5-aDZ?-p5)1g2~jY2S(!G1Pu>3Wy79= zYk|Zigg<;9q;rstWXR6)8*x~e$wuL5)Qh*4Dey+0oa!r0`C2z_cu2diK03+5$hXdR zcL}g-50Lp8aC@F?3t&czP$6;pVFMOerxs^|fJ53HTf1doa0))A5Jh(!BKqe2G>wRv zBJU|zF%5hPf*NE)ykSxen(BX<1|-b}`31?C(Pz;l-GWP{H|_WdE*y&ZA!FK{xWlRw z?+it;n9l5hm3WY{E`9g=F$)}MjVrYjwWlY5F+UgaJ3;pGCJffp>AjY$!dE%Z^l~>9oi$0l8YdKTl*gsimclVP} z!afd6hT5l;IJkk|x-1f}=HpSb=idlm33(6Jh3S=z9gZ zcF7oEF69ek8iU>jNa|;}@`C~%Bw=aTXCa@`Jg6$1RjE4v^OqD$zgagnv(uYulkc2_ zqzb2+=-3HXba?yKCL$%8^MNzv8iK#I+D!IbW@0^%DIwpQ5ypTrNQ0rM^rj_JBy5QJqNT+a&6UO0 zC-IvblMPd7Sbtjo!MIoBb_&A7yXp}tx@O#kOOMp{3B9K#1SNEN3;agn&`c5tr&mp4 z03pH6H0yC%vr)qWe%G9gBf#JVMbnr0&e?ZACyq%})bjyZbu479dy&2ytM zJ%VFhoJlfbs;*L>oFfE2js}|Hqao|?)><)TpJypSlskGjPzEfBVy%e?5~=rJg-+%> zbNwAYVVi&LF>``M5{&&saJjxUeJtl%RtXR5l5-WDST+7@+q}JO{cmD0XZ&DAish3s zlEC@VU(^7Wz!>XoQp@GRUQo!+=r$G-r|3B*jWw7oT7+70I~53u6U0~mfSgoQ$m)}U zjD;WWtJKklj5p3{h-{3r8A~mxnJ$1T-y1Xb1zZu3!ds zEiFA>vKKK^;C*R0h%qP!M{v9_=O^fM%IxK0~LiJ-EH){%+ zMsR5GY|t2Yf0$o7+(eB3Ll1d31ST+6%*rTPuGwGR7ShdT@OMq;pj*Gj_IR0Yb=1f4 z%!*hpe*eXTJSwG z0iWf~-;O9E^xQTq1My@JBJrAZL_ulS9kA7T?rOOu)f0wHNa=7g53|a0G$XIR&ktj5Sv?nGzOD&VX3>~2bupYjsNJnFrWQv ze~Lp)P~&{xe7Bx*Mtzal`2qZ^SxjQ&W=m}*{@kw)1D6&_hdY-(mJGDo_8bNj-fj#f zX2n!$D>5ac1~8w0#Xv;%LEF@#;b|aHp!Bt{gAV5~`CCM$Cx(hTkZod8uQ&Pu~>46A10}7^Oul;_vvWUenuI<9l6EpgeYz zk!FH$$j&$bcbvV9iy&W$l8_WZcDHL4d6(~M)C|4W|`A_WJL4EL=nP~&1J!ZNPJ>A6%(Iz3{(MX)o{SD0khmB$J zoq@K2(P!bgt%2INoxvR8p6vn3MtE^s&H5tBhTR+s&J~a{TQ~54Z*>Ml-9%%;)@gE? zjvN+dT#`*(%ryMBC2k0fSmKvUx&7BmBaaJ4`p?C4d(3 zNfeJ@5wi^T(CH&LWDo!SLMZ@C`|UdDq8})BIz+!tGXGo&EswX(inF#MK}diaoN8{Q z5N9eY>if;q&}zb9Ui{}xu+F1Hn^4M}uZDn@N4xTI%sMwmm?hJeIv5dn69%(_ehN+i ztJehRVB=kuhl0Zm&5oKRV@HQq=AvIJW8%#Ej!9j*(JrsQn6hJt&%*yakslIQ&MWlTOb$hu zUxuV7N(f(8Pd|FVjy$K-_wDH$HE!QZ4on#UQ>`gC@gl$q`AFFnv7K-nnursRPU1Bw zEJbv6D&k_07hHO0?#<_5?p5GLv#k32@-mt@y4}pWIm8lVGfhAr{ia21cc*s?QY9i- z1;{_mv})WKAM3EqnNBCDr$+`g4Orw|)8)6#&txE)suOl_s=`L3I0!qu!h9(M4MMQAN7A5+RCSCUn=OzlCQ6nbtgVbvF{ixUX1dtqw!=aD)g0x0C``hz;hqTd(sD}(eFM&Y0-q+{0%CU1Pr22i<%TX&R*LcYCiuIj@WnidFlAW|ffS1T z{^K}JSWOQ$2;P%`5R6=>polds;>~@u-P%W()wAKl#2BwI>>NxB2Ljvi8Q#?hGCQ7- zf*}bRGg@!qoba20v0gJ7Vfaswp3qZ|c8`ZjNF1in$Jn=)bUlrF#TNf&16M2M*JuC) zp@0#lfOBec9s~F^9z#GDdv9lt-9<6Y1oJ-TYu~=cK>KwK?hHdn@%^V7Mm}0~B#`e1 z3;0`;BGQ;G-NNzYe?WLnhwV3!#ti>B;%uFlVyuUW=L>q{c`F%tx}H8&2oa3hnniIkz7X ze@eCYeC&@2ppIbo_QI145QdnRyF&dPPBY~xxbJtCNllkACxR9iY3}^2Erj=OU7C-} zjE^)+GM{!!?cl%s4@@JwalJrU?Yw_EjTV**e^5a~UWJpPztapb)J*umI+@^i*ueIQ z5zx8H<<(utS2h3vder`M?uv-uK-yS~$wR6}Rs(`rrwc?`N#K9BfqGaL6UIE_8^J9z1c zbZVr|W?bEUQV1&nG4dDq4O13+q07jKGpRR>|4`k;<9WbbH?L0!Q9w`Wkyhr|OhH@5 z?*V~ric}j^7+_*x7=&B3KiTU=+_0bk6w5qsem)-iR0HryoFtX+vGP|cvF|^;DdI)e z4+DoM_9D6#P%)@D$_FNk%tT#ZZA*5Oq_m~1u46;!{z zO(@n>2eFCc{UKeqhiX(DWGgfZcK41I2TPo<1fPvNZnI{ zdIqfddd*6$uQ6_fRp^ICuo_d8nyEpb1s`hiu}?Q2TalH&(2=hkAWQ_e+MfRW;{t#W zu+FZ$PO(D9EcIHCNsHZj-8Bdi>xy;i`Cp_7RXWl(JDAgpQ1a>P0o_3J{T!#@h#B`0 zXpQ!*tsv~k$MV5^u=1GdhR#N}Dbv8i3w`M9P`jhlV8*5cOhCunYn??CV9=aE0I5;} zNCL3G5)-g}7?{^XDNo5}tqIT#i~wN7>lY6y99i`KXp}nkKc zokfD5JaK3|6hvboB_atD(9vGWsaNuPZt4JetWJ)P{1i!FJ+@D8v6OM^XmAw)+NJUN z{$Hn>85n=rV4V1Oss<(kteS}~o@Fj?VKpwJXUK}}g+C_q=lx)C8E=?Vou<~5dyuqj zwcmdDv;R;(jK?-2E#TV`rd8lGCTb}QezyJ{HSD&xixw zEBGN*RB!0!qGi!uS3V4G7u3MdW$_lcb%GS(fF~&kOvB<}xKuMfT3F(V_NDGYlyZRo#%&~^Pg})28qLt}_nKKTd@OGbG!j=c zKaKY8{F%I$bz^?H7t&6}0%m`V`JhihpeK z^sGMB@TFXmr(s^p9o?t-9)CW@?_HmoyWwGf|C#06EV&y)ek;c;VL5!RlQ&5B^g?tUwWX=$F@<-Bk;e| ze*?Aol~GT!qN8_gQ7`WLlRfiV>sO_Et0W(D(LXZ-!P`Q$AD`!InX-TD)ANVQx6RKi za8EXt{O`KqL$Z8h^X~?2FNH_B=`DtFR)>_88h6k5P*+o<&>+5}@s!?-?ExS4e?1g! zZ@eEelhNv;>`5;D6ZaGD_zDT#(Qcb1m|E*`F?rT2os|_c_&tm?K|_ODKc(v)<^P@g zat_0hn_cg@O_e%+%Cb5!eyHet#@27G)bJpw{l|j852b8BoKUprV^QA7{$Y=;TSA52 z*Xs`9ygbaBANM5%HN{unUc9>JpFzXCYnd8_s5i?tk&1!3;|5S49 z3uiuW@b}1kkpgmc#FC9(!2a zy47QsaPw~qXzt_WrcUX{_PJTJe#dhvgt_r?C@k3W%u2!MsB4(OYVLKePGx)+lHYZ6 z4a4X0G9FZ3|FKfN>S?~#y9+G_${lCd-Y;QYR#SVbLeFY%(X^}!Pm3nb`cnB<_Tz)OZzP>l^*t}& zbGdJL+TQDv*FPBtl1~vC)j;~mD|o`}fAC-Xgmo`WPK15j4Lll#!PC{xWt~$(696>* BB@_Sv literal 0 HcmV?d00001 diff --git a/app/examples/Games/BeastScroll/sprite_arbre.png b/app/examples/Games/BeastScroll/sprite_arbre.png new file mode 100644 index 0000000000000000000000000000000000000000..a117f15c8611aa3428d53f567caf9baeb5717b5d GIT binary patch literal 73213 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

FXBSb%O6J8er)Jx8umU5c`T-6g0FapxGD8 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 b*5UsHy$eSe!oUrs00000NkvXXu0mjfG4u@( literal 0 HcmV?d00001 diff --git a/app/examples/Games/BeastScroll/sprite_barriere.png b/app/examples/Games/BeastScroll/sprite_barriere.png new file mode 100644 index 0000000000000000000000000000000000000000..61a159e7be6c4d5da399810301428d089b6488dd GIT binary patch literal 6455 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/BeastScroll/sprite_nuages1.png b/app/examples/Games/BeastScroll/sprite_nuages1.png new file mode 100644 index 0000000000000000000000000000000000000000..5e27ccc73ec3c95ea26267177b11915769c15a22 GIT binary patch literal 14285 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/BeastScroll/sprite_nuages3.png b/app/examples/Games/BeastScroll/sprite_nuages3.png new file mode 100644 index 0000000000000000000000000000000000000000..65375fe4246537dbd4b0481c14baf77fd073c704 GIT binary patch literal 2389 zcmV-b399yqP)Ta^wY9azl$52ty~f7I&ZV5Ky|uNJoScM&jJ3VS&c@cx#?G~^t*xb{jFgnU zz0RDJl%KjrLDcKrMMn*>Rj*N;d*J>;|fL&s6o9vVp z@@i&wH}n7h(ta}Jak@PzuQZvnz0NV%0qH)!`(4xN>?9=U(%ruK_YxBJ*h}lMv+g{4 zExP~XH^JhAuGnW0lP_)7PY@aWeeINQ1|fNACGJFo^nkhuC1{dRfp;%$*t3dOY5X=b zFj76o^5UI7I!bl=EV}2Zh?D2jeH&4^5;kO3>jN#QIdz6bJyuZuJl=a90y~c_iw4Zb z!J&M2FH#I?Fbc*&$&a2v_dK8$F&YFFWzVtx7Gf!_nPHRefJZ0$+4<=0k%D-mD?@pije;_xsX9<6S+C=U zg^v*uusiTEs$a;JtxDSPEMbhZIGFHakCiMpU_*L3>rDb=G)tz@H0sT=og*W)wS}u< zR7O+j*TPm*GmfE)?#)h;0A{ieQ8b9A-QMmPsO`u5cXn9YVptV8oU583wk8O|k{_l7 zDK)2UjHV@HK1PGypf~NFxfgS%M2uq=SB9C&@MLE@RY#dD1CNZmvq6>^6PF*7B#OHK zoRvFfwbIU5vL>eAYrTplqMSR3g)13gx%s?P zyHiyvb#JEwD0M!>)+Ka~lkSEwAVe~5(#BTcB)!Zy}wrPg*55l6FbIVnS+ z6d{*U{;e=QLmYH6@~n-ggsFE^`ds zmp%a*LYBRsnM3(&GpEvoH#+w|B~l8J1OJ*i^I=BAqZ?+RO#S@ga?(+#Rw-Np9Ee!l z`m6#zc!tC<4byF&l&RXJQWVB{{F{RrILFw$#X`9NW!R7R(-4g(p5|s)qu*RJF1T=F~ zEie?$DPvZ1N%V5oU7E1PWrL+hhETH>EeNTnOAI)ax`$tf*#WtkDD zWZ_)Q{Frar8gYw{&QM%{sBw5>>u?CIsj&}$4d$nO1rvc_7?C^S%UfgSraL^+5V zlr-h&2V;Y5d76?)VN{l76YA78SQ~mTdb!7~xDvjzJEV`bz^tt2qqC6%rRqae|JsM( zvbuzmzz3^kwY09~h1MUK5^Yi2W;_~wt@CeIu)&DO#g=ok9S39UlUms^FOYsTIP1~A zvZl!Ur?_9R65JMjvGN*uJ7YG7o#+Jq8q?~SpY?_tSa@%#kAal^mIgi8PjIIX`}@x6 zKK`ZrN8k|*D4WC7I^e30T~3u_W$1w2#(96@Z%M;dj6_@E21T8nobW5~#4WRHBhQZb zeMhn$|KhMhGXVnn1iV?HzOYNEl0p4Y_GkqOWwC=IGN+ z!%s?%u2{c2(pOjYyC1BmQtxdv3@^Gp=ZiGQS?Cl;euSE;EsnZ&-$B5K8EXqE=oKKK zPSv|&JVGWGUmI!xir7#2R8~5s7Fe}N7pVXY0<-eiowiZdQ0~Z5+noLJ z7z4UK1l5-9RuCy_0i(G|dR`ei!WfPJ=Kd@8Aw_g-JM*4}+# zcaeVHL>Kl@OY~#ip*dnia*MIex0E(a|2q3O|If#Lf5XZ>)(tCo^b~$ADjL#C`IxRW zxLGCO?HvXZSLH-3eIGT$9d^rGN6CEE_-<}H-)|Rch#Jc`#t7u0@F(Avd^Gm-$#?fq z>fY5Vt$(mZu3NLDc5SP={nk#~e6_FOaplvxul)bl_hW>@uIW|1IgUS$%KH7?9ZyaQ z1n?BZUgua+roONq=mrwy7Ox%#QICGuTA;h-8*crr;_VsC5HGif`H9=3sHaHE<6&RP z=bqH$1|)0s33X6Af0nGRgCk|D`vLrk`R38&RefCDyT7A^=dV73YbvqIzu(pfj1~;} z>rOYHJ!A`_`%8XF=X*?Ov!c9N7r@O+TkuQ%Uq!C4_(}OMkZ#RH#g$%`00000NkvXX Hu0mjfl0vVg literal 0 HcmV?d00001 diff --git a/app/examples/Games/BeastScroll/sprite_nuages4.png b/app/examples/Games/BeastScroll/sprite_nuages4.png new file mode 100644 index 0000000000000000000000000000000000000000..db1a428ade08f138f8e9c82ce27e5d52277c4bfd GIT binary patch literal 1036 zcmV+n1oQieP)`B0001KP)t-s0001M zYio0JbBv6PoQ#~Dl$@NLoTZ$lrJS6Ul$4BwjHQ&EoRpM|jFg<5rId`6l#HB|l$?x& zl$?~Ml#Gmwl$4Z&jHRWmrJSvtjFhFNrF(mXdxU$0dxU#?dxV69YjbOadwXkhbD~n! z!~g&Q0d!JMQvg8b*k%9#15rstK~z}7?O1_U+b|3aQSH>Cvg#x)+e%y5|9|98Zh3Tj zKX4Ac&(?!`51%{hK#uAm|6`<36)bn83aHI zg6ieoloZ%l(bMssoR33NkQBd5^BHqKJLL2Af&Y;O2tF#XJ1W@u-5ys!0fP}X5r=CC ze)r>en$_Zs#0gL<(gY{SRFQ+c$fRRrs9B}yGV10m~eKi_8%x*7#z-EKRK+786(Ho(<~a{I_P$m z)4G`RK`@HhG1T9wtj^WYX*{CB{Yh&%Tf0J=+s*BEx7o8U5;W%-#KfEZ;|~)uil2-(a$xD{b#Nf2w*KgOxJZJPA{_%s9Z1?#_gRj6UR$Wj z>(RbC(abMtiP;lMSd_(#-8u(nFUA}z#wnAlSY#!g2lfl?0W6~mp969L0000WxCpSI-}3v*iPG- z*6A~&efmd*>S(b-ThwY>WK(Kbgcz0}OGwB{_KoB&@4fFi^9M;t!csP|@O_^1Jon!B zJ?DMD-}C$Z&hIQ&aFroz`6i6kpbbvvQ93q1a!KvU51Y`1Ap4%p03^qID9TGj#${Y` zo7RU->U@xU-)6KHC?R-gNeJ}jXb8n*!7!9|5B!kC4I|kSC@?05=NsTAjZxP8~Otg6?S<5$KTth~(hfqin&7KEW zs{o@Od|9)3}f>XdF>#)brfPT*ii}BPYkfWt(ffPZ=#gqOUv^4%Cb>> z;Ya&f-%xR0&-$AZpx_^NV6=-dke%Y?J9p=^WOjf}$Kb^+5Q?0-Hxku!Iuc(XhXvEp zdE&uBj<-db|D8irR`r1NUR?qdKD-@cASvF%KQ0={-!IChtQCH^4cdDl=AOE@vA&JU zgH?=75j_9hDHP|%^SxDdtbL~!l$UtnBdUBCFTi7K+8;4OJZ34AbDr-X4my;^Dfi1y z-kni)A;iZ%vIB%f3i$M#48DFxE}cg4i+xbrb<*7X(b*B?(7t2DLOp!@lX=|xv21?& z`yikCK@AZ%2FeFQptP5$jJtRNj1Z5_7Zhdlj`n!LvLh(QC z#uzZhFmF-{|NO~Zl2g2_uYrTD5Y>a!4aInWe?1M=jV%A@2)?y!93@9B7C!|&tu8U+ z1vChOFao7L7$dQ>Zy|bo!-Wf=q|R|Q7mS&sNZxf!ym>AW#(#AuNE@SJVxFIWzAJ~R z1@UZcfcN%;GpNU17mgfiq2gd2Q}X;g^Vn33<>SjQLU}!C4GD1`5DJV7C@d|(6$k?= zWy-|~pbf-abKwdA)ACI6do|+C@2zRO^@qbmnE2>kj5Y)kY`(oTo7-ll@LnsdIsn1g zNkaW-s5`-)vO4_I#hHHm zm$j{CLe|9z&@W&`i{N6c=!1aPIF8FJPu&~%^zdtEw*Y3`P}gyD>d!I=fX;9jBy{H@_^A?7gMbwD4*JZ#nqJp>w<^@LyV@C&57?gR)~>Olt_b=pHH5Gb7uN9A0y%5}FcQ^4OGz10QpTU_#%l#?_;)EomQpIHlp1#7 z!+zBd2*WH}DIK)rNedWqL5j;a0%$iz_0er~Rlm=)TOUTdF{JvC)?wsO1*DWA%a$r^ z4YL4onFP?!1 zJJ%q_Pa=9`KV34Fo{S{od3NPMa8o)@9st_ffMY;ii=0eD=EfMo|aHSODP#1ZULA}8wX=fn8wa(?EHK%2K(kE zbTw3PLz>O8(H}txMaAwnD7fxc;*&>QIsRg(07|)GODY*s!-9jkNCEb4Tt#EWZd?Pg z8M8@FOhHE-{AmHgM@xBsR}C5Yv)J+KPpN7>#F!Z$N6IUgbckUtAe9VRN{Y~M4=@)I z0@nTKXZXtJZ{xmStm4hz{F)#9b~DcCVpLo_88-BY7~6Nef>pm4J1>j)R3Da-S9Hi7 zp5Q4dLYAduNU5P$^aX~1V0SAo{QLC@3kR=77OX&qS*aC-s$Hu?=CT~uk&V;Tm5`<*hq++Hm zS}42F zOR12hr0G^t2skzPpDhM79NA5`9VMtE96Vmf(s3E+j9i{Ct>=;QoAkWaRJhWWJ+Ncd)vZj1JC?wEuXpl6U5ECpVGs%H0-SXA1&_vK2xLMoyY@-U1kdP?l`AY-L)Ml!HeIp@#*F^;=%z?nTpi z?U14)wI~z}&@; zATPo38xL;dm8ZW!OT%H5>R-e%NZVq}m}%Vgy%+E#q@6{8Q>Z(ozcg z7XgJH^nN=xt>vDZ3)vI)(q?RWYs*QRd?UTx9rQRc()>wSN+N_{RK{u3*?lL zTN8n_c#5VLlbw=CZzO`NHI3~j$WBcnDc+{E@)&Rb>M`a&^!?M?kx~p;y3j^My`o6~ zJhd_0a7qAUMPqJ8%!$z6a)5Eu3s|$UgxankaexV=GUOekc@O|zIZt`OVjr@OX_ z{LukY6Ft1Tbw4j}*hL^Yodanq#fH*%|ZwlKx@M{7sidW04ym&LJD7> z1>g!nBof3IZ9(e-+LCh-?FWdo)D!LSkXSsE6GzKQ3}mvYqM4-dA*{qyx(>dF?emj3 zYBJu`Oulg4&Dh@aJE(9jXdrh)BKg??lG6gTMs0#^jr6v(&>HHZuBn6C#&)KR%3|A* zIzpi^9ZfZ)=M)cf0Wn|#5<<|oFQ6nLA@TM3hL92jF&gVDY4OAn>aj^IoYROKUL3?!#5=c&`-YjYnvk zcz+zZqqC{1X`-NL5|$K5yM<}R86fp(NtTp|{`hW&2%to`Um2khN(z+iA#p?wc2W{O zyS5W?f(Rk-W{)8&)Q+?)nxY!_=pOXg=_HRX#>9K^#d^qAF%FiOFlox13!r&s>??VV z$?1O5{9ekcT3PY*OBChj@{I>R$yXm-%;7`T)VD`@_={gAkde;+JoOXOO&fN_I@GLB z47Gs1WC*|r!h-}L*gxqI0c7{k9nNQi_J;a1!birh#y10dp zY4es+zWJAkmZRK#_cG>w>@F%w|3qF!GH4ei6c5~gJINkM3>1eJ&sDt zLfSU{Z73-yt7~Q2`02c|ZZ+3O+o>+w#nMmQPf~jJ1&iQI%A}+50GVm2C{F@WJB>eX zDPiY3yYWj+PGL54ub%*>mCnu{68zaD+uqZrzx{K7K7^rfjmYYo5h{5yQ1pLJOip2P z_86Xj?j@`}>q!j+&_eL)hPAj!>ByP4GIQY~=xo9mfiY%aLDgd^_SCgvPrQlV)_T77 z=r<^<+(~uiKKk1~-%@nL9R$NsHf`R(-mR-i^GU|fm_@zO*cquzoKT1-A%N2zMMO1C zHI?kGtUIk8Da-&jOAN9AONpQ!umB+j&znaTO=PhpDXFh!tQF)hN2*A_aWUHCr?Rpd z;Y*;arUGwo5Aj9UfiZnT2y7)$xRf1h;=t-ZGde4aV9PP0S~Fq%wDY!r!pXDQk(Nul zBlz>CtxTIbnb~u1=8i@4N%BB@<8c~mD#;j~gJmc3;!D4zXxZ0JoBt~*ME~lS?27@i zF9w89sRU|R$txJo;>k1cM1ABWry%2e=%_<-b2T6JDQ>@I88ea+iInfaXpQJw_ZP~> z*>Or$z}wh>h$;>q*oD*EecE%*R?;)Fd0@p_l*dP2@g%UlY}l}o*MIXe+c$3D zL`ORX(`FEfNLH;}&92@eZdvy5Y3)dH%DOFi(gg&-@5}X1wc%a>C+5aGQJr+Q-Z=Vx zDZi_&#ha0f=x(Jr7UJUz?*icPf!(}wXdlfg4qsjoNQr50Bq`iWzTd}$`~pUfnLzcC z{bc5hCeEL5L9w8{rGcM+cPV*EHVbD@BQqzLtUv;B+M%(cf-OfonXv3%2^3B}V|}l! zx@}AL0!YE?Ws~H$1i&BO*WZu9LjaMeo8(0GS$Bt{QHN(&|AO$OIbbwONMd{5;(^=l zAw4sP6J71>F5AY&vYq(HOvam@g|KauF?f19DR#Q~*y4LGi1=_+l)p=7O9LJykisAZ zxCnBKuO~Hd_8{xAWslcZCjcy1dHV$USl=i>Q0M`Fk>VWN!yb>9I~OixXUx)=I}!LIg>qcJecO|eR_L1k!&29t002susMFJa^!|_L%>!Bn1OOHT#eg61aQcCY zs~s*71$u!)z@PdB0Pq4iKoO7)qyj#!vcJ`x1Dccb{|?|dPyy5dkwJ4nR3B+CCoMp7 zmeb@{AxxhLPG1QDG0w0LeytEbA3-i3;k^6S<4sB9y0Iy|{Ix<_x*VSPO$~o8Z6jE> zi`KWFB-Y#Xfw8&$!Jly8NH>-z0n6jZ<4a-u7??kQCYBOpr24pX?x-`?y)37dLUknw zwSe*(iyyD6XKhIh8XeSw|1|cBMW1W>e zTt<`6T(Sy()@Y=q2-TO;xZ!bh9{=LvbJn|T z=hd3t`1}R@EL)5&Z<5{J;F^u6HDQo0fTuY)O+!0sF?OUUL0&~UXfiEbEIn-}O>Ias zVJ$syBu#KAHc!XK%uYLEGCyfDhqE;|XfjlUH%WFOAU8rkQ+a5MJ3enVScgkAVlpsA zIW|i%h_o}9!!3TNFLR^UylioEXKQaPfT$*CjWB+zGnc|Cb(}ex#6x+IGkcpP zVu&VPg))}GGnTsjzQEV}hyDWdFDq)QfMOqI(R1q^v z6C6nsRd5?wb})RYGLO3+Ibs_%TM;=>6f8&-MP?FYb}D;d{9zwXeLwxn0Rg!B88`S^JayxnE93940Un_Kmc@&2 z6$5eA6d)+Mrav+O008w#L_t&-(_>&}VP#|I;N;@w;bi~=K7Ikg$f#%`VG&V?fS9;M zOjJ~CTzrBgkS8V0Ad{Gs9F>xqmYyLC6p)i=P*BXw%FfBni;7ZGW>8U8V_;CvFDNW3 zE-8&F)6mo^*JfbQiK?iqs;;T6i>lYv(>GvXFpNrRXl!b3X>DsaVl*~kU@(o0>FDh0 z?&AP8O9iPQif9qBHi`x+g3qq%q7<#zT5$QG zxO6QjvZ%HQA|Sd5pp6hiKp{a0lgN#^~$_x8ioRD=@h|KmM-pZz=g?6c3g zM3N-jNZU8><38T<#iTyhK#_OQM=cqq&Iu*AR;=6fq6+}Z%F5)mwY4)cGc(Wa-MiO` z|5If0#JjUX;gD_d!wafjd}*a{|9wkLJ3iUm!}A=LFI;12YVTg}PSV}WWREmR90zo} zLfpl+hE#d{WmYFJ-L976l9EX)>+0&hjm2V{04SC&UAnWhv{bkm07hZ3uL&fZ*7vlW zZ@lfc$xYj~?tIN^wp6|L!h2)R)wjLsEy#bApFKlGEoM-o0d%B|i>2x|S!f&9E*^HUrI40Dy!U_%YGzx5e%}p<@DFw{9IA4hPN3%2LdkGe;ha z#qPh^EnuZ+I7BD|zMv%Y+k-pS2E$^Z(~>a>IwL2WRtykwl|$6k4JuPWVH*j-KLF3* zAU@c#1+!+&!lq4|(bm=myWMWRSpdqqyN|{_1MtQPML;|j*i|N1%2wtmy+hqeIy3}SdD^j>uafp zdR#u#Ib*5&@IgQlK~&1?It#%dxMY2zf;kzE^@Ne$*oZIBoQL`0=dkCq15z*;Ja8j` zQ?+$DSFUtE3Sb4z$gmzDr>o0FpI4OPaquZdcupPzgzFTsB!Mt2Kq&ygq~gI%n2nuo zC47zrkf)DCQ#>g$Ca1XZMgSboCo5D+8vro%4YkoDhbk%t8_wznJG=AL<0sHyYZK5n z0NL2wt7K?=}=~J zjT)pV_-g{lEEy2e?JKry*{=QR*n;^>GETQ#{*ak=*L0#Y%-;IJ#}4|#VC}K9W=&Cv zB4y@W41V_wQsys2=<)@0ezXal+qak#+*07-&XBZo4K;#CZC+eq}Xs#VXu@T%HsPThXd z=~@v;Hb23Q%t;o4ekst}grwr>2~O`4`NIK>E?h`6-c85f8}ZH^7jK-Mo2yne0!TSzA^`l{L@N1g;gtgb$>cA)uWZ$_5o-5~(CYoJf)c7Yo= z`oGad31V{_n1LYTp)jOy1Om%~D7;`p3eeLofXE;f+8~-k==$nYSm!Q=%xVJwXbXyg zE6sZjeYKNDKMDzeZu)R5%KttVZ7}UWabQLbMnDXDg;;xqEtXi zH$rq+A*usFy%S{L84!_zOdOBS@*RkK6Ez_-TMQECv*ff@l^Kt-JaHh(v&K+32nK9Fiy` zwjv`tx3%?B_OJk}{<6G7q2P}T?Hvg2_zaQCc(8wWK<$!_%qHz#i5`v;1;mhp+0M2Gt_yuwHumGdRjT9|B-ek?jh;s1)C?C2H zj42fWz>Y|Vj;12Tqe3e5(7FjgDA*VQ>vV$#LO>`65>NC4CdZC}@2dex0&hw~NRc$J zrsg!gApii3$hKB0TF&p6qS2uXCt*dQm@^Z6{#ZzPb_BEnBuRp{uo(QP9LP0#(3k{m zT_0riT_A#laNG|e-~*u)k~yQ`Pir@rhXvU9(JS#(65lA*H-&*j|CeG>1ey|eg0HO+ zuA}7;^lEUuerO$2L1Z$pX=YGP4$b_#p-;B@|iWDq3#DpjmM2Yl;WzgSw z4;ZBi03ZhZV3YL#OCiN#iJHk8f#loo1m6=xf8`+rn$AJeo2Ebe^dGok0RZ6H)urb~ zh~ZN0*OdqOit1KFK+$D1<;L~)LU4LR;#vkE#bXe?UT_8zM2HYW;lu=lfXx~K-J(T^ zbUEQWb_CEF?Dh4{wx7mguLm%3TE4XVoA(a`I4r~kyubb*mc6?Uuj%UZKPhzffXT1` z0HRmg!KgG427};aDli)Le}ty zRrH)G8vI-6(=SA^rx#K*3Qt8jl4i_Cpymwp56%NsDz5QYjUERL)`D~!X|z>W0G>c>J+;@#+W`nMiCdh(6IK&XtJ zT*MHLg%plJ?sC0TJazo`=5uG3U);0bYOxx+izes2^@|5fJdZ#A{Mov?hAaSGL!~m@ z-|>yK?1A5FS}t_08cegSAVv9FslQ*;AFiDHb;I^U*RvltX8JNg6hn>8M?d=68Thd_ z?|$94VeQtJ4ujyBb!x58 z_I=RWr%%y3PzMlXmZ8jqFa#13LPE%#+?$)++<7|Z?Dt0sGztjlTc6MU!{(mUmq<7;lb`@2EEKOik%{)*Jp)bt;OkcAw_ zt#dk^f3(}}oT{q)uYdjPL95kzWh3}yfZJ}l-@1R_!MoG#X^q!jSH10-|NK=90B-#L z-FXBU{ABh2djC1{w7YhNZ5Fux1^+`{AI(24Ncz!fU}tF^W41Q zjYwRc;di?`B9X|ciYb%WfB*T7U+MMw_`JE*ZOdPHH~Hmf-YV(u8+>xWWWAAJIFA#H zi$IesAX*93paYkd0wF&aQH~gU4j-5r)@!dHP`Jf3=AH3}7oXMKaKjC7I2_`tRjbNM zN=oKCozBYU=4N|QQPIavr}L@-_<@1JGShW8b80-A+f}penJ+f)JU(SgS!;ivyF4?~ z-t_ZZpDFJ=(|6y{a9|vqj;Z3@S%gbVxrj9m5!sJecB)~`{VeQ(r zc;t~s5DW&9laqsu8#m(3H{ZnExpPIA%Qf|zOd(#DW+MHZw2=!t;nphOE}p?XNIXlGSTTO6RL8c-7~J zI4=K^&MTn+V!d53mR5jp8~}ib5_;W($j{G*&1QquYDITfH#$3dK?nh*6k4s8ej|YL ziqbW5XKO-x#>$SY1U30~lkV$w`+q6gt@e?bsslM$`H58m(w? zd9h^4671Z$6N!Y3Q{E^n&N4jz-0yMh*fB(-(IZ#l@V)muoV#$rZOhI9OrBio;}cOi z*3$(kYYeh}{0pQmSq8yk0RXUA97Ll5{yC}_lSs#D7z)OZjuI~-n4F6@-g+DD?d|x} ztFJ*VoCagn0_@*^99y<*8J;z3R?U?F)YjBZX>4fz-8q2%K6jM!dG<%!TU7JpDo{ZL z0B}YN!fnk^V=)k(`&z?tzz^O!I!YV?bj8!LuBi`qJop$kwYXp`odH8>1y=1o3ZE~$ zZu#=%zAFJpvRS--e=uq9-dY_1&<7v7Cz>}V^HExVU}vCaryT9+1XL9|XFg*6y$CiP zgBpnfmnb=ys)7&#!i(pgrRYRt7$s1>8OaNO2<_b4k-Xq8K%)bdB$%epW2$QA+S)oU zdky^M)fId&7%l^)BBdl504M;g-}wIFlER!v^qox~__ur(^4HaZ>h!Qw&O)%|1Y*6N zV3Fu0hF=DF0fe6SWsWlm8AfU3kJbp$Q3RqjjQl4A`tha2D;O3&^x)IuFUR?4Buchy z`A3B-7`>ab*b*9z#(NF`09LPAacI)SaZj5Ey`OrwZNSiujgYd&z)(H~K~E>--oDEY zv&d1*cG{p^B5G99LR&W7+}_@G@AJ?7>1(5K;|+IDtUJ;2EGaA-%M?ZP=p)b09t8jZ z?|<-GN2)P1Y@2Z{qTL-B+_nLRqEhgAxo~a%6oI;0$iV=Zs*biU@L=&cm^xAmChG(^ zOcDfo@og7`z*ssNo&;9j#5f%+pzU2+qAwfo@tVlCv)-iIc|4kaH1ac=vkifUBT%CeNcJqqp#b9jJ<#UlL*yuUN-)l*#|8kGs+Y}`)x>kG z=H8VnSMON6c60qhzq~K>-rqjuJ3G3ITHCvy?Tg5ZtV`~sx`J^~LO}!?j=(al8pcUe zx&Duj&Kw1>?eo3bKwK6z{K#X$VuPuy65f3~;N80of-Mf<%0Bro8s#6ED2y^9Lrl z{LyD4rj&g1)C$PM9{BfeXGCWpYAgyON#M;^1Y(J#Q2^UF?6VNc>2P-L5(4v-888%= zA=cZ4XlEND-5m%v)PWKTAu}6-Ed_!l3HpL!_zvztthXC3orG?G6l0Tgn3Qh9uFj!L zP9@Wn8R%`SH+3n(BVo69UI_eHRxr`3<#-m^wW*s8drtB^7mPxfr7)HZMFCS)P(s-# z0A3JGjH#p71tH*cdg$_spvx-)lVybW9l+3*&k=|>LODDHFn}{9fp{Vq`eGwM7h=s( z33p6LM==+|Kis{5*#@f7To6EG&xR(;0exXH4SEMF1WOVWPrr)BLpz-|^E>lz`N4Jo z-qou%JlZiBe3;1zO{}{eMxCZ-l(T6WHZ#}i5}{sV)>49m*9}>Tfj|N^o4^zm+_*f@ zfp$cXpTR(Q72eyw11GX92*%@ZopFJ)rodQQ0j+Z^Kt}JHgi@GFC&PE-08A4r5k1|g z8V9?#IGmZk`Ta{z9V#syuL8h{#^zT&wGGn;x2~HDS9dHkC29RA0LB0{5*bNMxbSGP zSPZ_-lTas(1=UKRdL87NBOqy3s6sPnSVW?^4+BG9Y>}KGdI>Dm0OsySc>NhzCRf2+ zISYi2E>Cm?p5RvYeFl~LzR^? z_KgDQZtojT3=YSISRBNlzaW6z??SAn6C`2=Cnf(1fQdi%hv1SA>&ry2ks1=_=4 zQ&R!E7R;Uo#qEJ-|28P$5R$&LU{vPjw0aoEmBQ3{;@!f${NLSi=hFUbud5z46@GH> z?ac2F?Af*Jz!`@lbNIOz9t(~FkP~u%g(I>uFbHb1e${(Lfn3)JOL{)SToj5;52dXW z#A=4x+76nT4#iauAO;$<04;71PYA3k7sQbSE;|FNL5HDzyTNJouvAq8IKN>SCr*K{ zwLUL9J0o!2mz+N8czXV&bEv}>F$L(33 zWW%T;QL<+N$@ZDGwRQQpOc@0*b8dxKYcaK}o!wAe1Luu126fnv*q(!srdNQPOb`Y` zfXV<#1QA8hf?TM+0H`w?D#wA$m<%d-Jq={PVF0?U?wWCO@h2x#aT={P+VYIX_+x2_v0LC!Ab zoB|{S?ZTBGerC8T0IS8Yf#$bR0D3C@`fND}y>JVz6ChnP6XN7jP_uFLi%Aw3uek=6vT4vN5-bbm!(3brK{7z~ z3;`MqL|Fr2FbWU~v85k0ngEH*K;rxnEU~8{GSmy%d%oNd9l2yUCSSXEZ>?~}005Ab zY~HFL7}zAAZU+%~fL=h2QV0_YAdGcFEExx(vJ4T`k0=R)W@mtP^}#%U0kq|1ARGtD zlnkN(LXQvnEhiwhx&TETIfBVZL9qG!j-*M?M3{9HrGRy6C+MZS}<#>v$Lan>{S5(z_r)U+^!oKSfezxuu&iMj3IFJ zAOc4ZLWzWt7#cv|=8rIZst$B=3DlM|peH+#_HRqU8_gqIV_Y8Dtr!8dn4zhj4%5%? zfzj@S{);AX;1G@a5by5+z(y8$PQKtC@_pw-Lo>N5fZOj|qU4N8dy}iHA5sIsbI;Xy z9NvA~(ZA_qxIg<4uDTsam^GlODIj$xVKAg3^R5RVIdeyN!9ZjMR3m|^ICn%tv|4Dt zzYvC^VrUO^fVZWC|#s{#Ok$yLQQ=5X+1rRIpj!jZEf z00bViFc*Q&W+-|QlyJ~-2BdxOR;1nhLx`#AI9nnxSpk(*a0UZF=%_s(ltMFq4h%W@ zFnAaur%od7?t}km4LF?v%w#DzaiV$5rF`Ts)%f7kKZ-WiwJwjHYAp%K@(h|Y2GDDv zPaT6mTO)|U1e##b8IoaJavM0K@hdi1C;&n^a7Hu0QK*T;sCL5hkmk+?*(D-zZ~(!k zdiW0Sg_xWQE zl7y5w3t`ZwgVX80>b#;r9vpyZO9K%#00opt_$zuu(m+!^9p-E2Bi7#yL}LgX+6S7F zE-0KZdvI{*qU+#m0TwTtr{43cTXq%ZXFZW5NAJ}1_1~=N?Z35TjN`>rRX8JrRIqRa zEc(@hFU99Y!sCXvs2FM}48`pQNvId>hiF7-%gVsy1UO!R($Wm3D2VZz$`x<_U4JqE z$d%qw0>H`o(`56SU6%So%~Ot@>|Wtlm|dJX6`IQO^M|{PA+To~e7m+H?I#Z+bf6y5 z<~AhVvKV5P{i3!#Th_w2e7zw+Be|?w5k2gXMh2h(}9@Joh zY4$wG?m-Ayc4)_6`jP|yB!?4HW;S9h8g`gf-W(`}Isc z75i{?-1pH+MB7dwY0*+py#YdcD$Li-K3|eB26fm6rQZ!T92xadLpUDhiIspr;<>rm zYdG(K+ZT>aT=DkbFIX3SD*ynnV%dN14E}UY2d`xcE@6sabYIWECxauDK%H0BsCm?lqx1_PeQ-=Bz?`U`JYsdCo zYINgvMz-&YTF!KA8<&;;`Va10>a$slpEEgOYH4Z9xlq6SWqEf6^6xhCnvf}y2URzgJ(>SZ^bX#`7Jxr__wpdX~ zUd^pPS=p zdSTK85J`mE?`8r=PXWLaFaFE}VD-i9RZN-Gb?kWKp=dOgccJ#H$^(}xvMl3gH$83Z z>l?hu6N)|Q%isO$;z^C%E(B+;1$vT0sg5o@mVx< QLjV8(07*qoM6N<$f~@Ra7ytkO literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/.lang/ca.po b/app/examples/Games/Concent/.lang/ca.po new file mode 100644 index 00000000..807ad63d --- /dev/null +++ b/app/examples/Games/Concent/.lang/ca.po @@ -0,0 +1,217 @@ +# Catalan translation of Concent +# Copyright (C) 2000-2010 Benoît Minisini. +# This file is distributed under the same license as the Concent package. +# Jordi Sayol , 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: Concent\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2011-03-20 17:26+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: .project:1 +msgid "Concéntrese Geográfico" +msgstr "Concentri's Geogràfic" + +#: .project:2 +msgid "Esta versión incorpora soporte para el idioma inglés y español (nativo), disfrute este juego!, se han incorporado las correcciones sugeridas por el director del proyecto Gambas, el proyecto ha sido traducido al inglés usando la herramienta integrada de Gambas Ide" +msgstr "Esta versión incorpora soporte para el idioma inglés y español (nativo), disfrute este juego!, se han incorporado las correcciones sugeridas por el director del proyecto Gambas, el proyecto ha sido traducido al inglés usando la herramienta integrada de Gambas IdeAquesta versió incorpora suport per a l'idioma anglès i castellà (nadiu), gaudiu del joc! s'han incorporat les correccions suggerides pel director del projecte Gambas, el projecte s'ha traduït a l'anglès tot fent servir l'eina integrada a l'ide del Gambas" + +#: fotos.class:303 +msgid "" +"Estimados amigos, este formulario cumple la única función de\n" +" cargar en 40 botones, las imágenes de las caritas que servirán \n" +"para el juego, es posible que exista una mejor manera de \n" +"hacer esto, por eso... escucho sugerencias, posteriormente \n" +"en el código se crea un array de objetos a fin de referencialos \n" +"como botoncito[i].Picture y copiar este atributo en particular al \n" +"tablero de juego. Att: Jairo Alonso Badillo\n" +" jbadbe@gmail.com" +msgstr "" +"Benvolgut amic, aquest formulari té com a única funció \n" +"carregar en 40 botons les imatges de les cares que serviran \n" +"en el joc. És possible que hi hagi una manera millor de fer això, \n" +"per tant... escolto suggeriments. Posteriorment en el codi es \n" +"crea una matriu d'objectes per tal de referenciar-los com a \n" +"botoncito[i].Picture i copiar aquest atribut en particular al \n" +"tauler de joc. A: Jairo Alonso Badillo\n" +" jbadbe@gmail.com" + +#: frmAcerca.class:30 +msgid "" +"Concéntrese Geográfico v 0.3\n" +"\n" +"Programado para Gambas por:\n" +"Jairo Alonso Badillo Bedoya - jbadbe@gmail.com\n" +"Publicado bajo los términos de la licencia GPL\n" +"Viva Colombia!!!!!\n" +"Visite http://www.linuxeam.tk -Una comunidad Linux" +msgstr "" +"Concentris Geogràfic v 0.3\n" +"\n" +"Programat per a Gambas per:\n" +"Jairo Alonso Badillo Bedoya - jbadbe@gmail.com\n" +"Publicat sota els termes de la llicència GPL\n" +"Visca Colòmbia!!!!!\n" +"Visiteu http://www.linuxeam.tk -Una comunitat Linux" + +#: frmAcerca.class:36 +#: frmInstrucciones.class:43 +msgid "&Aceptar" +msgstr "&Accepta" + +#: frmInstrucciones.class:30 +msgid "COMO JUGAR CONCÉNTRESE?" +msgstr "COM JUGAR A CONCENTRIS?" + +#: frmInstrucciones.class:36 +msgid "" +"Se trata de un Juego Bastante sencillo: \n" +"\n" +"1.) El objetivo del juego es probar tu retentiva y nivel de concentración, para lo cual\n" +" debes encontrar los pares de rostros que hay ocultos en el tablero de\n" +" concéntrese. \n" +" \n" +"2.) El juego tiene tres niveles (Principiante, Medio, Experto), que te permite\n" +" escoger entre tres tamaños del tablero para añadir emoción y dificultad al juego,\n" +" para Acceder a estas opciones debes ingresar por el menu Configuración - Nivel,\n" +" y seleccionar uno de los tres preestablecidos. \n" +" \n" +"3). Así mismo, tienes la posibilidad de incrementar tus conocimientos al jugar en\n" +" Modo Pregunta, lo que incrementa tu nivel educativo, esto se logra mediante un\n" +" cuestionario emergente que deberás responder con cada acierto en el tablero, si\n" +" contestas correctamente tendrás un puntaje más alto y podrás competir con tus\n" +" amigos. (Esta función se encuentra en construcción debido a la migracion de\n" +" Visual Basic hacia Gambas, y experimentar el poder de Linux, viva el\n" +" OpenSource!!! \n" +" \n" +"4.) El juego también te permite activar o desactivar los sonidos de ambientación,\n" +" para lo cual debes cambiar el estado del menú Configuración - Sonido. \n" +" \n" +"5.) Recuerda: Para redistribuir el Tablero Pulsa F2 , para comenzar a jugar pulsa\n" +" F4, los rostros serán cargados aleatoriamente, por lo que no debes intentar\n" +" aprenderte el tablero de memoria...!, Esto sí que va a ser un verdadero reto!. \n" +" \n" +"6.) Estoy actualmente diseñando los modulos de aprendizaje que podrás conseguir\n" +" muy pronto; para comentarios y / o sugerencias escribe a: jbadbe@gmail.com.\n" +msgstr "" +"Es tracta d'un joc bastant senzill: \n" +"\n" +"\n" +"1.) L'objectiu del joc és posar a prova la teva retentiva i nivell de concentració,\n" +" així que has de trobar les parelles de rostres que hi ha amagats al tauler del\n" +" concentris. \n" +"\n" +"2.) El jo te tres nivells (Principiant, Mig, Expert), que et permet escollir\n" +" entre tres mides de tauler per posar més emoció i dificultat al joc.\n" +" Per accedir a aquestes opcions has d'entrar al menú Configuració - Nivell,\n" +" i seleccionar-ne un dels tres preestablerts. \n" +"\n" +" \n" +"3). Així mateix, tens la possibilitat d'incrementar els teus coneixements al jugar\n" +" en Mode Pregunta, cosa que incrementa el teu nivell educatiu, això s'aconsegueix\n" +" per mitjà d'un qüestionari emergent que hauràs de respondre amb un encert\n" +" en el tauler, si respons correctament tindràs una puntuació més alta i podràs\n" +" competir amb els teus amics. (Aquesta funció es troba en construcció degut\n" +" a la migració de Visual Basic a Gambas, i experimentar el poder de Linux.\n" +" Visca el Codi Obert!!! \n" +" \n" +"4.) El joc també et permet activar o desactivar els sons d'ambient, i que per\n" +" fer-ho has de canviar l'estat del menú Configuració -So. \n" +" \n" +"5.) Recordeu: Per a tornar a distribuir el tauler premeu F2, per començar a jugar\n" +" premeu F4, els rostres es carregaran aleatòriament, per tant no heu de provar\n" +" d'aprendre-vos el tauler de memòria...! Això sí que serà un autèntic repte! \n" +" \n" +"6.) Actualment estic dissenyant els mòduls d'aprenentatge que podreu aconseguir\n" +" molt aviat; per a comentaris i / o suggeriments escriviu a: jbadbe@gmail.com.\n" + +#: principal.class:166 +msgid "Jugada Errada" +msgstr "Jugada Errada" + +#: principal.class:202 +msgid "Felicitaciones, has cumplido la mision" +msgstr "Felicitats, has acomplert la missió" + +#: principal.class:247 +msgid "PULSE F2 PARA REPARTIR DE NUEVO" +msgstr "PREMEU F2 PER A TORNAR A REPARTIR" + +#: principal.class:384 +msgid "PULSE F4 PARA COMENZAR LA MISION" +msgstr "PREMEU F4 PER A COMENÇAR LA MISSIÓ" + +#: principal.class:439 +msgid "Enjoy Open Source!" +msgstr "Gaudiu del Codi Obert!" + +#: principal.class:444 +msgid "&Configuración" +msgstr "&Configuració" + +#: principal.class:447 +msgid "&Nuevo Juego" +msgstr "&Joc nou" + +#: principal.class:452 +msgid "&Mejores Puntajes" +msgstr "&Millors puntuacions" + +#: principal.class:458 +msgid "Nivel" +msgstr "Nivell" + +#: principal.class:462 +msgid "&Principiante" +msgstr "&Principiant" + +#: principal.class:470 +msgid "M&edio" +msgstr "M&ig" + +#: principal.class:477 +msgid "E&xperto" +msgstr "E&xpert" + +#: principal.class:484 +msgid "&Sonido" +msgstr "&So" + +#: principal.class:494 +msgid "&Salir" +msgstr "S&urt" + +#: principal.class:499 +msgid "&Ayuda" +msgstr "&Ajuda" + +#: principal.class:502 +msgid "A&cerca de" +msgstr "&Quant a" + +#: principal.class:506 +msgid "&Instrucciones" +msgstr "&Instruccions" + +#: principal.class:645 +msgid "Jugadas: " +msgstr "Jugades:" + +#: principal.class:653 +msgid "Tiempo: " +msgstr "Temps:" + +#: principal.class:677 +msgid "0" +msgstr "-" + diff --git a/app/examples/Games/Concent/.lang/cs.po b/app/examples/Games/Concent/.lang/cs.po new file mode 100644 index 00000000..ba617c89 --- /dev/null +++ b/app/examples/Games/Concent/.lang/cs.po @@ -0,0 +1,224 @@ +# #-#-#-#-# fotos.pot (PACKAGE VERSION) #-#-#-#-# +# /home/jbadbe/concent/fotos.class +# Generated by Gambas compiler +# FIRST AUTHOR , YEAR. +# +# #-#-#-#-# frmAcerca.pot (PACKAGE VERSION) #-#-#-#-# +# /home/jbadbe/concent/frmAcerca.class +# Generated by Gambas compiler +# FIRST AUTHOR , YEAR. +# +# #-#-#-#-# frmInstrucciones.pot (PACKAGE VERSION) #-#-#-#-# +# /home/jbadbe/concent/frmInstrucciones.class +# Generated by Gambas compiler +# FIRST AUTHOR , YEAR. +# +# #-#-#-#-# funciones.pot (PACKAGE VERSION) #-#-#-#-# +# /home/jbadbe/concent/funciones.module +# Generated by Gambas compiler +# FIRST AUTHOR , YEAR. +# +# #-#-#-#-# principal.pot (PACKAGE VERSION) #-#-#-#-# +# /home/jbadbe/concent/principal.class +# Generated by Gambas compiler +# FIRST AUTHOR , YEAR. +# +# #-#-#-#-# #project.pot (PACKAGE VERSION) #-#-#-#-# +# /home/jbadbe/concent_gb/.project +# Generated by Gambas compiler +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2011-04-19 15:59+0100\n" +"Last-Translator: geniv \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Concéntrese Geográfico" +msgstr "Geografické zaměření" + +#: .project:2 +msgid "Esta versión incorpora soporte para el idioma inglés y español (nativo), disfrute este juego!, se han incorporado las correcciones sugeridas por el director del proyecto Gambas, el proyecto ha sido traducido al inglés usando la herramienta integrada de Gambas Ide" +msgstr "Tis verze obsahuje anglickou a španělskou verzi, užíjte si tuto hru, byly dokončeny opravy a navržené provedené Gambas vývojové skupiny (Benoit Missini)." + +#: fotos.form:292 +msgid "" +"Estimados amigos, este formulario cumple la única función de\n" +" cargar en 40 botones, las imágenes de las caritas que servirán \n" +"para el juego, es posible que exista una mejor manera de \n" +"hacer esto, por eso... escucho sugerencias, posteriormente \n" +"en el código se crea un array de objetos a fin de referencialos \n" +"como botoncito[i].Picture y copiar este atributo en particular al \n" +"tablero de juego. Att: Jairo Alonso Badillo\n" +" jbadbe@gmail.com" +msgstr "" +"Tento formulář splňuje s jedinečnou funkcí \n" +" zatížení 40 tlačítek s obrázky pro hru \n" +", může být řešena jinou metodou, ale nevím jakou." + +#: frmAcerca.form:14 +msgid "" +"Concéntrese Geográfico v 0.3\n" +"\n" +"Programado para Gambas por:\n" +"Jairo Alonso Badillo Bedoya - jbadbe@gmail.com\n" +"Publicado bajo los términos de la licencia GPL\n" +"Viva Colombia!!!!!\n" +"Visite http://www.linuxeam.tk -Una comunidad Linux" +msgstr "" +"Geografické zaměření v 0.3\n" +"\n" +"Napsáno pro Grambas od:\n" +"Jairo Alonso Badillo Bedoya-jbadbe@gmail.com\n" +"Publikováno pod licencí GPL\n" +"Žiji v Kolumbii!!!!!!\n" +"Prosím navštivte http://www.linuxeam.tk - Linuxovou komunitu" + +#: frmAcerca.form:20 frmInstrucciones.form:28 +msgid "&Aceptar" +msgstr "&OK" + +#: frmInstrucciones.form:15 +msgid "COMO JUGAR CONCÉNTRESE?" +msgstr "Jak hrát tuto hru?" + +#: frmInstrucciones.form:21 +msgid "" +"Se trata de un Juego Bastante sencillo: \n" +"\n" +"1.) El objetivo del juego es probar tu retentiva y nivel de concentración, para lo cual\n" +" debes encontrar los pares de rostros que hay ocultos en el tablero de\n" +" concéntrese. \n" +" \n" +"2.) El juego tiene tres niveles (Principiante, Medio, Experto), que te permite\n" +" escoger entre tres tamaños del tablero para añadir emoción y dificultad al juego,\n" +" para Acceder a estas opciones debes ingresar por el menu Configuración - Nivel,\n" +" y seleccionar uno de los tres preestablecidos. \n" +" \n" +"3). Así mismo, tienes la posibilidad de incrementar tus conocimientos al jugar en\n" +" Modo Pregunta, lo que incrementa tu nivel educativo, esto se logra mediante un\n" +" cuestionario emergente que deberás responder con cada acierto en el tablero, si\n" +" contestas correctamente tendrás un puntaje más alto y podrás competir con tus\n" +" amigos. (Esta función se encuentra en construcción debido a la migracion de\n" +" Visual Basic hacia Gambas, y experimentar el poder de Linux, viva el\n" +" OpenSource!!! \n" +" \n" +"4.) El juego también te permite activar o desactivar los sonidos de ambientación,\n" +" para lo cual debes cambiar el estado del menú Configuración - Sonido. \n" +" \n" +"5.) Recuerda: Para redistribuir el Tablero Pulsa F2 , para comenzar a jugar pulsa\n" +" F4, los rostros serán cargados aleatoriamente, por lo que no debes intentar\n" +" aprenderte el tablero de memoria...!, Esto sí que va a ser un verdadero reto!. \n" +" \n" +"6.) Estoy actualmente diseñando los modulos de aprendizaje que podrás conseguir\n" +" muy pronto; para comentarios y / o sugerencias escribe a: jbadbe@gmail.com.\n" +msgstr "" +"Tato hra je velmi jednoduchá: \n" +"\n" +"\n" +"1.) Cílem hry je najít tváře pod každým tlačítkem, tváře mají duplikáty, \n" +" v pohybu máte najít dvě stejné tváře. \n" +"\n" +"2.) Můžete si vybrat obtížnost úroveňě v konfiguračním menu, v každé úrovni hrací desky\n" +"více tlačítek, užíjte si tuto hru!\n" +"\n" +"3). Vlastně jsem rozvoje zeptat modul, tento modul umožní spravovat řadu věci\n" +" ve hře, přírustek vaších bodů. \n" +"\n" +" 4.) můžete aktivovat nebo deaktivovat zvuky v konfiguračním menu \n" +" (Konfigurace - zvuky). \n" +"\n" +" 5) Pamatujte:. pro start mise stiskněte klávesu F4, chcete-li distribuovat desku stiskněte klávesu F2 \n" +"v každém okamžiku, bude hra obnovovat. tváře jsou zatížení náhodným režimem, je \n" +"nemožné zapamatovat si hrací desku ...!!!! \n" +"\n" +" 6.) Pro připomínky se dotazy, se mě prosím napište mi na jbadbe@gmail.com, prosím omluvte \n" +" mou angličtinu, jsem Kolumbijec a já nemluvím anglicky. \n" +"\n" + +#: principal.class:166 +msgid "Jugada Errada" +msgstr "Špatný tah!" + +#: principal.class:202 +msgid "Felicitaciones, has cumplido la mision" +msgstr "Gratulujeme, mise byla splněna." + +#: principal.class:247 +msgid "PULSE F2 PARA REPARTIR DE NUEVO" +msgstr "Stiskněte F2 začnete hru znovu" + +#: principal.form:45 +msgid "Enjoy Open Source!" +msgstr "Užijte si Open Source" + +#: principal.form:50 +msgid "&Configuración" +msgstr "&Konfigurace" + +#: principal.form:53 +msgid "&Nuevo Juego" +msgstr "&Nová hra" + +#: principal.form:58 +msgid "&Mejores Puntajes" +msgstr "&Nejlepší skóre" + +#: principal.form:64 +msgid "Nivel" +msgstr "Úroveň" + +#: principal.form:68 +msgid "&Principiante" +msgstr "&Začítečník" + +#: principal.form:76 +msgid "M&edio" +msgstr "&Střední" + +#: principal.form:83 +msgid "E&xperto" +msgstr "E&xpert" + +#: principal.form:90 +msgid "&Sonido" +msgstr "&Zvuk" + +#: principal.form:100 +msgid "&Salir" +msgstr "&Ukončit" + +#: principal.form:105 +msgid "&Ayuda" +msgstr "&Nápověda" + +#: principal.form:108 +msgid "A&cerca de" +msgstr "&O této Hře" + +#: principal.form:112 +msgid "&Instrucciones" +msgstr "&Pokyny" + +#: principal.form:251 +msgid "Jugadas: " +msgstr "Pohyby" + +#: principal.form:259 +msgid "Tiempo: " +msgstr "Čas:" + +#: principal.form:268 +msgid "PULSE F4 PARA COMENZAR LA MISION" +msgstr "Stiskněte F4 pro start mise" + +#: principal.form:283 +msgid "0" +msgstr "0" diff --git a/app/examples/Games/Concent/.lang/de.po b/app/examples/Games/Concent/.lang/de.po new file mode 100644 index 00000000..62bf2ce3 --- /dev/null +++ b/app/examples/Games/Concent/.lang/de.po @@ -0,0 +1,168 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Concéntrese Geográfico" +msgstr "Memory" + +#: .project:2 +msgid "Esta versión incorpora soporte para el idioma inglés y español (nativo), disfrute este juego!, se han incorporado las correcciones sugeridas por el director del proyecto Gambas, el proyecto ha sido traducido al inglés usando la herramienta integrada de Gambas Ide" +msgstr "-" + +#: fotos.form:292 +msgid "" +"Estimados amigos, este formulario cumple la única función de\n" +" cargar en 40 botones, las imágenes de las caritas que servirán \n" +"para el juego, es posible que exista una mejor manera de \n" +"hacer esto, por eso... escucho sugerencias, posteriormente \n" +"en el código se crea un array de objetos a fin de referencialos \n" +"como botoncito[i].Picture y copiar este atributo en particular al \n" +"tablero de juego. Att: Jairo Alonso Badillo\n" +" jbadbe@gmail.com" +msgstr "-" + +#: frmAcerca.form:14 +msgid "" +"Concéntrese Geográfico v 0.3\n" +"\n" +"Programado para Gambas por:\n" +"Jairo Alonso Badillo Bedoya - jbadbe@gmail.com\n" +"Publicado bajo los términos de la licencia GPL\n" +"Viva Colombia!!!!!\n" +"Visite http://www.linuxeam.tk -Una comunidad Linux" +msgstr "" +"Memory v 0.3\n" +"\n" +"Für Gambas programmiert von:\n" +"Jairo Alonso Badillo Bedoya - jbadbe@gmail.com\n" +"Veröffentlicht unter der GPL-Lizenz" + +#: frmAcerca.form:20 frmInstrucciones.form:28 +msgid "&Aceptar" +msgstr "&Ok" + +#: frmInstrucciones.form:15 +msgid "COMO JUGAR CONCÉNTRESE?" +msgstr "WIE SPIELT MAN MEMORY?" + +#: frmInstrucciones.form:21 +msgid "" +"Se trata de un Juego Bastante sencillo: \n" +"\n" +"1.) El objetivo del juego es probar tu retentiva y nivel de concentración, para lo cual\n" +" debes encontrar los pares de rostros que hay ocultos en el tablero de\n" +" concéntrese. \n" +" \n" +"2.) El juego tiene tres niveles (Principiante, Medio, Experto), que te permite\n" +" escoger entre tres tamaños del tablero para añadir emoción y dificultad al juego,\n" +" para Acceder a estas opciones debes ingresar por el menu Configuración - Nivel,\n" +" y seleccionar uno de los tres preestablecidos. \n" +" \n" +"3). Así mismo, tienes la posibilidad de incrementar tus conocimientos al jugar en\n" +" Modo Pregunta, lo que incrementa tu nivel educativo, esto se logra mediante un\n" +" cuestionario emergente que deberás responder con cada acierto en el tablero, si\n" +" contestas correctamente tendrás un puntaje más alto y podrás competir con tus\n" +" amigos. (Esta función se encuentra en construcción debido a la migracion de\n" +" Visual Basic hacia Gambas, y experimentar el poder de Linux, viva el\n" +" OpenSource!!! \n" +" \n" +"4.) El juego también te permite activar o desactivar los sonidos de ambientación,\n" +" para lo cual debes cambiar el estado del menú Configuración - Sonido. \n" +" \n" +"5.) Recuerda: Para redistribuir el Tablero Pulsa F2 , para comenzar a jugar pulsa\n" +" F4, los rostros serán cargados aleatoriamente, por lo que no debes intentar\n" +" aprenderte el tablero de memoria...!, Esto sí que va a ser un verdadero reto!. \n" +" \n" +"6.) Estoy actualmente diseñando los modulos de aprendizaje que podrás conseguir\n" +" muy pronto; para comentarios y / o sugerencias escribe a: jbadbe@gmail.com.\n" +msgstr "" + +#: principal.class:166 +msgid "Jugada Errada" +msgstr "Falscher Zug" + +#: principal.class:202 +msgid "Felicitaciones, has cumplido la mision" +msgstr "Glückwunsch, du hast die Mission vollendet." + +#: principal.class:247 +msgid "PULSE F2 PARA REPARTIR DE NUEVO" +msgstr "F2 FÜR NEUSTART" + +#: principal.form:45 +msgid "Enjoy Open Source!" +msgstr "Genieße Open Source!" + +#: principal.form:50 +msgid "&Configuración" +msgstr "&Einstellungen" + +#: principal.form:53 +msgid "&Nuevo Juego" +msgstr "&Neues Spiel" + +#: principal.form:58 +msgid "&Mejores Puntajes" +msgstr "&Beste Ergebnisse" + +#: principal.form:64 +msgid "Nivel" +msgstr "Niveau" + +#: principal.form:68 +msgid "&Principiante" +msgstr "&Anfänger" + +#: principal.form:76 +msgid "M&edio" +msgstr "&Mittel" + +#: principal.form:83 +msgid "E&xperto" +msgstr "E&xperte" + +#: principal.form:90 +msgid "&Sonido" +msgstr "&Sound" + +#: principal.form:100 +msgid "&Salir" +msgstr "&Beenden" + +#: principal.form:105 +msgid "&Ayuda" +msgstr "&Hilfe" + +#: principal.form:108 +msgid "A&cerca de" +msgstr "&Über..." + +#: principal.form:112 +msgid "&Instrucciones" +msgstr "&Anweisungen" + +#: principal.form:251 +msgid "Jugadas: " +msgstr "Züge:" + +#: principal.form:259 +msgid "Tiempo: " +msgstr "Zeit:" + +#: principal.form:268 +msgid "PULSE F4 PARA COMENZAR LA MISION" +msgstr "F4 ZUM START DER MISSION" + +#: principal.form:283 +msgid "0" +msgstr "-" diff --git a/app/examples/Games/Concent/.lang/en.po b/app/examples/Games/Concent/.lang/en.po new file mode 100644 index 00000000..a68ad871 --- /dev/null +++ b/app/examples/Games/Concent/.lang/en.po @@ -0,0 +1,226 @@ +# #-#-#-#-# fotos.pot (PACKAGE VERSION) #-#-#-#-# +# /home/jbadbe/concent/fotos.class +# Generated by Gambas compiler +# FIRST AUTHOR , YEAR. +# +# #-#-#-#-# frmAcerca.pot (PACKAGE VERSION) #-#-#-#-# +# /home/jbadbe/concent/frmAcerca.class +# Generated by Gambas compiler +# FIRST AUTHOR , YEAR. +# +# #-#-#-#-# frmInstrucciones.pot (PACKAGE VERSION) #-#-#-#-# +# /home/jbadbe/concent/frmInstrucciones.class +# Generated by Gambas compiler +# FIRST AUTHOR , YEAR. +# +# #-#-#-#-# funciones.pot (PACKAGE VERSION) #-#-#-#-# +# /home/jbadbe/concent/funciones.module +# Generated by Gambas compiler +# FIRST AUTHOR , YEAR. +# +# #-#-#-#-# principal.pot (PACKAGE VERSION) #-#-#-#-# +# /home/jbadbe/concent/principal.class +# Generated by Gambas compiler +# FIRST AUTHOR , YEAR. +# +# #-#-#-#-# #project.pot (PACKAGE VERSION) #-#-#-#-# +# /home/jbadbe/concent_gb/.project +# Generated by Gambas compiler +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Concéntrese Geográfico" +msgstr "Geografic Concent" + +#: .project:2 +msgid "Esta versión incorpora soporte para el idioma inglés y español (nativo), disfrute este juego!, se han incorporado las correcciones sugeridas por el director del proyecto Gambas, el proyecto ha sido traducido al inglés usando la herramienta integrada de Gambas Ide" +msgstr "Ths version incorporate the english and spanish support, enjoy this game, the corrections and sugerences made by gambas development group (Benoit Missini) are finished." + +#: fotos.form:292 +msgid "" +"Estimados amigos, este formulario cumple la única función de\n" +" cargar en 40 botones, las imágenes de las caritas que servirán \n" +"para el juego, es posible que exista una mejor manera de \n" +"hacer esto, por eso... escucho sugerencias, posteriormente \n" +"en el código se crea un array de objetos a fin de referencialos \n" +"como botoncito[i].Picture y copiar este atributo en particular al \n" +"tablero de juego. Att: Jairo Alonso Badillo\n" +" jbadbe@gmail.com" +msgstr "" +"This form cumplies with the unique function of \n" +" load 40 buttons with images for the game\n" +", may it would can be resolved with other method, but I know not it." + +#: frmAcerca.form:14 +msgid "" +"Concéntrese Geográfico v 0.3\n" +"\n" +"Programado para Gambas por:\n" +"Jairo Alonso Badillo Bedoya - jbadbe@gmail.com\n" +"Publicado bajo los términos de la licencia GPL\n" +"Viva Colombia!!!!!\n" +"Visite http://www.linuxeam.tk -Una comunidad Linux" +msgstr "" +"Geografic Concent v 0.3\n" +"\n" +"Writed for Gambas by:\n" +"Jairo Alonso Badillo Bedoya-jbadbe@gmail.com\n" +"Published under GPL terms license\n" +"Live Colombia!!!!!!\n" +"Please visit http://www.linuxeam.tk - A Linux comunity" + +#: frmAcerca.form:20 frmInstrucciones.form:28 +msgid "&Aceptar" +msgstr "&Ok" + +#: frmInstrucciones.form:15 +msgid "COMO JUGAR CONCÉNTRESE?" +msgstr "HOW TO PLAY THIS GAME?" + +#: frmInstrucciones.form:21 +#, fuzzy +msgid "" +"Se trata de un Juego Bastante sencillo: \n" +"\n" +"1.) El objetivo del juego es probar tu retentiva y nivel de concentración, para lo cual\n" +" debes encontrar los pares de rostros que hay ocultos en el tablero de\n" +" concéntrese. \n" +" \n" +"2.) El juego tiene tres niveles (Principiante, Medio, Experto), que te permite\n" +" escoger entre tres tamaños del tablero para añadir emoción y dificultad al juego,\n" +" para Acceder a estas opciones debes ingresar por el menu Configuración - Nivel,\n" +" y seleccionar uno de los tres preestablecidos. \n" +" \n" +"3). Así mismo, tienes la posibilidad de incrementar tus conocimientos al jugar en\n" +" Modo Pregunta, lo que incrementa tu nivel educativo, esto se logra mediante un\n" +" cuestionario emergente que deberás responder con cada acierto en el tablero, si\n" +" contestas correctamente tendrás un puntaje más alto y podrás competir con tus\n" +" amigos. (Esta función se encuentra en construcción debido a la migracion de\n" +" Visual Basic hacia Gambas, y experimentar el poder de Linux, viva el\n" +" OpenSource!!! \n" +" \n" +"4.) El juego también te permite activar o desactivar los sonidos de ambientación,\n" +" para lo cual debes cambiar el estado del menú Configuración - Sonido. \n" +" \n" +"5.) Recuerda: Para redistribuir el Tablero Pulsa F2 , para comenzar a jugar pulsa\n" +" F4, los rostros serán cargados aleatoriamente, por lo que no debes intentar\n" +" aprenderte el tablero de memoria...!, Esto sí que va a ser un verdadero reto!. \n" +" \n" +"6.) Estoy actualmente diseñando los modulos de aprendizaje que podrás conseguir\n" +" muy pronto; para comentarios y / o sugerencias escribe a: jbadbe@gmail.com.\n" +msgstr "" +"This Game is very easy:\n" +"\n" +"\n" +"1.) The Game Objetive is find the faces under each button, the faces have duplicates,\n" +" in a movement you have find two equal faces.\n" +"\n" +" 2.) You can choose the dificult level in the config menu, in each level the board have\n" +" more buttons, enjoy this game!\n" +"\n" +" 3). Actually I am development the ask module, this module permit answer many asks\n" +" in the game for increment your points.\n" +"\n" +" 4.) You can activate or desactivate the sounds in the configuration menu\n" +" (Configuration - Sound).\n" +"\n" +" 5.) Remember: for init a mision press F4, if you want redistribute the board press F2\n" +" in any moment, the game will go to reset. The faces are load in rand mode, Is \n" +" imposible remember the board...!!!!\n" +"\n" +" 6.) For comments and ask, plese write me to jbadbe@gmail.com, please excuseme \n" +" for my English, I am Colombiano and I dont speak english.\n" +"\n" + +#: principal.class:166 +msgid "Jugada Errada" +msgstr "Bad move!" + +#: principal.class:202 +msgid "Felicitaciones, has cumplido la mision" +msgstr "Congratulations, the mission has been accomplished." + +#: principal.class:247 +msgid "PULSE F2 PARA REPARTIR DE NUEVO" +msgstr "PRESS F2 TO PLAY AGAIN" + +#: principal.form:45 +msgid "Enjoy Open Source!" +msgstr "Enjoy Open Source" + +#: principal.form:50 +msgid "&Configuración" +msgstr "&Configuration" + +#: principal.form:53 +msgid "&Nuevo Juego" +msgstr "&New Game" + +#: principal.form:58 +msgid "&Mejores Puntajes" +msgstr "&Best Scores" + +#: principal.form:64 +msgid "Nivel" +msgstr "Level" + +#: principal.form:68 +msgid "&Principiante" +msgstr "&Beginner" + +#: principal.form:76 +msgid "M&edio" +msgstr "M&edium" + +#: principal.form:83 +msgid "E&xperto" +msgstr "E&xpert" + +#: principal.form:90 +msgid "&Sonido" +msgstr "&Sound" + +#: principal.form:100 +msgid "&Salir" +msgstr "&Exit" + +#: principal.form:105 +msgid "&Ayuda" +msgstr "&Help" + +#: principal.form:108 +msgid "A&cerca de" +msgstr "&About this Game" + +#: principal.form:112 +msgid "&Instrucciones" +msgstr "&Instructions" + +#: principal.form:251 +msgid "Jugadas: " +msgstr "Movements" + +#: principal.form:259 +msgid "Tiempo: " +msgstr "Time:" + +#: principal.form:268 +msgid "PULSE F4 PARA COMENZAR LA MISION" +msgstr "PRESS F4 TO START THE MISSION" + +#: principal.form:283 +msgid "0" +msgstr "0" diff --git a/app/examples/Games/Concent/.lang/es.po b/app/examples/Games/Concent/.lang/es.po new file mode 100644 index 00000000..f6c79229 --- /dev/null +++ b/app/examples/Games/Concent/.lang/es.po @@ -0,0 +1,120 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: principal.class:694 +msgid "0" +msgstr "0" + +#: frmAcerca.class:37 frmInstrucciones.class:40 +msgid "&Aceptar" +msgstr "&Aceptar" + +#: principal.class:503 +msgid "A&cerca de" +msgstr "A&cerca de" + +#: principal.class:500 +msgid "&Ayuda" +msgstr "&Ayuda" + +#: frmInstrucciones.class:30 +msgid "COMO JUGAR CONCÉNTRESE?" +msgstr "¿CÓMO JUGAR CONCÉNTRESE?" + +#: .project:1 +msgid "Concéntrese Geográfico" +msgstr "Concéntrese Geográfico" + +#: frmAcerca.class:31 +msgid "Concéntrese Geográfico v 0.3\n\nProgramado para Gambas por:\nJairo Alonso Badillo Bedoya - jbadbe@gmail.com\nPublicado bajo los términos de la licencia GPL\nViva Colombia!!!!!\nVisite http://www.linuxeam.tk -Una comunidad Linux" +msgstr "Concéntrese Geográfico v 0.3\n\nProgramado para Gambas por:\nJairo Alonso Badillo Bedoya - jbadbe@gmail.com\nPublicado bajo los términos de la licencia GPL\nViva Colombia!!!!!\nVisite http://www.linuxeam.tk -Una comunidad Linux" + +#: principal.class:444 +msgid "&Configuración" +msgstr "&Configuración" + +#: principal.class:439 +msgid "Enjoy Open Source!" +msgstr "¡Disfrute del Código Abierto!" + +#: .project:2 +msgid "Esta versión incorpora soporte para el idioma inglés y español (nativo), disfrute este juego!, se han incorporado las correcciones sugeridas por el director del proyecto Gambas, el proyecto ha sido traducido al inglés usando la herramienta integrada de Gambas Ide" +msgstr "Esta versión incorpora soporte para el idioma inglés y español (nativo), disfrute este juego!, se han incorporado las correcciones sugeridas por el director del proyecto Gambas, el proyecto ha sido traducido al inglés usando la herramienta integrada de Gam" + +#: fotos.class:304 +msgid "Estimados amigos, este formulario cumple la única función de\n cargar en 40 botones, las imágenes de las caritas que servirán \npara el juego, es posible que exista una mejor manera de \nhacer esto, por eso... escucho sugerencias, posteriormente \nen el código se crea un array de objetos a fin de referencialos \ncomo botoncito[i].Picture y copiar este atributo en particular al \ntablero de juego. Att: Jairo Alonso Badillo\n jbadbe@gmail.com" +msgstr "Estimados amigos, este formulario cumple la única función de\n cargar en 40 botones, las imágenes de las caritas que servirán \npara el juego, es posible que exista una mejor manera de \nhacer esto, por eso... escucho sugerencias, posteriormente \nen el código se crea un array de objetos a fin de referencialos \ncomo botoncito[i].Picture y copiar este atributo en particular al \ntablero de juego. Att: Jairo Alonso Badillo\n jbadbe@gmail.com" + +#: principal.class:477 +msgid "E&xperto" +msgstr "E&xperto" + +#: principal.class:202 +msgid "Felicitaciones, has cumplido la mision" +msgstr "Felicitaciones, has cumplido la mision" + +#: principal.class:507 +msgid "&Instrucciones" +msgstr "&Instrucciones" + +#: principal.class:166 +msgid "Jugada Errada" +msgstr "Jugada Errada" + +#: principal.class:663 +msgid "Jugadas: " +msgstr "Jugadas: " + +#: principal.class:470 +msgid "M&edio" +msgstr "M&edio" + +#: principal.class:452 +msgid "&Mejores Puntajes" +msgstr "&Mejores Puntajes" + +#: principal.class:458 +msgid "Nivel" +msgstr "Nivel" + +#: principal.class:447 +msgid "&Nuevo Juego" +msgstr "&Nuevo Juego" + +#: principal.class:462 +msgid "&Principiante" +msgstr "&Principiante" + +#: principal.class:247 +msgid "PULSE F2 PARA REPARTIR DE NUEVO" +msgstr "PULSE F2 PARA REPARTIR DE NUEVO" + +#: principal.class:384 +msgid "PULSE F4 PARA COMENZAR LA MISION" +msgstr "PULSE F4 PARA COMENZAR LA MISION" + +#: principal.class:495 +msgid "&Salir" +msgstr "&Salir" + +#: frmInstrucciones.class:35 +msgid "Se trata de un Juego Bastante sencillo: \n\n\n1.) El objetivo del juego es probar tu retentiva y nivel de concentración, para lo cual\n debes encontrar los pares de rostros que hay ocultos en el tablero de\n concéntrese. \n \n2.) El juego tiene tres niveles (Principiante, Medio, Experto), que te permite\n escoger entre tres tamaños del tablero para añadir emoción y dificultad al juego,\n para Acceder a estas opciones debes ingresar por el menu Configuración - Nivel,\n y seleccionar uno de los tres preestablecidos. \n\n \n3). Así mismo, tienes la posibilidad de incrementar tus conocimientos al jugar en\n Modo Pregunta, lo que incrementa tu nivel educativo, esto se logra mediante un\n cuestionario emergente que deberás responder con cada acierto en el tablero, si\n contestas correctamente tendrás un puntaje más alto y podrás competir con tus\n amigos. (Esta función se encuentra en construcción debido a la migracion de\n Visual Basic hacia Gambas, y experimentar el poder de Linux, viva el\n OpenSource!!! \n \n4.) El juego también te permite activar o desactivar los sonidos de ambientación,\n para lo cual debes cambiar el estado del menú Configuración - Sonido. \n \n5.) Recuerda: Para redistribuir el Tablero Pulsa F2 , para comenzar a jugar pulsa\n F4, los rostros serán cargados aleatoriamente, por lo que no debes intentar\n aprenderte el tablero de memoria...!, Esto sí que va a ser un verdadero reto!. \n \n6.) Estoy actualmente diseñando los modulos de aprendizaje que podrás conseguir\n muy pronto; para comentarios y / o sugerencias escribe a: jbadbe@gmail.com.\n" +msgstr "Se trata de un Juego Bastante sencillo: \n\n\n1.) El objetivo del juego es probar tu retentiva y nivel de concentración, para lo cual\n debes encontrar los pares de rostros que hay ocultos en el tablero de\n concéntrese. \n \n2.) El juego tiene tres niveles (Principiante, Medio, Experto), que te permite\n escoger entre tres tamaños del tablero para añadir emoción y dificultad al juego,\n para Acceder a estas opciones debes ingresar por el menu Configuración - Nivel,\n y seleccionar uno de los tres preestablecidos. \n\n \n3). Así mismo, tienes la posibilidad de incrementar tus conocimientos al jugar en\n Modo Pregunta, lo que incrementa tu nivel educativo, esto se logra mediante un\n cuestionario emergente que deberás responder con cada acierto en el tablero, si\n contestas correctamente tendrás un puntaje más alto y podrás competir con tus\n amigos. (Esta función se encuentra en construcción debido a la migracion de\n Visual Basic hacia Gambas, y experimentar el poder de Linux, viva el\n OpenSource!!! \n \n4.) El juego también te permite activar o desactivar los sonidos de ambientación,\n para lo cual debes cambiar el estado del menú Configuración - Sonido. \n \n5.) Recuerda: Para redistribuir el Tablero Pulsa F2 , para comenzar a jugar pulsa\n F4, los rostros serán cargados aleatoriamente, por lo que no debes intentar\n aprenderte el tablero de memoria...!, Esto sí que va a ser un verdadero reto!. \n \n6.) Estoy actualmente diseñando los modulos de aprendizaje que podrás conseguir\n muy pronto; para comentarios y / o sugerencias escribe a: jbadbe@gmail.com.\n" + +#: principal.class:484 +msgid "&Sonido" +msgstr "&Sonido" + +#: principal.class:671 +msgid "Tiempo: " +msgstr "Tiempo: " + diff --git a/app/examples/Games/Concent/.lang/fr.po b/app/examples/Games/Concent/.lang/fr.po new file mode 100644 index 00000000..6dbc7e7f --- /dev/null +++ b/app/examples/Games/Concent/.lang/fr.po @@ -0,0 +1,164 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: fotos.class:303 +msgid "" +"Estimados amigos, este formulario cumple la única función de\n" +" cargar en 40 botones, las imágenes de las caritas que servirán \n" +"para el juego, es posible que exista una mejor manera de \n" +"hacer esto, por eso... escucho sugerencias, posteriormente \n" +"en el código se crea un array de objetos a fin de referencialos \n" +"como botoncito[i].Picture y copiar este atributo en particular al \n" +"tablero de juego. Att: Jairo Alonso Badillo\n" +" jbadbe@gmail.com" +msgstr "" + +#: frmAcerca.class:30 +msgid "" +"Concéntrese Geográfico v 0.3\n" +"\n" +"Programado para Gambas por:\n" +"Jairo Alonso Badillo Bedoya - jbadbe@gmail.com\n" +"Publicado bajo los términos de la licencia GPL\n" +"Viva Colombia!!!!!\n" +"Visite http://www.linuxeam.tk -Una comunidad Linux" +msgstr "" +"Geografic Concent v 0.3\n" +"\n" +"Ecrit pour Gambas par:\n" +"Jairo Alonso Badillo Bedoya-jbadbe@gmail.com\n" +"Publié sous license GNU\n" +"Vive la Colombie!!!!!!\n" +"Veuillez visiter http://www.linuxeam.tk - Une communauté Linux" + +#: frmAcerca.class:36 frmInstrucciones.class:43 +msgid "&Aceptar" +msgstr "&OK" + +#: frmInstrucciones.class:30 +msgid "COMO JUGAR CONCÉNTRESE?" +msgstr "COMMENT JOUER A CE JEU ?" + +#: frmInstrucciones.class:36 +msgid "" +"Se trata de un Juego Bastante sencillo: \n" +"\n" +"1.) El objetivo del juego es probar tu retentiva y nivel de concentración, para lo cual\n" +" debes encontrar los pares de rostros que hay ocultos en el tablero de\n" +" concéntrese. \n" +" \n" +"2.) El juego tiene tres niveles (Principiante, Medio, Experto), que te permite\n" +" escoger entre tres tamaños del tablero para añadir emoción y dificultad al juego,\n" +" para Acceder a estas opciones debes ingresar por el menu Configuración - Nivel,\n" +" y seleccionar uno de los tres preestablecidos. \n" +" \n" +"3). Así mismo, tienes la posibilidad de incrementar tus conocimientos al jugar en\n" +" Modo Pregunta, lo que incrementa tu nivel educativo, esto se logra mediante un\n" +" cuestionario emergente que deberás responder con cada acierto en el tablero, si\n" +" contestas correctamente tendrás un puntaje más alto y podrás competir con tus\n" +" amigos. (Esta función se encuentra en construcción debido a la migracion de\n" +" Visual Basic hacia Gambas, y experimentar el poder de Linux, viva el\n" +" OpenSource!!! \n" +" \n" +"4.) El juego también te permite activar o desactivar los sonidos de ambientación,\n" +" para lo cual debes cambiar el estado del menú Configuración - Sonido. \n" +" \n" +"5.) Recuerda: Para redistribuir el Tablero Pulsa F2 , para comenzar a jugar pulsa\n" +" F4, los rostros serán cargados aleatoriamente, por lo que no debes intentar\n" +" aprenderte el tablero de memoria...!, Esto sí que va a ser un verdadero reto!. \n" +" \n" +"6.) Estoy actualmente diseñando los modulos de aprendizaje que podrás conseguir\n" +" muy pronto; para comentarios y / o sugerencias escribe a: jbadbe@gmail.com.\n" +msgstr "" + +#: principal.class:166 +msgid "Jugada Errada" +msgstr "Mouvement incorrect !" + +#: principal.class:202 +msgid "Felicitaciones, has cumplido la mision" +msgstr "Félicitations, vous avez rempli la mission." + +#: principal.class:247 +msgid "PULSE F2 PARA REPARTIR DE NUEVO" +msgstr "APPUYEZ SUR F2 POUR RECOMMENCER" + +#: principal.class:384 +msgid "PULSE F4 PARA COMENZAR LA MISION" +msgstr "APPUYEZ SUR F4 POUR COMMENCER" + +#: principal.class:439 +msgid "Enjoy Open Source!" +msgstr "Profitez des logiciels libres !" + +#: principal.class:444 +msgid "&Configuración" +msgstr "&Configuration" + +#: principal.class:447 +msgid "&Nuevo Juego" +msgstr "&Nouveau jeu" + +#: principal.class:452 +msgid "&Mejores Puntajes" +msgstr "Meilleurs &scores" + +#: principal.class:458 +msgid "Nivel" +msgstr "Niveau" + +#: principal.class:462 +msgid "&Principiante" +msgstr "&Débutant" + +#: principal.class:470 +msgid "M&edio" +msgstr "&Moyen" + +#: principal.class:477 +msgid "E&xperto" +msgstr "E&xpert" + +#: principal.class:484 +msgid "&Sonido" +msgstr "&Son" + +#: principal.class:494 +msgid "&Salir" +msgstr "&Quitter" + +#: principal.class:499 +msgid "&Ayuda" +msgstr "&Aide" + +#: principal.class:502 +msgid "A&cerca de" +msgstr "A propos de..." + +#: principal.class:506 +msgid "&Instrucciones" +msgstr "&Instructions (non traduites)" + +#: principal.class:645 +msgid "Jugadas: " +msgstr "Mouvements :" + +#: principal.class:653 +msgid "Tiempo: " +msgstr "Temps :" + +#: principal.class:677 +msgid "0" +msgstr "" + +#~ msgid "Concéntrese Geográfico" +#~ msgstr "Concentré Géographique" diff --git a/app/examples/Games/Concent/.lang/ru.po b/app/examples/Games/Concent/.lang/ru.po new file mode 100644 index 00000000..38c1b3cb --- /dev/null +++ b/app/examples/Games/Concent/.lang/ru.po @@ -0,0 +1,222 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Games/Concent/.project:23 +msgid "Concéntrese Geográfico" +msgstr "Концентрация" + +#: app/examples/Games/Concent/.project:24 +msgid "Esta versión incorpora soporte para el idioma inglés y español (nativo), disfrute este juego!, se han incorporado las correcciones sugeridas por el director del proyecto Gambas, el proyecto ha sido traducido al inglés usando la herramienta integrada de Gambas Ide" +msgstr "Эта версия включает в себя поддержку английского и испанского языка (родного), наслаждайтесь этой игрой! Исправления, предложенные руководителем проекта Gambas, включены, проект переведён на английский язык с использованием интегрированного инструмента Gambas Ide" + +#: app/examples/Games/Concent/.src/fotos.form:208 +msgid "" +"Estimados amigos, este formulario cumple la única función de\n" +" cargar en 40 botones, las imágenes de las caritas que servirán \n" +"para el juego, es posible que exista una mejor manera de \n" +"hacer esto, por eso... escucho sugerencias, posteriormente \n" +"en el código se crea un array de objetos a fin de referencialos \n" +"como botoncito[i].Picture y copiar este atributo en particular al \n" +"tablero de juego. Att: Jairo Alonso Badillo\n" +" jbadbe@gmail.com" +msgstr "" +"Дорогие друзья, эта форма выполняет единственную\n" +"функцию для загрузки из 40 кнопок - изображений\n" +"персонажей, которые будут служить для игры, возможно,\n" +"что есть лучший способ сделать это, поэтому... я слушаю\n" +"предложения, позже в коде создайте массив объектов\n" +"для ссылок, таких как кнопка[i]. Изобразите и скопируйте\n" +"этот конкретный атрибут на игровую доску. Акт: Хайро\n" +"Алонсо Бадильо jbadbe@gmail.com" + +#: app/examples/Games/Concent/.src/frmAcerca.form:8 +msgid "" +"Concéntrese Geográfico v 0.3\n" +"\n" +"Programado para Gambas por:\n" +"Jairo Alonso Badillo Bedoya - jbadbe@gmail.com\n" +"Publicado bajo los términos de la licencia GPL\n" +"Viva Colombia!!!!!\n" +"Visite http://www.linuxeam.tk -Una comunidad Linux" +msgstr "" +"Концентрация версии 0.3\n" +"\n" +"Запрограммировано для Gambas:\n" +"Хайро Алонсо Бадильо Бедоя - jbadbe@gmail.com\n" +"Опубликовано в соответствии с условиями лицензии GPL\n" +"Да здравствует Колумбия!!!!!\n" +"Посетите http://www.linuxeam.tk - сообщество Linux" + +#: app/examples/Games/Concent/.src/frmAcerca.form:13 app/examples/Games/Concent/.src/frmInstrucciones.form:20 +msgid "&Aceptar" +msgstr "Принять" + +#: app/examples/Games/Concent/.src/frmInstrucciones.form:9 +msgid "COMO JUGAR CONCÉNTRESE?" +msgstr "Как играть в концентрацию?" + +#: app/examples/Games/Concent/.src/frmInstrucciones.form:14 +msgid "" +"Se trata de un Juego Bastante sencillo: \n" +"\n" +"1.) El objetivo del juego es probar tu retentiva y nivel de concentración, para lo cual\n" +" debes encontrar los pares de rostros que hay ocultos en el tablero de\n" +" concéntrese. \n" +" \n" +"2.) El juego tiene tres niveles (Principiante, Medio, Experto), que te permite\n" +" escoger entre tres tamaños del tablero para añadir emoción y dificultad al juego,\n" +" para Acceder a estas opciones debes ingresar por el menu Configuración - Nivel,\n" +" y seleccionar uno de los tres preestablecidos. \n" +" \n" +"3). Así mismo, tienes la posibilidad de incrementar tus conocimientos al jugar en\n" +" Modo Pregunta, lo que incrementa tu nivel educativo, esto se logra mediante un\n" +" cuestionario emergente que deberás responder con cada acierto en el tablero, si\n" +" contestas correctamente tendrás un puntaje más alto y podrás competir con tus\n" +" amigos. (Esta función se encuentra en construcción debido a la migracion de\n" +" Visual Basic hacia Gambas, y experimentar el poder de Linux, viva el\n" +" OpenSource!!! \n" +" \n" +"4.) El juego también te permite activar o desactivar los sonidos de ambientación,\n" +" para lo cual debes cambiar el estado del menú Configuración - Sonido. \n" +" \n" +"5.) Recuerda: Para redistribuir el Tablero Pulsa F2 , para comenzar a jugar pulsa\n" +" F4, los rostros serán cargados aleatoriamente, por lo que no debes intentar\n" +" aprenderte el tablero de memoria...!, Esto sí que va a ser un verdadero reto!. \n" +" \n" +"6.) Estoy actualmente diseñando los modulos de aprendizaje que podrás conseguir\n" +" muy pronto; para comentarios y / o sugerencias escribe a: jbadbe@gmail.com.\n" +msgstr "" +"Это довольно простая игра:\n" +"\n" +"1.) Цель игры - проверить вашу внимательность и уровень концентрации,\n" +"для чего вы должны найти пары лиц, которые спрятаны в поле\n" +"концентрации.\n" +" \n" +"2.) В игре есть три уровня (новичок, среднячок, эксперт), которые\n" +"позволяют вам выбирать между тремя размерами доски; чтобы\n" +"добавить эмоции и сложность в игру, чтобы получить доступ к этим\n" +"параметрам, вы должны войти через меню Конфигурация -> Уровень\n" +"и выбрать одну из трёх предустановок. \n" +" \n" +"3). Кроме того, у вас есть возможность повысить свои знания при игре в\n" +"режиме вопросов, которая повышает ваш образовательный уровень; это\n" +"достигается с помощью новой анкеты, на которую вы должны отвечать при\n" +"каждом успехе на доске; если вы ответите правильно, у вас будет более\n" +"высокий балл, и вы сможете соревноваться с друзьями. (Эта функция находится\n" +"в стадии разработки в связи с миграцией Visual Basic на Gambas, и для того,\n" +"чтобы испытать всю мощь Linux, используйте открытый исходный код!!!\n" +" \n" +"4.) Игра также позволяет активировать или деактивировать окружающие\n" +"звуки, для чего необходимо изменить статус в меню Конфигурация -> Звук.\n" +" \n" +"5.) Помните: чтобы перераспределить доску - нажмите F2; чтобы начать играть -\n" +"нажмите F4; лица будут загружены случайным образом, поэтому вы не должны\n" +"пытаться изучить плату памяти...! Это будет настоящим испытанием!\n" +" \n" +"6.) В настоящее время я разрабатываю учебные модули, которые вы можете\n" +"получить очень скоро; для комментариев и/или предложений пишите на:\n" +"jbadbe@gmail.com.\n" + +#: app/examples/Games/Concent/.src/principal.class:166 +msgid "Jugada Errada" +msgstr "Плохой ход" + +#: app/examples/Games/Concent/.src/principal.class:202 +msgid "Felicitaciones, has cumplido la mision" +msgstr "Поздравляю, вы выполнили миссию" + +#: app/examples/Games/Concent/.src/principal.class:247 +msgid "PULSE F2 PARA REPARTIR DE NUEVO" +msgstr "Нажмите F2, чтобы начать заново" + +#: app/examples/Games/Concent/.src/principal.class:384 app/examples/Games/Concent/.src/principal.form:196 +msgid "PULSE F4 PARA COMENZAR LA MISION" +msgstr "Нажмите F4, чтобы начать миссию" + +#: app/examples/Games/Concent/.src/principal.form:6 +msgid "Enjoy Open Source!" +msgstr "Наслаждайтесь открытым исходным кодом!" + +#: app/examples/Games/Concent/.src/principal.form:10 +msgid "&Configuración" +msgstr "Конфигурация" + +#: app/examples/Games/Concent/.src/principal.form:12 +msgid "&Nuevo Juego" +msgstr "Новая игра" + +#: app/examples/Games/Concent/.src/principal.form:16 +msgid "&Mejores Puntajes" +msgstr "Лучшие результаты" + +#: app/examples/Games/Concent/.src/principal.form:21 +msgid "Nivel" +msgstr "Уровень" + +#: app/examples/Games/Concent/.src/principal.form:24 +msgid "&Principiante" +msgstr "Новичок" + +#: app/examples/Games/Concent/.src/principal.form:31 +msgid "M&edio" +msgstr "Среднячок" + +#: app/examples/Games/Concent/.src/principal.form:37 +msgid "E&xperto" +msgstr "Эксперт" + +#: app/examples/Games/Concent/.src/principal.form:43 +msgid "&Sonido" +msgstr "Звук" + +#: app/examples/Games/Concent/.src/principal.form:51 +msgid "&Salir" +msgstr "Выход" + +#: app/examples/Games/Concent/.src/principal.form:55 +msgid "&Ayuda" +msgstr "Помощь" + +#: app/examples/Games/Concent/.src/principal.form:57 +msgid "A&cerca de" +msgstr "О программе" + +#: app/examples/Games/Concent/.src/principal.form:60 +msgid "&Instrucciones" +msgstr "Инструкции" + +#: app/examples/Games/Concent/.src/principal.form:181 +msgid "Jugadas: " +msgstr "Ходы: " + +#: app/examples/Games/Concent/.src/principal.form:188 +msgid "Tiempo: " +msgstr "Время: " + +#: app/examples/Games/Concent/.src/principal.form:210 app/examples/Games/Concent/.src/principal.form:217 +msgid "0" +msgstr "0" + diff --git a/app/examples/Games/Concent/.project b/app/examples/Games/Concent/.project new file mode 100644 index 00000000..3b78d34e --- /dev/null +++ b/app/examples/Games/Concent/.project @@ -0,0 +1,22 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.6.90 +Title=Concéntrese Geográfico +Startup=principal +Icon=imagenes/logo.png +Version=3.6.90 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.db +Component=gb.sdl.sound +Description="Esta versión incorpora soporte para el idioma inglés y español (nativo), disfrute este juego!, se han incorporado las correcciones sugeridas por el director del proyecto Gambas, el proyecto ha sido traducido al inglés usando la herramienta integrada de Gambas Ide" +Authors="Jairo Alonso Badillo Bedoya" +TabSize=2 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence +Packager=1 +Systems=redhat diff --git a/app/examples/Games/Concent/.src/fotos.class b/app/examples/Games/Concent/.src/fotos.class new file mode 100644 index 00000000..5c4d1122 --- /dev/null +++ b/app/examples/Games/Concent/.src/fotos.class @@ -0,0 +1,7 @@ +' Gambas class file + + + +PUBLIC SUB Form_Open() + +END diff --git a/app/examples/Games/Concent/.src/fotos.form b/app/examples/Games/Concent/.src/fotos.form new file mode 100644 index 00000000..0e79fe06 --- /dev/null +++ b/app/examples/Games/Concent/.src/fotos.form @@ -0,0 +1,210 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(54.3333,9.6667,56.6667,57) + Text = ("") + Resizable = False + { Button1 Button + MoveScaled(1,22.8333,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an1.gif"] + } + { Button2 Button + MoveScaled(8,22.8333,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an11.gif"] + } + { Button3 Button + MoveScaled(14.8333,22.8333,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an12.gif"] + } + { Button4 Button + MoveScaled(21.6667,22.8333,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an13.gif"] + } + { Button5 Button + MoveScaled(28.5,22.8333,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an14.gif"] + } + { Button6 Button + MoveScaled(35.3333,22.8333,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an15.gif"] + } + { Button7 Button + MoveScaled(42.1667,22.8333,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an16.gif"] + } + { Button8 Button + MoveScaled(49,22.8333,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an17.gif"] + } + { Button9 Button + MoveScaled(28.5,29.6667,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an21.gif"] + } + { Button10 Button + MoveScaled(21.6667,29.6667,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an20.gif"] + } + { Button11 Button + MoveScaled(14.8333,29.6667,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an2.gif"] + } + { Button12 Button + MoveScaled(8,29.6667,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an19.gif"] + } + { Button13 Button + MoveScaled(1,29.6667,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an18.gif"] + } + { Button14 Button + MoveScaled(35.3333,29.6667,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an22.gif"] + } + { Button15 Button + MoveScaled(42.1667,29.6667,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an23.gif"] + } + { Button16 Button + MoveScaled(49,29.6667,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an24.gif"] + } + { Button17 Button + MoveScaled(28.5,36.5,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an29.gif"] + } + { Button18 Button + MoveScaled(21.6667,36.5,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an28.gif"] + } + { Button19 Button + MoveScaled(14.8333,36.5,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an27.gif"] + } + { Button20 Button + MoveScaled(8,36.5,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an26.gif"] + } + { Button21 Button + MoveScaled(1,36.5,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an25.gif"] + } + { Button22 Button + MoveScaled(35.3333,36.5,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an3.gif"] + } + { Button23 Button + MoveScaled(42.1667,36.5,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an30.gif"] + } + { Button24 Button + MoveScaled(49,36.5,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an31.gif"] + } + { Button25 Button + MoveScaled(28.5,43.3333,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an36.gif"] + } + { Button26 Button + MoveScaled(21.6667,43.3333,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an35.gif"] + } + { Button27 Button + MoveScaled(14.8333,43.3333,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an34.gif"] + } + { Button28 Button + MoveScaled(8,43.3333,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an33.gif"] + } + { Button29 Button + MoveScaled(1,43.3333,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an32.gif"] + } + { Button30 Button + MoveScaled(35.3333,43.3333,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an37.gif"] + } + { Button31 Button + MoveScaled(42.1667,43.3333,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an38.gif"] + } + { Button32 Button + MoveScaled(49,43.3333,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an39.gif"] + } + { Button33 Button + MoveScaled(28.5,50.1667,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an7.gif"] + } + { Button34 Button + MoveScaled(21.6667,50.1667,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an6.gif"] + } + { Button35 Button + MoveScaled(14.8333,50.1667,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an5.gif"] + } + { Button36 Button + MoveScaled(8,50.1667,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an40.gif"] + } + { Button37 Button + MoveScaled(1,50.1667,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an4.gif"] + } + { Button38 Button + MoveScaled(35.3333,50.1667,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an8.gif"] + } + { Button39 Button + MoveScaled(42.1667,50.1667,6.3333,6.3333) + Text = ("") + Picture = Picture["imagenes/an9.gif"] + } + { Button40 Button + MoveScaled(49,50.1667,6.3333,6.3333) + Text = ("") + } + { Label1 Label + MoveScaled(1,1,53.6667,20.5) + Text = ("Estimados amigos, este formulario cumple la \xC3\xBAnica funci\xC3\xB3n de\n cargar en 40 botones, las im\xC3\xA1genes de las caritas que servir\xC3\xA1n \npara el juego, es posible que exista una mejor manera de \nhacer esto, por eso... escucho sugerencias, posteriormente \nen el c\xC3\xB3digo se crea un array de objetos a fin de referencialos \ncomo botoncito[i].Picture y copiar este atributo en particular al \ntablero de juego. Att: Jairo Alonso Badillo\n jbadbe@gmail.com") + } +} diff --git a/app/examples/Games/Concent/.src/frmAcerca.class b/app/examples/Games/Concent/.src/frmAcerca.class new file mode 100644 index 00000000..191c36df --- /dev/null +++ b/app/examples/Games/Concent/.src/frmAcerca.class @@ -0,0 +1,12 @@ +' Gambas class file + +PUBLIC SUB Button1_Click() + + ME.Close + +END + +PUBLIC SUB Form_Open() + + +END diff --git a/app/examples/Games/Concent/.src/frmAcerca.form b/app/examples/Games/Concent/.src/frmAcerca.form new file mode 100644 index 00000000..bb87ee31 --- /dev/null +++ b/app/examples/Games/Concent/.src/frmAcerca.form @@ -0,0 +1,20 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(59.5714,26.7143,67,31) + Resizable = False + { Label1 Label + MoveScaled(1,1,65,24) + Text = ("Concéntrese Geográfico v 0.3\n\nProgramado para Gambas por:\nJairo Alonso Badillo Bedoya - jbadbe@gmail.com\nPublicado bajo los términos de la licencia GPL\nViva Colombia!!!!!\nVisite http://www.linuxeam.tk -Una comunidad Linux") + Alignment = Align.Center + } + { Button1 Button + MoveScaled(24,26,19,4) + Text = ("&Aceptar") + } + { PictureBox1 PictureBox + MoveScaled(8,4,6.7143,4) + Expand = True + Picture = Picture["imagenes/colombia.gif"] + } +} diff --git a/app/examples/Games/Concent/.src/frmInstrucciones.class b/app/examples/Games/Concent/.src/frmInstrucciones.class new file mode 100644 index 00000000..e0dfd43d --- /dev/null +++ b/app/examples/Games/Concent/.src/frmInstrucciones.class @@ -0,0 +1,11 @@ +' Gambas class file + +Public Sub Form_Open() + +End + +Public Sub Button1_Click() + + Me.Close + +End diff --git a/app/examples/Games/Concent/.src/frmInstrucciones.form b/app/examples/Games/Concent/.src/frmInstrucciones.form new file mode 100644 index 00000000..00f5cfc3 --- /dev/null +++ b/app/examples/Games/Concent/.src/frmInstrucciones.form @@ -0,0 +1,22 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(63.8571,1.7143,86,90) + Resizable = False + { Label1 Label + MoveScaled(1,1,83,4) + Font = Font["Bold,+2"] + Text = ("COMO JUGAR CONCÉNTRESE?") + } + { Label2 Label + MoveScaled(1,6,84,78) + Padding = 8 + Text = ("Se trata de un Juego Bastante sencillo: \n\n1.) El objetivo del juego es probar tu retentiva y nivel de concentración, para lo cual\n debes encontrar los pares de rostros que hay ocultos en el tablero de\n concéntrese. \n \n2.) El juego tiene tres niveles (Principiante, Medio, Experto), que te permite\n escoger entre tres tamaños del tablero para añadir emoción y dificultad al juego,\n para Acceder a estas opciones debes ingresar por el menu Configuración - Nivel,\n y seleccionar uno de los tres preestablecidos. \n \n3). Así mismo, tienes la posibilidad de incrementar tus conocimientos al jugar en\n Modo Pregunta, lo que incrementa tu nivel educativo, esto se logra mediante un\n cuestionario emergente que deberás responder con cada acierto en el tablero, si\n contestas correctamente tendrás un puntaje más alto y podrás competir con tus\n amigos. (Esta función se encuentra en construcción debido a la migracion de\n Visual Basic hacia Gambas, y experimentar el poder de Linux, viva el\n OpenSource!!! \n \n4.) El juego también te permite activar o desactivar los sonidos de ambientación,\n para lo cual debes cambiar el estado del menú Configuración - Sonido. \n \n5.) Recuerda: Para redistribuir el Tablero Pulsa F2 , para comenzar a jugar pulsa\n F4, los rostros serán cargados aleatoriamente, por lo que no debes intentar\n aprenderte el tablero de memoria...!, Esto sí que va a ser un verdadero reto!. \n \n6.) Estoy actualmente diseñando los modulos de aprendizaje que podrás conseguir\n muy pronto; para comentarios y / o sugerencias escribe a: jbadbe@gmail.com.\n") + Alignment = Align.TopNormal + Border = Border.Plain + } + { Button1 Button + MoveScaled(34,85,18,4) + Text = ("&Aceptar") + } +} diff --git a/app/examples/Games/Concent/.src/funciones.module b/app/examples/Games/Concent/.src/funciones.module new file mode 100644 index 00000000..6cbc1714 --- /dev/null +++ b/app/examples/Games/Concent/.src/funciones.module @@ -0,0 +1,162 @@ +' Gambas module file + +'Arreglos para guardar info de las imagenes a cargar y el estado de los botones +'................................................................................ +'Arrays for save images information to load. +Private botones_numero_foticos As New Integer[64] 'Almacena el numero de foto (indice) que llevara cada botoncito al descubrirse + 'Almacenate the image number (index). +Private boton_lleno As New Boolean[64] 'para especificar si un boton ya recibio asignacion de fotico + 'Specify if a button have a image asigned + +'Variables de juego +Public jugadas As Integer 'contador del numero de jugadas durante una partida (counter for number of movements) +Public tiempo As Integer 'contador del numero de segundos durante una partida (counter for game time) +Public aciertos As Integer 'Contar el numero de aciertos del jugador, es decir, cada vez que el jugador logra en una misma + 'jugada encontrar dos botones con el mismo dibujito + '.............................................................................................. + 'Count the acerts for player. +Public num_movimiento_actual As Integer 'Siempre tendra valor de 0, o 1. se usa para saber si el jugador ya destapo un boton el turno actual + 'es decir, una jugada consta de dos movimientos + '.................................................................................. + 'Controle the set of button moved in a movement + +Public Sub distrib(tam_tablero As Integer, tam_botones As Integer) + Dim i As Integer + Dim j As Integer + Dim izq As Integer + Dim arr As Integer + Dim pos As Integer + + izq = (principal.Width - tam_botones * tam_tablero) / 2 + arr = (principal.Height - tam_botones * tam_tablero) / 2 + + pos = 0 + + For I = 0 To tam_tablero - 1 + For J = 0 To tam_tablero - 1 + principal.botones[pos].visible = True + principal.botones[pos].width = tam_botones + principal.botones[pos].height = tam_botones + principal.botones[pos].x = izq + principal.botones[pos].y = arr + principal.botones[pos].picture = principal.initialPicture 'cada vez que se distribuye el tablero, se tapas los botone + 'con el dibujito del signo de interrogacion + '........................................................ + 'Restore the buttons to initial state, when the game is + 'restarted + 'principal.botones[pos].enabled=TRUE + izq = izq + tam_botones + pos = pos + 1 + Next + arr = arr + tam_botones + izq = (principal.Width - tam_botones * tam_tablero) / 2 + + Next + + 'Se ocultan los botones que no sean necesarios de acuerdo al nivel + 'de juego, esto pasa cuando se ha jugado en un nivel superior y + 'luego se vuelve hacia un nivel inferior + '.................................................................. + 'The not necesary button are oculted + For I = tam_tablero * tam_tablero To 63 + principal.botones[pos].visible = False + pos = pos + 1 + Next + + 'se asigna false al array boton_lleno para iniciar una nueva asignacion de foticos + '.................................................................................. + 'The state for each button is restored, it is for permit movement with each button + For I = 0 To 63 + boton_lleno[I] = False + Next + + 'Se cargan las imagenes en cada botoncito + '......................................... + 'Load image for each button + repartir(tam_tablero * tam_tablero) + +End + + +'Este procedimiento busca en el directorio imagenes para capturar los +'nombres de los dibujitos que se van a mostrar en los botones, esta +'funcionalidad permite que el usuario incluya luego sus propias imagenes +'PUBLIC SUB cargar_imagenes(Directory AS String) + + 'DIM File AS String + 'DIM indice AS Integer + 'indice=0 + + 'FOR EACH File IN Dir(Directory, "an*.gif") + 'imagenes[indice]=File + 'indice=indice+1 + 'NEXT + +'END + +Public Sub repartir(tam_tablero As Integer) + Dim i As Integer + Dim j As Integer + Dim aleatorio As Integer + Dim aleatorio1 As Integer + Dim listo As Boolean 'Bandera para informar cuando se encuentre un boton libre para asignacion + 'Variable for controlate the flow in nex loop + + 'Ciclar la mitad de la dimension para ubicar las imagenes en cada boton, se cicla la mitad ya que cada imagen + 'escogida en un ciclo se asigna a una pareja de botoncitos, la imagen escogida se representa como un numero + 'entero, que es utilizado luego como indice del array botones_foticos[] para copiar la propiedad picture, este + 'numero se guarda en el arreglo botones_numero_foticos[64]. + '.............................................................................................................. + 'This For loop permit locate the images in each button + For i = 0 To Int(tam_tablero - 1) / 2 + aleatorio = Int(Rnd() * 40) 'se obtiene un numero entre (0, 39) que es el rango de indices del array botones_foticos + 'Obtain a random number in 0-39 range (there is 40 images for use) + 'IF aleatorio = 40 THEN message ("salio un numero malo") + 'en cada ciclo se ubica dos veces la misma fotico en dos cuadros aleatorios + '.......................................................................... + 'For each loop a image is locate at two times + For j = 0 To 1 + listo = False + While listo = False 'se anida este ciclo para forzar la busqueda de dos cuadritos que no hayan sido asignados + 'This loop is nested for force the search + aleatorio1 = Int(Rnd() * tam_tablero) 'se busca un indice en el rango (0, tam_tablero) + 'An index in 0,tam_table range is searched + If (boton_lleno[aleatorio1]) = False Then 'se verifica que el boton no tenga fotico asignada + 'Verify the button for stablish it is free + botones_numero_foticos[aleatorio1] = aleatorio + boton_lleno[aleatorio1] = True + listo = True + 'ACTIVAR LA LINEA SIGUIENTE PARA DEPURACION, ENTONCES SE PODRA VER LA IMAGEN OCULTA DE LOS BOTONES + 'principal.botones[aleatorio1].picture=principal.botones_foticos[aleatorio].picture + End If + Wend + + Next + + Next + + 'Se inicializan las variables de juego + '.................................... + 'Initialize game variables + jugadas = 0 + tiempo = 0 + aciertos = 0 + num_movimiento_actual = 0 + +End + +'Se hace necesario este metodo para notificar al formulario principal sobre cual imagen debe colocar en un botoncito +'al ser descubierto, esto debido a que el arreglo botones_numero_foticos[] es pridado en este modulo +Public Function devolver_indice_defotico(tag As Integer) As Integer + Return botones_numero_foticos[tag] +End + +'Devuelve un valor booleano indicando si los dos movimientos de una jugada son validos +Public Function comparar_botones_jugados(btjugado1 As Integer, btjugado2 As Integer) As Boolean + Return botones_numero_foticos[btjugado1] = botones_numero_foticos[btjugado2] +End + + + + + diff --git a/app/examples/Games/Concent/.src/principal.class b/app/examples/Games/Concent/.src/principal.class new file mode 100644 index 00000000..964c0d85 --- /dev/null +++ b/app/examples/Games/Concent/.src/principal.class @@ -0,0 +1,390 @@ +' Gambas class file + +' Gambas class +Public boton As Button 'object variable for charge buttons on ejecution time +Public sonido As Sound 'objeto que permite lanzar los sonidos(Play the Sounds) +Public aplauso As Sound 'Sonido de aplauso cuando se acierta en un par de caritas (Applause Sound at each movement) +Public botones As Object[] 'Arreglo de botones del tablero de juego (Buttons array for game board) +Public botones_foticos As Object[] 'Arreglo de botones con las figuritas (Buttons array with images loaded) + 'en el form fotos +'variables del juego +Public tam_tablero As Integer 'para conocer en todo momento cual es el tamaño del tablero (filas y columnas) + 'It is for know in all moment the boad size(row and columns) + +Public habilitar As Boolean 'para establecer si el jugador puede empezar a descubrir los botoncitos + 'Stablish if player can move + + +Private anterior_boton_jugado As Integer 'se utiliza para recordar el numero del ultimo boton pulsado, a fin de poder + 'restaurarlo, en el caso del primer movimiento de una jugada, cuando no hay coincidencia + 'de las imagenes destapadas (remember last pushed button) + +'Las siguientes dos variables fueron necesarias a fin de preservar la informacion contenida en la variable anterior_boton_jugado +'y en LAST.tag durante la ejecucion del evento click sobre los botones, esto debido a que la ejecucion de codigo no se +'interrumpe con la activacion del timer, de esta forma se permite un retardo en la visualizacion de pares de botones descubiertos +'para que el jugador pueda reconocer la figura oculta en caso de que ambos dibujos no coincidan +'............................................................................................... +'Next variables would be needed for save information in variable anterior_boton_jugado and LAST.tag (for grupo_botones group) +'for click event, it is for permit a delay in each movement, so the player can visualize every faces. + +Private boton_actual_paratimer As Integer +Private boton_ultimo_paratimer As Integer + +'FUNCIONALIDAD AÑADIDA DE ACCESO A BASE DE DATOS PARA ALMACENAR LOS DATOS DEL +'JUEGO, MEJORES PUNTAJES POR CATEGORIA +'PRIVATE myarchivo AS File +'PRIVATE mylinea AS String + +'Variable para almacenar el idioma en uso +'........................................ +'Capture and almacenate the language in use +Public language As String + +Public initialPicture As Picture + +Public Sub _new() + +Dim i As Integer + +Randomize + +sonido = New Sound("Wallhit.wav") 'Instancia del objeto sonido - Sound object instance +aplauso = New Sound("applause.wav") + +initialPicture = Picture["imagenes/inter.jpg"] + + 'IF NOT Access(system.Home &/"myarchivo.ini") THEN + ' message ("no existe") + ' OPEN system.Home &/"myarchivo.ini" FOR CREATE AS myarchivo + ' 'WHILE NOT Eof(myarchivo) + ' 'LINE INPUT #myarchivo, mylinea + ' 'message (mylinea) + ' 'WEND + ' myarchivo.Save("hola") + ' + ' CLOSE myarchivo + 'END IF + + + 'Se crea el array de objetos botones, esto con el fin de facilitar la manipulacion + 'de eventos comunes a un grupo de botones. + '.................................................................................. + 'Create the buttons to be used for next game + botones = New Object[] 'Array of buttons + + For i = 1 To 64 + boton = New Button(Me) As "grupobotones" + boton.tag = i - 1 + 'The button object array is created, it is for manipulate the common events to group buttons + botones.Add(boton) ' + Next + + 'Se crea este arreglo para tomar referencia de las foticos de los botones + 'en el form fotos + '.......................................................................... + 'This array contain a reference for images to visualice in the game + botones_foticos = New Object[] + For i = 1 To 40 + boton = New Button(Me) + boton.Visible = False + boton.Picture = Picture["imagenes/an" & CStr(i) & ".gif"] + botones_foticos.Add(boton) + Next + ' botones_foticos.Add(fotos.Button1) + ' botones_foticos.Add(fotos.Button2) + ' botones_foticos.Add(fotos.Button3) + ' botones_foticos.Add(fotos.Button4) + ' botones_foticos.Add(fotos.Button5) + ' botones_foticos.Add(fotos.Button6) + ' botones_foticos.Add(fotos.Button7) + ' botones_foticos.Add(fotos.Button8) + ' botones_foticos.Add(fotos.Button9) + ' botones_foticos.Add(fotos.Button10) + ' botones_foticos.Add(fotos.Button11) + ' botones_foticos.Add(fotos.Button12) + ' botones_foticos.Add(fotos.Button13) + ' botones_foticos.Add(fotos.Button14) + ' botones_foticos.Add(fotos.Button15) + ' botones_foticos.Add(fotos.Button16) + ' botones_foticos.Add(fotos.Button17) + ' botones_foticos.Add(fotos.Button18) + ' botones_foticos.Add(fotos.Button19) + ' botones_foticos.Add(fotos.Button20) + ' botones_foticos.Add(fotos.Button21) + ' botones_foticos.Add(fotos.Button22) + ' botones_foticos.Add(fotos.Button23) + ' botones_foticos.Add(fotos.Button24) + ' botones_foticos.Add(fotos.Button25) + ' botones_foticos.Add(fotos.Button26) + ' botones_foticos.Add(fotos.Button27) + ' botones_foticos.Add(fotos.Button28) + ' botones_foticos.Add(fotos.Button29) + ' botones_foticos.Add(fotos.Button30) + ' botones_foticos.Add(fotos.Button31) + ' botones_foticos.Add(fotos.Button32) + ' botones_foticos.Add(fotos.Button33) + ' botones_foticos.Add(fotos.Button34) + ' botones_foticos.Add(fotos.Button35) + ' botones_foticos.Add(fotos.Button36) + ' botones_foticos.Add(fotos.Button37) + ' botones_foticos.Add(fotos.Button38) + ' botones_foticos.Add(fotos.Button39) + ' botones_foticos.Add(fotos.Button40) +'Pensaba permitir al usuario normal el cambio de las imagenes de los +'botoncitos pero, parece mejor que el usuario que quiera modificar estos +'dibujos, lo haga en el proyecto fuente +'....................................................................... +'Maybe is possible permit to user manipulate the images, but for now it is +'done only by code +tam_tablero = 4 +funciones.distrib(tam_tablero, 45) + +End + +Public Sub grupobotones_Click() + + Dim jugada_valida As Boolean + Dim continuar As Boolean + + 'message(LAST.tag) + + continuar = True + 'Se verifica si el tablero acepta jugadas, es decir si el juego esta en curso + '............................................................................ + 'Verify if board is active for game + If habilitar = True Then + 'Antes que nada se comprueba que el boton pulsado no se haya jugado antes + 'utilizo el atributo btnInicial.picture porque resulta sencillo comparar de esta forma si el cuadrito ya no tiene + 'el dibujo del signo de interrogacion + '............................................................................ + 'Comprobe is current pushed button haven't been discovered. + If (Last.picture <> initialPicture) Then + 'Ojo, si el boton pulsado ya habia sido descubierto durante el primer movimiento de esta jugada + '............................................................................................... + 'Inhabilite the movement for a button when it have been discovered. + continuar = False + message(("Jugada Errada")) + End If + + If continuar Then + sonar(1) + + Last.picture = botones_foticos[funciones.devolver_indice_defotico(Last.tag)].picture + If funciones.num_movimiento_actual = 1 Then 'Se esta haciendo el segundo movimiento de una jugada + + 'Se debe comparar la imagen, para saber si hubo coincidencia + '............................................................ + 'Compare the imagen for stablish if movement is correct + jugada_valida = funciones.comparar_botones_jugados(anterior_boton_jugado, Last.tag) + + 'Se aumenta el contador de jugadas (cada jugada corresponde a 2 movimientos), se actualiza el label + '.................................................................................................. + 'Increase the play counter (each turne have two movements), label is refresh + funciones.jugadas = funciones.jugadas + 1 + lblJugadas.Caption = funciones.jugadas + + If jugada_valida Then + sonar(2) + 'depuracion + 'ME.botones[LAST.tag].enabled=FALSE + 'ME.botones[anterior_boton_jugado].enabled=FALSE + + funciones.aciertos = funciones.aciertos + 1 'El jugador tuvo un acierto mas (player have acerted) + 'se verifica si el numero de aciertos indica el fin del juego, en todo caso el numero de aciertos para + 'finalizar el juego debe ser igual a pow(tam_tablero,2)/2, por ejemplo si el jugador escogio el nivel + 'experto, el tamaño del tablero sera de 8*8, entonces los aciertos necesarios para finalizar el juego son: + '64/2=32 + '................................................................................................... + 'Verify numbers of acerts, for stablish the game end, for end the game acerts maybe be equal to + 'pow(tam_tablero,2)/2 + If funciones.aciertos = tam_tablero * tam_tablero / 2 Then + timer2.Enabled = False 'se termina el conteo de tiempo + message.Info(("Felicitaciones, has cumplido la mision")) + End If + Else + habilitar = False + boton_actual_paratimer = Last.tag + boton_ultimo_paratimer = anterior_boton_jugado + timer1.enabled = True + End If + End If + funciones.num_movimiento_actual = funciones.num_movimiento_actual + 1 'Se ha hecho un movimiento + 'message(ultimo_boton_jugado) + anterior_boton_jugado = Last.tag + If funciones.num_movimiento_actual = 2 Then + funciones.num_movimiento_actual = 0 'Si se hizo el segundo movimiento, se reinicia el turno + End If + End If + End If + +End + + +Public Sub mnuConfiguracionSalir_Click() + Me.Close +End + + +Public Sub mnuConfiguracionNuevoJuego_Click() + Dim tam_botones As Integer 'para seleccionar el tamaño adecuado del boton de acuerdo al nivel de juego escogido + 'Choose the board size + + If tam_tablero = 8 Then + tam_botones = 40 + Else + tam_botones = 45 + End If + funciones.distrib(tam_tablero, tam_botones) + +End + + +Public Sub grupobotones_KeyPress() + + If key.code = key.f4 Then + habilitar = True + timer2.Enabled = True + label5.caption = ("PULSE F2 PARA REPARTIR DE NUEVO") + End If + + + +End + +Public Sub Timer1_Timer() + + + timer1.Enabled = False + botones[boton_ultimo_paratimer].picture = initialPicture + botones[boton_actual_paratimer].picture = initialPicture + 'ME.Label5.Caption="anterior: " & anterior_boton_jugado & " ultimo: " & ultimo_boton_jugado + 'message("hola") + habilitar = True + +End + +'Habilita o deshabilita el menu sonido, esto permite posteriormente en el procedimiento sonar, escoger si se emiten o no +'los sonidos +'................................................................................................ +'Activate or desactivate the sound in menu Configuration. +Public Sub mnuConfiguracionSonido_Click() + mnuConfiguracionSonido.Checked = Not mnuConfiguracionSonido.Checked +End + +'Para emitir los sonidos, si el menu Sonido no esta checkeado, se omite el sonidito +'.................................................................................. +'Play sound only if Sound configuration menu is checked +Public Sub sonar(evento As Integer) + + If mnuConfiguracionSonido.Checked Then + If evento = 1 Then + sonido.Play() + End If + + If evento = 2 Then + aplauso.Play() + End If + End If + +End + + +Public Sub Timer2_Timer() + 'Este timer sirve para llevar la cuenta del tiempo de juego + '.......................................................... + 'This timer count the game time + funciones.tiempo = funciones.tiempo + 1 + lblTiempo.Caption = funciones.tiempo +End + +Public Sub nivel_Click() + + Last.checked = Not Last.checked + If Last.tag = "p" Then + 'message ("Has escogido el nivel Principiante") + mnuConfigNivelExp.Checked = False + mnuConfigNivelMedio.Checked = False + tam_tablero = 4 + funciones.distrib(tam_tablero, 45) + End If + + If Last.tag = "m" Then + mnuConfigNivelExp.Checked = False + mnuConfigNivelPrinci.Checked = False + 'message ("Has escogido el nivel Medio") + tam_tablero = 6 + funciones.distrib(tam_tablero, 45) + End If + + If Last.tag = "e" Then + mnuConfigNivelPrinci.Checked = False + mnuConfigNivelMedio.Checked = False + 'message ("Has escogido el nivel Experto, suerte jugadorazo!") + tam_tablero = 8 + funciones.distrib(tam_tablero, 40) + End If + + + +End + +Public Sub mnuAyudaAcerca_Click() + frmAcerca.ShowModal + +End + +Public Sub mnuAyudaInstr_Click() + + frmInstrucciones.ShowModal + +End + + + +' PUBLIC SUB mnuConfigIdiomaEspanol_Click() +' 'Cambiar el idioma +' '.................. +' 'Set the language +' language = "espanol" +' mnuConfigIdiomaEnglish.Checked = FALSE +' mnuConfigIdiomaEspanol.Checked = NOT mnuConfigIdiomaEspanol.Checked +' 'File.Save("language.txt","espanol") +' +' set_enviroment_language +' +' END +' +' PUBLIC SUB mnuConfigIdiomaEnglish_Click() +' 'Cambiar el idioma +' '.................. +' 'Set the language +' language = "english" +' mnuConfigIdiomaEspanol.Checked = FALSE +' mnuConfigIdiomaEnglish.Checked = NOT mnuConfigIdiomaEnglish.Checked +' 'File.Save("language.txt","espanol") +' set_enviroment_language +' +' END + +Public Sub Initialize() + + 'El timer del contador de segundos ha de estar en ceros + '...................................................... + 'Restore the time game timer + Timer2.Enabled = False + + 'Se inicializan los labels de conteo del juego + '............................................. + 'Initialize labels + lblJugadas.Caption = 0 + lblTiempo.Caption = 0 + 'Se actualiza el mensaje en la barra de estado + '.............................................. + 'Change message in status bar + Label5.caption = ("PULSE F4 PARA COMENZAR LA MISION") + + habilitar = False 'El jugador no puede descubrir las fichas hasta que pulse F4 + '......................................................... + 'Enable game only when player press F4 + +End diff --git a/app/examples/Games/Concent/.src/principal.form b/app/examples/Games/Concent/.src/principal.form new file mode 100644 index 00000000..5156d342 --- /dev/null +++ b/app/examples/Games/Concent/.src/principal.form @@ -0,0 +1,220 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(58.7143,5,49,70) + Mouse = Mouse.Pointing + Text = ("Enjoy Open Source!") + Picture = Picture["imagenes/tierra3.jpg"] + Resizable = False + { mnuConfiguracion Menu + Text = ("&Configuración") + { mnuConfiguracionNuevoJuego Menu + Text = ("&Nuevo Juego") + Shortcut = "F2" + } + { mnuConfiguracionMejorPuntaje Menu + Text = ("&Mejores Puntajes") + Enabled = False + Shortcut = "F3" + } + { mnuConfiguracionNivel Menu + Text = ("Nivel") + { mnuConfigNivelPrinci Menu nivel + Name = "mnuConfigNivelPrinci" + Text = ("&Principiante") + Checked = True + Tag = "p" + Shortcut = "Ctrl+Alt+P" + } + { mnuConfigNivelMedio Menu nivel + Name = "mnuConfigNivelMedio" + Text = ("M&edio") + Tag = "m" + Shortcut = "Ctrl+Alt+M" + } + { mnuConfigNivelExp Menu nivel + Name = "mnuConfigNivelExp" + Text = ("E&xperto") + Tag = "e" + Shortcut = "Ctrl+Alt+X" + } + } + { mnuConfiguracionSonido Menu + Text = ("&Sonido") + Checked = True + Shortcut = "Ctrl+Alt+R" + } + { mnuSep Menu + Tag = "-" + } + { mnuConfiguracionSalir Menu + Text = ("&Salir") + } + } + { mnuAyuda Menu + Text = ("&Ayuda") + { mnuAyudaAcerca Menu + Text = ("A&cerca de") + } + { mnuAyudaInstr Menu + Text = ("&Instrucciones") + } + } + { Menu1 Menu + } + { Button49 Button grupobotones + Name = "Button49" + MoveScaled(2,67.1429,6.1429,6.1429) + Visible = False + Tag = "48" + Picture = Picture["imagenes/inter.jpg"] + } + { Button50 Button grupobotones + Name = "Button50" + MoveScaled(9,67.1429,6.1429,6.1429) + Visible = False + Tag = "49" + Picture = Picture["imagenes/inter.jpg"] + } + { Button51 Button grupobotones + Name = "Button51" + MoveScaled(16,67.1429,6.1429,6.1429) + Visible = False + Tag = "50" + Picture = Picture["imagenes/inter.jpg"] + } + { Button52 Button grupobotones + Name = "Button52" + MoveScaled(22.7143,67.1429,6.1429,6.1429) + Visible = False + Tag = "51" + Picture = Picture["imagenes/inter.jpg"] + } + { Button53 Button grupobotones + Name = "Button53" + MoveScaled(29.7143,67.1429,6.1429,6.1429) + Visible = False + Tag = "52" + Picture = Picture["imagenes/inter.jpg"] + } + { Button54 Button grupobotones + Name = "Button54" + MoveScaled(36.1429,67.1429,6.1429,6.1429) + Visible = False + Tag = "53" + Picture = Picture["imagenes/inter.jpg"] + } + { Button55 Button grupobotones + Name = "Button55" + MoveScaled(2,74,6.1429,6.1429) + Visible = False + Tag = "54" + Picture = Picture["imagenes/inter.jpg"] + } + { Button56 Button grupobotones + Name = "Button56" + MoveScaled(9,74,6.1429,6.1429) + Visible = False + Tag = "55" + Picture = Picture["imagenes/inter.jpg"] + } + { Button57 Button grupobotones + Name = "Button57" + MoveScaled(16,74,6.1429,6.1429) + Visible = False + Tag = "56" + Picture = Picture["imagenes/inter.jpg"] + } + { Button58 Button grupobotones + Name = "Button58" + MoveScaled(22.7143,74,6.1429,6.1429) + Visible = False + Tag = "57" + Picture = Picture["imagenes/inter.jpg"] + } + { Button59 Button grupobotones + Name = "Button59" + MoveScaled(29.7143,74,6.1429,6.1429) + Visible = False + Tag = "58" + Picture = Picture["imagenes/inter.jpg"] + } + { Button60 Button grupobotones + Name = "Button60" + MoveScaled(36.1429,74,6.1429,6.1429) + Visible = False + Tag = "59" + Picture = Picture["imagenes/inter.jpg"] + } + { Button61 Button grupobotones + Name = "Button61" + MoveScaled(2,81,6.1429,6.1429) + Visible = False + Tag = "60" + Picture = Picture["imagenes/inter.jpg"] + } + { Button62 Button grupobotones + Name = "Button62" + MoveScaled(9,81,6.1429,6.1429) + Visible = False + Tag = "61" + Picture = Picture["imagenes/inter.jpg"] + } + { Button63 Button grupobotones + Name = "Button63" + MoveScaled(16,81,6.1429,6.1429) + Visible = False + Tag = "62" + Picture = Picture["imagenes/inter.jpg"] + } + { Button64 Button grupobotones + Name = "Button64" + MoveScaled(22.7143,81,6.1429,6.1429) + Visible = False + Tag = "63" + Picture = Picture["imagenes/inter.jpg"] + } + { Label1 Label + MoveScaled(1,1,12.1429,3.1429) + Background = &H000000& + Foreground = &HFFFFFF& + Text = ("Jugadas: ") + Alignment = Align.Left + } + { Label2 Label + MoveScaled(1,4.1429,12.1429,3.1429) + Background = &H000000& + Foreground = &HFFFFFF& + Text = ("Tiempo: ") + } + { Label5 Label + MoveScaled(0,61,49,5) + Font = Font["10"] + Background = &H000000& + Foreground = &HFFFFFF& + Padding = 8 + Text = ("PULSE F4 PARA COMENZAR LA MISION") + Alignment = Align.Left + } + { Timer1 #Timer + #MoveScaled(9,19) + Delay = 500 + } + { Timer2 #Timer + #MoveScaled(24,18) + } + { lblTiempo Label + MoveScaled(12.1429,4.1429,4.1429,3.1429) + Background = &H000000& + Foreground = &HFFFFFF& + Text = ("0") + Alignment = Align.Right + } + { lblJugadas Label + MoveScaled(12.1429,1,4.1429,3.1429) + Background = &H000000& + Foreground = &HFFFFFF& + Text = ("0") + Alignment = Align.Right + } +} diff --git a/app/examples/Games/Concent/Blockhit.wav b/app/examples/Games/Concent/Blockhit.wav new file mode 100644 index 0000000000000000000000000000000000000000..e4b4834a8ffae709a298b1c951a845f2e1a9bfca GIT binary patch literal 1148 zcmW-hNsDDQ9K~OQ3l}c*8`Q#`(5O3?qFqoT3U;IG(xS2Lx*03Oox)A-kQ*}I_lmOn z+nO>V$$xS9<#00mc5{9G@X6`)$M?U#dfPl)eSSKfUex}@SEv8Si_@p4x3_;iOHQBF z>F)O7_IcG9J$+1v@#+X{_!y$S=drH zLrv&r6XCua&|;1`20=+!xl(DAKtQwxi+f`X>}_x{N!a>9N$FQY5d=Cbyr{)Mtq&a) z3|z!93Ge;=y$)mx_v3;r>M`j{vZ#>OySG|{Cy|yI=B_BWxq0>X4U}=FiCrXh zS@0tJloDQhw`f|HWRGKr1ID-vlyc7lqapKjmijP^isQ(B-Pb@DJEJ~AuVRD%LXSP| zgr!Hp!309*lA{bFCPo4QR>LVo42Ks;yGp&8|zupeT8CX#?%y-A@a-)s<~ z#3oF0SG^`)T0$ASoJA=a?9UKA)j%g)e zNL8+L#tBs!i-Pg9H;2rm1Ty8yN7SnH%tqdc#zEltglt9-w>j0Y5T 0.0-3 +- Correccion de bugs, se añade temporizador + +* Wed Jun 29 2005 Jairo Alonso Badillo Bedoya 0.0-3 +-Versión Inicial + diff --git a/app/examples/Games/Concent/Missed.wav b/app/examples/Games/Concent/Missed.wav new file mode 100644 index 0000000000000000000000000000000000000000..9235541ecdd572be9434e15367a828e66f7f3c7c GIT binary patch literal 15612 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 b|MKg?&cFQKUq=7QZ~lUjKiT*H_XqzMIE7Em literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/Newlevel.wav b/app/examples/Games/Concent/Newlevel.wav new file mode 100644 index 0000000000000000000000000000000000000000..7db791b441d037648f96cdb810c4a480846f0b78 GIT binary patch literal 19842 zcmeHud2kz7nxD6_sY-3_R(3a=%$~D5hdtwKblW;8*_1^c6a^ii1RW6BJep(^Km%wT z4WMx}fX2}P8X%e=cz_giKoTqqvMI@s1s$*i9h6MlqHXzJ&y07yvolk(nbangq$-uk z?}75}CfTa|nN(_8cB7AXeD6Dc-|?Dzwr$?*+40z8y4HPd119@l{O)6qJ@y;;_j^x2 z*8KlB9{X314fOQce-qEQpN^R#lm27>;N3dR8fwRFP#E z7HwFZ@LWJl)AW5=H-iRD83XD!iF|=M!GnAfDs`auWVnR_6c(&PoaVAd2JSxwE zn7qVN6vHw&aUfJsR9TP;<)TbhM(Zh1K;t#dN`+Eh#y|r4$Q*?kNFUOXQ;G#yl=9_r zUTn@n+LK=3hmuz%LClwn67y&*yka?Ckc*XaUXf+=Aj`lS^%N`0SW3NC;si262=U9uV$egZS zOM^!&MT@0sMHPrp@Qwwk;GL?93?r9{f=0*736%eRLsl5qvhj=(t}b#DORvpsktJCg&y!k9<*ME@eAcjxqvPhscrR= z)$MGd@x@;)R3v?COPdZNp){>+S}tFmo3B^$0;AWowX9y9Cke zty)&dkWh7j)wN+goRWt`AU96R7oisryN)I^stTG=Sah3~k&ClXaxj6&AA{*>s5@wa z;;^DxAR@&CP~k<15DhC8R1mLiZ`VFz8KjQ+D5*04#i#W=-MZwd7F~1cU^`iuEJ-35 z0b|3M`BJ&0@(@@{o0cNV51WG zTdSy?wxvZwbDW@58V^5RC^Jv}>py&I$rDSc;@raA+(KP$`@=tLY3hz513Cm)A(R>x zlvi;`98tw4GzgW4^LbjM)oCFrmXl}aW(BR5W@(Dg7gYjN96?TkyD&?vQIsHAV!gad zz=(h(v6^lrS;OTCE~et*cuhZK>3lugYkp)9JZFt*THO9SuopDFG%uR}pnhWm&v|&7%)g znJrWS0Hh_a))wk24GMI6KnY)LG>WW7LpO;87^<9J&jIxz^d^u~tXwLq9M;VOX3>hM zyg=*pFgAke;0LYM38gAomQD}u(emv4e1+Gv65A`(>qWpQoCi7+j{_TFz!!7`xBvwh zxwG* zqh$b%bq>7MD^L>Q>kHCIFXM?sT9XTzTu8W33HT`J#kOg5Y_VFeV7BHQWHL$xOBu|? z;Z2#~B_33%M}0YT;ejTkB~z%@i<-p-ggP?atRBDwJ1pTjA(qTVrVv3XU#ix~lvqub zYSR#U^LUNN2t9cB^$!G9f#N}O5*$?lW49CG z9_JZ6R^{enfh+R7%Bq5(vU$W*k4^wbF3-sl zmuC^V=2=xFr)DET#y<%T4F5^whF6;ZR8Hl|zvdlzPMVOWg;E+T;2(AH;u=HjqPOu&ai5?J` zBLIey4Y!c-cKM!jBF zSFdPkZEbDC0Y#`c=H}<-8!$ECIr;*p;F?H0CN?Jp*dekY4y-u$@L?XPj{$LzTtKKa z<{wr8vLJ{MM|?i%Epm$(ClG`K#sMvB@R}rh0JJfTGTWG&Yn0ks+ch|}l!ExM(IC{4 z(Ghh}@b>cy3k`UaM+fkb6KCfhmJnwX|Br(~tO1(lMdBS;cv_mmx~mKce+e5f4B^E5 z0yr_p5hy2(NU!F?;E+HK+KA=)Tw@Nbp%4(YE2O6O`TdmdV^+L;v z<~=dZCWm2wgb|P`Sw4;?bdymFVCHNI ztrGqb{e{zP5V=WYp@hZczOK^{dPrX!=t6$f+Wf-9hYK9Zj`Yn}h$x6QHY3o={6kpB0UmOaWh5_a|1RsmCgpxuBK@?W9u&^M3{dx)^LJb{Al8Mp4B6*f4 zZ5V|#nkNnq(NMWYh9T_M!54r>N|QsxH_pw;5W8MaJO#uFp=pWNXf$Tws1})6Z@}+0 z1zT(6b#Q?glg7g56o{9i^HmI(M@#{Oq2)@wK#aPn1r>dhMg$u3^L2`ZLb3=2YFZML zuR#s9tr(3hL2PweO9YAtrcy?vL;wV`Z>ohLs`ZB@A`XsN2rdX3AkdlT2@8>aHH{4H zD>fFuFrW`2JJ=e8!WQcYL`Y-+7;h|;iT%OQ9>u2wP6(PHf+gTU#3RCVXGvZP$rS4% z=E8+omWX~5Wh4~wB$<(c6%Do>>?J5s2d94>>ijy?`E{uCe=*d7Lx(N@<4Gu}3W|gT zzR7`K1VBh-n?Q-c2gjnb0rUbs@c^M$^S~8ek}U91=VrKoF;KKbV6@m1g#{9qu&gvY zS7RyS=m~-p8wx2flHf!{6{0yL>NFS$sUoQ0Nl2B}pA-NzB6L&yhg6Ax!!2c1DWeHHi{Sqc{KuEESN&;plNi!oAo0Ac`=jRdR zH|Zwa2MYk0O~w*n<>e|N88sX9LsVCI6xtRiHzN;+w2S#vtN382%6K;L!x3JYPUOiUlI-fG9<{D7MM! znv7%>b&U!fIZ18##q1OrFbNH63~sSp0d@0#_^I*DyZ`N{nIh9|B%MVvNwRaSANoep zSg}IVU`#-AZZybi+L4&f>f5zarOJSUa!qI^u?i|)#VTS3r~&DSM(BYAA33g6Y38KJ zCP_}Zn5rVFC6CEym=u|@tkH0#S-Ks0WitsaAxSOOSd!x6UaFM!c)xg$tQPFmYxpv< zT%n9%rAk4EOmZ<()nam4i%eA_Cy}J90#3+H1>~lBa>1ALNM%t~;mZYb!D%_c~5=9pkJ#tQ+ zj1;zz*K=i2CzV+$U!<6lte26emRP1J=v7rO7Lmj9R9@CgNNf=q6-2$F>V+c16!BQ0 z6lALcQ{dPF3<{wVEvl4^$5Qh#&lWiHxWI^c8exyhp#H2fiomOkio6adlCVMvaguOi z7ZX zlA`_NshRIB-Zzss@&>KQ|BL75)z@8`FNqcZPZz{&h@BzEe)wq_=*A+he)zD#AU7o8 z;=_jmV1VQm3lC9tAgLqbX2=$y{VY;F)ZeJZnj1j^)OCLy^!>WN_3Qdp@&BFr7O8?Q zBE{G6(8LIW4b7d1e>^?9|2oDaSn+>2L_h~$ntS-Eg7`|Boqsro!UzlJ{SZ*X;LXBA z2}prA3w4xtnh}`<6hS~ZPcVcpH&6w~15{-YUg=TwLHQkl4pQO<{28+DI?C}{k}cP0 z{32o?1!DNkI;j_vSOPU__?BvoUMwz?k~J!3By1#a;i!q@Eg{2gy6?q0wu;>rWa7=A z*{^@#Y4s=H?TsF$j@VF(EnpNV<$;{{pa?k}% zSJI%QTqTY2q>c>#h^FX(xj-D+h?Oc$JU1%WcntFJSkREi4Dr_}RZA6g#Bv|`Z`{LQ zv!xnGYST^sU7_Gj;fish;eBz-mr-~YNa0zmphPXr!lyT@&&sSyd^(S|B|RPqTBZaC zEzgRmJy$3=eo0FgE3{UemA@`RH~qDaD}U{;i^Qp;>Re$k5{oW8s?H*+&N3Q_h;vxI z3KtFM-7G1WXu5#9a~XB#GDGDT>&}P-C{?AzB6do6x*$_>fo^(pky1(3x%n7wTP{Ll z7K_m`ofnycz!s5Du#28rM%fvUQFg{-l$}|=*sMn985KLakNh=@-MfF{uUQpN9jAY& zLZiMx%;leT*o*b%M?M`^f{z9s`Dj$&zV_e$Y>oNXHu!5B{Qt`a%@!+bWUV%*!{Kl` z?B-!+XlRIaxc#w_$rDG9Oi$q`OiqlACPE(0Vm1!bJ>6aVG&^?e>g?>?y>r*@^-uo0 z-~8P_dt&MHFKph?sqbZM{`8U4v$b3I-g)r;!;e1t=!1o~@4x%-qfZ|`xOekX<=9xv z!`t0~cs8TNrARcTj--`TDiy^1LNFqaj2DWNImvFM4OWLo@C8Ca(PKCEAKb0ocZllk z@2C6w28~vy6SUeLZeLhVq>{;$q9}=&6b$&i9;b~R?$ht@+`F%H&o0egeZSG-uyHKb zHPFAmV{_~3rH}u~H~!#HzVqbL=UQ4fZ{NMYd%)xrv&YYzzgWF|?K<-ITleP)?H_;q z$wwc)ed|X3>gCI|>V-=A*i;U*%F&n{i^?g<=LQL!g*6T{%rH%Lcl8eR_YJXT%YeRf z$1d&u!&D!2Slhm1x2~(3GP+{>IC@CzF2YpT*(w`ut*8ibSHZ zxSU8T=@E4-KT#;2t-Vn_JrQ>g?rncz!}`rT_w3t$@Gv!GwOAaGw4uMJYs=DgoA=UI zUo1OazV`l)fBEyDeDUEscW+#&o zx9{GpUp+gM0+q3mtU8(-gB-{6W4TdvB%`Dfax4-K`91z{z{~bPOZ$5%dU$AXaA?>_ zckNjJ;->c9TVGiE?Wb03*tYv%pUL4%PQCoboew_!(GS1)?2`{aSa^5-{@vR*u3x@b zIb9r&;me+b`}I9Nz1@co?Ax=mV_VzC*4A~ami^$Fr=R@(6W{&LcfRx8$DjEAQ$JX- zdi|!3&cg#1A$siU&3pIXTKMRb&;Rm^&p-Y6!-pTdxA5TIdyPx4T)0|$qcoCEWkyGH zqoZRJlQ3vP`qz}FGVvhsl);ebXJFGk=8mTx|JIX)E34OSXl-lXrRy3%xn}C(<@)7| zXG_JYaf~yX%Z;g-sLyHfr;f~?zi{Q&wM!>+i6E=*Xj#4L`8BQEwzao!$I;Qzu|q?w z;n2bTSWDZw)-8KLu{%66bL`}spa0@lzxvhR|Kzg=_ZrvUc=h!0nHblzdp|X7=RJZ~ z5Ii2Yi|3oRZg=9!GHim}{oz>)rwQguxyJq9|JqM`) zlfxfRWshHY|L=eCllQLAo-AbJq7(YQ;`hI^YE$RoLDuP$6!2j7?XUj(mv>*AO8V?Z z-AhmZn?L%CC&AMfT3>40ymkA|9UZ1LyL0ExLxTp`NF*C}hSDdm)*Cl(zFB|wM}Pav zzkKV~^)vbLiP4O+Yum~fp;HuWtEY#ex)%?spD~z>#=%}oK$*@d5q~5#QK~IGcu*^) z?EBYm*}ZM!3+s0rW)mM(GlHaZQ?$Va+hx&|G-Wvo^PD~bR zpZxe|caCR#y5&!P>zU`e*3q-xpaMdXZH}wXCu?~FTecq zLH+etP6AQW@qp9LZU64l^_>PjJpKCBTW_2_Iwt$6mzIC)*)?1Cb>X8|Atb|wP9A^j zKmONW{ruzG7mlU{rdO}s-uA+#ZM$^Tu*qt7vHkmZ?C)pYQbrwn<>tqK_wRrC@r`rS zNx@;+@H>C{^oBiM2D>jhlAAnr;o*Pz#g})_PDBFk9p8F-RXb(&hhq6tb3a?SJS|#! zwl4j{$A0S%zP)tK#%+(}oqP4xr*qJupxJD31(W&W%db{XjwOS|>o;z_Hk0(&jBVfi z_7f{!Y~R~8WH1j8=(PuXj3@`@iYLl%|NVddZ-29JWA@Z^Hs-Y++_d65Pc3WNxV)=1vp*H6TkP(r&p|dVbkVq+u;%P1ASEAfI}KPef-FY z@|Ab*-MVmMJS95J!|hLf_nXVw_70d`W9MJ3oH`m~l}fC~H+kcyU;X&nq?(lD`@g?x zqt57wk4zjb-}~9me*X5WQxTV;?av>7diCZ#-6n4!JP6M)U=HO^yjHvY>SWkNX`lWV zzxDgy!x|Y_(6RZ2k8Zp&3Ut!z%<-8E_kQ@^oyLvRiv5uM#_JdEel~yo^oZm-yzx8# z@{fM7W>fpFUAqtV+a;53%kx_g(404x9J%(hpZxXw>nBwI@UX!ZJ$dWmNmU%&x%Bs+ z-n8Fj^W@H5f9LkqVo3jdOY80)d;HX`x8AE)6n58&)f+V3j^xQV@62C48|&Nr)bnlo z27S58-Ft7namu&%#i!S{A2dXdRp;+EDihZB^~+j!4|tIkzFnUkb!eBZTHDbrOq_!k zJ|5}Wux8bk1C}@n{r75TgzWjTsyzcWF^X6$q|IG6nI|s;G-aMZ%bv(U(7cI=Z`6ei$maW@- z$dWyO<<_~$;dLz=cJ=wjXWyz{PzF1ey|mX5I&u5PwSs%^@{M~8k(0OUwMlp9lJy;w zU7fvh`}|Sknl)>8P;T`#NGG`Yh1GjZne$g}zgD1^u6b#{NjZ1r-W#XQ!1*x!a|%?wOX3p~#tc@7BkR z9nZe7+YmkT?%a(j`_8A=?;HYG=WZ2+&S%%}Fr{C8aOaxRwPo2xtv!EX;dV{jvSC$w zceHZ-!G(MeMzQ272m>OT7ng7AiJiMPf9d$plIPYR@*HX0x^q0B{r>8$z24%@+xK2k z4m|$cmVxLQNILk!+EoX9M{nJ}d)&7hPrDq`x8~+&*p1)VCRm5^@S?WwZ=%xIE}lI% zYyQEqm4`yp)hjoSh4y@V&2CGkaQgCmdUwnB4(G=5r!OB*>7Uu8Pu4D;d*x+z<;s-@ z0{L?nYe%EI{&?Nt*!dCj#LdvgtvjFXnX&#hRx$6o&Y-X&Sz`oy|jnRn)H&bW6zzWhb;&0BNl#`NEPatT|h zFVso{Pd@!@f8o*xb61_qo_+FA`us<4z3E@S?1?>r%IEV}0~=R9vBQ4yqx;u|H7l3y zG#~q5{&u{h<=M?te*Ueua))1fvaNS~{@$IDLz{lkrXRU|_uj-%`!j7_qxe2$(y;yM zw(i`$d-wAFTc6oBFn;guoveQI()Ruw+U5JVEomRf-Mn*ujM}2x2R zyLm0NW&O%N^|g1;kI}1IUb4)*{?3KTffX&Aou@9(pAH>d{^CyW%eDD(D);n>Ub_4C~F zRcnSOsvp#j4!}YjFW>m&6~Fe$^?PDh=RY6Uwl3M)J9_(_k29OsF4=86a{ujx2-bg4 zdimX3HTw@%wb;(Q`Qe$szGpY;64&p4n8!>ScJlVzytIDxitbe9ooi>=Wot0%_4muZ zeM{P)3AZ1lJ6?p&oV<7SHEvbQCi}@N?;SDhT(P}BQ@e3bZhv9bK3MGK*SM7}n=I4S z2SA{PlaGmQ5Xcqx#0B zOWY5%Zp+a0gBgQl7)&;DKF3A*Im#-EzWSv9Hq={@TE-p9KTIpSmTl6h_5mP%!= zd!Fm$f+GoO{ETU-`CPO+Q4MT6FdRSzmV4E_ggqx6jLeEVd+f2PIG;UhUg5Z;^hIBG zZ|lO7tUPhr2z{0IC9aDbDSsd+IC2*~FNSVOZIRo-4aS0ucq~5U)T-}A*LtqFS357} z-M*lGi0&3oBG##){5gc6?NL3;A-_$J$N^ZL|hM|y+Dm}R}W z!g1N+5C%IZKF{s&l#R0J^#^XNLnhcH3}r;$+-t_Zkl7-y1vNJ!*K)eqn@lg-tqBc;=1lu+=@# zsXiDxV%@4WVGM=dWJCo@seBG&zP0)nXXzoB3GnaFvX!GC$3(bzL%l&(TnOguHQMe{AARe88PzcTM~#wVJPT zOQK(lZgrnAJj=eCwfkjGZxE(x$-{isv~Bz=WtIDyb7|-Ub(e6;y55LLPDK9C4UOMP z?y^sqH|M_0z9?L>FB9L5Z*;!m+{m9Dv3n!Tj^WtUxdfsrcK`TC>CNtnbye)s?4WcJGA4UrPf-Xl2n}(FhlhHxWZ#Xdh z!;y_V#z_5D_67SH;}0BHRmPLD>@`J;ZzQ`INAJ$5uSQ$Fmz=A@@1?eIGt4T}smYY& zb=eI-*krrwl(i-Gd2+1-=po!3>2i-5H_@?4XuB}ZZdQMoSmmj^mV57H4)Az0m?%`@ z{Z84mC;wRnmSKG^{#m-!amKn@sE?baN$a+uxH=si1GYhNGLHPSZ?hqrip^Yz=(u#i>QAw| zhXU%UNyXXSO+}GOO7;UA22n9QRFt z(^8MwpE)))8h|&m=GDwd*1W^4P98gY)V6uQ!3$fA8|iM(SPoh1@D6)nJeNr_pfELa z^n`f07Zi=D?w&(?ZEB%({Fn!SToleEBJ6%@$Uio7D&sbG+Y=e&w!`}zsMCyQ%sXkX zQXJ2?`=~D8%<=L>+#4Hl;~nohV-s0mKwvJnrnpG9pg6>$zZLYbKni9OIw z3!p8ZV=y@u_Zs!qXzs+3$pAiyvc}|OkT>>tM#q7EHfqQc z0wr#f$s|pWNN(7iBRyFf4O^)Jqck&?4mvDG5iK0ZD~0hBujYNUri)FMPoGNJy0&$r zk|jmGws3CdbUtF*cc{lZQ8<#7O#6mBVhr_5Zz!G_#~)A~ppcJE%&2i5SUr-H{pOxQ zlOI(fFYofi^Eox*G9uFs!@k2PBl^OE-Qje5lT%~apmnHw&>R|5N92%~4=J&b;INtm zIhmF`HWSCkCo>U`nL#EgXL9g4(P+?XM#Yi$k3tG=)M?G3csc>3kD{a|8v73RFw)WK zi8Q$ENMv$Klbqi0(c^v(gL_Xro;S=U-0a-sg?yk|Fcq!(Ci#=Hl@Yzp)QKGCLASWwYNLJu+QT z6Wl?@CCaHx$iWU7ElzJ3_EIcQ$f9eY^AJXLqW+PenK_aXEvWl)s97e!8(&b0i*BzN zLM_lfNcTIU6R(_@mYoAS8s07{*=e&UF;$pW0+!xk&Kpf;11#s{-4Qj3x@W*`N2K9$ z_+!zCpZ7Nlp#nS9%Y`JA;=?8uRlX7YnV>*-AtOzqgcpI&5ppA`Sjf;h;EGR7Oh)a7 zJ~JdUnsW7H-Ms_0pn}#id`d9j;>@V-Cvq{5!|D!YrYFa}y}jU33bh`e%Zi9C%sXtJP$WKe zHf6H8P2jia4@IR=EG2^`Cv+=}NK%wNFaf_i5Rs$+zD>iokr58HWY5Uh)F?dKfKAGe zPo^bXuh|zwY-Jhnq*c_1eS?hAtH@EoVloKHw3<-@oQPe7AWwI84+kfw3i+%sU=M}D zKHiFbnCSGlnn?);&f~>iMlc=@L{c8cjL0}XnUzD}x&ye8z#akHZ-W7+(>{~M=8a?! zvGW5113Vx<8L;#WnIqFP#VqI<78r;yD{HY;`*;=ppj%sE|xo41+$sDDk4 z1yI*wg{T^bR6SmKT#=lpUV2fn%t_WRs?Q!tWb#K+sHAxv9wA;CIm10TX330fAZrGp5XX2Lq`}f5n>5xeUM>6i^XPi?AqbpH=ij!{k&{%$|@@mu3zcd zBPS-2`LXaaan$uJ*op{FPtT02LjMr-I1&r_?ZX1}QdR<1&K5|8++v&`bcCbWMvEo9 ztUnz_l;uaR>6JWI31A(Aw{n61Hbh%83epbR4u2T(hGfAMo=gRTlHcV4PuxRhr$ghT_7Vg%GVdhJoaGk`S;$oV2znUA%5+-?Ee0uuHH+=%lt zYQ*hwnR-2H61%2ej)%X%Kv|!$+mCY8R^M0e=*lYUf=*5efUcl9~XAJ&+L(JdR@> zC{{x@e$h@wK&+66x(qzDM}j}Ja4y*X$b@8d!K#DFC~(3B9Z8KvoHi&$0Q+yi%Wyax zSCX=8(47>)ArCe$Vq}FxmweGo98rbO=u1buUIME_0`w#^9kbbNF25f%_!!paM%_O> zB49H$7+28Of~s#Mnw<_08;l-&_dYW2Ic)HVu#kAz2K18^6;{CZTm62&3~B&Q{$M0E z>L0dZ?=t|*3)*?X>rad)5j7jkd|>2wF6PI!I*(`}fIVCM5l$uwf6E1e;bbmkF`He$ z&qPMFy1>~ec6`hO&R8OyM)YK5oXw2Lhv?58jVDI(At0*{e3pV-zXetYocCKnO(>ck z51WmQ4SV4u<6*Kt20oAo#10>(q{G;=u}2UbjfjweZzLsW^8NuM)*r@BHcxYqMkX&K z({=(w64>)$5HDm9ule9bJeXU_x_~HtQ65c2or8AdGWg?4CyVjJ(#TBQW;NS^9?EC{ zdr`b6g8fm#6E}Q`9JFDz0r>hj_Lm*7#kd**<|B-Q7IHx2ketq?Wp}f^l!mgx3d69T z5Hy=ZbfLgfZNR-)W<(8`%!ni+@Oggl!sCr1>h$29h~2Ru@Rtt-(K8C%_rr$=;ZbZt zFqVLngParliGEP-fZqy3YAI+W4<8|shy{9!|1{TE6iDU$OxCqsf39Q9ovLh;AyaH|DUj(t9D-eQYywDgg zur-+r7aU$y4l*ay*%k z15PWnB96S+Yvn+Pj7VNU9ve!ds-)6@A_|hce1}_8YOjeP- z7K_z~%AN$1wmO2CONP(4VqI~3e&E6%hJ-L~RN^7iFfx9`_JdY*uW-ttZ#V%-R-6AA%*LlOvhVMC#~g!sb)@C!n> z!oV!RJnSeC4ge0x3M24kJmRqcaFVz3{#Z7Rr$noK$p45wx)F)Wk)Y3oFL?aGvtZB% zES2EzgH7%B$71j+UTA9olE7-QzZk?fH{qZQxmY9}$CnnI!GVY{2D;pM8EMk)fbWQ4 zjR9nVZumF}xtP$2IPL!Z6y%U*aX33IuDY4LOf zv4j(L8i5V_eFC_KdPBgE_{!@GHP<0{d_b$H==ZuIqmUd4K{)WZA>_^I0a+m{f@FL? zIH8Ex{KmqE@xa`G2U&&>o+E^>SiFca$%jJ%x^4Bf0|j9|U~?JSSgw`SA^u7csU7bPh=Y&>sM$ z0nipAp5IXGz{p3R!A7o7E@gd)6)+-RV?90yPsH0Gu1H^8V)X(m&1%wqT|YV-XPr0%7D8 n9^QkyAk>^>WrWQlo{_5{I(Q)?pBIEeG07-i=mEy|dLR2ARhK+e literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/Paddle.wav b/app/examples/Games/Concent/Paddle.wav new file mode 100644 index 0000000000000000000000000000000000000000..38ade2780d4d1626c6a8ac84f92ff1066752393e GIT binary patch literal 1754 zcmeH{OK;;;6vsUh8nJ|Lz@8;5SRk=r1Y%}`Ak(3h+GNtCNz=ry_}ab?-|K5Tb{yN8 zH1(tpI&?ZP0#Oz)AhAXQ)-2fb8CbAk!Lc(uBqa7AY}xnkbC0j=bN;{k_M10u{BT`S zZok%ey>no`@SLJ3*Wi5qMWw#3DbFgM=3Vm{h+jZnyJgNGO3pcDJirXo zU`hq{JsA*Y+k8I65zk}B5E@(d5acif!y}h;BXl&fM-Rx@eUZ{0v{;oh zs`d5_k(Fg3t%H4yCW~beI_l6M@%*p|v9208%;s50Ox?u6G@Ay*GAtsKG?v5~BjQiu zNDyS%#E&MSppNZO5k!HYuH#Z611T8Bgb67nX9N`Yr4M~0)Z@MnicwGk6laWq5(0V) zs*;?q6?C|2cvZyTRW0k-I{Ft`C;fl>Z&sl42H3>+J<3ENJ+Ks5fq}z>=Ya=(>bleu z;5wH;9*5K@4t;n8I|dQF;Mxcw+aY2y%kwOqCX)dC=%TSXwjk~}7&{0#goo34d3Juf zOgu}|Z5~F|+OTMKz{1oWYpQM-x~8g{K6Y4`A3yr+tFNDYSfEzp&K^5FKg)6Vy^W?8 zEKkeC?loHnG+Ui40uy$OHKA1P^>uG{bd(8eIM8rZEbkz9>@Z8i43}9_fb7<19;rYZ{1!=`8WFWg^%V(?k*kw8}V{NLp=wP!#x` zn$|D^ZfjbDu;v#3!7Z+7h3b-uTi@rb=2if#9<8~pX#JDhT2nh7p^LJTQ9I(Wb|lL#D;*L>9F&zTDJxl4 zl!9SHWW^GRtSE}D37 zPH=ViwQKE7Z?A{D_5HJ(=##LIzg-^fR65c1Nt@RP7Z;x!Tkh;~(b}#aF3$(`@@{xO zYq70vwCvXnYq*?x<#Ky|+OKJ%e>(9@V{Z}#qQnnRAlUpkS_Fc!?tJVSv~e^KMA7U_ zAy8|BSs+xsH4Z(4RC?2(MoP_5*fR3l2NMX?re9UFsiZ8+$z(E>N~P23jSYmd*<20- z`9h&URG?U-l$J`HfTn4>t{aA70%hO>Pywn{xByJ$|7IQb|Le)W?f(nt;{C^-{Y5+= z6UMayzKnBjIgVu#qM1ZdsO|d>r-V>YP57-5YuZuh2PTL{PH%B$B1BLym$G9fG{u5iudjL0$~SWz%R3bDgQ&*spO LGiK72{!gdhd3 literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/Wallhit.wav b/app/examples/Games/Concent/Wallhit.wav new file mode 100644 index 0000000000000000000000000000000000000000..858bbc32ed3fac0689ee3194ba35e0ff83bd2234 GIT binary patch literal 768 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an1.gif b/app/examples/Games/Concent/imagenes/an1.gif new file mode 100644 index 0000000000000000000000000000000000000000..0fca6237a252997af37a9d221464b304afed168a GIT binary patch literal 1601 zcmd7P=~EL27zXeSSs=j$vSBkQEHor*6bzU^RKTbqEcfDIMJ*T=BwTIOfYD;hv>_}J zNSuj?q7n#ERH^~NiFi>A7#O6eQPFzD84t8*vBsm0wG@l}EBgEJ%roz&cjie-NsNxk z4F|%3K?0aYqXHoG9|RGBAc8>1XDEbD2SR`#grPVDV$%l{L#8_dicp9^AQ1-PD1`C( zDhTBBF%ciZ`A8;)5`2Wq8EM-f~sl8MBbV!lEomW%mvu}qGORAMnfWLhyyfvZRY zSI7t>L6plfNkyhgrK(qutqNJaN?xzhlO$;@Z#C-6TlIP?skhXVV=Bvt-e|E{tX6A} zwROT`9kW{OcKfK^GSOq5w2n@5I-QfFW78(boD&lhpZ>=}rdaW%`MIimIs4mURS`S0 zD4(5_lAZzZKTq>{B*1e@O{W3?Rl8FQ)#`K%FE2V>zo))7lmOh}Mt67WL8Afms6J9n zQupc_8ewfydwa8~%a6msc;_#0JlghJI$GdB3}c<@>|%}h4O}>n`H=MuOe^d+ct6mu zv*{8%@?_-P1c_f&=WG9OYQ&tbuM*Zn#D;&pZzG2|~&fS$s)kGlk zOt!dNL;GRf{Mmr=;c+uOCzEvDq4cHu18(HLZ?+Xzc(tWNXYDzR2s$7=JO1$TP#sqo z>>Ml682Yy#-W6&D!hcorYQGBHs$?h9c;naa2S<_#)p2Hj9@K6)(ek#0u;%Z_b6tzFpAU#iPP4S=>u?tFtHrL~%AX0sa zk=&UD!V(B3&5EX3E5U7EN_s@ltU9A9Mx~`f+;MFBhpX zrq{-yQv%U1l{4m!Ip#Iqe*Y2ZJhs^tOxdSi;{?p!Hbpx=Cg}I>)ug`cxZM#5gd8l2 zAC4Wk;@3x=ZO@oz{+OtBfKQ+t;m;jYRq%arXyj2;o4`0cBEq>u z_2v%Ry}KP%OBeUkV)WUY;8pNpb=ocUnSDD;spp_kO5Cmb7M z7$w_h_$yo#xZv$~VM0Ze0qCLaS>WyNXIQsz7%x}${bq_<9)7ZTixOC`DZ4Bzqk^_W zw7i1hGII^fVRM_IaA>X-?@^;6M-w7)c}>v_X(5hXkk__8NDAlTc{b*qhj*MqIah6BmQ}piaOqa0ZKq} zFOg0uJE?q>hr;99$mVoKQemz0Z(fOos+nK$<;uJEh-Z5*|FubjV7j5$n+KlncVw|$ zrZDRWy<01-6zwo(OYUTvIu1+Qn!Bh&c_+RXA B*j)es literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an10.gif b/app/examples/Games/Concent/imagenes/an10.gif new file mode 100644 index 0000000000000000000000000000000000000000..e541a123423dd4dbe95ecef4b01f4991f1730fb1 GIT binary patch literal 2209 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 mzp0#)CB0GiNOO#ZpGIi%9fDRqH(1YJ7 zYj3U*(i$)-MYLEi5^HMNN@uE8v+f3>LyHdDY;`TVh@2ffWu2a}+4V5CxW8hr^E|I} zp6B`TeI9E?neioOHpm7yt3U!F3=s5x;J5)na2&;-qej&U;iyJ!K@p7_MKv0=T7xG> z95E!08V#=3*b;ZWUZXc8q)te0Fz79b))X3SiFIKDgQd_=V=>rlHQQ{Knr$@=4NXlg z+ge&$n%WXHcsz;nwE3RX=WFZk?)LTd4R(9_5)QNl0)f84(BR-;C=?2Z0^x9YEF1_& zpA(A?j*X2?k9EglvDsK?HWr?ooSdGXo}UiS&d$!yPR`BE&CgB$=l`4Zg~jIAwmVz4 zHxT=GwloqojoS%p#X39CKab{lNIjnyW7&^{Gk5;^G3GAW04~D@yeR6_hbItLUA) zOnH)!vJ_KSDlBX~-`Iiait@FYnFNM_TUB|M(yFTbi`oLUT1#3Px;)-F>J?>r^|xNF z_s|NXtuf9*7Lh8a92kcJ9U{D9&%fhtGt9$vZ_l}&rc=i=WJ;5Y>~EJywHpd;3ONnV zifn}kTmz51DMX3()GJel6+v?hbSh( z7fg~D?~v8vFSCzDbXie zignGuFMQT1smY85M+B{QK*%*2Zy{K?T z&_3K*-BiWJH;Mq>+Ni)5Y=pZ}JLaGuaBsg(@l-W54Hv5)GJG}5jw}Av63B`oV?&J! zfzBR*`cJuFgpc@bMj31el6)OG0`kaOhCj9MM2Ihk9b8#4gi!$VY$}oF3;%j)6Uw

lR-^*L9GJzu3aV?4*s z6g$ONOGrwv^$nLomh3yo!J68U%`!n~=-y+wFMe5+E_DopUh4h{fP-i5zvKq2U9F^z z<=`?uYeKd2CXa|`+-ni#F#5J&Mk4|0_kR6e{;s^>eprmD%)^R>gU9c|O+54;X7Q2F z3f%Ht$oKwaVXQ`~~S0R{xWFgv~NBxv{KrUPBI)ctyL{|7t&(uk`eEjF+{ZmL# z2;9s1I6lnAkcIu84mE)sSq<@(04(?2s$O#SjQH=D`=16JIq+x%F>w$VAfQ#{B~rxC zL%L}S1M8}B!lUHA+t>2=E?UPi=XdS`E3pXhyBHDX0LRM9lzWU9UuR8QUp+)CO6)vz zz7%?61qa1~z`G8N7Dv7WUQ%eR{&idq&V_r+IbnrNV==>wxgSILYT#Gym!vqahp z!Og3?u$;^}&`GYQ?7v!=;$7277GbbSF!d1bB%HRQ6b@^}%^9wE=SzT-w6Q8F7euh{ zf$X@wD_IY1Ngm}^yiCxmKH!9|Bfop(ag>dVoc#4EC$IvN9x#2|WS)quoT~5rGhsHs zx_6YVCA^HeDEN31lD3fuKUxpcy%5iZT|mY#=&s{W@?9(>nJWk9B0l8~9=%jY?NfON z_}fTN`&#z&8k%#r*cpjF4xjiTDrJUFik^r7E2_K3mLr+HNx(!7V}N893nQK^)w?3u zO%d*KAT!>c+e$W|>;rsaltUPAr;^^;2S{EjwfN{jl;#0Pm?+Piu1IX?|+PT5e!(L^puR?rugTuXik`{`e=!9ab1THmJN2>R|}c-&Xo6xVl^u^9-?c<<;Uc)aps29Z0be^rdkbD%(f9woFv+nb>eh z<|hyVNBvr6fA?^>lmDqnC^Y^6meghp&8+*V^;Df33v^LQD)%prkK;l-T__16vfG>B dv@szM$cAVE>UiJ8HEHeM;-YqjX9D2m{{nb(fu{ff literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an14.gif b/app/examples/Games/Concent/imagenes/an14.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c218ce0c877fdc92c0574884da7efefa5321dc0 GIT binary patch literal 1924 zcmd7P{ZkWn0>|<1?j~UqHn4%<#Sm~I3*jMjLWnIw+HN2`C_#e+20VHVB?{VjrCwUG zlXf-_MX0F+43DP0pc#>aR&1FT$BcwPJ**i@<-yvaSFqHogLl+&N~az@yuadJKfLGj z`=?-Me&&wqG>`_a7J*F+2FAethrbDX8ome+k`8w} zkBzW#-YG)ZCv2BU2sVoLicbk$uFme$9bM9%D8kzkHGE}&JQpRFN(2nHcsTl#&r-g; z+UdJA*53KWD33>`ON7zFl=NZZ%GG{J+NF~t_b-I9g$Q6<5tjG|Jh0m{pj9m<7l^?t zZ%s4{*$kKg1X_XzxL3EV3wbtsqcuA6P({)}TW&K_K3S1`wy~%)HOGW2+SKq~ah1D? z8n|IaB^3_A{kkOpiOc6lde8RHoO|xjB+j@!(Zt}U+_P)hIc2@MsdQ;MMZMRdIePx3 z%Uk}|+`Lhi`pqvt-TvCDOL4r9hsKvOLG7z|^_M#e!ebAe{*s>4->|ScDkjz|%U*kz zDX_Kyef5vrKsNSRQ2bT_m)TorA*QFk$gjDtXq#4)^v_IK^G?Nnlq;pt+&Elz@YTHx zB3KSRk%wbqNLnu;h$wTI>$n+r2?sF|s4cRtBqy zDn!rIe#XPd-SrvY1KJT`xu@0WEgypscVp?+HM#q6U3{>pgQ%74f2B6~JV1pdswH+DLI|DuLrwxUO{)P)Sc^n%8Nw-ou{r%;^Ozrm zd4Kk(xamDN(L@e<14daJlYV4W>~-dxVBTCr!o81%#t%0_=|V<^cUr)hnVSC&Jd>yY zxlZ1+YWWNL7@zxl*1z(FIE6qet{9_=u5@?9w0``bGGTaOJZ1_nZhll5o>&tze2o{> z+5qaLTVPT^zZ@!;`MvYUiw_?uJO?_X_T&z`bLkC|vI-MQF_k|z% z>cOMg=NCSJA$UE$@N1q9d>WKb$E?+*DNbzXm3*gtc!yfmzRut!bEzD#So>?`*^G~K zLyy1xXTgH8r5tfbBs~5D)FQwi01WlCeYK~Lvd^gTF@%@3EEE1f%~Ajwy%umI-n;w!-+@$Zv?|}E3E9S zuCc*qYv^0SJrJh%1H#ktpx&Rbg)9jtbO^CR)nr#J-F@cH3m1bd23JeN&JxGy`I_XJ z@o(|Y*{!ej(nw_L?zS^G5=HvY=Eoc%DTbvm<&al(5oJzY^mFom3P2T8 z+r(Y3NTyK0a_KXXkui?NX%#jM97x;OimGYr)H1=$#bF%Gt#;nhgJi)-xqNMwu7fanplWGD6P>qZ+R;+l8q&3aqe5gKBleUQL!*=Xlful1rV1$27XP-4q1gxNh68D0Jo(t6#fJo8T1^aO+9A1{sIoUBB0ereLnV}k(ZUGGGgkR;_^ m+RJWbKJu_^2eeodFLeIncFMP~`EXG~d$b)0pi2}0+5ZJ}(=-SG literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an15.gif b/app/examples/Games/Concent/imagenes/an15.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea0ecb950e1b7678aeac55f015375022035b5876 GIT binary patch literal 1132 zcmbu)k5f{2008hW4}33%DB_Pe1AT%px1I|PD>m8ypZH^#9LLSvbceroTAF4of1sX- zg?5Bb&&-q(71K&x8K%3KV`5?3!Qd5BI zH0he0oC2LrS5R5mqBFPXtaWvD)=InCY_^*1R;zVjV8G#U%nZ1lPUnon?VNng?RGCL zEON{kok|L9Art5daV?GBva!WpYES>O(HV00SXXP`BOm@1w$639PS;&ebQ~gW09BqAr zmSg7V8;J_sH`vTdi6gb+qYDm5geLU< z-N4;2RtCTXk&K@5X%c4M+c_)o2bGe3NLouC1S|%m_L}yVmu)S;Anr&ISMeJ~wP=&j z5Pzs__IV!yj{GVHTE;PTSO%R72$IJ+%oDOBRxH`wl=o_!vy&6q9m{1|jHY-94GZ9;-z=uNSUl>_ z!8uj8Nsl^tNt-VRCm*&z39G`D@9`?k165ioX zn@<~+j~9($5eE%XQ?98=DYHPA>ctXjUFD4hDp{1hE8(12v3UTHnJQ@ryubAe$jg3a z*i_;1^#86_Xp5)e3FW$hDyUR}d`CX|l;2Fim=C{7mW6yQ9%GVyODVd&f&6+Oxq((d4b=TYB4yOjdm%PF*{6pJ2+_2a zFTKxtL+5VWFNMbS;8+7=o_ZvFC{|NPNjE`3SG23Xd2Hy}(CvsU zs8CJ9HxxYoyn&BHI7QE+#_X4+zJ1`B2mqgodl;=qS)$h`B* zv@V~LjR_);GU@RkS{}$sQmSdsb#%_|5s0AUjB0Xb=rOZ0^9t|MJbs|G|DxA@e)#)stOCX>fJY$YKPYN}AQVLq3`H>%Au$p|P!e;XkOf05B;v*plZmvLP=^V1 zlbFkdx=f^-LS2-}O__WalA%!M(RWz<6y`Ikd)Ym9A8ICiGY5Oy&YU``2tFUNqm6xz$)!&^T9LctNTs^U6 zVo zZtx4z>5MgI=!09&8U3=Po!+LxowS*9{?xA0EoG{;vj<9nap(jx1~ zB1rn7YG+L|Lw{_MgOi%VKT+wEQq(cCu(DseC$u*l8&%FzqhjmLGQCQvo%H`S> z{`~LYru*$_YYS&Y`|3!T&>Q%T_aq|=50ZRt{f#8l^cNnQ&#{%jbsly3ZEbMBj;8Uq z_RB#Uz8c#-CmL7QavLTeVbV57U zo#{&qgp?s5Sbn^5_(nR^T9g}niv7WUf{WGDz=UTWd;!xlrvuq=!ASb&u02O9bH)#c z+bDwpRM>9O?+y^*`M|;2<(oTuO3?tg#9}c{h9-upZx8;NRSl*-;qBfIq)_M8ht>wR z3=Xy~iV~=|K2MR)W}JUsM)Y(cDTyoe>3yDsa4^jt6U%CizmPkX>K)OWg=**Yoz#|( zze3*o{SQ?DUNB{QZM<&h8=GAA<4FXa`YdbrV z|J%OB4ry8jdTAt`Xzl~oTsQa*m&X^nUW9k%m4Q#@eL7>8+AO9j`ug+%7*JrN*N_#0 zp5AQ?hXZ>FMr_%;{A{=xPz(p- SO{X68hQp=Ter%P2K=Hqmc2fob literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an17.gif b/app/examples/Games/Concent/imagenes/an17.gif new file mode 100644 index 0000000000000000000000000000000000000000..01402272d4d8c94fc23196110d81c152284435c2 GIT binary patch literal 1845 zcmb`H{Zo^N0mq*wdGbPDA3_L8dD#=mDC{0FcoBg{?+GM8Fl7;9DUxoXhRHNC&SlDV zx%0^j5G3?KQc5LOEDuaw+JWX&%F`|hX`o%UVw>wZm+cVKH%(it?z-8GF79vG=ZDXI z@4i2N@4gM%`l{;A?Z9>*+6`oYIR8VKf%8Pd0!~3jLXNCJmWc&2p)4brLdKDys0>wP zq(Frzs!*UxH7Zn~>P*sQ8f6BBTB*<}QMJ-wP@-lfYEUc8YK2v))aeXHo!X)+FdNhc zqrqa-*^CCOS!XjVy=Jw=YIIo)R;$%w%V73e%|4sX}g`FuXoYm0a-q}N3dM9gQ6_&g+G^Z5fY!shq;V}vIV2#^6H;ddnh9+D(u zBoPb5<(g`w|Or{g@bdpRb z6RA`xok~1<^yr8G6Vk2Ry5n7))-E%0@|V_b#L(S^G-#jI1L%`!o{R)Aws4Na>FOUC zbPr`^4Gr@7Ts|zKOD05UA!J9MeWdOYFTy?B{^!JmHlUun(PvM?H?pun;;ki~hqaD`X>euiu_>Hv82iy);eEZJZIGRtb08?IXsV+E zIVWgUFou2pVd;yhP5a{&-rP?QZ}u*1I2mw(yz$kd3*|VIbNni6{?B&jhiI!ikDp&d z=Y3JFheGfEr~f+LO`shXE^3ozIIvfW&Lq2jj8iUah%-{BNqquvg^ zPLl=cJIFN(gJp^b@fjEgD3B+TRRcouAi%eFvv z3x!>;4~?azTL{28sQ6MN0m!-_cQ=lY0ecD_M1;m>unVeXE*yj&(r_I5O8Z^&L_KY2vuYEf4!bB)YRg?k_VLsx;f$o7|(MvP)UzPyKn%N~BSwwS;ndQp*Y@Mn{?;yH*wz4|b{je;b!@d5vRD7)PfqKVC09u-~8`Tcrm^qnR+ zMU$<{UAfQcLTXm6LE6u3!Y;_g%}B)`nmY^&@8z02ss%~MI#LUqgJ6^{AU2nC4yr3O zg3{H`p5l*&??G^RLJ#G(-?GspnG=eNcc&9WzY5hOPJZhs`G}n}v@Zw7pw2p7Wfgc| z^nyCp{};3Ef|E&p`{MbPY+`;H-tYBA_&IN`yv~riryXqNs-}PGVZE1pUk zo

O%wjdNsOgb#gJp2OE2Ga?Ak!+>z7|7i%xvYEg${{^?O1q=WH literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an18.gif b/app/examples/Games/Concent/imagenes/an18.gif new file mode 100644 index 0000000000000000000000000000000000000000..f148f8c3e7615a277b76d1942b8fd2420e676c37 GIT binary patch literal 1571 zcmci9`&W{80LSq!@D!vE`lLXYVUj(S7iw7#MT+fFK+!|S5>Mt#v1nRRVX>@@Iw-hu zYGM+{Obd;!l3G!A9}t=?Gdst5DLhuvZCS_Cj>pY(x<6vCAKpKFe*MJ6MsruDF9M4| zQ!hOuc(jE%8*0yYg} z3#2G>Vq)_qU?@*5<E# zwpm?avAWDWi^bxy3anPE%PPM;!8yt8RJF9U3^@zkEe2=1YqVX^-rhdiZg#m`qi(g^ z?H+aC?(gp(8X6k^-_0GP^LK4dS8bNFvbU%*S<=kSteDu<62P9kX7VIJ9@BtatuF7^ zgNO1x3JQx37wh$29$pCIRa#PhytvG0q*qlLk5!y0I*L@EI(dPPoHdl4F0s?6}u>^6mp)thKk51C?B?dEIfrNCGG~B8-cD z{@BW`YtR3p>|s(P1eR61?i|?&^g#*n&|4EpIfeWHSZtzALf7n|Eh?q``cH`gNp;O9 ziV_EV^K%zqr|c{oBTbD8_=q%c^1%$*8e_zi_qiZG%U4;YZ8}Jp2JfwSe!X(*%cgH& zme2g$|-p2zOolIA#IMLgHJMD>dW=? zu9x)EqktrD=a#F{OzO^K9I%00oh_pYU!@f8q=(Erv)9$h1E#oI}$?lz9fA*}>K0 zU|KEvodfdZ%m6@wd2KdmMeq|RLd0y5mm^gPNoF9*Is%qUN*a9@Fam=123urS&*+-@ zH5RI=UPoi9HObz$D6+gg?}JJN)2Vdx>Gi=p5uYkA?J-u{H|nJa;=d?E>loe+8#%4i z6!j#gVA12QbCrH;$ll06PC{6UpACtjIPji5ecOlnx^C7tbZ_U(3;ZKKC?^j~-A1|A zSNz6r#GSFiH$H_&VSyfH4*A-X?E9%Ich|>9!wJuaaP41>BWF+d+xYRfJ{XRBwZ`7P zwPV=B79Ri0htlEI-rNWObaDqT9lYxpYPLI|!Bua|v+>acXB~5>|t5b^u5dJR%;lrZ< literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an19.gif b/app/examples/Games/Concent/imagenes/an19.gif new file mode 100644 index 0000000000000000000000000000000000000000..21adb25555637be4b1bc32575b7bd858c8e7b07a GIT binary patch literal 1849 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 fqZ<#Bj!b*KMTzW?4e8=bi<&zp%qh1;pQ&PYg literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an21.gif b/app/examples/Games/Concent/imagenes/an21.gif new file mode 100644 index 0000000000000000000000000000000000000000..f970b811c335423f4cedea60570950a118df354a GIT binary patch literal 1720 zcmd7Pi(k?Q0swFjyBIWN=MM0t<6Z;{* z!(y=%ES5^aFo>v7DjLfOpfCbLX=FYPN8_+!!*St}thdS(_u_0w#zk^bYk&BYaqm40)14)79iB#3T;G<&y18H&P`zYmdzD^cgq)a%L zg?34OjagB~%+#)|H=9d*drI)u5ByI2IjOrezEP8T;R90pp)yx(Bv@N8QL)ugpW0tt zIadcCKU~*iR8ATsQ%$J8rqUar@COUpW2a1l?Q7t!H9Mv6jB(1TU3SLayjVVQ>G)Uu z?aPA+uLr0IjaItPK|ae0wjxBwvJ2%B3uJYKV`9cbgAe00)y z5hO>VUE~pur(HFFnzO%U#BMn`T*lwLcE6;Q6jQV8&Vcb6{C1GTnr`8bCgW{L|AHP}su@BeoIj2roJ~4f?9=h!; zyMJ3N`a-_98el~!@+H{WKOs-mWpG#XDZi2yfr8-GM7t6;>lULMX?_OWdfr30AtPC} zWM<2t-lVv}`jnkkHz-ClT4{FgUCBw~dfb^+mpOy4li&h-(%Y1M%FR0uFs2;Gd{Zcp zv1G{v7U6^t>R)o|Z}Cs)(4NwV2kQ3i`>hb%8=w*wHkEpt$%3gDO3m#rHpZ=)z$-YI zwR;wh3gb`Q#xW1ANHBqOw0A!g?5H_YmrCh#ky07ZRMltCvyazv2f_BTxCK$3tJn+e zv`HyW1M#<^F*0+`12S4z;j@O?PV($HIW76og703Ucnsfm8U*%U`qt>v_qjH^B`ond zC?O@nV+za}$sd1%VNTh^=C>7fQhK67)8rPBWKG{4UX@}eK$|hMq&BI{o3Z&e~TVf^Nt>ZlJH~K zIyJ}%qQvJqogd@v7ovwcQJ!=d#$k>OATvL$VG?#aL?Q@;5-);oC*)2knRbWQ43R+- z&B7V9!_~M`YNqeYXHVaOCb~cgJ_g=k!B7@j3F_O+JSQV%AXR)urw`A z2amWEpl-g;b27x7qU{wTcGX6-`n? zPO#cK_T9oA%nXuFiqS$6s$8knUYLXhcSSdjOn-K*>UvOc198bc`g4tdrq__Ov(L|u zenVWb#-C)LvWT0^^UzI=G%ev}6@d;s&Y0oFcd&sGgJ~~YboQ_7&4eOsh{6(h_u1mt zU(SC&HnLi2q;0%9U%736nmQfaeek~o?fT+~kJSGY#|=jY0rSrvGj|&Nhw~9vTIXSV zSZ5F@pgWbB44@v?_S68go$Fq<%R_Zfewoljx#Au%(PpOgq_4K S_!@LH9Qp3Uh9oQ;BKRMkt_>#u literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an22.gif b/app/examples/Games/Concent/imagenes/an22.gif new file mode 100644 index 0000000000000000000000000000000000000000..6022f7746e72ce377d484360990e67595737aa03 GIT binary patch literal 1332 zcmdVX3r`bw008j+wb$3}T01PZb|6=&ObXR%i$bi@*O7 zTCgYrN{LcYON)$6P;8jn9O&^_Ej|)O*qky04h+7Q649t}F#Q<&eTAPPRUaFds{~5m zO91boD9Q=qi%?V~5=lfzxP*twL*5g~L&CA3Sd1SN$&ZYVSgW3=)yUJdB0a9$sz=tR zsj>~BxtqeWH)?lgMdxKD**;U2=gAB6i9M!_-6chiuNE9DG*p|78uXo_ORSk{K`gkkz01{m5 zK7ogaENIZF&NxomnQo7`0|yPCv^Q$wd+K8jKs92~ywgCoYF#5AYLIa2*UAwJ5-wcP zBd(lZ!>)pvFm>Fq`k<8+c9mj_pFd_Vb5erEiZ^c~#RvqZ1$@;Qpn9!r(L2A9$ym2f zD08+ECS9*pqD}yvokO+upyWLP7c`^?;+P*aTvFdEd837mnw$t3C1E=Jau4HYvyL|c z7vFSQPBs`(G9c@3Hn4#H<$x=xI)Swp&qR934YfV{o1$&u$p?cJ8Z-xtQy)oZHN}#l zSK}^Q&6U>;^t3GVX0wff5@WRRa4jcljPFiNMm}aCNyo`48Sv=-lp31`D=wqLR>X}Z zZbd_q)wA<8bqT&-o!Uf4hIAXc2wwzph}<)~xQ8Np;l_>kTNYB%xKij&yB&=xoEajg zpSDU@c(1lu?r)B9_fxjeu#5lTPk+?>n}XXZ&)B)FESej?_Pdd}2ftLzdDs^mff8ct zl6}D|(~9FK0^BV^6F4nkw|sgJ6U1&}WcQR45L0AySvZQoZVS?pN%~dG%rl8-4M70A z!ryt zRBqf8R6XfjdRGiH+K&YKPuiCvG*iq~qujrzgG>>jpm=;<#Tn~k3_;b2{GixQ5_%mM zz$2sJuczQjDYl*`@n51l2LwCFWsOscl+Tg&myt|Vmm_Qv$2xd;7dim` zsE&yhUf*`9BYh5+Wba+ra_dO*wR2|ytTBP*-`0Z?#`Z4Q zGTH-d5ACI5>pQrpi=E^HOC)I&PCy}a8|LkLYtQJ$k23hmv0JzMF2WI{80000C3=9+$6dW8JBqSs$EG9HGG(0>!KutkINl#Q% zR9swKWMpJ_acz8iae;+=jEsz*n3tofr>v~3w6v_m#Kg_b+0@k3+}zyc_CX>@2HRA^-&M@dak04x9i001ojEdT%o{vaTZ zq*zQ9H8F)@6oI%%m6f8|#_fDxmWIe8Fi0>O5DBHi5EOVD9cQD_^sbzrDBw^K8CTuph1R?@|0|Fug6Bij24tzT#0|gAl2MP=d2!OfK(gOhq4Gj+w5D^m+4h@drJR<@a zNFd?>1q&Gx(u#0EfCDHL=0%WzFhi9n8fs0LkO816Uj!!P*?~bqg9UW{HdKf};lju( zBLf0JP(h8i1`I5$xlmz{nx9jg84!s@B?AHvdr+wY6ex)XIY9WvdsuJ~ zVO17fKL(sc04l%<$93-!oixH1F_2}J;>B9P(gKDYS1uel-~g0ZfDp}Thy2DEF4;DEt`1?mozld#+-wB+xRAOJ^E=+#381~~rEA1uz0KtKeuB-RuJ z0z3dd^REX9PH*Km-;@xE>{a?X!+&kjaS8ENpor-~q^K^1uQKP@@e2#UZdj z0~BEflm-(}P(lH$rE!x23-rc-0}t54VOSYBk^yc8%#acz_dsZolRsU+Pm@0wv%qEs z0=2;k3jCHUf|yd*GC1UXponJx>mm5~Gs6tG_oQXE+v1TI}g z1qLheNM<>6Fb5eN1}N|V3Km>ogFX>F&_Dv>F(ad<7%(2Gj55m%@CO01CQ076)-W(? jTt|LO9tkxrvj|q!qATqH@RBKQpcAmw?!EYq5CQ-@J33%z literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an24.gif b/app/examples/Games/Concent/imagenes/an24.gif new file mode 100644 index 0000000000000000000000000000000000000000..7cbc5d78008b457bdedddf51b749931eeecea156 GIT binary patch literal 1627 zcmd7PjXTo`0KoB|ZEP5O@w3hB-8!*xGgE7_Hk)msYaE5dh|pa{s8f2{_=$PYdeNyH zt(r~`WxJ@Ox2+eqO5KulSGtFEh3ZaEDp%sV|KdJ>!S{K-%H;~-lB^IQ1n64)1&dN@~I4%wyz&%`v2g;MG})bR#!sb0WAoUZ{(u9}m-2uX2Z0g+NJh zt*iVmigxbJ^Etk9)A^K;+p$RpiU}tRqD~d#e)x9N@g3a0LceQ8<<@%oFO@P!1IpS^ zaNQtwws_fEmJS=imxd*dquQrOBS!ahKR)9*+!=nqYyEV$*ZdjMt8+=i7oh1u#Qae3 z%YNgtyXKdJ=J{t$v(x?a|5wa8U)h%2tdiUu#|X{_7x^R~wA63Yl2i4U%83Ns_?Nv8Fd8OdH(J$_aI%m%^`)&(@QnBmmO zF>FxKHaMl}+v@|SU30!(_XJ4@5o{WKtG&L5-tNIy@v^IL=3-c;$Q*Xnz{bF|{tsd6 zvTA)qrTQjAO_gT_deKv}+K}AqiB^+t*f$)C$eR;Dq?1d=CNCrPC|`7s4zia_kP4%& zWIg7WQ@Tz9Z{f)LT|qgNCD~@eLxiVzM3aDR79m=V!KLkATC3L-=K=9Y*SWfOxhdG> zXf<^N232$|xSd7sBIuJ|h^8xjt6XaEud!wR2lhSQwBwDBotbbJOs}{6JY|yo!5W@F z!Qs7dcwW7`^Y1Zrg%jJN7nc7-%P5DGt+l3QFF(S%kS0N^4#`n(mBRHkti;q;*kec5 z5LKVEe(aZ^u%dqo5w17H~hXw(#v*FOiSF%yD znPi0_se>ib0RC>(I##S?Zafp3WA46LMN65vYJji_If)%;g9;lP-L?|Kv?bqMP@JrE zc*MZoX%9lPSh@S!eKjdtPox)D9#XV10yG^XLn8#(OQu+TP%O7RLsjHvOpat?g`Uzf)38E@aqIWVyuN zshDfhIJ>F*BKnoSUSF5%4WS7s?TZr(p}B*2s3;((^?r@HWiM7^{Ro6Tz*K$G^1U$~ zMo0Dg2v%)gY!tv}h8G&51BmhMYXK_RD%<$Yvu;G>B#13#(elk4cxZR3G$XR`eX3R7 z*<pA2}kTZ7Z_e;>6D6k9iVJ8k`(;X;JZL+w;$tXmlG+-dZxW+Dp1(Aa*fditnN zd@7VzDK&{cR3fMr&3iaf_`yCFez~MU>~!pNtPYMmj7s($441+hp4i^S;XVv?i=P@f zAbR7$E#Ix6woPsi;K*x4%b0IX1J5yL(CQw?Et+|K{V&t)hW>E1i+8)P#hVp@OUnF| zv%lw(d{O1(ouw{yexnZ>2Rba#*r8jm#!Wq)&o50vZND}SM-vc2&3f4j`WwQyjyYTJ zn{|jT<*Gx@Cv$@Gi?nd@2(aOT8y%Bx-^J5b_>Ie4gqCK{)1~`6)7xQO%L9Pm?D?pQ zC*R}QF=>T{JEK|`{FHk#Nz##s22u$q$@w}p;P7*C18h3)G@CB4r#c9d*zol>K!tz- Gk^cgv$mc=; literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an25.gif b/app/examples/Games/Concent/imagenes/an25.gif new file mode 100644 index 0000000000000000000000000000000000000000..842fde89b07f902e2419fbb3ec524ce2284a3bb1 GIT binary patch literal 1694 zcmdVX3s+Ki008j+y@0^=f+*;8Fb^r2&c|?Kq0t6WK1z@HTF%H}LZW7&Vfbhb@R?}c zrKPPhE3<4`=vk$y4K*yCZnO;3Xmib6ZKm$bd2(yE_A&PR3cv8kFn&m?Kkx^GBJc)^ zqC_VO14S7OhARVMFj$_hWR$~tgTY~WvYi-yoHy9MUOs+aLEhdho*zfRdqcqEga-Qv z1cES;zc5-Pj*Qt7#Z8G3BqSv4jpECto1{|duH>YWgspP9JX0abSH@~`vJa|btJDbx zigK``ox0KkSlOwl|r$@pGMHy^7_hF zluAEK#zPQ*V65Wutx{t-;&_ct2E$Na-{&S%#Xt$_=t#v6cbiZ;b_` zWyfDA9456Fl@CvuYh0PC-R8X(zijB}V|%WwuZ-fJJJZwB*N=m7>JzgJ=$w~k4N++c zIrp68% zD(7;ArDD&HkM+d7H07O~;*#Z4Q<1!j+3Q0c+`k{XBMVFuUm*r6C7;=*^u(^W{Zu-8 z{zL9DB3Z)K@4gm!W1vXz3=`|J+lBW6g0MRSf zI5VnQ1$->BfwFa{6*2Zt3xp<|{NDH!)&DP<+z>Lh0+Q`%J#=xN4*>mkxf3;Kh)f3C zZTq7QNgSH+<-$2ikR@C%S^ZEYMppp|d@KNK9JR|XSTMmeZJU|YO-oY)4ylzxII3c1 zU2;(nMgYiGb6(;;U-qTG_`+Yue>oF|RN^QBt=OtPf%O_3cweg$A%|ZqjRF3jtL4;C z#)%9=@qU+LvJWFY1zEcwyo@j_UR*SmdrvFqK9d}ZF*r{h^S--Efy z=|OiJjcEP^(*zF{N}TuJTZs;LS1L11AC;|F+XBJK)n4LK&Th$futO4dKmO9UOIC7- zze#Ur-M`$PW*9v-LSS3f+RuDzWE&H=U3dWL-C3BPu!gTGraI_tEUBMKAcWtZg*~G2 z64m|jIK}fFx#Uh2w0|ayQh%OAmFP6wUU57mdR#L_vR6uV`$Bq%rm^k@)%WpJ%3b(v}?@4!*&@qlq+O(D&po|ia?Is#U)(!rD z2mwWC8kvQXFl_)u`*Qh6dR(Le{q%KPCV{MU|5!-w+_whcD;oZevDB?-7afe4mY|AE zdG*O$Xpsy8NyuV6xGTI`1Xwa`1h6eDx*1!V5lA_-`K+wiL@sQtd$jpQEuf}7=XBq`sOBK>gs%vE;K%nxZD=39IAZT1oKYGGH@}! zYf~H4OlCwlQHFYseT3Iqlb%+^v9>1sbrinDxTp^_`pe+c&#Q8XP93gWT!!w3WqQ)U`hNijv?K}u literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an26.gif b/app/examples/Games/Concent/imagenes/an26.gif new file mode 100644 index 0000000000000000000000000000000000000000..ef51d69e820ccb5859317741e29bcbd1e8b8a49b GIT binary patch literal 1931 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an28.gif b/app/examples/Games/Concent/imagenes/an28.gif new file mode 100644 index 0000000000000000000000000000000000000000..10f6ee31942468b08b661b06904c5663a350cbaf GIT binary patch literal 1944 zcmV;J2WR+4Nk%w1VJ!eH0LFd*0000HAT}c)5;!0Y4lYwQDGezsCL}OM4={i|GY>R0 zG(0pUIyEUcHbz-A2qZjwJUl!YMruqv6h=WUA4Zm6MhZYpK|@JTN=z_>F(h6`9U@Yg zJW7QlTAg81A6`#9R!eSgQWR8FR3c=XL0X?|Tr6ZEQo{DgcjH<_jL&%N@ke7a>lyt?AK25Cfgr2b9j|rccm(ZRKz@9v^ zoNfG!1l*hy?3@&_riApI1c|W7qpGLmp*5_ml>eXy-LnhauQST7Z?v?m)wE{xwGHI7 zME|oG%)E^4w^Yf-q4d-Q|JEwz(WKPW)a=xx_C zX>@2HRA^-&M@dak04x9i001ojEdT%q{(t~9gM>PUN{ESFX=!+lkC1(mla!Txf?Z-_ zYjd5Dk9VPQqok##r*mUkV{?L>p?9NWN=HFKI<~n%wYt5&y+Bs3vAIA%D=Hiy92^_Y z&Mqz;F3%esBhlG5+uSY$K>#{ycN`QH59kQ!>+BEB)z;Gw5Ft23M@=r!6Ce&A7Z7|Paq&RQs2w&Q$c)p*Cb|d>79>a@K|+NPF($ORL%`94 z4`0^&7{MXVoiRyi0O)cDOvecR2LvRja0Qm#P&n-LMfn6wJBf<%oaQ<&t)!EahLCvzs} zkS1ar6&IoLOkt-ugwGutC=e(>H3SM2A+CmC(F2#0CLO#X}r>c)?F{A3Zb83$rz0)*WBqfPx1VK;aWL8RB6C1++zA zfCN{NXv7O05cI$WA7K8Vfd?hPfY1mm+Tda-ci@qP3mm8=+7cZ+fF2QZgbfP$z_MAm^b5lnDL6CKPp0uXDgp=c;yJczTDd%u3<(OR}eu)IGFBMtPgYGL0du(oDc^OKy(m640q&8VF=@h znL`Uskl}0_TK-79h8Xy&VFQ+=$}z(TBc!{*4`f_{0|q|aK?MXAu5J26K2IBg`+u) zU{oD$k15Rs5`g)}ZqX!lgA%UP!FLXR9}&mgb1w1X6*GqVQ)?iIu;j0IO!2XGNdbX5 z4Pw->a|C3NI0UWy43WfEqQqfFJvG~F{u{?v`PbIcuKC6n+;K(@d~;I~Hyb#y1|D0uol^Mv@FVB=K$QPH^y_0^;#L3z zC+uKn9r(dG*td=RRSs+V*hUBXCkWB#LmxSq!ER1~1G0^R4YTQh3>N6V@HOy+5)^{} zPUpT2hyYA^*wqs5@Pv=Sz$^^xfC)x&!4gW4g0%YyKiD@cDbVkJ9f$)M*vEl!T;~BE zK-v|qfD|9vV1g^$-^Pygxx_VrFKvK>1|NXK=&^xuJD`{quc*Qb;-Ll6c)`z3a0fKx zU;|R{K@8?#$07Lb4o=`)8{)8p5j0^AC1l_TexMff!7&>Fi-Q-~_XIh>;S4DmLIl?7 zcAX)dfeR0i!X7l}z6@fqf^~QlB+Jr<*(6~LTZq(3F0clPflwtQD8U@K0KLs=a0E_h zWbNQ+n+J@b2xK5a6L!YL5)k1ISO^vyj&Ov!z=4_A9KjL%R|jIcAY>FsNfe~O10VPR z2Rz_G7e1GSA*7KNb%><~v8k+WqLKt4%cnE2mjo_^;h%1>!x>xkOM|H`iMDTjCP&y1V=|2(s-HlVw#8-#xjrrLKK1qIzR*s eQjmg~(v+qw%|I8rpaetcU=Tk2=}%o62mm|KqCRE- literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an29.gif b/app/examples/Games/Concent/imagenes/an29.gif new file mode 100644 index 0000000000000000000000000000000000000000..c5a845030f248fd8fe3401bd0cff86f4f0b72ce8 GIT binary patch literal 1414 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an31.gif b/app/examples/Games/Concent/imagenes/an31.gif new file mode 100644 index 0000000000000000000000000000000000000000..aec9e5268040b0c50ecd816fdebe7d0755a1a6c0 GIT binary patch literal 1910 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 J4h(?o{{dXF4H*0{1F0r%1 z(~KObTUw~(Bi*u15Xne8&Bs^HOv<|MJG)OE&E3uE-TsFC{)Jy^I*XE!9|MR1xMhI< z`*07kh=|N4!*b$wo*-j#S%G>ojFEm=&cqH9AqHCbvBOC`9#77uXg_#MCX5ydQ-nfc zB|o5rg(^HM(DP&TybO^@R3;)8i#bzN_*Z=VDGB#N5$d)e##R)fR(@>y1XEv}+Ad8t zs(2lrAj>{ezRvn%?PmpU1x{O0W~s=SE`zKWhuHK&qtV!OPI0%KF?t?WTYvWEd16#zZdk0$Yxvegj%Qp>~@w6}8 zw~miL-kObC9y8BPeLp=ty*%BzG(9*!KfgRbwzRag^|Ilo7w&&AKilw)ZLR#%=kslB z__ltB9h+f{lj3}pSVT}uRT2VEA||A!XL111zt#Mf1b}X8igo4s3PWX872u0n)NaXB|78JJWeNV*hNde zJDQX7#TBRk98K$(nQbBqYJ=aE$F4OMaM*!yq*U~dg<=Oc&%YaJQwpd zHR{stOZyUA{%f8)u4}j<_MDxpGZkLmy(uW3JlL>;t>Q55uaGQ;%(>2tr+idm_Yb7g z1X%q3<1XP-n`S02<-h>*T-e@|qCI0{RmtL{wlemIHFrVS^F~)vzbZ2hwdWRMj=hGJ zh-Z%CUMt*P-58uiM}Fqb=)BtZFRk0#(sUABqTb|3C6pqnYn<0RZNTH4Z29z!esVGdr$mwAKo88s*z5=3B>5+aqV|OK7t7$Lg$B+EsGNN*)B= zbXu*`V!z>!!yyTO$kMG&KF@)ju>!}H{i^^vL`J&6D!IAR8;EhW`Om3~kfjBm_V?L` z!lk}`)2CeRt8ul+w>jbm!w5&pgFNgBZ7xa@E8&GCN=xc~~%UC0uNN z=!bnbDm&lur*G|4*tbddhJhLFN~WA+CuE{MqfRiY#ID3&V?0r4{O`QYWdy!00bC=C z*%m#y&e;QF2}ToQSrNHq-U=LJkm7ltV%t+=OK#>`_Xi1-b%DgeML)iUOEQR{ ztbAI?Hv}&j`QD-ed?)H>#c;6SDPM433ZRva(} zg_eRol!9bN9O@mU0cF&5mxHi(nGWt)ls&)F_eeGM>sqk*duq?M%G!1#JdMLu1F`JMlRzf%*I1xTzM>6|#L>>U9JOr65bpTtB zwlw%+E6o9uDF})9bU6Y5&tN~HhV(xF&VgXS7k>dB@zuEzFW*hN!UU%pZ#qNBsa_o@ zfc@hyDTUKH{cxmtoep{y|9bcb>HH#NHs6vRE~ILMd@s~zq>UiY8&HT{<43(cclz8< zz%+~IM7RnVh(`2%r_pLgGr-VjfZ_964eBm}UN95vM>6KaLu)~em%U(28$G;@ zQyy-i6&;G?-#<}F!$lws_(z(@gYU#Q|HlGft8Vtc@Uu4R=;XOwDgYQkKv!I~g2E=K zaK1u^k^qc(G7V&Q)EyVUSQ8AR!AOMEgL6th`hfEc%lb}il{e@tycIi2N@HQy5C9ki GkoZ4oMhkxc literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an37.gif b/app/examples/Games/Concent/imagenes/an37.gif new file mode 100644 index 0000000000000000000000000000000000000000..32bc6a9d1d3f8ac97e3d1b7dba6ca06a157673b5 GIT binary patch literal 2003 zcmbuXS$i>ePW!_f**$9TU69`lNeoAAQ=v?BB4@zwmvY?}p6u z#J6nGAR64<1Ktpe#Y-?AAr=z^p(KO^q0&h41PLCd6sS}x8M%hgsKQ8jl2SxOY2HXA zC1m7^+)#1CD#@y-74cfFN*|RHAGmpyOp~mCBU!IWN?5f^BU@owlboEKolI;?Se|Z- zeqSH7JzeP3<5Z3@H8VFWTjz|^6m3}26SL@|Mq|rgR+O7umQPqLmQrh!)oMLlAaE8$ zJ1rZFi;L@uHG6iNE&FpmEeJiaYtf&#L|5RNwhNWAy4wBcYNJ|f z-?i7*arGOAt1Bwo4-6e$*3!~4aSU&5KQwe~_Xj-(x?Js(os!SnPoL{QKQJ(G@#4VC zOOk~@D!;pInYrrpdcFVnOZTYdiweFC$lr&nVFf{+1Z7st{?w( z^TqQgFJHb~_`j*=6{!_FZB;vq$?DxzC8VWfC%GXr#|)x=N%Ko2z@KLTfG|BWXQzF!Np#F4t?79E&z<3Mg^E{|OOq zyt()t5CW%qj8j-9kd0;$@Y3u*kvtY+3eM+;#24FUgs8g2q|;6STx#&8LDK2jQ_2X5 zCD8ffQ#gwnx@uk(GbK5b@aco)W zi!Wy%AO2@@{g$sQAO-(OowMtTds zxnm=D7kY8wc1v#^T9@r93qJc|4or&kH;9;XSs{uK@c zquryw!{SEnT5(`@D{>NXN}vXyAy`L*WuP1N5RVV|MeyX+`{UrCh#l&ZL%ph0|g923N7w)Bkb+L zwBT*Gb#~lglG=G8H9jyB^6Xou!XjM+hMG&bPWb*Nze{d&+Un&2tv*lf(&@oeNrG9# z;DuXkXdEJCPLuqOa;JPHPP6>~%)^{1*k&@Ob42B>_tvsCIyB_R{?M-FNQZCq0#x-* z+_hqB_RUivy*|$kINN8JY1)Ryj*BTjgRQ(>J}NjiGzp6gp;TFL))pfcqCmhVuOHr3-@gk_6*=w7scNqz1ElWq~=uoX*moMTpum(jy@=9?ebi zVZ37iNG81FoWY)Q;;+9A@aGd8EisNXf3N}1T)WQTP-f6_L`mTfhT)OA(#>avJAVKi zM3{|y(XBwBT%JJaC??kL(~wdicGIZJ=iVs4$EEbO)-Rj1%hzZx9Aqeg`#vz6xKv&# zDT^tGkYXQ83>-g_)^W;uq{oTjlS{f%-I9~Oc%J!tHF5-MwK5Lj1mM?L?Z=f!3J`yb z878*AQ2D>WUc}a5J{wv`pESNYi*bE`UzBhj&5Hz|dD_2o%|8W54X43tJY!eLaf!5> zy;Nb8CEk~yv>UBe1&e-~{3?tDq zZ9EGLE_@6?tiO2riW`An`H<~DXQNTT9y|be>*UrZy|2^gB^74~lVTI6EnP)H8@RcI z{POYW)2R)md)|v{S>3+rH5ud8I_RLU(BIs4^A(fgr8_yMK1PD?nhd_J7=B{c!*Q literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an38.gif b/app/examples/Games/Concent/imagenes/an38.gif new file mode 100644 index 0000000000000000000000000000000000000000..9aa66afb3da19501fe0fea21c813687549754270 GIT binary patch literal 1782 zcmc)HeOFWW0l@KJZf>3+iAe}01_(DH!5~yG5Msb!Zvut{0|rQiveQ zB@c)aH$a4FogyeW8Zn@C)Y+Xtf+wgjrj(=3by(OAR>ld8o?1)U>Z{o2pYIF!X6rPH zw9H7Y8KjmXn^p<;f%SS&^o z;+X3Sw?@+A6XQ~(QUfnpjA~Y)cwszSCX+GK?7PHlg!j zmaEFtZM7$fMFlQpjw80@_aAOmZrifgXf*EAD@2yhR3(>8CR3*-%wnwhbxE6q{5AL)ehszI^A;z+uNVYE5021G>c{>SER&Zdo*&TH!>Q5#lNEi$NHJ#vNYHhB| zrES%)5;C&19lCSpbUJ4QgA2&yItbNvyYg=5YBN+B5Lc3}lFK)!+OA$ZEoq`q>eN@x z-Od|Gfg~syqC}&7dUSM*M0vAY62X#OA9ZBp<{2J8%GF6&5cxa60x=1ofq#tEof$~0 z2CnetCOAj=tA*K@=6gM`Z5sqkWw)v7^h(KC>6Snq3l;|pHt8RA`Up@o()SahT@4ub zbKDB^b%N6g2^i2L|7BlGuGLwF0sPNYTQXE%i4ReZPrXUPg<7ve6>aBc@bk+ZreAYfg07eYH1^GzG5pIX{`56u4Up{t2`^k`$}`LizukHf+k+t{Uj zwz1I*9}o#j>gK@f!9!uOiHNC2FmiMMUq?Tip6*MRR+VkGP{%hFu~Ml2IP$N_Nu}_| z-Y!xxCwYgbuJ;)VVp2L(;}3Vum4$(0w4bpv)jj%qYTCLz(*hzL?#eX_7A%0YOzpr5 z#pOG)IRD%ptOZF&lF#av1Cw9x-v0L#YIX9$Hg(t=FzzMIN`ti}bc2C#`Xp;b-6>C{ z?awh{d@NGTGJ3;=rz9^0_0~BUXKKfvV6@KnH;Y>TL^F8LJ9w4gw@|ymN`PB}?MRFX z!AKF&AD<2{!q_Ka5xrE($Y(c?g~$#C|AJ8HIxSRih%_AT>PK*xS3gzG;PAf9CpJ(~ zgK+JpWdE6ukvnqK2C`_%v$X7_%g z>jEKYsusp3J((eqS&?U9ePTm72f)v=>bL)B8{3y(T3vgYcVTJ|!Tp9c-_PgaFJ*~X zdR+RfxnsM#~qd<^?;Tm!oEaW z<3-;e9>hgtEYY+ZSpNQe#X^Cw`#WSl+}J%?KO(v0Tx2Q^KEvVn@PFI4P@U)ya-_LZ z-lhCw^BQthM9&xZ1)om(`xm?{kQjj?4q0ASUq#Uq>v)i+7{GlrPL%oPz{0hl;y6oy z?pptaIlX?z9JdjJLhtBQ><4+w%_&SY=w-B0IjT^3+!c&;8*X9~*>l%yrVYtj{aq?27jTml!IZa|~fBxaAVf?_+BBudlvMJX%L<;n9+_xsf zpep2}jjQhN`@rbZgzYx~7@5*@(T`ME@a#frJ0%v3yeC2%iI^}XJrfCc4mCHh%!FBD zHf1kj`$>42y;|sH6!YwnezBz|4I@~wv~qZmO%LF-k5NKmlA5gX!sqr*ofHHxs+wvg ztL4!^fxsbBFQtNI*SO0o^1p1>Z3A$bbefz2ApU6_j+L!n9}WOP!LriyU=yJE`HY)}}wx=a07o zu?oc^GR)4}^v5mVTdu6#Fg{4Hs1$7#4U4QO`FC;=b#)7ohI+C!{7TzuYL^|;szL;%>ZHBQ~+k6Ni=1XYx7-qgRZA1r+d|k+wC3SXAGqc3f@<52r ze2W|jQI4aUnQu`kUsA`T=*V?lbyaS+du~_v^dHK|Q&`IJ6Ch%-=uCA^Io-(E@=;dac3gSH6IWewCkSS&|nM95- z-a0zYjqc%oF3Z(q7pI!%mVA+PROX8G4Gfn#gX#N@(ht=zgNna%Z#dyc90K9j9F6)w z(DF!w+}kuhoEa6IRd1hEvRA?9^MeC#(UY!tANeUMmK_@#+w5G}%rQ#hi&Kt7r-ru5 zq8w!WVAqUJ*Ni@4GB+buW|ya#Wno&QNO!${knySu(jq+bM^C3z{u=GjnQCw88trt`lR8v$wj&hC1iw`%+f>*k5lEr-u}8@9>8Q zo-Yl_Rt8$MTJ6J!&%Z9%ZBExOPQ96%o7oaU^Y!*OU%vj||MmcF$JjSF zIYE@1L_L)*N~7}AlBxcIpXY0gyYu>~?KsU)5Gf}WoGch_YNYq*q zM{@hH){3?Yo3JTk9Pmm+JR$Uj810?sZcmXEqRhpCGSkw!`$*lN`kK6Z;5sUAmwq2z z)+HOVi~AvVJ7Qj4+eEeR(*#XF3h~{eRIYr?0)Q6)mDSIw@$hjTl;dj-;mVJ?E^=h_ zeQCzwy{V5?Kmig!PVCsz^QjuoPNq@Vy^Vxx8QF*_}T(|GmyO;#uoSs zFVu{iM#61ze%6)TZVf@Sbh{Gj!EBVmAz#{PfDv$+a}++75KqhplSU}$KqnYJvoB$S z5M(Q9K$~T?Hv+~95whf*77i+sTy=Q{YR)WSo9RE?iovkH>|^idW-&(5fd^LnOmLu@ zr6=63!J0^tddH2)m#D+&GqCs=0INGkDf9zJ%PCmVksx!3Tl2}%W&am#sDE{ThheC=AfC6ig2eCO zwO9#IG2Acen@X(nSi%2$DGG3DFffb_39* zMDBUBFg_hl8L^h>W*cNv0dz>gN^u9TuM~+7x2Jixia5Ozz-r)cC6;8$Q>{tyOB$=b z-{<@qG0%Qwfsjen_#1~Su&8@i0wllRK1NMMLQ?p-8Z#6mRc(FJpcjhIn{Kp2^I9q! z;MH^2Ct*29lnrHa*)p3#pNL=prq5276va>Dv?IyX*Coc`0L>e@AA|Ri8#*z^iBTSj zC8$hSrLQ?0;@<}09+7U7!)uD6_^^)&qr}sW&Qcvl+JW&M!?0*t4pJ=6_BOYIO7dGX z?7KBac?HfzO@@OnVnKF)DdXXred`c^Ea@+$R$s@*@b$*3w?Pj67)RV!ca^6f)Y@gg6MoF~D$ADYe$L9%5LmhEX12rC57a zMZh1XyWkHdjbr&Rh9I?!(tD4>l>kunlVNLTlwS+S$+6o;=K*W>92+ij5TeQ`>m7%y z3w5n+im1vtTLycj{k^t?=)RXP0GLt9-@8jP^%Ca; z3n@!gq4hyX>fo}^lzPlikPUsec@3-#t^3_HThNog=z4~ETp_f=;IP2{{{mY$h4=sf literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an4.gif b/app/examples/Games/Concent/imagenes/an4.gif new file mode 100644 index 0000000000000000000000000000000000000000..2deb615b9247c2b6f95904d5a04ce0c1ac9f1f72 GIT binary patch literal 1227 zcmb8q|5K880KoCj^92w@MkQ7V^HCoV^`V@53NvQNP$|D*(M0ENpkVl=Wku!+3Lf!W zXN@lMX1S)#?Od0QPS$xhuM_56xmM(ta=X@98MCf7YhLF%&&}Fju-7l|pWj)VGgCGg zq(BP3Tnm<v$J7XBXrTM*911#BD_2yg+8hZ8tX5I8{!NP-|pl8}>xYAN_q~bvvC-YwIg+x4X6Dwe#L314BdCu3Z}%zq4d| zdU|ed?w|iJdXe|;9+SahGGhBHEM`n=Hep$tb2Wf?wf1Tf&=&`f)~E^oCs%O&)#}vG zbD{eC7>Xj4(!iC=0-n0~00&SixGJgR^whJz60RSB9FF4MJBA;Yye>~F+y%x1&7&H;5BPZ`~YC_g)x$NJc8DCCeKt^$sWIw)w_pX#IqgoOX?mR|yM#nC`BQE4@sK6EJ2uC#ZbIG%9t~MHaYiH3^Y`ntZJeZi*EOAvOYqqw*o>A4vb{zKicU%vo2ZzIj^G~+Bz}9iK@vii( zDF8d^Hj%gXY3e0&e$<$^4+g96G1QwZW{tw%#3R~9=3EBSw&i9}nPZyK1fZVg4Z+YIV_yJ^;E6B*56faXkAAa(1y07{d%GWIss*!`?1BB?!2 z+x7d|!$B?v7oCyrrI(B+*ppDDP?RlpRx1CGXHyss36%P(Ml zLv_V0#1LBa-N^>?=q(Uh)9wg~w`v@Scpnx~EwIi)D+@p-z!6vZ1Q>X#Q`TZu4V9Lt zQ+K;09Z64w4<}ya0e`qh!C3kDfwV8;Qc^;#L;@z){7Q9>X5sh;brhXL1VFEPT~*hG z$@C-#J?-48>=i4fV_|e=%S#9I9`(JFHBsU6MLN0moG6yN7^-Z2b`gcb%=)#Vy%#|d zjYobA;1Db}BoUc!9L;?D=HF`=FODQd%R2PC2RBx-Q|;)U=d!Vbyt9~}RaV}YzD|R8 zrqd$d&w6B|kA#27l6tt;;hyq6iUibJb|TSNeSpjw`3V25{p%QRF1)5(kqL7!QQM)o p8UD=+vmFcj#32^xq)eFO8G<<8px-Z2%Wib0e$i^*8Hqw*jnS- literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an40.gif b/app/examples/Games/Concent/imagenes/an40.gif new file mode 100644 index 0000000000000000000000000000000000000000..b4ae4a6eedb8fc378965d2bb9b7b40ccfb2184a1 GIT binary patch literal 2582 zcmeH`=~q*C0)~J0-YhpHgd|*&Kmy!ISVYjsVuMD{4Qs%t$fD=~Cdd*f4M9OrDRapJ zxHeJ?u~Gq{6kDoLnYt9`+|-C@(b7UIwoE5F*s2FLb?7qf437OL=F>c%-Vg7m=bR@k zJyn^Yj|S1;2OD?^hr0>4FAS5)c_>qu81IdSh*=!D^d)?J6(*O4 z;DXg+wi5TomxXbcXK#{l;+J|ajS7p6h>$B%*T(u}FXhL@#i`=ttK*lJ$@$yjP`Ro> zrBaDgE3_)CAbv@zI@%Z~3{Gv|k?LiQLx~OQr1VW0T7`9`yf7_rNtQ#EVXI0JkIHHN z%YF4(!Odz>;U-m87M7EfQ>9g|Pe0$35v<9B9Nd`%@D3eP+tb2+<8L~x!$1Z)cm6-iOuj1i&Nl~ zjm-qDSbBGJQh-pvQ&KTawg5qNDQ3Va4S?i1HAmgf>J)l2jfJv!C`er5cLXsW zo%8VS-){8{&5z(WdrM+A8fV?)c?cY!zjmK*EW0Cnk1u}LuB`n%Zo?1uyk++37Gqc z>Ofq(b)s(J;n%yve<{6P+KdV#zDz7SmuIEv?yoxZ&!|`6%7>rz*X{WB%-!Pe8d7Qy z1Z-UVCG`B;PEMHC7{~24UzW~EJTVdaomUxt8|P+^h0uF9gcUxz^KGMO^yhCH?*86D@mHudSh+ank5_1^v4hN-;Q&s${Df7w!!g_(aN({}XOv{6oj%Z&%U1&_kD}U2 zXRAvNG-kf?AkZ}TaoStb$6ufH4v(lM#Mw{#zpX0S^4>dJ4>*Tgf(mp^Hs6E+ULr~Z z3bg#&EojP)BC@;n&vv{CWbb-`fAchQeE&L^$sp}KvGniVm zmNsPJuQ5?hj;rFmB>altOJ;C6<^as-^D-B0{sy0b|1vzmPcKmDDIdj5cZy$nj{YhX zIipME$9}G&15v|IZ~OWxplfv6_^`UQQbA-b0-?_7q7B^a*;z);u@PkZVV-NlvP*-2$YghPWB3oo$}6eP$d7-j|0~&SI!K#1n<#$Qci;?GT|$821s$7JAM_YOfGTo_qN(*6Hj<@v59a<19Z)c>rS z@Y^+T&l%7tmO+(gj>)J>K}`+RcdSC@WK<0CQ@P9;($VOSg$JBIdjSP4f761-$ zW)@uE^5SoYkj3;#Eo%oL6>|m#OH4A30843s4$*(6W_h{D;!r0eZ?tIOa+Y}@&rQ#L z`PCYdiBSrMBAjjCUu|QVbTHF?-HR>M9dCpgZeT2dsO?v*7qawVi2B6h^k$WKj@TJ40e0 zO!nPTw6S6z!kA+ffOWT7J#zB%<~Bq^0s6Cj`OADf0PO_aOb6kY;kK^D4Cpd9K<1|` zK@(+g7xt!N^CZldI+-zKFYLoJvv8cQ@u+!oLbD=sihFMHhWS;DX9+(Hykb$HECU%T zQ#o^!+njjG#8@8T1~i8g$?DGZp9k$y9{m3IJiy@SQOFS?njNASo2Ss+A&WYJpvheX zBj(``nrt3eqH=ndO;WVt?5omoHCyUU(4r>Ap)ShXI76ORgxl7-^(WW0s_D<$AU>|| z)6^oOk0&>T)t_Ir4^;R)*kkcm;9emglBYAttThvQSlp`i^2!|e@FKy`)Wd>g9gV!% ze~_a?@R1>A>?ot-qoqllfX5`;N}+j*tJ38Jd?|4S$JY}wZOprd7SG3XrYyL_w7Q)Y z-woND5|5dhx^iV4-NlC_n#Ds928(tAA$c=yE9`GTiZ5F51&S7K_@IEXgk%;xN)OlFL(XIYQ*Y2f6P?bfdlw|w&N!3zuTZeeY8TzxcI!<6*l^e1mY44#12QQ^)fl}(zB1XDe) zW*fgSx26p?uTetmZN4kbpV-3^l5zTcu3`T%(t3$YXz%{U$Hzd?1#2E#A5$$#jVij( hSDq9(KyVr;q~mlp=Xd|iqxHwn2K_D`N4!w5=D+CWtbYIi literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an5.gif b/app/examples/Games/Concent/imagenes/an5.gif new file mode 100644 index 0000000000000000000000000000000000000000..19e3dde6d1ab4f2edd8faa9981123d2e3a01773d GIT binary patch literal 1628 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 W3cWp-(!r9{`m&`5FpvNO(*FXC;qg@f literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/an9.gif b/app/examples/Games/Concent/imagenes/an9.gif new file mode 100644 index 0000000000000000000000000000000000000000..89b2b7b390d5abd8c9026cb2bda5d50c9e77008b GIT binary patch literal 2486 zcmeH`|8o*|0){^e>jJVSkZceVLKa=qM2QlEHY%Q*h>6iv6GiKnsGvj>4=q)qr&4c8 z$Ty{tM6~GPh;{X%qLL1s=9FszQKQ8(%`sk7I)m5PI+|;-msWe1%Uyc^#Qk#5%scbE zzrHhXc|}?A9DM;O0N*x(F}Q31qyGiNR4|NTC^i-;hDk9BhEYOFNKvVjzzC@ZgH>Zr z5EO>02$WDL%qXmtq6!6}QeYYdrX{450#m6Jl!CBGF|}HyQLD6Sj8ZGKYK2in7}S_y z%rz>8P#82SvsztEX^fQALSYt4VbE%{)mkTo8mlQwHQ}XTH$@o?Mzevk7}R#7)M?Nd z&DD%SYBOpB2H0pB!@!scw^{8p8=^+oZK3=Y!e+C1Ee5xpvfJ%(3+lCN82ebY_-#hN zUE{Tz8N1!-bo%Y)sFUzIZ2`C1?RE#8mWb0BbyEz(MBV0y+a6#nZm&PisH2R<>-7#X ziYQ}``i*hF#_#vXy|%dDFzi>w{q{g05Dyrm0cJ4Zj6@=X5%W;MAB{!_qt20-CKihg z#rz{NCLWKEjLD#7Bpw(X92^-8j10zyhK7cRhyVS5{uc|#M>7`guF;!o4EVk}b1kl| zt-;GHmQ@19FW30xB!D{#AV88n4}e*?g{0YRD7P4P32F9IP{aocC7TSQkX*#o1$AUO zB;klOc{*@RpqN>$pDAz7mhY0eyKio7J3Xav@A9tF3x|(FNaxz;;==Qx#xkWZ*tezB zF$-Oy?cUQ|CZ1;)O6K2dIhs9Bf5Jb2GcXYC-r~V(1$SET0>me9=_ee43L?`VUB57N ziZ|)@z#V)brPp*@ACD;gq+<}lujsOIqPOMF5B_9;64)=B!O%7#r7rz-Ayh$I; zLIG+BdeeeUBBIbBt}OKqeLQ7-q_?W!mR%|r`?_Yn|5MJRG78~^Zr~|`V999F)AVo9 zRN3mmo_ryz#Wi>TVI8eYfV)#A;x8_A1Y7CG5C7HDNFquTl#_1kE9IdgP{OMp?ryQw zVO6D>Z^bwyqDXd>r);P-Iaa}+*w`z(vmNhP5lRWzi>ZO~oL6(+4x>d_2a?5Zol?#P zE-SkYG;gE1zlP|ALSs;V69{VMTXTLB1?lajWFhARcJe8WP$SzR28-J{=Y4mF2>c-V1=&pJM>4@MKoJZWjd$I06J zk+4;!Buvc$9u|9915lbHOKftq*k)7)!ML|<4O7c6|*YF;-R=4M-F2L;BM{2U6p z`fkFzA6Drln^jOgvp?Dg^J~@?{)H@P1CfbfxbJ)ZMir0KV@z0Y1`iHZ-MRdJfaZ8} zBVcEaB2id5`T(Wzg^>OM`7w8L>{S?iGAb}sELlNq}bd1=RX={S6}tMYah`0hT< zy}-g7!e^J^yE3zs$`WC{|2uz5aYVN0%X*`rA^XWPy8c_&1SMWj6ktDRPs8uUbcx{76jMv=eIQ5Y#n&2Rzf55Wed7Ls$p@w00I(^zws zCvt@`AK5Lm>EPVjP2->7ttCB4E?Ze5J0*ZWP1-4t2M+$~7%ex4w4)1Ltjxz`%j`gC z{Bm)lZ2j|at_*@D^g_{+S(7HL+y;0(-~}AE<`3X0`+RHgQv;e570t>K2jNp>6VF9& z_^^a)P1DgCxSst@S}&wiHqVY&Q}*?+@tr#M6e&HUm~PBUSJLly+?|xZm>fAwms{WH z1r5Cn&g!U`*;xgRQ(DJgC!zGfmmSk8*0Gj55NSeaS_K%{u&Jf+K!4LGmuOh)u}&9* zCLT^-i`9BCb7%{v5{$1*!1=n+(E|xW@-^9%>7nV#1N6j0bu1wPw3lA~?sEUcQ!JQ- z($+%gB!QJ}3i6WD(o_|B5wq*y^`nmV{J&@5vpQd}@aGN0+m8GJd1^lLJjnkHv^LLm zmKl4Xi~~9#a_xq5R#hxryct!N1;K|%swx0}ds?BwLI+_6m8>UtWCO1e6+n5g~6l{GKX%?b5+bqHBXM|VOJy|=aJ_H}Xo7h#9cUL39 zAzp7#zhG(qqxQZ2nU5QP2A%l|w#0Oe#RBvG108X! A#Q*>R literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/colombia.gif b/app/examples/Games/Concent/imagenes/colombia.gif new file mode 100644 index 0000000000000000000000000000000000000000..60c8c145103debd0f90600660178e3ac373d962d GIT binary patch literal 145 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 Mhx%D#LlVsXe|2a0c>n+a literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/logo.png b/app/examples/Games/Concent/imagenes/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..27a8611ce32d3d795ebfe834f506adbad7c8c71c GIT binary patch literal 1591 zcmV-72FUq|P)NPN5d`x^~JY+m9R6Hz9JS;>k6m)cSY;;@{92A6vguKMW+}zys^z`iP z?1Y45YNsyyVQ3 zlw?F~OdR~=-0ak}#FT9O?A+AEto-D>q@<+G#N2c|JnX!*%(T?})TI2>v{YPF%*@Ob zP}2PX0004WQchC32z1d<*{0UbC%mF18PMNzEH zNUSkk(xzs?Km%%0+G+d$f5E&YCYp4aPjk)VWj^3@pLabZllebHQCVsw_hfZ-HJ8h+ z{+oLxyGAdISzL85!YjfQq8|%OJudh5f9hlXW`Wf+b9h6&P=*LPC=7+3)^erRn zYv>UHPxDN6Bb&|MIM5?vb%TBk{87klY&<@>$Z~vX9)o#MM!EcS<2z^M8fcs(F9;=8fk#CBk~p1thFRb zYTKr=DG{*4r)e9InNF=Ng($G>YApiypXlMzj}garNWRGE-V3s0^_>801Zmj;lSsCIN?@2&*KtZE-!Vd zz~o(uq8!(C;72&q^E#d=&PQ(0d5jr)sY~T@89i~`V$pT>9nAA3B=-9+y&?eFTgVs; zjKV#TXBZ}*r;76f=bMOLzC;JZ!&k3C$ao{^_>L$eyuZKi@B{Sr=;-M1H7uXeXb6C# zckhpfpw~36*L4Zs)jV*ZGRs2ryZ4|EG`$IXAuHYjC{S;T!bn870CI#ALGV2K4iI#G zdqkQVLT^vcj)xy!9n$okVT?}h04$_^u>eSQM04Oj_x&9Uq5G?`=TM{G63}zflpt&P z!)UrR8earqFP%ocUWaWNk&l;`;(QW_f(l@y(0I(UT1PeOqX-mFVqa-YNEn839K`C$ zAfLG_0t3Jcn%S+{nl>8iqwzF~f>{)k-7p>p(Nz=#vrg}R*2r-zo>i|ueHyl__1P$q z&Zkj8cEXU5cou&Su7YS9n+bEjOi+PSZ5tVOsH9JYFlaG@LTsuO-IP~Lb;OmQ&GRSZ+)>PFz>(k+`MZtFrG#!|IKn}n6DffeU;|ZMl3%DY^fU~jF`1YNei$Gv+~WHOee=19 zG4546nx3w;A3*xs`t!v5!Jqcl;rh^|_Nm>qCCP?M5x|l+Wm8MspZI}57_(;AK0iA< zp3M%wU&Jw#EvsBo$oyP+cmd+{oov=1#0;XyI@qbqFI8sff#F*4KZxt>fncjHU6lE) p;HAc(QmI%h8t`=skGuKb>mNB=@4jy!9+dz9002ovPDHLkV1kqJ{~Q1S literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/ok.gif b/app/examples/Games/Concent/imagenes/ok.gif new file mode 100644 index 0000000000000000000000000000000000000000..e3529cad3c9b6fa67f348da6830e742b375bcc2f GIT binary patch literal 1355 zcmW+#e{9o56u))_3u$%GvK8F08&%3SlC3Ob3>J$UGUgy93{nY%!N`QTkP7`{B#qAT z1vXe_jm1o}j3yNFHGCx(ILU=v%;9c$;1RyS7yU|*3^Q>8CK7*5!w(b!HGkxgpYOh!V^&Hy}a{ zOiW4yBP=T*3WvgCL~v|^O^qidW;*AB5Q9^~Xxi2=6PyUb7^9G_I8j-ZlY|N)hRh+t zB;~pxNKR!r<&r>8Dk$YtFlus!p)RL%L4ktgR7xVT0A|ECB%_uf7Gs=K#h{KEh8o2G z7js6j%rPbaOc7y7OqoeJ+c+aG^jJIDpNiV32Py5F(%@ zm+;JiFgTC_)j*sPrAsEUnT7d*Jjs*}3IKx($xPkONG@~>n+%v@i<*|xGx z^Om$Fx5rG&RMt3ofJ^>yO`DC}r~hM$)QH|d`SyS zJ>I>)W9Fv?s|;;k-n45AHus0?&$a%1L$A@k+hgJ=?DxXPqy7@s)^oA0`L`19+{!NOeBr0gJ3a2ASP*%ijB#&4y#J$tm-OnYmYVkQ zN@w0&#`k$<*G3)Azl5);V9f9MApZxm=TPBDYTJdSQ!-=Su1KpHbx#Y$_IW3lE%Gio z!rvJU6Sem8jIaGySD+VLV(+^`$!PTO-=3=@HMb|zFBJ9Yk>*)Pp>4 Rcd07A;J*K$*x^7+{{v}U)Eoc+ literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/imagenes/tierra.gif b/app/examples/Games/Concent/imagenes/tierra.gif new file mode 100644 index 0000000000000000000000000000000000000000..97532a23d4a9b28de6114076ad7b42b2731dfa7b GIT binary patch literal 32485 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/Concent/move.wav b/app/examples/Games/Concent/move.wav new file mode 100644 index 0000000000000000000000000000000000000000..d6d5436d3e7ca871ab44631250cb682ec572daa4 GIT binary patch literal 13318 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/DeepSpace/.lang/ca.po b/app/examples/Games/DeepSpace/.lang/ca.po new file mode 100644 index 00000000..2f860fbc --- /dev/null +++ b/app/examples/Games/DeepSpace/.lang/ca.po @@ -0,0 +1,51 @@ +# Catalan translation of DeepSpace +# Copyright (C) 2000-2010 Benoît Minisini. +# This file is distributed under the same license as the DeepSpace package. +# Jordi Sayol , 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: DeepSpace\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2010-12-16 23:37+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FMain.class:109 +msgid "&About DeepSpace ..." +msgstr "&Quant al DeepSpace ..." + +#: FAbout.class:31 +msgid "About DeepSpace" +msgstr "Quant al DeepSpace" + +#: .project:1 +msgid "DeepSpace" +msgstr "-" + +#: FMain.class:102 +msgid "&DeepSpace" +msgstr "-" + +#: FMain.class:97 +msgid "DeepSpace Vector Engine" +msgstr "Motor vectorial del DeepSpace" + +#: FMain.class:117 +msgid "&Exit" +msgstr "&Surt" + +#: FAbout.class:41 +msgid "&OK" +msgstr "&D'acord" + +#: FMain.class:105 +msgid "&Show object labels" +msgstr "&Mostra les etiquetes dels objectes" + diff --git a/app/examples/Games/DeepSpace/.lang/cs.po b/app/examples/Games/DeepSpace/.lang/cs.po new file mode 100644 index 00000000..01c0830e --- /dev/null +++ b/app/examples/Games/DeepSpace/.lang/cs.po @@ -0,0 +1,44 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "DeepSpace" +msgstr "-" + +#: FAbout.form:10 +msgid "About DeepSpace" +msgstr "O DeepSpace" + +#: FAbout.form:20 +msgid "&OK" +msgstr "-" + +#: FMain.form:14 +msgid "DeepSpace Vector Engine" +msgstr "DeepSpace vektor motorů" + +#: FMain.form:19 +msgid "&DeepSpace" +msgstr "-" + +#: FMain.form:22 +msgid "&Show object labels" +msgstr "&Zobrazit Å¡títky objektu" + +#: FMain.form:26 +msgid "&About DeepSpace ..." +msgstr "&O DeepSpace ..." + +#: FMain.form:33 +msgid "&Exit" +msgstr "&Ukončit" diff --git a/app/examples/Games/DeepSpace/.lang/de.po b/app/examples/Games/DeepSpace/.lang/de.po new file mode 100644 index 00000000..e45c2dd3 --- /dev/null +++ b/app/examples/Games/DeepSpace/.lang/de.po @@ -0,0 +1,44 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "DeepSpace" +msgstr "-" + +#: FAbout.form:10 +msgid "About DeepSpace" +msgstr "Über DeepSpace" + +#: FAbout.form:20 +msgid "&OK" +msgstr "-" + +#: FMain.form:14 +msgid "DeepSpace Vector Engine" +msgstr "-" + +#: FMain.form:19 +msgid "&DeepSpace" +msgstr "-" + +#: FMain.form:22 +msgid "&Show object labels" +msgstr "&Zeige Objektbeschriftungen" + +#: FMain.form:26 +msgid "&About DeepSpace ..." +msgstr "&Über DeepSpace ..." + +#: FMain.form:33 +msgid "&Exit" +msgstr "&Beenden" diff --git a/app/examples/Games/DeepSpace/.lang/es.po b/app/examples/Games/DeepSpace/.lang/es.po new file mode 100644 index 00000000..044514f2 --- /dev/null +++ b/app/examples/Games/DeepSpace/.lang/es.po @@ -0,0 +1,44 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FMain.class:111 +msgid "&About DeepSpace ..." +msgstr "&Acerca de DeepSpace ..." + +#: FAbout.class:33 +msgid "About DeepSpace" +msgstr "Acerca de DeepSpace ..." + +#: .project:1 +msgid "DeepSpace" +msgstr "DeepSpace" + +#: FMain.class:104 +msgid "&DeepSpace" +msgstr "&DeepSpace" + +#: FMain.class:99 +msgid "DeepSpace Vector Engine" +msgstr "DeepSpace Vector Engine" + +#: FMain.class:119 +msgid "&Exit" +msgstr "&Salir" + +#: FAbout.class:43 +msgid "&OK" +msgstr "&OK" + +#: FMain.class:107 +msgid "&Show object labels" +msgstr "&Mostrar etiquetas de los objetos" + diff --git a/app/examples/Games/DeepSpace/.lang/ru.po b/app/examples/Games/DeepSpace/.lang/ru.po new file mode 100644 index 00000000..92c9997e --- /dev/null +++ b/app/examples/Games/DeepSpace/.lang/ru.po @@ -0,0 +1,78 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-28 09:00+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Games/DeepSpace/.project:18 +msgid "DeepSpace" +msgstr "Дальний космос" + +#: app/examples/Games/DeepSpace/.project:19 app/examples/Games/DeepSpace/.src/FMain.form:5 +msgid "DeepSpace Vector Engine" +msgstr "Векторный двигатель дальнего космоса" + +#: app/examples/Games/DeepSpace/.src/FAbout.class:16 +msgid "DeepSpace  " +msgstr "Дальний космос  " + +#: app/examples/Games/DeepSpace/.src/FAbout.class:16 +msgid "
A vector engine written in Gambas.

Contact subjugator@gmail.com with questions.
Copyright (C) 2004, Michael Isaac. All rights reserved." +msgstr "

Векторный движок, написанный на Gambas.

Напишите на subjugator@gmail.com вопросы.
Copyright (C) 2004, Майкл Исаак. Все права защищены." + +#: app/examples/Games/DeepSpace/.src/FAbout.form:5 +msgid "About DeepSpace" +msgstr "О дальнем космосе" + +#: app/examples/Games/DeepSpace/.src/FAbout.form:13 +msgid "&OK" +msgstr "ОК" + +#: app/examples/Games/DeepSpace/.src/FMain.form:9 +msgid "&DeepSpace" +msgstr "Дальний космос" + +#: app/examples/Games/DeepSpace/.src/FMain.form:11 +msgid "&Show object labels" +msgstr "Показать метки объекта" + +#: app/examples/Games/DeepSpace/.src/FMain.form:14 +msgid "&About DeepSpace ..." +msgstr "О дальнем космосе..." + +#: app/examples/Games/DeepSpace/.src/FMain.form:19 +msgid "&Exit" +msgstr "Выход" + +#: app/examples/Games/DeepSpace/.src/MMain.module:328 +msgid "Object Count:" +msgstr "Кол-во объектов:" + +#: app/examples/Games/DeepSpace/.src/MMain.module:329 +msgid "Bullet Count:" +msgstr "Кол-во пуль:" + +#: app/examples/Games/DeepSpace/.src/MMain.module:330 +msgid "FPS" +msgstr "кадр/с" + diff --git a/app/examples/Games/DeepSpace/.project b/app/examples/Games/DeepSpace/.project new file mode 100644 index 00000000..cd39d095 --- /dev/null +++ b/app/examples/Games/DeepSpace/.project @@ -0,0 +1,17 @@ +# Gambas Project File 3.0 +Title=DeepSpace +Description="DeepSpace Vector Engine" +Startup=MMain +Icon=images/deepspace.png +Version=3.11.90 +VersionFile=1 +Component=gb.image +Component=gb.gui +TabSize=4 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence +Packager=1 diff --git a/app/examples/Games/DeepSpace/.src/CBullet.class b/app/examples/Games/DeepSpace/.src/CBullet.class new file mode 100644 index 00000000..bdf6bdda --- /dev/null +++ b/app/examples/Games/DeepSpace/.src/CBullet.class @@ -0,0 +1,11 @@ +' Gambas class file +' +' Copyright (C) 2004, Michael Isaac. All rights reserved. +' + +Public X As Float 'Center X +Public Y As Float 'Center Y +Public Direction As Float +Public Owner As String 'The array space of the owning object +Public Damage As Integer +'PUBLIC Destroy AS Boolean diff --git a/app/examples/Games/DeepSpace/.src/CObject.class b/app/examples/Games/DeepSpace/.src/CObject.class new file mode 100644 index 00000000..21f7f12a --- /dev/null +++ b/app/examples/Games/DeepSpace/.src/CObject.class @@ -0,0 +1,87 @@ +' Gambas class file + +' +' Copyright (C) 2004, Michael Isaac. All rights reserved. +' + +Public ID As String + +Public X As Float 'Center X +Public Y As Float 'Center Y + +Public MX As Float 'Motion X +Public MY As Float 'Motion Y + +Public Size As Float + +Public Points As Integer[] +Public Distance As Float[] +Public Degree As Float[] + +Public Direction As Float +Public Agility As Float +Public Acceleration As Float +Public Torque As Float + +Public Hull As Integer +Public Shield As Integer + +Public ShieldOn As Boolean + +Public Thrust As Boolean +Public Attack As Boolean +Public TurnRight As Boolean +Public TurnLeft As Boolean + +Public Sub _new() + Points = New Integer[] + Distance = New Float[] + Degree = New Float[] +End + +Public Sub Load2DObject(sFilename As String, sID As String, X As Integer, Y As Integer) + 'DIM F AS File + Dim I As Integer + Dim sData As String + + Dim aLine As New String[] + + sData = File.Load(Application.Path &/ "object.data/" &/ sFilename) + 'OPEN Application.Path &/ "object.data/" &/ sFilename FOR READ AS #F + 'READ #F, sData, Lof(F) + + 'Split this into an array and remove the CR character + aLine = Split(Replace(sData, Chr$(13), Null), "\n") + + With Me + .X = X + .Y = Y + .ID = sID + + If sID Like "Object*" Then + .Torque = -1 + '.Attack = TRUE + .MX = Rnd(-4, +5) + .MY = Rnd(-4, +5) + End If + + .Agility = 5 + .Acceleration = 0.75 + .Hull = 100 + + .Direction = Rad(180) + + For I = 0 To aLine.Count - 1 + If (Not (Left$(aLine[I], 1) = "'")) And (Not (aLine[I] = "")) Then + .Degree.Add(CFloat(Split(aLine[I], ",")[1])) + .Distance.Add(CFloat(Split(aLine[I], ",")[0])) + + If .Distance[.Distance.Count - 1] > .Size Then + .Size = .Distance[.Distance.Count - 1] + End If + End If + Next + End With + + 'CLOSE #F +End diff --git a/app/examples/Games/DeepSpace/.src/FAbout.class b/app/examples/Games/DeepSpace/.src/FAbout.class new file mode 100644 index 00000000..f59117a0 --- /dev/null +++ b/app/examples/Games/DeepSpace/.src/FAbout.class @@ -0,0 +1,19 @@ +' Gambas class file + +' +' Copyright (C) 2004, Michael Isaac. All rights reserved. +' + +Public Sub cmdOK_Click() + Me.Close() +End + +Public Sub Form_Open() + + Me.Center + + lblInfo.Text = + ("DeepSpace  ") & Application.Version & ("
" + "A vector engine written in Gambas.

Contact subjugator@gmail.com with questions.
" + "Copyright (C) 2004, Michael Isaac. All rights reserved.") +End diff --git a/app/examples/Games/DeepSpace/.src/FAbout.form b/app/examples/Games/DeepSpace/.src/FAbout.form new file mode 100644 index 00000000..5d9934a7 --- /dev/null +++ b/app/examples/Games/DeepSpace/.src/FAbout.form @@ -0,0 +1,19 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(51.6667,32.1667,54,26) + Text = ("About DeepSpace") + Resizable = False + { lblInfo TextLabel + MoveScaled(1,1,35,19) + Text = ("") + } + { cmdOK Button + MoveScaled(19,21,13,4) + Text = ("&OK") + } + { pbIcon PictureBox + MoveScaled(36,1,17,16) + Picture = Picture["images/deepspace.png"] + } +} diff --git a/app/examples/Games/DeepSpace/.src/FMain.class b/app/examples/Games/DeepSpace/.src/FMain.class new file mode 100644 index 00000000..f685e24a --- /dev/null +++ b/app/examples/Games/DeepSpace/.src/FMain.class @@ -0,0 +1,81 @@ +' Gambas class file + +' +' Copyright (C) 2004, Michael Isaac. All rights reserved. +' + +Private Attacking As Boolean + +Public Sub _new() + mMain.Canvas = daCanvas +End + +Public Sub tmrMainLoop_Timer() + mMain.MainLoop() +End + +Public Sub Form_KeyPress() + + Select Case Key.Code + Case Key.Left + MMain.Obj[0].TurnLeft = True + Case Key.Right + MMain.Obj[0].TurnRight = True + Case Key.Up + MMain.Obj[0].Thrust = True + Case Key["F"] + MMain.Obj[0].Attack = True + Case Key["D"] + MMain.Obj[0].MX = 0 + MMain.Obj[0].MY = 0 + End Select +End + +Public Sub Form_KeyRelease() + + Select Case Key.Code + Case Key.Left + MMain.Obj[0].TurnLeft = False + Case Key.Right + MMain.Obj[0].TurnRight = False + Case Key.Up + MMain.Obj[0].Thrust = False + Case Key["F"] + MMain.Obj[0].Attack = False + End Select +End + +Public Sub Form_Close() + mMain.Exit() +End + +Public Sub Form_Resize() + mMain.SCREEN_WIDTH = Me.ClientW + mMain.SCREEN_HEIGHT = Me.ClientH + + daCanvas.H = Me.ClientH + daCanvas.W = Me.ClientW +End + +Public Sub daCanvas_KeyPress() + Form_KeyPress() +End + +Public Sub daCanvas_KeyRelease() + Form_KeyRelease() +End + +Public Sub mnuMainExit_Click() + Me.Delete +End + +Public Sub mnuMainAbout_Click() + FAbout.Show() +End + +Public Sub mnuShowText_Click() + + mnuShowText.Checked = Not mnuShowText.Checked + MMain.ShowObjectLabel = mnuShowText.Checked + +End diff --git a/app/examples/Games/DeepSpace/.src/FMain.form b/app/examples/Games/DeepSpace/.src/FMain.form new file mode 100644 index 00000000..761e7034 --- /dev/null +++ b/app/examples/Games/DeepSpace/.src/FMain.form @@ -0,0 +1,35 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(19,0,75.2857,70.7143) + Text = ("DeepSpace Vector Engine") + Icon = Picture["images/deepspace.png"] + Resizable = False + { mnuMain Menu + Text = ("&DeepSpace") + { mnuShowText Menu + Text = ("&Show object labels") + } + { mnuMainAbout Menu + Text = ("&About DeepSpace ...") + } + { mnuMainSep1 Menu + } + { mnuMainExit Menu + Text = ("&Exit") + Shortcut = "Ctrl+Q" + } + } + { daCanvas DrawingArea + MoveScaled(0,0,54,50) + Font = Font["Monospace"] + Background = &H000000& + Cached = True + Focus = True + } + { tmrMainLoop #Timer + #MoveScaled(65,43) + Enabled = True + Delay = 20 + } +} diff --git a/app/examples/Games/DeepSpace/.src/MMain.module b/app/examples/Games/DeepSpace/.src/MMain.module new file mode 100644 index 00000000..90f5f504 --- /dev/null +++ b/app/examples/Games/DeepSpace/.src/MMain.module @@ -0,0 +1,348 @@ +' Gambas module file + +' +' Copyright (C) 2004, Michael Isaac. All rights reserved. +' + +Public Obj As Object[] +Public Bullet As Object[] + +Public Canvas As DrawingArea + +Public BULLET_SIZE As Float +Public BULLET_SPEED As Float + +Public KEY_LEFT As Boolean +Public KEY_RIGHT As Boolean +Public KEY_UP As Boolean +Public KEY_DOWN As Boolean + +Public KEY_FIRE As Boolean +Public KEY_FIRESTATE As Boolean + +Public SCREEN_WIDTH As Integer +Public SCREEN_HEIGHT As Integer + +Public BOT_SPACE As Integer 'Which Obj[] is the bot + +Public FPS_TIME As Float +Public FPS_COUNTER As Integer +Public FPS_COUNT As Integer + +Public ShowObjectLabel As Boolean + +Public Sub Main() + + System.Profile = False + MMath.InitializeSineTable() + ShowObjectLabel = False + + Obj = New Object[] + Bullet = New Object[] + + FPS_TIME = Timer + + BULLET_SIZE = 7 + BULLET_SPEED = 15 + + SCREEN_WIDTH = FMain.ClientW + SCREEN_HEIGHT = FMain.ClientH + + LoadObjectList() + + FMain.Show() +End + +Public Sub Exit() + Obj = Null + Bullet = Null + Canvas = Null +End + +Sub LoadObjectList() + Dim I As Integer + Dim J As Integer + Dim sData As String + Dim tmpO As CObject + + 'DIM F AS File + + Dim V As New String[] + Dim aLine As New String[] + + sData = File.Load(Application.Path &/ "object.data/main.lst") + + 'OPEN Application.Path &/ "object.data/main.lst" FOR READ AS #F + 'READ #F, sData, Lof(F) + + 'Split this into an array and remove the CR character + aLine = Split(Replace(sData, Chr$(13), Null), "\n") + + For I = 0 To aLine.Count - 1 + If (Not (Left$(aLine[I], 1) = "'")) And (Not (aLine[I] = "")) Then + V = Split(aLine[I], ",") + If V.Count = 4 Then + For j = 1 To If(v[1] = "Object1", 100, 1) + tmpO = New CObject + tmpO.Load2DObject(V[0], V[1], CInt(V[2]), CInt(V[3])) + Obj.Add(tmpO) + Next + End If + End If + Next + + 'CLOSE #F +End + +Sub ApplyPhysics() + Dim I As Integer + Dim U As Integer + Dim Ob As CObject + + If Obj = Null Then Return + + For Each Ob In Obj + With Ob + .Direction = .Direction + Rad(.Torque) + + If .TurnLeft = True Then .Direction = .Direction + Rad(.Agility) + If .TurnRight = True Then .Direction = .Direction - Rad(.Agility) + + If .Direction > Rad(360) Then .Direction = Rad(0) + If .Direction < Rad(0) Then .Direction = Rad(360) + + If .Thrust = True Then + .MX = .MX + ((Sin(.Direction)) * .Acceleration) + .MY = .MY + ((Cos(.Direction)) * .Acceleration) + End If + + If (.MX <> 0) Or (.MY <> 0) Then + .X = .X + (.MX / 20) + .Y = .Y + (.MY / 20) + End If + + If .Attack Then + AddBullet(CInt(.X), CInt(.Y), .Direction, .ID, 10) + End If + End With + Next +End + +Function IsObjectCollision(O1 As CObject, O2 As CObject) As Boolean + If GetDistance(O1.X, O1.Y, O2.X, O2.Y) <= O2.Size Then + Return True + End If +End Function + +Function IsBulletCollision(O As CObject, B As CBullet) As Boolean + If GetDistance(O.X, O.Y, B.X, B.Y) <= O.Size Then + Return True + End If +End Function + +Sub CollisionHandler() + + Dim I As Integer + Dim J As Integer + Dim hBullet As CBullet + Dim hObj As CObject + + If Obj = Null Then Return + If Bullet = Null Then Return + + For I = 0 To Obj.Count - 1 + For J = 0 To Bullet.Count - 1 + + If J > Bullet.Count - 1 Then Break + If I > Obj.Count - 1 Then Break + + hObj = Obj[I] + hBullet = Bullet[J] + + If Not (hBullet.Owner = hObj.ID) Then + If IsBulletCollision(hObj, hBullet) Then + + hObj.Hull = hObj.Hull - hBullet.Damage + Bullet.Remove(J) + + If hObj.Hull <= 0 Then + If I = 0 Then + 'Message("Player was just killed.") + Else + Obj.Remove(I) + End If + End If + End If + End If + Next + Next + +' FOR J = 0 TO (Obj.Count - 1) +' FOR I = 0 TO (Obj.Count - 1) +' IF I <> J THEN +' IF IsObjectCollision(Obj[J], Obj[I]) THEN +' 'This is where Objects collide, and we need +' 'calculate forces here. +' END IF +' END IF +' NEXT +' NEXT +End + +Public Sub AddBullet(CX As Integer, CY As Integer, D As Float, OwnMe As String, Dmg As Integer) + Dim B As New CBullet + + With B + .X = CX + .Y = CY + .Direction = D + .Owner = OwnMe + .Damage = Dmg + End With + + Bullet.Add(B) +End + +Sub MoveBullets() + Dim I As Integer + + If Bullet = Null Then Return + + For I = 0 To Bullet.Count - 1 + If I > Bullet.Count - 1 Then Break + + With Bullet[I] + .X = .X + ((Sin(.Direction)) * BULLET_SPEED) + .Y = .Y + ((Cos(.Direction)) * BULLET_SPEED) + End With + + If ((Bullet[I].X > SCREEN_WIDTH) Or (Bullet[I].X < 0)) Or ((Bullet[I].Y > SCREEN_HEIGHT) Or (Bullet[I].Y < 0)) Then + Bullet.Remove(I) + End If + Next +End + +Sub RenderBullets() + Dim B As CBullet + + Draw.Foreground = Color.Cyan + Draw.FillColor = Color.Blue + Draw.FillStyle = 1 + + Randomize + + For Each B In Bullet + Draw.Ellipse(B.X, B.Y, BULLET_SIZE, BULLET_SIZE) + Next +End + +Public Sub RenderObjects() + Dim I, J As Integer + Dim Ob As CObject + Dim Size As Integer + Dim aPoint As Integer[] + Dim A, D As Float + Dim Tag As String + + Draw.Foreground = Color.Cyan + For Each Ob In Obj + With Ob + Size = .Degree.Count + + aPoint = .Points + + aPoint.Resize(Size * 2) + + J = 0 + For I = 0 To Size - 1 + A = .Direction + Rad(.Degree[I]) + D = .Distance[I] + aPoint[J] = .X + (Sin(A) * D) + Inc J + aPoint[J] = .Y + (Cos(A) * D) + Inc J + Next + + Draw.Polygon(aPoint) + End With + Next + + If ShowObjectLabel Then + Draw.Foreground = Color.Green + For Each Ob In Obj + With Ob + Tag = .ID & " " & .Hull & "%" + Draw.Text(Tag, .X - (Draw.TextWidth(Tag) / 2), .Y - (35)) + End With + Next + Endif +End + +Sub CheckObjectWarp() + Dim Ob As CObject + + For Each Ob In Obj + With Ob + If .Y > SCREEN_HEIGHT Then .Y = 0 + If .Y < 0 Then .Y = SCREEN_HEIGHT + + If .X > SCREEN_WIDTH Then .X = 0 + If .X < 0 Then .X = SCREEN_WIDTH + End With + Next +End + +Public Sub MainLoop() + + Dim eTime As Float + + ApplyPhysics() + CollisionHandler() + + MoveBullets() + + If Canvas = Null Then Return + + CheckObjectWarp() + + 'Canvas.Clear() + + Draw.Begin(Canvas) + Draw.FillRect(0, 0, Draw.W, Draw.H, Draw.Background) + + eTime = Timer + If (eTime - FPS_TIME) > 1 Then + FPS_TIME = eTime + FPS_COUNT = FPS_COUNTER + FPS_COUNTER = 0 + Else + Inc FPS_COUNTER + Endif + + RenderObjects() + RenderBullets() + + Draw.Foreground = Color.Red + + Draw.Font.Bold = True + Draw.Text(("Object Count:") & " " & Obj.Count, 1, 0) + Draw.Text(("Bullet Count:") & " " & Bullet.Count, 1, Draw.Font.Height * 1) + Draw.Text(("FPS") & " : " & FPS_COUNT, 1, Draw.Font.Height * 2) + + Draw.End() +End + +Function GetDistance(X1 As Float, Y1 As Float, X2 As Float, Y2 As Float) As Float + 'DIM A AS Integer + 'DIM B AS Integer + + 'A = (X1 - X2) + 'B = (Y1 - Y2) + + 'I'm not sure about gambas, but in VB the ^ operator + 'makes calculations we dont really need. This might speed up + 'the process. And we need as much speed as we can get. + + 'RETURN Sqr((A * A) + (B * B)) + Return Hyp(X1 - X2, Y1 - Y2) +End diff --git a/app/examples/Games/DeepSpace/.src/MMath.module b/app/examples/Games/DeepSpace/.src/MMath.module new file mode 100644 index 00000000..32348369 --- /dev/null +++ b/app/examples/Games/DeepSpace/.src/MMath.module @@ -0,0 +1,64 @@ +' Gambas module file + +' +' Copyright (C) 2004, Michael Isaac. All rights reserved. +' + +'PUBLIC CONST Radian AS Float = 0.01745329252 + +Public SineArray As New Float[] +Public CoSineArray As New Float[] + +Public Sub InitializeSineTable() + Dim I As Integer + + 'We create the cosine/sine array so we dont have to call + 'a function which had to calculate a value everytime we call it. + 'These calls are made once here, and then from now we can just + 'point at the value we want. Should be much faster this way. + + For I = 0 To 359 + SineArray.Add(Sin(I * (Pi / 180))) + CoSineArray.Add(Cos(I * (Pi / 180))) + Next +End + + +Function GetDistance(X1 As Float, Y1 As Float, X2 As Float, Y2 As Float) As Float + 'RETURN Sqr((X1 - X2) ^ 2 + (Y1 - Y2) ^ 2) + Return Hyp(X1 - X2, Y1 - Y2) +End + + +' FUNCTION CosE(A AS Float) AS Float +' DIM Angle AS Integer +' +' 'Convert our radian angle to a degree value +' Angle = CInt(A * 180 / Pi) +' +' 'Ensure we're between 0 and 359 +' DO WHILE ((Angle < 0) OR (Angle > 359)) +' IF Angle > 359 THEN Angle = Angle - 360 +' IF Angle < 0 THEN Angle = Angle + 360 +' LOOP +' +' 'Return the value +' RETURN CoSineArray[Angle] +' END +' +' +' FUNCTION SinE(A AS Float) AS Float +' DIM Angle AS Integer +' +' 'Convert our radian angle to a degree value +' Angle = CInt(A * (180 / Pi)) +' +' 'Ensure we're between 0 and 359 +' DO WHILE ((Angle < 0) OR (Angle > 359)) +' IF (Angle > 359) THEN Angle = Angle - 360 +' IF (Angle < 0) THEN Angle = Angle + 360 +' LOOP +' +' 'Return the value +' RETURN SineArray[Angle] +' END diff --git a/app/examples/Games/DeepSpace/doc/.html_files/eg3.gif b/app/examples/Games/DeepSpace/doc/.html_files/eg3.gif new file mode 100644 index 0000000000000000000000000000000000000000..afdb4e80a294d9f3ec99e8995581727e23f8f5a9 GIT binary patch literal 2782 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 + + + Polar Coordinates + + + +
+ + + + + + +
+
Polar +Coordinates
+ converting +(r, d) to (x, y)
+
+
+
+ + + + + + +

+
+
Here's a +point shown using polar +coordinates.
+ It would be labeled (r, d) + or (4, 300°) for this point.
+

+
+
+
+
+
+
+
+ + + + + + + +
+
+
The +point (x, y) +can be located by finding the horizontal and vertical components +of r.  We can do that by +substituting the radius and the degree + (r, d) into the +following formulas.
+
+
+
+
+
x += r * cos(d)
+ y = r * +sin(d)
+
+
+
So we end up with;
+
+
+
+
x += 4 * cos(300) =     2
+y = 4 * sin(300) = -3.46
+
+
+
As we can +see, the +point (4, 300°) +in +polar coordinates is equivalent to a point with the rectangular +coordinates (2, -3.46)
+
+

+
+

+x = r * cos(d)

+ y = r * +sin(d)
+
+
+
+
+
+ + + + + + +
Content by Michael Isaac, 2004
+
Original Graphics, & +Design by Bill Willis 2001
+
+
+
+
+
+
+ + diff --git a/app/examples/Games/DeepSpace/doc/howto.txt b/app/examples/Games/DeepSpace/doc/howto.txt new file mode 100644 index 00000000..7b77c1ba --- /dev/null +++ b/app/examples/Games/DeepSpace/doc/howto.txt @@ -0,0 +1,16 @@ + + +HOWTO make objects float around the screen + + set the Torque property of a CObject which will determine its + spin. and then set its motion path, which is defined by its + MX and MY properties. + +HOWTO make objects fire + + this is useful only if you plan to write bot ai. + you can use the Attack property to tell an object to release a + bullet. One bullet will be released every cycle of the mainloop + so make sure you set Attack to false or you will get auto fire + like the ship has. + diff --git a/app/examples/Games/DeepSpace/doc/todo.txt b/app/examples/Games/DeepSpace/doc/todo.txt new file mode 100644 index 00000000..b10d6d4e --- /dev/null +++ b/app/examples/Games/DeepSpace/doc/todo.txt @@ -0,0 +1,17 @@ + +Things that need to be finished or started. + + - object collision. i removed the old object collision cause it + sucked. new collision code needs to be written which includes + elastic collisions so asteroids that bump eachother or the ship + will around + + - some kind of asteroids style game as an example of what + this little engine is for + + - write bot ai, so there is an opponent for everyone to fight + + - single bullet fire mode, not full on automatic + - network play mode, where players can fight head to head + - more stuff i havent thought of + diff --git a/app/examples/Games/DeepSpace/images/deepspace.png b/app/examples/Games/DeepSpace/images/deepspace.png new file mode 100644 index 0000000000000000000000000000000000000000..cb4454f5e59f283251010558593f3a4d2750973a GIT binary patch literal 14195 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/DeepSpace/object.data/kite.2do b/app/examples/Games/DeepSpace/object.data/kite.2do new file mode 100644 index 00000000..02cee166 --- /dev/null +++ b/app/examples/Games/DeepSpace/object.data/kite.2do @@ -0,0 +1,8 @@ +' Generated with the DeepSpace Polygon Factory. + +11,5 +12,85 +20,177 +20,183 +12,275 +11,355 diff --git a/app/examples/Games/DeepSpace/object.data/main.lst b/app/examples/Games/DeepSpace/object.data/main.lst new file mode 100644 index 00000000..110a7135 --- /dev/null +++ b/app/examples/Games/DeepSpace/object.data/main.lst @@ -0,0 +1,12 @@ +' +' Object List File. +' +' This file is used to tell the game which files to load on start up. +' The first object is the player object. +' +' data_file.2do,ID,X,Y +' + +ship.2do,Subjugator,320,240 +triangle.2do,Object1,200,100 +triangle.2do,Object2,300,100 diff --git a/app/examples/Games/DeepSpace/object.data/ship.2do b/app/examples/Games/DeepSpace/object.data/ship.2do new file mode 100644 index 00000000..8615f9e8 --- /dev/null +++ b/app/examples/Games/DeepSpace/object.data/ship.2do @@ -0,0 +1,13 @@ +' +' All ordered pairs are Polar Coordinates (Radius, Degree) +' See doc/coordinates.html for more information +' + +8,000 +8,120 +20,040 +15,140 +20,180 +15,220 +20,320 +8,240 diff --git a/app/examples/Games/DeepSpace/object.data/triangle.2do b/app/examples/Games/DeepSpace/object.data/triangle.2do new file mode 100644 index 00000000..85c2fc8d --- /dev/null +++ b/app/examples/Games/DeepSpace/object.data/triangle.2do @@ -0,0 +1,8 @@ +' +' All ordered pairs are Polar Coordinates (Radius, Degree) +' See doc/coordinates.html for more information +' + +30,000 +30,120 +30,240 diff --git a/app/examples/Games/DeepSpace/object.data/x-wing.2do b/app/examples/Games/DeepSpace/object.data/x-wing.2do new file mode 100644 index 00000000..f777e8d2 --- /dev/null +++ b/app/examples/Games/DeepSpace/object.data/x-wing.2do @@ -0,0 +1,38 @@ +' +' All ordered pairs are Polar Coordinates (Radius, Degree) +' See doc/coordinates.html for more information +' + +18,3 +16,10 +16,7 +6,38 +5,53 +15,82 +16,79 +18,60 +19,59 +22,50 +19,59 +20,63 +18,96 +17,100 +16,97 +6,116 +6,141 +6,218 +6,243 +16,262 +17,259 +18,263 +20,296 +19,300 +22,309 +19,300 +18,299 +16,280 +15,277 +5,306 +16,349 +16,352 +18,356 diff --git a/app/examples/Games/GNUBoxWorld/.directory b/app/examples/Games/GNUBoxWorld/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Games/GNUBoxWorld/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Games/GNUBoxWorld/.hidden/screenshots/2014-12-14.png b/app/examples/Games/GNUBoxWorld/.hidden/screenshots/2014-12-14.png new file mode 100644 index 0000000000000000000000000000000000000000..c5b1b7648619c004bc0b3a08fc1f2fdf2e08382f GIT binary patch literal 185109 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�- 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%0Db{Pw*B*R@gJ zvK(6)q1c-wu04(%+`+0fH(#;<(O8U%%1S2ufYLo5;Z-gqUSCUMEJ<@q16_fl#C3_+ z*Wox*lpfg4WMvgq)zwU-QghmST4d(470H|yK-shu_R1>n0b!-FC3P&kZaJ-EFrLXG zN-^}>b2Mz)Le#gER5#M$q$sLuBy3Bv-(5#oV_>kP9M9%UO)dG8BE6>^7Bn=o=h$96(X_O#M(K-de2gcP zc!20F=PGE~m`S!L$z zhh~LduD{pMak5!>I-oeJLcfzS5tQD-aGyTM{(d_LTCA9LhOpW&Q zhu{8V_H=wmcgKDT^PkV?>Fi|h&Yf6mu~@1q7tq_+OI2lzj5EdLP_ZBe zHoxcCw|h5T?d@~s608(>n%N#;jHH8U>jhe5cK3AA(v@s8iXHvkTxZg}d%TmX&D#jV zC3JLjBgJKm_naUyHA(5xbztqZ5JE^RG(LN}hB)-xf6`K4PkN+_To7>miuLE^0gGB& zi8nUVJ(!~U`6u9kZ&F%Xj3AWk`v?Nd)cP9`@&>5h{tQ!}`4!qWZ6Yx`I;Z1gRK5_( zdjqF)fKg<;>E%NSXKYlOT34{GqKduychOkBfK*X2LC&RexSMq=){?vZ%Ou(luuHA&qxrEBANYynnJTk})%T{sMwg>pq#?8d~j^Okj2c@xCA}eoX!i3RE zar3g3e0l2^xM}@nw9%aHcjk|}c%18&EhCpYNmEl5$U0-9$}>SSe(OJ6O2D zFxI)BriOC7^cYK)Eu+4%an4)?56GANYE}pcj!eHB@h$q}Hft@*R#U#~T{1NbvC&G7 zi{kLpkMoVYA7I7mjWjkbX4jtgc=O#?C|SIkNL4+lXa$F@rM;_*<;V8%tJ@wp? znj)D@;<`B!BO`d8M>3Hh<2X#DQu#tClVNOh6fc(}F*-`lbvczxGBq(Vx8o#MnQ5Nd z&dLEwt90Q=ki}Q>F|UWi;Rs*cdM{7D_!Oa)H{qpDQ4@}k%ejaMu?1D!dduBxYP*?^ zj>GKQ`#wD*L%2aeLsbpUTecw=@cQ}shkpb>;n-@SiC#b3DD$qJv(YZ1WV!=h$N>WI z>Jj^`i5%Ys$YgVsUSK0!g)mC8MUl`LKs3bP+`U2`Hvm@rDaX@T8;Fzjbzm)5-3b{1 zC87hRL_};^*iON82#hCAwR_=MIGy!X#>r0CPFJAL~CZ1py#` zjIfkEH|&t8m{4g01=r7*_|k(;{X5v07*qoM6N<$f-zMzSO5S3 literal 0 HcmV?d00001 diff --git a/app/examples/Games/GNUBoxWorld/.lang/ca.po b/app/examples/Games/GNUBoxWorld/.lang/ca.po new file mode 100644 index 00000000..a4a49c22 --- /dev/null +++ b/app/examples/Games/GNUBoxWorld/.lang/ca.po @@ -0,0 +1,112 @@ +# Catalan translation of GNUBoxWorld +# Copyright (C) 2000-2010 Benoît Minisini. +# This file is distributed under the same license as the GNUBoxWorld package. +# Jordi Sayol , 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: GNUBoxWorld\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2011-03-20 18:06+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FMain.form:44 +msgid "About" +msgstr "Quant a" + +#: FrmAbout.form:13 +msgid "About..." +msgstr "Quant a..." + +#: FMain.class:254 +msgid "Are you sure?" +msgstr "N'esteu segur?" + +#: FrmAbout.form:20 +msgid "Author" +msgstr "Autor" + +#: FrmAbout.form:24 +msgid "Author: Pablo Mileti.

You can submit your questions, suggestions, bugs, etc, to the following E-Mail address:\n
pablomileti@gmail.com" +msgstr "Autor: Pablo Mileti.

Podeu enviar les vostres preguntes, suggeriments, errors, etc. a aquesta adreça de correu electrònic:\n pablomileti@gmail.com" + +#: FrmAbout.form:42 +msgid "Aim
\nThe shrimp has to push the movable boxes to the marked positions.

\nMove
\nTo move around the game board, use the arrow keys: up, down, left and right.

\nClear
\nTo restart the level, press the spacebar key." +msgstr "Objectiu
\nLa gambeta ha d'empènyer les caixes mòbils a les posicions marcades.

\nMoviment
\nPer moure-us per tot el tauler de joc, feu servir les tecles de fletxa: amunt, avall, esquerra i dreta.

\nNeteja
\nPer a reiniciar el nivell, premeu la tecla d'espai." + +#: FMain.form:21 +msgid "Clear" +msgstr "Neteja" + +#: FrmAbout.form:50 +msgid "&Close" +msgstr "&Tanca" + +#: FMain.form:18 +msgid "Game" +msgstr "Joc" + +#: .project:1 +msgid "GNUBoxWorld" +msgstr "GNUBoxWorld" + +#: FMain.class:81 +msgid "GNUBoxWorld - Congratulation! You're very clever!" +msgstr "GNUBoxWorld - Felicitats! Ets molt inteŀligent!" + +#: FMain.class:222 +msgid "GNUBoxWorld - Level " +msgstr "GNUBoxWorld - Nivell" + +#: FMain.class:83 +msgid "Good Luck!" +msgstr "Bona sort!" + +#: FMain.form:36 +msgid "Help" +msgstr "Ajuda" + +#: FMain.form:39 FrmAbout.form:38 +msgid "How to play?" +msgstr "Com jugar?" + +#: FMain.form:32 +msgid "Level" +msgstr "Nivell" + +#: FrmAbout.form:28 +msgid "License" +msgstr "Llicència" + +#: FrmAbout.form:32 +msgid "\n Copyright (C) 2010. Author: Pablo Mileti \n\nThis program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see ." +msgstr "\n Copyright (C) 2010. Autor: Pablo Mileti \n\nAquest programa és programari lliure; el podeu distribuir i/o modificar sota els termes de la llicència GNU General Public License tal i com està publicada per la Free Software Foundation; ja sigui la versió 3 de la llicència, o bé (si ho preferiu) qualsevol versió posterior.\n\nAquest programa es distribueix amb la voluntat que pugui ser útil però SENSE CAP GARANTIA; ni tant sols les garanties implícites MERCANTILS o ESPECÍFIQUES PER UN PROPÒSIT DETERMINAT. Si voleu més informació, vegeu la llicència GNU General Public Licence.\n\nHauríeu d'haver rebut una còpia de la GNU General Public Licence juntament amb aquest programa. Si no fos així, mireu ." + +#: FMain.class:83 +msgid "Next level" +msgstr "Nivell següent" + +#: FMain.class:254 +msgid "No" +msgstr "-" + +#: FMain.form:26 +msgid "Quit" +msgstr "Surt" + +#: .project:2 +msgid "This is another version of the popular game Box World. Contains 16 levels, all are possible to resolve. Level designs are taken from Box It game for mobile phones." +msgstr "Aquesta és una altra versió del popular joc Box Wolrd. Conté 16 nivells, i tots es poden resoldre. El dissenys dels nivells s'han agafat del joc Box per a telèfons mòbils." + +#: FMain.class:254 +msgid "Yes" +msgstr "Sí" + diff --git a/app/examples/Games/GNUBoxWorld/.lang/cs.po b/app/examples/Games/GNUBoxWorld/.lang/cs.po new file mode 100644 index 00000000..a890bbf8 --- /dev/null +++ b/app/examples/Games/GNUBoxWorld/.lang/cs.po @@ -0,0 +1,116 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "GNUBoxWorld" +msgstr "-" + +#: .project:2 +msgid "This is another version of the popular game Box World. Contains 16 levels, all are possible to resolve. Level designs are taken from Box It game for mobile phones." +msgstr "To je další verze populární hry Box World. Obsahuje 16 úrovní, všechny je možné vyřešit. Vzory úrovňí jsou převzaty z Box hry pro mobilní telefony." + +#: FMain.class:81 +msgid "GNUBoxWorld - Congratulation! You're very clever!" +msgstr "GNUBoxWorld - Gratulujeme! Jsi velmi chytrý!" + +#: FMain.class:83 +msgid "Good Luck!" +msgstr "Hodně štěstí!" + +#: FMain.class:83 +msgid "Next level" +msgstr "Další level" + +#: FMain.class:222 +msgid "GNUBoxWorld - Level " +msgstr "GNUBoxWorld - úroveň " + +#: FMain.class:254 +msgid "Are you sure?" +msgstr "Jste si jisti?" + +#: FMain.class:254 +msgid "No" +msgstr "Ne" + +#: FMain.class:254 +msgid "Yes" +msgstr "Ano" + +#: FMain.form:18 +msgid "Game" +msgstr "Hra" + +#: FMain.form:21 +msgid "Clear" +msgstr "Vyčistit" + +#: FMain.form:26 +msgid "Quit" +msgstr "Ukončit" + +#: FMain.form:32 +msgid "Level" +msgstr "Úroveň" + +#: FMain.form:36 +msgid "Help" +msgstr "Nápověda" + +#: FMain.form:39 FrmAbout.form:38 +msgid "How to play?" +msgstr "Jak hrát?" + +#: FMain.form:44 +msgid "About" +msgstr "O" + +#: FrmAbout.form:13 +msgid "About..." +msgstr "O..." + +#: FrmAbout.form:20 +msgid "Author" +msgstr "Autor" + +#: FrmAbout.form:24 +msgid "" +"Author: Pablo Mileti.

You can submit your questions, suggestions, bugs, etc, to the following E-Mail address:\n" +" pablomileti@gmail.com" +msgstr "" +"Autor: Pablo Mileti.

Můžete odeslat Vaše dotazy, připomínky, chyby, atd., nanásledující e-mail:\n" +" pablomileti@gmail.com" + +#: FrmAbout.form:28 +msgid "License" +msgstr "Licence" + +#: FrmAbout.form:42 +msgid "" +"Aim
\n" +"The shrimp has to push the movable boxes to the marked positions.

\n" +"Move
\n" +"To move around the game board, use the arrow keys: up, down, left and right.

\n" +"Clear
\n" +"To restart the level, press the spacebar key." +msgstr "" +"Aim
\n" +"krevety musí tlačit pohyblivé boxy označených místech.

\n" +"Pohyb
\n" +"Pro pohyb na hrací ploše, pomocí kláves se šipkami: nahoru,dolů, doleva a doprava.

\n" +"Vymazat
\n" +"Chcete-li restartovat úroveň, stiskněte klávesu mezerník." + +#: FrmAbout.form:50 +msgid "&Close" +msgstr "&Zavřít" diff --git a/app/examples/Games/GNUBoxWorld/.lang/de.po b/app/examples/Games/GNUBoxWorld/.lang/de.po new file mode 100644 index 00000000..b28ef375 --- /dev/null +++ b/app/examples/Games/GNUBoxWorld/.lang/de.po @@ -0,0 +1,105 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "GNUBoxWorld" +msgstr "-" + +#: .project:2 +msgid "This is another version of the popular game Box World. Contains 16 levels, all are possible to resolve. Level designs are taken from Box It game for mobile phones." +msgstr "Dies ist noch eine Version des populären Spiels Box World. Enthält 16 Levels, alle lösbar. Die Level-Designs stammen von dem Spiel \"Box It\" für Handys." + +#: FMain.class:81 +msgid "GNUBoxWorld - Congratulation! You're very clever!" +msgstr "GNUBoxWorld - Gratulation! Du bist verdammt schlau!" + +#: FMain.class:83 +msgid "Good Luck!" +msgstr "Viel Glück!" + +#: FMain.class:83 +msgid "Next level" +msgstr "Nächstes Level" + +#: FMain.class:222 +msgid "GNUBoxWorld - Level " +msgstr "-" + +#: FMain.class:254 +msgid "Are you sure?" +msgstr "Bist du sicher?" + +#: FMain.class:254 +msgid "No" +msgstr "Nein" + +#: FMain.class:254 +msgid "Yes" +msgstr "Ja" + +#: FMain.form:18 +msgid "Game" +msgstr "Spiel" + +#: FMain.form:21 +msgid "Clear" +msgstr "Neustart" + +#: FMain.form:26 +msgid "Quit" +msgstr "Beenden" + +#: FMain.form:32 +msgid "Level" +msgstr "-" + +#: FMain.form:36 +msgid "Help" +msgstr "Hilfe" + +#: FMain.form:39 FrmAbout.form:38 +msgid "How to play?" +msgstr "Spielanleitung" + +#: FMain.form:44 +msgid "About" +msgstr "Über" + +#: FrmAbout.form:13 +msgid "About..." +msgstr "Über..." + +#: FrmAbout.form:20 +msgid "Author" +msgstr "Autor" + +#: FrmAbout.form:24 +msgid "Author: Pablo Mileti.

You can submit your questions, suggestions, bugs, etc, to the following E-Mail address:\n pablomileti@gmail.com" +msgstr "Autor: Pablo Mileti.

Du kannst Fragen, Vorschläge, Bugs, etc, an diese E-Mail-Adresse senden:\n pablomileti@gmail.com" + +#: FrmAbout.form:28 +msgid "License" +msgstr "Lizenz" + +#: FrmAbout.form:32 +msgid "\n Copyright (C) 2010. Author: Pablo Mileti \n\nThis program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see ." +msgstr "\n Copyright (C) 2010. Autor: Pablo Mileti \n\nThis program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see ." + +#: FrmAbout.form:42 +msgid "Aim
\nThe shrimp has to push the movable boxes to the marked positions.

\nMove
\nTo move around the game board, use the arrow keys: up, down, left and right.

\nClear
\nTo restart the level, press the spacebar key." +msgstr "Ziel
Der Shrimp muss die beweglichen Boxen auf die markierten Felder schieben.

\nBewegen
\nMit den Pfeiltasten Hoch, Runter, Links und Rechts bewegt man den Shrimp auf dem Spielfeld.

\nNeustart
\nUm das Level neu zu starten, Leertaste drücken." + +#: FrmAbout.form:50 +msgid "&Close" +msgstr "&Schließen" + diff --git a/app/examples/Games/GNUBoxWorld/.lang/es_AR.po b/app/examples/Games/GNUBoxWorld/.lang/es_AR.po new file mode 100644 index 00000000..1bbb7e86 --- /dev/null +++ b/app/examples/Games/GNUBoxWorld/.lang/es_AR.po @@ -0,0 +1,101 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "GNUBoxWorld" +msgstr "-" + +#: .project:2 +msgid "This is another version of the popular game Box World. Contains 16 levels, all are possible to resolve. Level designs are taken from Box It game for mobile phones." +msgstr "Esta es otra versión del popular juego Box World. Contiene 16 niveles, todos son posibles de resolver. El diseño de los niveles fue tomado del juego Box It para teléfonos celulares." + +#: FMain.class:59 +msgid "GNUBoxWorld - Congratulation! You're very clever!" +msgstr "GNUBoxWorld - Felicitaciones! Eres muy listo!" + +#: FMain.class:61 +msgid "Good Luck!" +msgstr "Suerte!" + +#: FMain.class:61 +msgid "Next level" +msgstr "Próximo nivel " + +#: FMain.class:197 +msgid "GNUBoxWorld - Level " +msgstr "GNUBoxWorld - Nivel " + +#: FMain.class:224 +msgid "Are you sure?" +msgstr "Desea salir?" + +#: FMain.class:224 +msgid "Yes" +msgstr "Si" + +#: FMain.class:258 +msgid "Game" +msgstr "Juego" + +#: FMain.class:261 +msgid "Clear" +msgstr "Limpiar" + +#: FMain.class:266 +msgid "Quit" +msgstr "Salir" + +#: FMain.class:272 +msgid "Help" +msgstr "Ayuda" + +#: FMain.class:275 FrmAbout.class:61 +msgid "How to play?" +msgstr "Cómo jugar?" + +#: FMain.class:280 +msgid "About" +msgstr "Acerca de..." + +#: FrmAbout.class:36 +msgid "About..." +msgstr "Acerca de..." + +#: FrmAbout.class:43 +msgid "Author" +msgstr "Autor" + +#: FrmAbout.class:47 +msgid "" +"Author: Pablo Mileti.

You can submit your questions, suggestions, bugs, etc, to the following E-Mail address:\n" +" pablomileti@gmail.com" +msgstr "Autor: Pablo Mileti.

Pueden enviar sus dudas, sugerencias, bugs, etc, a la siguiente dirección de correo electrónico: pablomileti@gmail.com" + +#: FrmAbout.class:51 +msgid "License" +msgstr "Licencia" + +#: FrmAbout.class:65 +msgid "" +"Move
\n" +"To move around the game board, use the arrow keys: up, down, left and right.

\n" +"Clear
\n" +"To restart the level, press the spacebar key." +msgstr "" +"Movimientos
\n" +"Para moverse por el tablero de juego utilice las teclas de dirección arriba, abajo, izquierda y derecha.

\n" +"Limpiar
\n" +"Para reiniciar un nivel presione la barra espaciadora." + +#: FrmAbout.class:73 +msgid "&Close" +msgstr "&Cerrar" diff --git a/app/examples/Games/GNUBoxWorld/.lang/ru.po b/app/examples/Games/GNUBoxWorld/.lang/ru.po new file mode 100644 index 00000000..e8fe2ec9 --- /dev/null +++ b/app/examples/Games/GNUBoxWorld/.lang/ru.po @@ -0,0 +1,160 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Games/GNUBoxWorld/.project:20 +msgid "GNUBoxWorld" +msgstr "Мир GNU-блоков" + +#: app/examples/Games/GNUBoxWorld/.project:21 +msgid "" +"This is another version of the popular game Box World.\n" +"\n" +"It contains 16 levels, all are possible to resolve. Level designs are taken from the Box It game for mobile phones." +msgstr "" +"Это ещё одна версия популярной игры Мира блоков.\n" +"\n" +"Она содержит 16 уровней, все можно решить. Дизайн уровней взят из игры «Box It/Заблокуй» для мобильных телефонов." + +#: app/examples/Games/GNUBoxWorld/.src/FMain.class:42 +msgid "Level &1" +msgstr "Уровень &1" + +#: app/examples/Games/GNUBoxWorld/.src/FMain.class:81 +msgid "GNUBoxWorld - Congratulation! You're very clever!" +msgstr "Мир GNU-блоков - Поздравляем! Вы очень умные!" + +#: app/examples/Games/GNUBoxWorld/.src/FMain.class:83 +msgid "Next level" +msgstr "Следующий уровень" + +#: app/examples/Games/GNUBoxWorld/.src/FMain.class:83 +msgid "Good Luck!" +msgstr "Удачи!" + +#: app/examples/Games/GNUBoxWorld/.src/FMain.class:223 +msgid "GNUBoxWorld - Level " +msgstr "Мир GNU-блоков - Уровень " + +#: app/examples/Games/GNUBoxWorld/.src/FMain.class:255 +msgid "Are you sure?" +msgstr "Вы уверены?" + +#: app/examples/Games/GNUBoxWorld/.src/FMain.class:255 +msgid "Yes" +msgstr "Да" + +#: app/examples/Games/GNUBoxWorld/.src/FMain.class:255 +msgid "No" +msgstr "Нет" + +#: app/examples/Games/GNUBoxWorld/.src/FMain.form:8 +msgid "Game" +msgstr "Игра" + +#: app/examples/Games/GNUBoxWorld/.src/FMain.form:10 app/examples/Games/GNUBoxWorld/.src/FMain.form:35 +msgid "Clear" +msgstr "Очистить" + +#: app/examples/Games/GNUBoxWorld/.src/FMain.form:14 +msgid "Quit" +msgstr "Выход" + +#: app/examples/Games/GNUBoxWorld/.src/FMain.form:19 +msgid "Level" +msgstr "Уровень" + +#: app/examples/Games/GNUBoxWorld/.src/FMain.form:22 +msgid "Help" +msgstr "Справка" + +#: app/examples/Games/GNUBoxWorld/.src/FMain.form:24 app/examples/Games/GNUBoxWorld/.src/FrmAbout.form:28 +msgid "How to play?" +msgstr "Как играть?" + +#: app/examples/Games/GNUBoxWorld/.src/FMain.form:28 +msgid "About" +msgstr "О программе" + +#: app/examples/Games/GNUBoxWorld/.src/FrmAbout.form:5 +msgid "About..." +msgstr "О программе..." + +#: app/examples/Games/GNUBoxWorld/.src/FrmAbout.form:12 +msgid "Author" +msgstr "Автор" + +#: app/examples/Games/GNUBoxWorld/.src/FrmAbout.form:15 +msgid "" +"Author: Pablo Mileti.

You can submit your questions, suggestions, bugs, etc, to the following E-Mail address:\n" +" pablomileti@gmail.com" +msgstr "" +"Автор: Пабло Милети.

Вы можете отправить свои вопросы, предложения, ошибки и т. д. на следующий электронный адрес:\n" +"pablomileti@gmail.com" + +#: app/examples/Games/GNUBoxWorld/.src/FrmAbout.form:19 +msgid "License" +msgstr "Лицензия" + +#: app/examples/Games/GNUBoxWorld/.src/FrmAbout.form:22 +msgid "" +"\n" +" Copyright (C) 2010. Author: Pablo Mileti \n" +"\n" +"This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n" +"\n" +"This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n" +"\n" +"You should have received a copy of the GNU General Public License along with this program. If not, see ." +msgstr "" +"\n" +" Copyright (C) 2010. Автор: Пабло Милети\n" +"\n" +"Эта программа ― свободное программное обеспечение. Вы можете распространять или изменять его при условиях соответствия лицензии GNU General Public License опубликованной Free Software Foundation; либо версии 3 лицензии, либо (на ваше усмотрение) любой более поздней версии.\n" +"\n" +"Программа распространяется в надежде на то, что приложение будет полезно, но БЕЗ ВСЯКИХ ГАРАНТИЙ; не гарантируется даже ПРИГОДНОСТЬ или СООТВЕТСТВИЕ КАКИМ-ЛИБО ТРЕБОВАНИЯМ. Для получения дополнительной информации ознакомьтесь с лицензией GNU General Public License.\n" +"\n" +"Вы должны получить копию лицензии GNU General Public License вместе с программой. Если этого не произошло, посмотрите ." + +#: app/examples/Games/GNUBoxWorld/.src/FrmAbout.form:31 +msgid "" +"Aim
\n" +"The shrimp has to push the movable boxes to the marked positions.

\n" +"Move
\n" +"To move around the game board, use the arrow keys: up, down, left and right.

\n" +"Clear
\n" +"To restart the level, press the spacebar key." +msgstr "" +"Цель
\n" +"Креветка должна толкать подвижные блоки в отмеченные позиции.

\n" +"Перемещение
\n" +"Для перемещения по игровому полю используйте клавиши со стрелками: вверх, вниз, влево и вправо.\n" +"Очистить
\n" +"Чтобы перезапустить уровень, нажмите клавишу пробела." + +#: app/examples/Games/GNUBoxWorld/.src/FrmAbout.form:38 +msgid "&Close" +msgstr "Закрыть" + diff --git a/app/examples/Games/GNUBoxWorld/.project b/app/examples/Games/GNUBoxWorld/.project new file mode 100644 index 00000000..8fdb90f7 --- /dev/null +++ b/app/examples/Games/GNUBoxWorld/.project @@ -0,0 +1,19 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.6.90 +Title=GNUBoxWorld +Startup=FMain +Icon=icon.png +Version=1.0.0 +Component=gb.image +Component=gb.gui +Component=gb.form +Description="This is another version of the popular game Box World.\n\nIt contains 16 levels, all are possible to resolve. Level designs are taken from the Box It game for mobile phones." +Authors="Pablo Mileti from Buenos Aires, Argentina." +TabSize=2 +Translate=1 +Language=en +Vendor=Example +Packager=1 +Tags=Example,Game,LogicGame +Screenshot=.hidden/screenshots/2014-12-14.png +CreateMenu=1 diff --git a/app/examples/Games/GNUBoxWorld/.src/Cell.class b/app/examples/Games/GNUBoxWorld/.src/Cell.class new file mode 100644 index 00000000..f3f2f333 --- /dev/null +++ b/app/examples/Games/GNUBoxWorld/.src/Cell.class @@ -0,0 +1,78 @@ +' Gambas class file + +' Copyright(C)2010. Autor: Pablo Mileti + +'This program Is free software: you can redistribute it And / Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 Of the License, Or (at your option)any later version. + +'This program Is distributed In the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty Of MERCHANTABILITY Or FITNESS For A PARTICULAR PURPOSE.See the GNU General Public License For more details. + +'You should have received a Copy Of the GNU General Public License along With this program.IfNot, see < http: / / www.gnu.org / licenses / > . + +Public Const gbFloor As Integer = 0 +Public Const gbMovable As Integer = 1 +Public Const gbMovableOnTarget As Integer = 2 +Public Const gbTarget As Integer = 3 +Public Const gbObstacle As Integer = 4 + +Public Busy As Boolean +Public Movable As Boolean +Public Target As Boolean +Public Pic As Picture +Public Type As Integer + +Public Sub _new(type As Integer) + Select Case type + + Case 0 + Me.Type = Me.gbFloor + Me.Busy = False + Me.Movable = False + Me.Pic = Picture["piso.png"] + Me.Target = False + + Case 1 + Me.Type = Me.gbMovable + Me.Busy = True + Me.Movable = True + Me.Pic = Picture["movible.png"] + Me.Target = False + + Case 2 + Me.Type = Me.gbMovableOnTarget + Me.Busy = True + Me.Movable = True + Me.Pic = Picture["movibleendestino.png"] + Me.Target = True + + Case 3 + Me.Type = Me.gbTarget + Me.Busy = False + Me.Movable = False + Me.Pic = Picture["destino.png"] + Me.Target = True + + Case 4 + Me.Type = Me.gbObstacle + Me.Busy = True + Me.Movable = False + Me.Pic = Picture["obstaculo.png"] + Me.Target = False + +End Select + +End + +Public Sub FixObstaculo(hLeft As Cell, hRight As Cell) + + Dim sSuffix As String + + If Me.Type <> gbObstacle Then Return + + If Not hLeft Or If hLeft.Type <> gbObstacle Then sSuffix &= "l" + If Not hRight Or If hRight.Type <> gbObstacle Then sSuffix &= "r" + + If Not sSuffix Then Return + + Pic = Picture["obstaculo-" & sSuffix & ".png"] + +End diff --git a/app/examples/Games/GNUBoxWorld/.src/FMain.class b/app/examples/Games/GNUBoxWorld/.src/FMain.class new file mode 100644 index 00000000..da712599 --- /dev/null +++ b/app/examples/Games/GNUBoxWorld/.src/FMain.class @@ -0,0 +1,274 @@ +' Gambas class file + +' +' GNUBoxWorld +' This is another version of the popular game Box World. Contains 16 levels, all are possible to resolve. +' Level designs are taken From Box It game For mobile phones. +' +' Copyright (C) Pablo Mileti from Buenos Aires, Argentina. +' +' This program is free software; you can redistribute it and/or modify +' it under the terms of the GNU General Public License as published by +' the Free Software Foundation; either version 3 of the License, or +' (at your option) any later version. +' +' This program is distributed in the hope that it will be useful, +' but WITHOUT ANY WARRANTY; without even the implied warranty of +' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +' GNU General Public License for more details. +' +' You should have received a copy of the GNU General Public License +' along with this program; if not, see http://www.gnu.org/licenses +' + +Public Game As GameBoard +Public level As Integer +Public PicturesBoxes As New PictureBox[10, 11] +Public PictureBoxPlayer As PictureBox +Public PictureBoxMover As PictureBox +Public DesX As Integer +Public DesY As Integer +Public XPosMove As Integer +Public YPosMove As Integer +Public IgnoreKeys As Boolean + +Public Sub Form_Open() + + Dim iInd As Integer + Dim hMenu As Menu + + For iInd = 1 To GameBoard.NUM_LEVELS + hMenu = New Menu(mnuLevel) As "mnuLevel" + hMenu.Text = Subst(("Level &1"), iInd) + hMenu.Tag = iInd + Next + + level = 1 + ignorekeys = False + newGame + Me.h = 64 * 10 + Me.w = 64 * 11 + btnClear.X = (Me.W / 2) - (btnClear.W / 2) + Me.Window.Center +End + +Public Sub btnClear_KeyPress() + If Key.code <> Key.up And Key.code <> Key.down And Key.code <> Key.left And Key.code <> Key.Right Then Return + Select Case Key.code + Case Key.Right + PictureBoxPlayer.Picture = picture["derecha.png"] + Case Key.Left + PictureBoxPlayer.Picture = picture["izquierda.png"] + Case Key.Up + PictureBoxPlayer.Picture = picture["arriba.png"] + Case Key.Down + PictureBoxPlayer.Picture = picture["abajo.png"] + End Select + If Game.ValidateMover(Key.code) And Not IgnoreKeys Then + Move(Key.code, Game.GetCell(Key.code, 1).Movable) + End If + If Game.isDone() Then + Inc level + If level > GameBoard.NUM_LEVELS Then + btnClear.Visible = False + MnuClear.Enabled = False + PictureBoxPlayer.X = 64 + PictureBoxPlayer.Y = 64 + PictureBoxPlayer.W = 560 + PictureBoxPlayer.H = 482 + PictureBoxPlayer.Picture = Picture["ganador.png"] + PictureBoxPlayer.SetFocus + Me.Title = ("GNUBoxWorld - Congratulation! You're very clever!") + Else + Message.Info(("Next level") & gb.NewLine & ("Good Luck!")) + newGame + End If + End If +End + +Public Sub btnClear_Click() + newGame() +End + +Private Sub Move(direction As Integer, desplace As Boolean) + Dim i As Integer + Select Case direction + Case Key.Right + DesX = 1 + DesY = 0 + PictureBoxPlayer.Picture = picture["derecha.png"] + Case Key.Left + DesX = -1 + DesY = 0 + PictureBoxPlayer.Picture = picture["izquierda.png"] + Case Key.Up + DesX = 0 + DesY = -1 + PictureBoxPlayer.Picture = picture["arriba.png"] + Case Key.Down + DesX = 0 + DesY = 1 + PictureBoxPlayer.Picture = picture["abajo.png"] + End Select + If desplace Then + PictureBoxMover.Picture = WhoMove(direction) + PictureBoxMover.X = XPosMove + PictureBoxMover.Y = YPosMove + PictureBoxMover.Raise + 'here will walk on + If Game.cells[Game.RowPlayer + DesY, Game.ColPlayer + DesX].Type = Cell.gbMovable Then + PicturesBoxes[Game.RowPlayer + DesY, Game.ColPlayer + DesX].picture = Picture["piso.png"] + End If + If Game.cells[Game.RowPlayer + DesY, Game.ColPlayer + DesX].Type = Cell.gbMovableOnTarget Then + PicturesBoxes[Game.RowPlayer + DesY, Game.ColPlayer + DesX].picture = Picture["destino.png"] + End If + End If + IgnoreKeys = True + For i = 1 To 64 + PictureBoxPlayer.Move(PictureBoxPlayer.x + Desx, PictureBoxPlayer.y + DesY) + If desplace Then PictureBoxmover.Move(PictureBoxmover.x + Desx, PictureBoxmover.y + DesY) + Wait 0.003 + Next + IgnoreKeys = False + 'here i was + 'cambio el contenido de la celda donde deje de estar + If Game.cells[Game.RowPlayer, Game.ColPlayer].Target Then + Game.cells[Game.RowPlayer, Game.ColPlayer] = New Cell(Cell.gbTarget) + Else + Game.cells[Game.RowPlayer, Game.ColPlayer] = New Cell(Cell.gbFloor) + End If + Game.RowPlayer = Game.RowPlayer + DesY + Game.ColPlayer = Game.ColPlayer + DesX + 'here i go + 'donde termino parado + If Not Game.cells[Game.RowPlayer, Game.ColPlayer].Target Then + Game.cells[Game.RowPlayer, Game.ColPlayer] = New Cell(Cell.gbFloor) + Else + Game.cells[Game.RowPlayer, Game.ColPlayer] = New Cell(Cell.gbTarget) + End If + If desplace Then 'here move obstacle + If Game.cells[Game.RowPlayer + desy, Game.ColPlayer + desX].Target Then 'go on target + Game.cells[Game.RowPlayer + desy, Game.ColPlayer + desX] = New Cell(Cell.gbMovableOnTarget) + Else 'go on floor + Game.cells[Game.RowPlayer + desy, Game.ColPlayer + desX] = New Cell(Cell.gbMovable) + End If + End If + ShowGameBoard + PictureBoxmover.Lower +End + +Private Function WhoMove(direction As Integer) As Picture + Dim row As Integer + Dim col As Integer + Select Case direction + Case Key.Up + row = Game.RowPlayer - 1 + col = Game.ColPlayer + Case Key.Down + row = Game.RowPlayer + 1 + col = Game.ColPlayer + Case Key.left + row = Game.RowPlayer + col = Game.ColPlayer - 1 + Case Key.right + row = Game.RowPlayer + col = Game.ColPlayer + 1 + End Select + XPosMove = PicturesBoxes[row, col].X + YPosMove = PicturesBoxes[row, col].Y + Return PicturesBoxes[row, col].Picture.Copy() +End + +Public Sub ShowGameBoard() + + Dim row As Integer + Dim col As Integer + For row = 0 To 9 + For col = 0 To 10 + PicturesBoxes[row, col].Picture = Game.Cells[row, col].Pic + Next + Next + +End + +Public Sub MakePictureBoxes() + Dim row As Integer + Dim col As Integer + For row = 0 To 9 + For col = 0 To 10 + PicturesBoxes[row, col] = New PictureBox(Me) + PicturesBoxes[row, col].h = 64 + PicturesBoxes[row, col].w = 64 + PicturesBoxes[row, col].Stretch = True + PicturesBoxes[row, col].top = (row * 64) + PicturesBoxes[row, col].left = (col * 64) + PicturesBoxes[row, col].Lower + Next + Next + PictureBoxPlayer = New PictureBox(Me) + PictureBoxMover = New PictureBox(Me) + PictureBoxmover.w = 64 + PictureBoxmover.h = 64 + PictureBoxPlayer.Picture = picture["derecha.png"] + PictureBoxPlayer.h = 64 + PictureBoxPlayer.w = 64 + PictureBoxPlayer.left = PicturesBoxes[Game.RowPlayer, Game.ColPlayer].left + PictureBoxPlayer.top = PicturesBoxes[Game.RowPlayer, Game.ColPlayer].top +End + +Private Sub newGame() + + Dim hMenu As Menu + + Me.Title = ("GNUBoxWorld - Level ") & level + Game = New GameBoard(level) + destroyPicturesBoxes + MakePictureBoxes + PictureBoxPlayer.left = PicturesBoxes[Game.RowPlayer, Game.ColPlayer].left + PictureBoxPlayer.top = PicturesBoxes[Game.RowPlayer, Game.ColPlayer].top + ShowGameBoard + + For Each hMenu In mnuLevel.Children + hMenu.Checked = hMenu.Tag = level + Next + +End + +Public Sub destroyPicturesBoxes() + Dim control As Object + For Each control In Me.Children + If Object.Type(control) = "PictureBox" Then + control.delete + End If + Next +End + +Public Sub MnuAbout_Click() + FrmAbout.Show +End + +Public Sub MnuQuit_Click() + Me.close +End + +Public Sub Form_Close() + If Message.Question(("Are you sure?"), ("Yes"), ("No")) = 2 Then + Stop Event + End If +End + +Public Sub MnuClear_Click() + newGame() +End + +Public Sub MnuHelpPlay_Click() + FrmAbout.TabStrip1.index = 2 + FrmAbout.Show +End + +Public Sub mnuLevel_Click() + + level = Last.Tag + newGame + +End diff --git a/app/examples/Games/GNUBoxWorld/.src/FMain.form b/app/examples/Games/GNUBoxWorld/.src/FMain.form new file mode 100644 index 00000000..116ef9a4 --- /dev/null +++ b/app/examples/Games/GNUBoxWorld/.src/FMain.form @@ -0,0 +1,37 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,99,83) + Icon = Picture["icon.png"] + Resizable = False + { MnuGame Menu + Text = ("Game") + { MnuClear Menu + Text = ("Clear") + Picture = Picture["icon:/32/clear"] + } + { MnuQuit Menu + Text = ("Quit") + Picture = Picture["icon:/32/quit"] + } + } + { mnuLevel Menu + Text = ("Level") + } + { MnuHelp Menu + Text = ("Help") + { MnuHelpPlay Menu + Text = ("How to play?") + Picture = Picture["icon:/32/help"] + } + { MnuAbout Menu + Text = ("About") + Picture = Picture["icon:/32/info"] + } + } + { btnClear Button + MoveScaled(15,2,16,6) + Font = Font["Bold,+4"] + Text = ("Clear") + } +} diff --git a/app/examples/Games/GNUBoxWorld/.src/FrmAbout.class b/app/examples/Games/GNUBoxWorld/.src/FrmAbout.class new file mode 100644 index 00000000..33a4a0fb --- /dev/null +++ b/app/examples/Games/GNUBoxWorld/.src/FrmAbout.class @@ -0,0 +1,19 @@ +' Gambas class file + +' Copyright(C)2010. Autor: Pablo Mileti + +'This program Is free software: you can redistribute it And / Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 Of the License, Or (at your option)any later version. + +'This program Is distributed In the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty Of MERCHANTABILITY Or FITNESS For A PARTICULAR PURPOSE.See the GNU General Public License For more details. + +'You should have received a Copy Of the GNU General Public License along With this program.IfNot, see < http: / / www.gnu.org / licenses / > . + + +Public Sub Form_Open() + Me.Window.Center + TextArea1.Pos = 0 +End + +Public Sub Button1_Click() + Me.Close +End diff --git a/app/examples/Games/GNUBoxWorld/.src/FrmAbout.form b/app/examples/Games/GNUBoxWorld/.src/FrmAbout.form new file mode 100644 index 00000000..165e8850 --- /dev/null +++ b/app/examples/Games/GNUBoxWorld/.src/FrmAbout.form @@ -0,0 +1,45 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,79,39) + Text = ("About...") + Resizable = False + { !TabStrip1 TabStrip + MoveScaled(2,2,50,35) + #Public = True + Count = 3 + Index = 0 + Text = ("Author") + { TextLabel1 TextLabel + MoveScaled(2,2,45,21) + Text = ("Author: Pablo Mileti.

You can submit your questions, suggestions, bugs, etc, to the following E-Mail address:\n pablomileti@gmail.com") + Alignment = Align.Justify + } + Index = 1 + Text = ("License") + { TextArea1 TextArea + MoveScaled(1,1,46,25) + Text = ("\n Copyright (C) 2010. Author: Pablo Mileti \n\nThis program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see .") + ReadOnly = True + Wrap = True + ScrollBar = Scroll.Vertical + } + Index = 2 + Text = ("How to play?") + { TextLabel2 TextLabel + MoveScaled(2,1,45,27) + Text = ("Aim
\nThe shrimp has to push the movable boxes to the marked positions.

\nMove
\nTo move around the game board, use the arrow keys: up, down, left and right.

\nClear
\nTo restart the level, press the spacebar key.") + Alignment = Align.Justify + } + Index = 0 + } + { Button1 Button + MoveScaled(59,30,14,6) + Text = ("&Close") + } + { PictureBox1 PictureBox + MoveScaled(54,5,22.7143,22.7143) + Picture = Picture["logo.png"] + Stretch = True + } +} diff --git a/app/examples/Games/GNUBoxWorld/.src/GameBoard.class b/app/examples/Games/GNUBoxWorld/.src/GameBoard.class new file mode 100644 index 00000000..09212783 --- /dev/null +++ b/app/examples/Games/GNUBoxWorld/.src/GameBoard.class @@ -0,0 +1,595 @@ +' Gambas class file + +' Copyright(C)2010. Autor: Pablo Mileti + +'This program Is free software: you can redistribute it And / Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 Of the License, Or (at your option)any later version. + +'This program Is distributed In the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty Of MERCHANTABILITY Or FITNESS For A PARTICULAR PURPOSE.See the GNU General Public License For more details. + +'You should have received a Copy Of the GNU General Public License along With this program.IfNot, see < http: / / www.gnu.org / licenses / > . + +Public Const NUM_LEVELS As Integer = 16 + +Public RowPlayer As Integer +Public ColPlayer As Integer +Public Cells As New Cell[10, 11] + +'See below constructor + +'This Function return true if player can move or false if exist obstacle +Public Function ValidateMover(Direction As Integer) As Boolean + Select Case Me.GetCell(Direction, 1).Type + Case Cell.gbMovableOnTarget + If Me.GetCell(Direction, 2).Busy Then + Return False + Else + Return True + End If + Case Cell.gbMovable + If Me.GetCell(Direction, 2).Busy Then + Return False + Else + Return True + End If + Case Cell.gbFloor + Return True + Case Cell.gbObstacle + Return False + Case Cell.gbTarget + Return True + End Select +End + +'This function return an object Cell if distance = 1 then Cell by side, distance = 2 Cell away 2 cells +Public Function GetCell(Where As Integer, distance As Integer) As Cell +Select Case Where + Case Key.up + Return Cells[Me.rowplayer - distance, Me.colplayer] + Case Key.down + Return Cells[Me.rowplayer + distance, Me.colplayer] + Case Key.left + Return Cells[Me.rowplayer, Me.colplayer - distance] + Case Key.right + Return Cells[Me.rowplayer, Me.colplayer + distance] +End Select +End + +'This function return true if all target are busy (Winner!) +Public Function isDone() As Boolean + Dim obj As Object + For Each obj In Me.cells + If obj.type = Cell.gbTarget Then Return False + Next + Return True +End + + +Public Sub _new(level As Integer) + Dim row As Integer + Dim col As Integer + 'All cells type Floor + For row = 0 To 9 + For col = 0 To 10 + Me.Cells[row, col] = New Cell(Cell.gbFloor) + Next + Next + 'Construct levels + Select Case level + 'LEVEL 1 + Case 1 + For col = 2 To 8 + Me.Cells[1, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 5 + Me.Cells[row, 2] = New Cell(Cell.gbObstacle) + Next + For col = 2 To 8 + Me.Cells[5, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 5 + Me.Cells[row, 8] = New Cell(Cell.gbObstacle) + Next + Me.Cells[2, 3] = New Cell(Cell.gbTarget) + Me.Cells[2, 7] = New Cell(Cell.gbTarget) + Me.Cells[4, 3] = New Cell(Cell.gbTarget) + Me.Cells[4, 7] = New Cell(Cell.gbTarget) + Me.Cells[2, 5] = New Cell(Cell.gbMovable) + Me.Cells[3, 4] = New Cell(Cell.gbMovable) + Me.Cells[3, 6] = New Cell(Cell.gbMovable) + Me.Cells[4, 5] = New Cell(Cell.gbMovable) + RowPlayer = 3 + ColPlayer = 5 + 'LEVEL 2 + Case 2 + For col = 1 To 8 + Me.Cells[1, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 5 + Me.Cells[row, 1] = New Cell(Cell.gbObstacle) + Next + For col = 1 To 8 + Me.Cells[5, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 5 + Me.Cells[row, 8] = New Cell(Cell.gbObstacle) + Next + Me.Cells[2, 4] = New Cell(Cell.gbTarget) + Me.Cells[2, 5] = New Cell(Cell.gbTarget) + Me.Cells[4, 4] = New Cell(Cell.gbTarget) + Me.Cells[4, 5] = New Cell(Cell.gbTarget) + Me.Cells[2, 6] = New Cell(Cell.gbMovable) + Me.Cells[3, 6] = New Cell(Cell.gbMovable) + Me.Cells[3, 3] = New Cell(Cell.gbMovable) + Me.Cells[4, 3] = New Cell(Cell.gbMovable) + RowPlayer = 3 + ColPlayer = 5 + 'LEVEL 3 + Case 3 + For col = 1 To 8 + Me.Cells[1, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 7 + Me.Cells[row, 1] = New Cell(Cell.gbObstacle) + Next + For col = 1 To 8 + Me.Cells[7, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 7 + Me.Cells[row, 8] = New Cell(Cell.gbObstacle) + Next + Me.Cells[2, 2] = New Cell(Cell.gbObstacle) + Me.Cells[3, 2] = New Cell(Cell.gbObstacle) + Me.Cells[6, 2] = New Cell(Cell.gbObstacle) + Me.Cells[3, 4] = New Cell(Cell.gbTarget) + Me.Cells[3, 6] = New Cell(Cell.gbTarget) + Me.Cells[5, 4] = New Cell(Cell.gbTarget) + Me.Cells[5, 6] = New Cell(Cell.gbTarget) + Me.Cells[3, 5] = New Cell(Cell.gbMovable) + Me.Cells[4, 4] = New Cell(Cell.gbMovable) + Me.Cells[4, 6] = New Cell(Cell.gbMovable) + Me.Cells[5, 5] = New Cell(Cell.gbMovable) + RowPlayer = 5 + ColPlayer = 2 + 'LEVEL 4 + Case 4 + For col = 1 To 8 + Me.Cells[1, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 8 + Me.Cells[row, 1] = New Cell(Cell.gbObstacle) + Next + For col = 1 To 8 + Me.Cells[8, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 8 + Me.Cells[row, 8] = New Cell(Cell.gbObstacle) + Next + Me.Cells[2, 2] = New Cell(Cell.gbObstacle) + Me.Cells[3, 4] = New Cell(Cell.gbObstacle) + Me.Cells[4, 3] = New Cell(Cell.gbObstacle) + Me.Cells[4, 6] = New Cell(Cell.gbObstacle) + Me.Cells[5, 6] = New Cell(Cell.gbObstacle) + Me.Cells[6, 3] = New Cell(Cell.gbObstacle) + Me.Cells[7, 5] = New Cell(Cell.gbObstacle) + Me.Cells[7, 6] = New Cell(Cell.gbObstacle) + Me.Cells[7, 7] = New Cell(Cell.gbObstacle) + Me.Cells[5, 3] = New Cell(Cell.gbMovable) + Me.Cells[5, 5] = New Cell(Cell.gbMovable) + Me.Cells[6, 2] = New Cell(Cell.gbTarget) + Me.Cells[7, 2] = New Cell(Cell.gbTarget) + RowPlayer = 7 + ColPlayer = 4 + 'LEVEL 5 + Case 5 + For col = 1 To 8 + Me.Cells[1, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 6 + Me.Cells[row, 1] = New Cell(Cell.gbObstacle) + Next + For col = 1 To 8 + Me.Cells[6, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 6 + Me.Cells[row, 8] = New Cell(Cell.gbObstacle) + Next + Me.Cells[2, 3] = New Cell(Cell.gbMovable) + Me.Cells[3, 4] = New Cell(Cell.gbMovable) + Me.Cells[4, 3] = New Cell(Cell.gbMovable) + Me.Cells[5, 4] = New Cell(Cell.gbMovable) + Me.Cells[2, 4] = New Cell(Cell.gbTarget) + Me.Cells[3, 3] = New Cell(Cell.gbTarget) + Me.Cells[4, 4] = New Cell(Cell.gbTarget) + Me.Cells[5, 3] = New Cell(Cell.gbTarget) + For row = 2 To 5 + Me.Cells[row, 6] = New Cell(Cell.gbMovable) + Next + For row = 2 To 5 + Me.Cells[row, 7] = New Cell(Cell.gbTarget) + Next + RowPlayer = 3 + ColPlayer = 2 + 'LEVEL 6 + Case 6 + For col = 1 To 9 + Me.Cells[1, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 7 + Me.Cells[row, 1] = New Cell(Cell.gbObstacle) + Next + For col = 1 To 9 + Me.Cells[7, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 7 + Me.Cells[row, 9] = New Cell(Cell.gbObstacle) + Next + Me.Cells[3, 5] = New Cell(Cell.gbObstacle) + Me.Cells[2, 5] = New Cell(Cell.gbMovableOnTarget) + Me.Cells[3, 3] = New Cell(Cell.gbMovable) + Me.Cells[3, 7] = New Cell(Cell.gbMovable) + Me.Cells[4, 4] = New Cell(Cell.gbMovable) + Me.Cells[4, 6] = New Cell(Cell.gbMovable) + Me.Cells[5, 5] = New Cell(Cell.gbMovable) + Me.Cells[3, 4] = New Cell(Cell.gbTarget) + Me.Cells[3, 6] = New Cell(Cell.gbTarget) + Me.Cells[4, 5] = New Cell(Cell.gbTarget) + Me.Cells[5, 4] = New Cell(Cell.gbTarget) + Me.Cells[5, 6] = New Cell(Cell.gbTarget) + Me.Cells[5, 2] = New Cell(Cell.gbObstacle) + Me.Cells[5, 3] = New Cell(Cell.gbObstacle) + Me.Cells[5, 7] = New Cell(Cell.gbObstacle) + Me.Cells[5, 8] = New Cell(Cell.gbObstacle) + Me.Cells[6, 2] = New Cell(Cell.gbObstacle) + Me.Cells[6, 3] = New Cell(Cell.gbObstacle) + Me.Cells[6, 4] = New Cell(Cell.gbObstacle) + Me.Cells[6, 6] = New Cell(Cell.gbObstacle) + Me.Cells[6, 7] = New Cell(Cell.gbObstacle) + Me.Cells[6, 8] = New Cell(Cell.gbObstacle) + RowPlayer = 6 + ColPlayer = 5 + + 'LEVEL 7 + Case 7 + For col = 2 To 8 + Me.Cells[1, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 7 + Me.Cells[row, 2] = New Cell(Cell.gbObstacle) + Next + For col = 2 To 8 + Me.Cells[7, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 7 + Me.Cells[row, 8] = New Cell(Cell.gbObstacle) + Next + Me.Cells[2, 3] = New Cell(Cell.gbObstacle) + Me.Cells[2, 4] = New Cell(Cell.gbObstacle) + Me.Cells[5, 3] = New Cell(Cell.gbObstacle) + Me.Cells[5, 4] = New Cell(Cell.gbObstacle) + Me.Cells[6, 3] = New Cell(Cell.gbObstacle) + Me.Cells[6, 4] = New Cell(Cell.gbObstacle) + Me.Cells[3, 6] = New Cell(Cell.gbMovable) + Me.Cells[4, 5] = New Cell(Cell.gbMovable) + Me.Cells[4, 7] = New Cell(Cell.gbMovable) + Me.Cells[5, 6] = New Cell(Cell.gbMovable) + Me.Cells[3, 5] = New Cell(Cell.gbTarget) + Me.Cells[3, 7] = New Cell(Cell.gbTarget) + Me.Cells[5, 5] = New Cell(Cell.gbTarget) + Me.Cells[5, 7] = New Cell(Cell.gbTarget) + RowPlayer = 3 + ColPlayer = 3 + + 'LEVEL 8 + Case 8 + For col = 1 To 9 + Me.Cells[1, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 7 + Me.Cells[row, 1] = New Cell(Cell.gbObstacle) + Next + For col = 1 To 9 + Me.Cells[7, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 7 + Me.Cells[row, 9] = New Cell(Cell.gbObstacle) + Next + Me.Cells[2, 8] = New Cell(Cell.gbObstacle) + Me.Cells[3, 8] = New Cell(Cell.gbObstacle) + Me.Cells[4, 2] = New Cell(Cell.gbObstacle) + Me.Cells[4, 3] = New Cell(Cell.gbObstacle) + Me.Cells[4, 6] = New Cell(Cell.gbObstacle) + Me.Cells[4, 3] = New Cell(Cell.gbObstacle) + Me.Cells[4, 6] = New Cell(Cell.gbObstacle) + Me.Cells[5, 2] = New Cell(Cell.gbObstacle) + Me.Cells[5, 3] = New Cell(Cell.gbObstacle) + Me.Cells[5, 4] = New Cell(Cell.gbObstacle) + Me.Cells[6, 2] = New Cell(Cell.gbObstacle) + Me.Cells[6, 3] = New Cell(Cell.gbObstacle) + Me.Cells[6, 4] = New Cell(Cell.gbObstacle) + Me.Cells[3, 4] = New Cell(Cell.gbTarget) + Me.Cells[3, 5] = New Cell(Cell.gbTarget) + Me.Cells[4, 4] = New Cell(Cell.gbTarget) + Me.Cells[4, 5] = New Cell(Cell.gbTarget) + Me.Cells[3, 3] = New Cell(Cell.gbMovable) + Me.Cells[5, 5] = New Cell(Cell.gbMovable) + Me.Cells[5, 6] = New Cell(Cell.gbMovable) + Me.Cells[5, 7] = New Cell(Cell.gbMovable) + RowPlayer = 2 + ColPlayer = 6 + + 'LEVEL 9 + Case 9 + For col = 1 To 8 + Me.Cells[1, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 8 + Me.Cells[row, 1] = New Cell(Cell.gbObstacle) + Next + For col = 1 To 8 + Me.Cells[8, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 8 + Me.Cells[row, 8] = New Cell(Cell.gbObstacle) + Next + For row = 4 To 8 + Me.Cells[row, 2] = New Cell(Cell.gbObstacle) + Me.Cells[row, 7] = New Cell(Cell.gbObstacle) + Next + For row = 6 To 8 + Me.Cells[row, 3] = New Cell(Cell.gbObstacle) + Me.Cells[row, 6] = New Cell(Cell.gbObstacle) + Me.Cells[row, 7] = New Cell(Cell.gbObstacle) + Next + Me.Cells[3, 5] = New Cell(Cell.gbObstacle) + Me.Cells[5, 3] = New Cell(Cell.gbTarget) + Me.Cells[6, 4] = New Cell(Cell.gbTarget) + Me.Cells[7, 4] = New Cell(Cell.gbTarget) + Me.Cells[7, 5] = New Cell(Cell.gbTarget) + Me.Cells[3, 3] = New Cell(Cell.gbMovable) + Me.Cells[3, 4] = New Cell(Cell.gbMovable) + Me.Cells[4, 5] = New Cell(Cell.gbMovable) + Me.Cells[5, 4] = New Cell(Cell.gbMovable) + RowPlayer = 2 + ColPlayer = 5 + + 'LEVEL 10 + Case 10 + For col = 1 To 8 + Me.Cells[1, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 8 + Me.Cells[row, 1] = New Cell(Cell.gbObstacle) + Next + For col = 1 To 8 + Me.Cells[8, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 8 + Me.Cells[row, 8] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 4 + Me.Cells[row, 2] = New Cell(Cell.gbObstacle) + Me.Cells[row, 7] = New Cell(Cell.gbObstacle) + Next + Me.Cells[4, 3] = New Cell(Cell.gbObstacle) + Me.Cells[6, 3] = New Cell(Cell.gbObstacle) + Me.Cells[6, 5] = New Cell(Cell.gbObstacle) + Me.Cells[6, 6] = New Cell(Cell.gbObstacle) + Me.Cells[2, 3] = New Cell(Cell.gbTarget) + Me.Cells[2, 5] = New Cell(Cell.gbTarget) + Me.Cells[2, 6] = New Cell(Cell.gbTarget) + Me.Cells[3, 3] = New Cell(Cell.gbTarget) + Me.Cells[3, 6] = New Cell(Cell.gbTarget) + Me.Cells[3, 5] = New Cell(Cell.gbMovable) + Me.Cells[4, 6] = New Cell(Cell.gbMovable) + Me.Cells[5, 3] = New Cell(Cell.gbMovable) + Me.Cells[5, 6] = New Cell(Cell.gbMovable) + Me.Cells[6, 4] = New Cell(Cell.gbMovable) + RowPlayer = 7 + ColPlayer = 5 + + 'LEVEL 11 + Case 11 + For col = 2 To 8 + Me.Cells[1, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 7 + Me.Cells[row, 2] = New Cell(Cell.gbObstacle) + Next + For col = 2 To 8 + Me.Cells[7, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 7 + Me.Cells[row, 8] = New Cell(Cell.gbObstacle) + Next + Me.Cells[2, 3] = New Cell(Cell.gbObstacle) + Me.Cells[6, 3] = New Cell(Cell.gbObstacle) + Me.Cells[6, 7] = New Cell(Cell.gbObstacle) + Me.Cells[2, 5] = New Cell(Cell.gbTarget) + Me.Cells[4, 3] = New Cell(Cell.gbTarget) + Me.Cells[4, 7] = New Cell(Cell.gbTarget) + Me.Cells[6, 5] = New Cell(Cell.gbTarget) + Me.Cells[3, 4] = New Cell(Cell.gbMovable) + Me.Cells[3, 6] = New Cell(Cell.gbMovable) + Me.Cells[5, 4] = New Cell(Cell.gbMovable) + Me.Cells[5, 6] = New Cell(Cell.gbMovable) + Me.Cells[4, 5] = New Cell(Cell.gbMovableOnTarget) + RowPlayer = 2 + ColPlayer = 7 + + 'LEVEL 12 + Case 12 + For col = 1 To 8 + Me.Cells[1, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 7 + Me.Cells[row, 1] = New Cell(Cell.gbObstacle) + Next + For col = 1 To 8 + Me.Cells[7, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 7 + Me.Cells[row, 8] = New Cell(Cell.gbObstacle) + Next + Me.Cells[2, 2] = New Cell(Cell.gbObstacle) + Me.Cells[2, 3] = New Cell(Cell.gbObstacle) + Me.Cells[3, 2] = New Cell(Cell.gbObstacle) + Me.Cells[3, 3] = New Cell(Cell.gbObstacle) + Me.Cells[6, 2] = New Cell(Cell.gbObstacle) + Me.Cells[6, 3] = New Cell(Cell.gbObstacle) + Me.Cells[6, 4] = New Cell(Cell.gbObstacle) + Me.Cells[5, 7] = New Cell(Cell.gbObstacle) + Me.Cells[6, 7] = New Cell(Cell.gbObstacle) + Me.Cells[4, 5] = New Cell(Cell.gbTarget) + Me.Cells[4, 6] = New Cell(Cell.gbTarget) + Me.Cells[5, 4] = New Cell(Cell.gbTarget) + Me.Cells[5, 5] = New Cell(Cell.gbTarget) + Me.Cells[5, 6] = New Cell(Cell.gbTarget) + Me.Cells[5, 3] = New Cell(Cell.gbMovable) + Me.Cells[4, 4] = New Cell(Cell.gbMovable) + Me.Cells[3, 4] = New Cell(Cell.gbMovable) + Me.Cells[3, 5] = New Cell(Cell.gbMovable) + Me.Cells[3, 6] = New Cell(Cell.gbMovable) + RowPlayer = 5 + ColPlayer = 2 + +'LEVEL 13 + Case 13 + For col = 1 To 8 + Me.Cells[1, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 7 + Me.Cells[row, 1] = New Cell(Cell.gbObstacle) + Next + For col = 1 To 8 + Me.Cells[7, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 7 + Me.Cells[row, 8] = New Cell(Cell.gbObstacle) + Next + Me.Cells[2, 4] = New Cell(Cell.gbObstacle) + Me.Cells[4, 7] = New Cell(Cell.gbObstacle) + Me.Cells[6, 4] = New Cell(Cell.gbObstacle) + Me.Cells[3, 4] = New Cell(Cell.gbTarget) + Me.Cells[3, 5] = New Cell(Cell.gbTarget) + Me.Cells[4, 4] = New Cell(Cell.gbTarget) + Me.Cells[5, 4] = New Cell(Cell.gbTarget) + Me.Cells[5, 5] = New Cell(Cell.gbTarget) + Me.Cells[3, 3] = New Cell(Cell.gbMovable) + Me.Cells[3, 6] = New Cell(Cell.gbMovable) + Me.Cells[4, 3] = New Cell(Cell.gbMovable) + Me.Cells[5, 3] = New Cell(Cell.gbMovable) + Me.Cells[5, 6] = New Cell(Cell.gbMovable) + Me.Cells[4, 5] = New Cell(Cell.gbMovableOnTarget) + RowPlayer = 4 + ColPlayer = 2 + +'LEVEL 14 + Case 14 + For col = 1 To 8 + Me.Cells[1, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 7 + Me.Cells[row, 1] = New Cell(Cell.gbObstacle) + Next + For col = 1 To 8 + Me.Cells[7, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 7 + Me.Cells[row, 8] = New Cell(Cell.gbObstacle) + Next + Me.Cells[2, 2] = New Cell(Cell.gbObstacle) + Me.Cells[3, 2] = New Cell(Cell.gbObstacle) + Me.Cells[2, 6] = New Cell(Cell.gbObstacle) + Me.Cells[2, 7] = New Cell(Cell.gbObstacle) + Me.Cells[3, 4] = New Cell(Cell.gbObstacle) + Me.Cells[4, 6] = New Cell(Cell.gbObstacle) + Me.Cells[5, 3] = New Cell(Cell.gbObstacle) + Me.Cells[3, 7] = New Cell(Cell.gbTarget) + Me.Cells[4, 7] = New Cell(Cell.gbTarget) + Me.Cells[5, 7] = New Cell(Cell.gbTarget) + Me.Cells[6, 7] = New Cell(Cell.gbTarget) + Me.Cells[3, 3] = New Cell(Cell.gbMovable) + Me.Cells[4, 4] = New Cell(Cell.gbMovable) + Me.Cells[4, 5] = New Cell(Cell.gbMovable) + Me.Cells[5, 4] = New Cell(Cell.gbMovable) + RowPlayer = 3 + ColPlayer = 5 + +'LEVEL 15 + Case 15 + For col = 2 To 8 + Me.Cells[1, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 7 + Me.Cells[row, 2] = New Cell(Cell.gbObstacle) + Next + For col = 2 To 8 + Me.Cells[7, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 7 + Me.Cells[row, 8] = New Cell(Cell.gbObstacle) + Next + Me.Cells[3, 4] = New Cell(Cell.gbMovable) + Me.Cells[3, 5] = New Cell(Cell.gbMovable) + Me.Cells[3, 6] = New Cell(Cell.gbMovable) + Me.Cells[4, 4] = New Cell(Cell.gbMovable) + Me.Cells[4, 6] = New Cell(Cell.gbMovable) + Me.Cells[5, 4] = New Cell(Cell.gbMovable) + Me.Cells[5, 5] = New Cell(Cell.gbMovable) + Me.Cells[5, 6] = New Cell(Cell.gbMovable) + Me.Cells[2, 3] = New Cell(Cell.gbTarget) + Me.Cells[2, 5] = New Cell(Cell.gbTarget) + Me.Cells[2, 7] = New Cell(Cell.gbTarget) + Me.Cells[4, 3] = New Cell(Cell.gbTarget) + Me.Cells[4, 7] = New Cell(Cell.gbTarget) + Me.Cells[6, 3] = New Cell(Cell.gbTarget) + Me.Cells[6, 5] = New Cell(Cell.gbTarget) + Me.Cells[6, 7] = New Cell(Cell.gbTarget) + RowPlayer = 4 + ColPlayer = 5 + +'LEVEL 16 + Case 16 + For col = 1 To 8 + Me.Cells[1, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 7 + Me.Cells[row, 1] = New Cell(Cell.gbObstacle) + Next + For col = 1 To 8 + Me.Cells[7, col] = New Cell(Cell.gbObstacle) + Next + For row = 2 To 7 + Me.Cells[row, 8] = New Cell(Cell.gbObstacle) + Next + Me.Cells[2, 2] = New Cell(Cell.gbObstacle) + Me.Cells[2, 7] = New Cell(Cell.gbObstacle) + Me.Cells[6, 2] = New Cell(Cell.gbObstacle) + Me.Cells[6, 3] = New Cell(Cell.gbObstacle) + Me.Cells[2, 7] = New Cell(Cell.gbObstacle) + Me.Cells[6, 6] = New Cell(Cell.gbObstacle) + Me.Cells[6, 7] = New Cell(Cell.gbObstacle) + For col = 2 To 7 + Me.Cells[4, col] = New Cell(Cell.gbTarget) + Next + Me.Cells[3, 3] = New Cell(Cell.gbMovable) + Me.Cells[3, 5] = New Cell(Cell.gbMovable) + Me.Cells[3, 6] = New Cell(Cell.gbMovable) + Me.Cells[5, 3] = New Cell(Cell.gbMovable) + Me.Cells[5, 4] = New Cell(Cell.gbMovable) + Me.Cells[5, 6] = New Cell(Cell.gbMovable) + RowPlayer = 6 + ColPlayer = 5 + + + End Select + + For row = 0 To 9 + Cells[row, 0].FixObstaculo(Null, Cells[row, 1]) + For col = 1 To 9 + Cells[row, col].FixObstaculo(Cells[row, col - 1], Cells[row, col + 1]) + Next + Cells[row, 10].FixObstaculo(Cells[row, 9], Null) + Next + +End diff --git a/app/examples/Games/GNUBoxWorld/License b/app/examples/Games/GNUBoxWorld/License new file mode 100644 index 00000000..b17f91b9 --- /dev/null +++ b/app/examples/Games/GNUBoxWorld/License @@ -0,0 +1,189 @@ +GNU GENERAL PUBLIC LICENSE + +Version 3, 29 June 2007 + +Copyright © 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. +Preamble + +The GNU General Public License is a free, copyleft license for software and other kinds of works. + +The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. + +Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and modification follow. +TERMS AND CONDITIONS +0. Definitions. + +“This License” refers to version 3 of the GNU General Public License. + +“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. + +“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. + +To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. + +A “covered work” means either the unmodified Program or a work based on the Program. + +To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. + +To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. + +An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. +1. Source Code. + +The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. + +A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. + +The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. + +The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same work. +2. Basic Permissions. + +All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. +3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. + +When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. +4. Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. +5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: + + * a) The work must carry prominent notices stating that you modified it, and giving a relevant date. + * b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. + * c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. + * d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. + +A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. +6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: + + * a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. + * b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. + * c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. + * d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. + * e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. + +A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. + +“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. + +If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). + +The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. + +Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. +7. Additional Terms. + +“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: + + * a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or + * b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or + * c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or + * d) Limiting the use for publicity purposes of names of licensors or authors of the material; or + * e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or + * f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. + +All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. +8. Termination. + +You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). + +However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. + +Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. +9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. +10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. + +An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. +11. Patents. + +A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. + +A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. + +In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. + +If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. + +A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. +12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. +13. Use with the GNU Affero General Public License. + +Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. +14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. + +Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. +15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. +16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/app/examples/Games/GNUBoxWorld/abajo.png b/app/examples/Games/GNUBoxWorld/abajo.png new file mode 100644 index 0000000000000000000000000000000000000000..7e716fbc7cee2fed0a7d82c7be5173276d44e352 GIT binary patch literal 5205 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 P00000NkvXXu0mjf8lo=L literal 0 HcmV?d00001 diff --git a/app/examples/Games/GNUBoxWorld/arriba.png b/app/examples/Games/GNUBoxWorld/arriba.png new file mode 100644 index 0000000000000000000000000000000000000000..86e88f3f8767a36487fedd117e7556f1ffbeae16 GIT binary patch literal 5291 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/GNUBoxWorld/derecha.png b/app/examples/Games/GNUBoxWorld/derecha.png new file mode 100644 index 0000000000000000000000000000000000000000..4f37b4423076d694ffe46f4ca69bde88565c9e5d GIT binary patch literal 4347 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 pKRGwU*W4T7JGo6%%dMpeWv)ps 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/GNUBoxWorld/ganador.png b/app/examples/Games/GNUBoxWorld/ganador.png new file mode 100644 index 0000000000000000000000000000000000000000..f6672bf77dc04adbc3cac19d7bfceca31f837ca7 GIT binary patch literal 255686 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

7=SStZ1=X?AZb9iC858}c}1<{7*u#UE&kVJ@C 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�Ai9aA*8b$jtFEnA_e-HG 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 z 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�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

P~ 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/GNUBoxWorld/icon.png b/app/examples/Games/GNUBoxWorld/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d1737db0f210850e690a3280d53d731ac058d6c6 GIT binary patch literal 5889 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 Xbp(Gj=?hmn00000NkvXXu0mjf2*@sw literal 0 HcmV?d00001 diff --git a/app/examples/Games/GNUBoxWorld/izquierda.png b/app/examples/Games/GNUBoxWorld/izquierda.png new file mode 100644 index 0000000000000000000000000000000000000000..4424149335a9c5e67a7b5b1dcd352f916fd5aa60 GIT binary patch literal 4350 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/GNUBoxWorld/logo.png b/app/examples/Games/GNUBoxWorld/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1124d398c176adb4b36132f69d04bf00fb5d66a0 GIT binary patch literal 108170 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∋|_EhT@74dls>cXL(_ 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/GNUBoxWorld/movible.png b/app/examples/Games/GNUBoxWorld/movible.png new file mode 100644 index 0000000000000000000000000000000000000000..7d63ed940c23180fe9e1fed18c201cc1ca8dcebf GIT binary patch literal 3831 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/GNUBoxWorld/obstaculo-r.png b/app/examples/Games/GNUBoxWorld/obstaculo-r.png new file mode 100644 index 0000000000000000000000000000000000000000..fda4df00bd665740b2a2df6a6166c580bfd9047b GIT binary patch literal 1627 zcmb`Ic~H`69L6cT#@2KQNHsI8>i-sYPc@{zhIh+I!Ai?2eID!m^lMo0J0!~K26H%x{ zG&&K5rlHV@XcP^FibEoIZNsPH@u?9JsrZQ02>dQkc>HcWXd;ra*w`RsI+>DAp`=r( z05~bsbSfo{NKC?FVv$H18qME9=hNxgbUKd?nw|UNQy03c*AlmdZLC{zjsN`bIUC@2#Oi}`$Rd_rtckXj;9 zOC@TFR4tWOip3>-o&?~q355F6()vUp*UVzdRzfYp_j`m<`{lH0HhI!$r!L? z&|V5f#AKbWu5JcZ1FGgsHK^*7s&c&y@$IEqH{y*wj zkL&sF`oxY?EHind58?AmquP%iS4d@iNy3-VIBK?0iG-Vp@9I%_|H)-Lk&Jv^l>u4PdJFCx2{*C)n?7 z00Wiq?>0?NRnUthtS_lwfTNbD8-87ZE0}vk4{7+_rSR(M+o_kQu$P~uZxJB8VM?oQ zprX^9)P|<{*kS951HCU8+nu8@%9n=w_pHpt;|TRa`%_$+o1?5I&!F_ooA!*3(jnK! zxR2aP)^sawvs}xm*{>(h(*RY8Sov% z~C>B488fB+r<1z8kx+7 z;-dQl`!rs44o?I7@|Y8V7eh!2nrzR@hOW)HbpA=>{p+odkM%wjIX2~Yc8mf1OD;=0 zgO^JUkGz|$n}d5k>#rbWt!@v8_NIJ=lD}FrJcex=)IqY(kk_~D!-R)21{WXO60&*R zhUmsGjGhg-w|K`pQn16syqi^S1%E@CZ~lRF>M79)dqU3)NP6wgT{UP^=J$W#R}d3m kh5v5fFxmL89-n7|TVo#NFrM0-0Y420E<7r%8NE~d7fVJ3mH+?% literal 0 HcmV?d00001 diff --git a/app/examples/Games/GNUBoxWorld/obstaculo.png b/app/examples/Games/GNUBoxWorld/obstaculo.png new file mode 100644 index 0000000000000000000000000000000000000000..8ee35f44bf47b01b373908189a1a435b0118e8cf GIT binary patch literal 1575 zcmchY|2NZn9LLwKi|UHhJ$2osBIy#Uiw(2d&e~$q#-^Fgkg&0dEnC{KVY`}a!+hNs zvhtnHx2{sI%83dk^hITEb@C+?CrNcb{S)_`$LsZe{_s4{*X#Y$D--93G2LLf0R#e> zdLKji1MiU^WwI9N>UQA_2(+dj=Sw&m0C5X|KnM^h0RjntLIa=>0u(|;AgD+r6@jE6 zkW?gsfID9x7SkmhZktmF& z*B2Kz0F(ffG!_FC*C_MLrGQ^3;{vnDF?d`U8lx{O(`(A~Wg1;+X*dS0F9mdIjZ&$} zk`@Yu*}!xri-E^!vaO`O0dgQpV+Kq*>WqE{7akC=wP3MHD0=gT>5XGWn-Yae~QgauDML z?xZJ-Vt#S~1X{Pv8-*Z{dX)KJxRyt^rp_UIL@rK)_8r=Tl~+=mQ#pTd5DqeVL~ff! zh<&qdM(VgZ3cJ?-czEmMJ8sO@sj_MHYp^UTx#-WHnR_=OlB*v@W=C{SY`r~fp1j#3 zp;j=z{N`QE9&2K@KkInzL@C!z2EUvq9^siIV)qyYK;MZ4St*L z=g$4+T2`^os&VdYqhTp&z~LK6mNs5}t-L0#W@AlKcVA1BJ(0?f$()Cdy$BrUisp>y zNzU6>Q@$qe1Mh}yN-Q{Gn%uNHacFPtvNJVH9KHaO^{8foO`KBlIxg9|I9Ai2R-q16 zQ@iTu)tr4`GazUDf+c07fikq@iyla>i_!&AzoSMQwH0M|tlh1Q?@r0@{k!q@s!tb5 zL)=Z9{^(|JF1n-SZ1+rX+2sDd!(S1B3^@{3`fT z?X^SGgL9wWFD1R{9@}sbR`fQ$=`P#@=@u88@^Wryt~a7h`>D}@2$F5Fl3dmIS*s`e zTKB3Ab&}6L4@P9$4Poi?P;ihmZ#aIP!>#jURdH>1dTXJ`IzOI@Rrzap_j2ZgY^TlH z2ezA?ti{9VYpf(Tms|Ua4Cvg3!MZK)KQcXfNve71H|wAsi>ou5dqxM1J%eYBc@GWg zz3-eY5|=+0NYIa5b{5?zb}2DFt+Fvy%tMbkB?Y-$=T)8^WSEj~m>Q*xO!ihjTz|cR zXW_02+3Rpi`5~HORgkjt_~q9_9GIh55ccrJv+HG()OiEkZZWL7#T5n@xLr$Gnb|r$ z>Errzy|XJ19P2c#YjLQxvs3zXCiv6a9h7#3^@2^n|Gaw5owfdt8B^U-MjwMP8WQ@o zH}-dTuvrdwcVRZV@?Erty3J=r-1hyK`V%Iy9z}mGe3la;_E6*O(rrh|3j!a1t{pK2 z79a5HY#!gPJpk`)?jg;xps@mf&(%&W54dheW74Jy s_{{|Kr8W6!SInBgC_(D$|HHCM)1nL`gb$0)fdc^YKI(^RK!%F`1JGmal>h($ literal 0 HcmV?d00001 diff --git a/app/examples/Games/GNUBoxWorld/piso.png b/app/examples/Games/GNUBoxWorld/piso.png new file mode 100644 index 0000000000000000000000000000000000000000..e35e5a442aaca2d400a5e038c3235126e476f16f GIT binary patch literal 10046 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/GameOfLife/.lang/ca.po b/app/examples/Games/GameOfLife/.lang/ca.po new file mode 100644 index 00000000..ecb1d53a --- /dev/null +++ b/app/examples/Games/GameOfLife/.lang/ca.po @@ -0,0 +1,131 @@ +msgid "" +msgstr "" +"Project-Id-Version: GameOfLife\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2011-03-20 17:58+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FMain.class:265 +msgid "0 Neighbour" +msgstr "0 veïns" + +#: FMain.class:258 +msgid "1 Neighbour" +msgstr "1 veí" + +#: FMain.class:251 +msgid "2 Neighbours" +msgstr "2 veïns" + +#: FMain.class:245 +msgid "3 Neighbours" +msgstr "3 veïns" + +#: FMain.class:238 +msgid "4 Neighbours" +msgstr "4 veïns" + +#: FMain.class:231 +msgid "5 Neighbours" +msgstr "5 veïns" + +#: FMain.class:224 +msgid "6 Neighbours" +msgstr "6 veïns" + +#: FMain.class:217 +msgid "7 Neighbours" +msgstr "7 veïns" + +#: FMain.class:210 +msgid "8 Neighbours" +msgstr "8 veïns" + +#: FMain.class:291 +msgid "Alive" +msgstr "Viu" + +#: FMain.class:296 +msgid "Dead" +msgstr "Mort" + +#: FMain.class:302 +msgid "Draw cell borders" +msgstr "Dibuixa la vora de les ceŀles" + +#: FMain.class:72 +msgid "Evolution Delay: " +msgstr "Retard d'evolució:" + +#: FMain.class:199 +msgid "Evolution Delay: 500ms" +msgstr "Retard d'evolució: 500ms" + +#: .project:1 +msgid "Game of Life" +msgstr "Joc de la Vida" + +#: FMain.class:147 +msgid "GameOfLife" +msgstr "JocDeLaVida" + +#: FMain.class:317 +msgid "Horizontal symmetry" +msgstr "Simetria horitzontal" + +#: FMain.class:276 +msgid "Options" +msgstr "Opcions" + +#: FMain.class:272 +msgid "Select the Count of Neighbours where a cell will die or keep its state." +msgstr "Seleccioneu el comptatge de veïns on una cèŀlula morirà o mantindrà el seu estat." + +#: FMain.class:280 +msgid "Set here the probability that a Cell will be born or not when you spawn the first Generation." +msgstr "Ajusteu aquí la probabilitat de que una ceŀlula neixi o no quan s'engendra la primera generació." + +#: FMain.class:307 +msgid "Small generation" +msgstr "Generació petita" + +#: FMain.class:176 +msgid "Spawn First Generation" +msgstr "Engendra la primera generació" + +#: FMain.class:194 +msgid "Start Evolution" +msgstr "Inicia l'evolució" + +#: FMain.class:206 +msgid "Survival" +msgstr "Supervivència" + +#: FMain.class:136 +msgid "The Game of Life" +msgstr "El Joc de la Vida" + +#: FMain.class:312 +msgid "Vertical symmetry" +msgstr "Simetria vertical" + +#: FMain.class:164 +msgid "" +"Written in Gambas
\n" +"by Iman Karim
\n" +"and Benoît Minisini\n" +"

\n" +"Thanks to the Gambas team!" +msgstr "" +"Escrit al Gambas
\n" +"per Iman Karim
\n" +"i Benoît Minisini\n" +"

\n" +"Gràcies a l'equip del Gambas!" + diff --git a/app/examples/Games/GameOfLife/.lang/cs.po b/app/examples/Games/GameOfLife/.lang/cs.po new file mode 100644 index 00000000..9e616257 --- /dev/null +++ b/app/examples/Games/GameOfLife/.lang/cs.po @@ -0,0 +1,130 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Game of Life" +msgstr "Hra o život" + +#: FMain.class:72 +msgid "Evolution Delay: " +msgstr "Prodleva evoluce: " + +#: FMain.form:37 +msgid "The Game of Life" +msgstr "Hra života" + +#: FMain.form:48 +msgid "GameOfLife" +msgstr "Hra o život" + +#: FMain.form:65 +msgid "" +"Written in Gambas
\n" +"by Iman Karim
\n" +"and Benoît Minisini\n" +"

\n" +"Thanks to the Gambas team!" +msgstr "" +"Napsano v Gambas
\n" +"od Iman Karim
\n" +"a Benoît Minisini\n" +"

\n" +"Díky Gambas týmu!" + +#: FMain.form:78 +msgid "Spawn First Generation" +msgstr "Vyvolat první generace" + +#: FMain.form:96 +msgid "Start Evolution" +msgstr "Start evoluce" + +#: FMain.form:101 +msgid "Evolution Delay: 20ms" +msgstr "Prodleva evoluce: 20ms" + +#: FMain.form:108 +msgid "Survival" +msgstr "Přežití" + +#: FMain.form:112 +msgid "8 Neighbours" +msgstr "8 sousedů" + +#: FMain.form:119 +msgid "7 Neighbours" +msgstr "7 sousedů" + +#: FMain.form:126 +msgid "6 Neighbours" +msgstr "6 sousedů" + +#: FMain.form:133 +msgid "5 Neighbours" +msgstr "5 sousedů" + +#: FMain.form:140 +msgid "4 Neighbours" +msgstr "4 sousedé" + +#: FMain.form:147 +msgid "3 Neighbours" +msgstr "3 sousedé" + +#: FMain.form:153 +msgid "2 Neighbours" +msgstr "2 sousedé" + +#: FMain.form:160 +msgid "1 Neighbour" +msgstr "1 soused" + +#: FMain.form:167 +msgid "0 Neighbour" +msgstr "0 sousedů" + +#: FMain.form:174 +msgid "Select the Count of Neighbours where a cell will die or keep its state." +msgstr "Vyberte počet sousedů, kde buňka zemře nebo si ponechá svůj stav." + +#: FMain.form:178 +msgid "Options" +msgstr "Možnosti" + +#: FMain.form:182 +msgid "Set here the probability that a Cell will be born or not when you spawn the first Generation." +msgstr "Nastavte zde pravděpodobnost, že se buňky narodí, nebo ne, když se Vám vyvolá první generace." + +#: FMain.form:193 +msgid "Alive" +msgstr "Naživu" + +#: FMain.form:198 +msgid "Dead" +msgstr "Mrtvý" + +#: FMain.form:204 +msgid "Draw cell borders" +msgstr "Kreslení okrajů buněk" + +#: FMain.form:209 +msgid "Small generation" +msgstr "Malé generace" + +#: FMain.form:214 +msgid "Vertical symmetry" +msgstr "Vertikální symetrie" + +#: FMain.form:219 +msgid "Horizontal symmetry" +msgstr "Horizontální symetrie" diff --git a/app/examples/Games/GameOfLife/.lang/de.po b/app/examples/Games/GameOfLife/.lang/de.po new file mode 100644 index 00000000..ab364aa0 --- /dev/null +++ b/app/examples/Games/GameOfLife/.lang/de.po @@ -0,0 +1,121 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Game of Life" +msgstr "Spiel des Lebens" + +#: FMain.class:72 +msgid "Evolution Delay: " +msgstr "Evolutionsspanne: " + +#: FMain.form:37 +msgid "The Game of Life" +msgstr "Spiel des Lebens" + +#: FMain.form:48 +msgid "GameOfLife" +msgstr "-" + +#: FMain.form:65 +msgid "Written in Gambas
\nby Iman Karim
\nand Benoît Minisini\n

\nThanks to the Gambas team!" +msgstr "Geschrieben in Gambas
\nvon Iman Karim
\nund Benoît Minisini\n

\nDanke an das Gambas team!" + +#: FMain.form:78 +msgid "Spawn First Generation" +msgstr "Erste Generation erzeugen" + +#: FMain.form:96 +msgid "Start Evolution" +msgstr "Evolution starten" + +#: FMain.form:101 +msgid "Evolution Delay: 20ms" +msgstr "Evolutionsspanne: 20ms" + +#: FMain.form:108 +msgid "Survival" +msgstr "Überleben" + +#: FMain.form:112 +msgid "8 Neighbours" +msgstr "8 Nachbarn" + +#: FMain.form:119 +msgid "7 Neighbours" +msgstr "7 Nachbarn" + +#: FMain.form:126 +msgid "6 Neighbours" +msgstr "6 Nachbarn" + +#: FMain.form:133 +msgid "5 Neighbours" +msgstr "5 Nachbarn" + +#: FMain.form:140 +msgid "4 Neighbours" +msgstr "4 Nachbarn" + +#: FMain.form:147 +msgid "3 Neighbours" +msgstr "3 Nachbarn" + +#: FMain.form:153 +msgid "2 Neighbours" +msgstr "2 Nachbarn" + +#: FMain.form:160 +msgid "1 Neighbour" +msgstr "1 Nachbar" + +#: FMain.form:167 +msgid "0 Neighbour" +msgstr "0 Nachbarn" + +#: FMain.form:174 +msgid "Select the Count of Neighbours where a cell will die or keep its state." +msgstr "Wähle die Anzahl der Nachbarn, wann eine Zelle stirbt." + +#: FMain.form:178 +msgid "Options" +msgstr "Optionen" + +#: FMain.form:182 +msgid "Set here the probability that a Cell will be born or not when you spawn the first Generation." +msgstr "Wahrscheinlichkeit, dass eine Zelle geboren wird, wenn du die erste Generation erzeugst." + +#: FMain.form:193 +msgid "Alive" +msgstr "Lebend" + +#: FMain.form:198 +msgid "Dead" +msgstr "Tot" + +#: FMain.form:204 +msgid "Draw cell borders" +msgstr "Zellengrenzen zeichnen" + +#: FMain.form:209 +msgid "Small generation" +msgstr "Kleine Generation" + +#: FMain.form:214 +msgid "Vertical symmetry" +msgstr "Vertikale Symmetrie" + +#: FMain.form:219 +msgid "Horizontal symmetry" +msgstr "Horizontale Symmetrie" + diff --git a/app/examples/Games/GameOfLife/.lang/ru.po b/app/examples/Games/GameOfLife/.lang/ru.po new file mode 100644 index 00000000..d040922a --- /dev/null +++ b/app/examples/Games/GameOfLife/.lang/ru.po @@ -0,0 +1,158 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Games/GameOfLife/.project:18 +msgid "Game of Life" +msgstr "Игра жизни" + +#: app/examples/Games/GameOfLife/.project:19 +msgid "" +"The Game Of Life.\n" +"\n" +"This example runs the Game Of Life cellular automaton. It allows to define many parameters of the automaton." +msgstr "" +"Игра жизни\n" +"\n" +"Этот пример запускает клеточный автомат игры жизни. Это позволяет определить многие параметры автомата." + +#: app/examples/Games/GameOfLife/.src/FMain.class:72 +msgid "Evolution Delay: " +msgstr "Задержка эволюции: " + +#: app/examples/Games/GameOfLife/.src/FMain.class:72 +msgid "ms" +msgstr "мс" + +#: app/examples/Games/GameOfLife/.src/FMain.form:5 app/examples/Games/GameOfLife/.src/FMain.form:18 +msgid "The Game of Life" +msgstr "Игра жизни" + +#: app/examples/Games/GameOfLife/.src/FMain.form:14 +msgid "GameOfLife" +msgstr "Игра жизни" + +#: app/examples/Games/GameOfLife/.src/FMain.form:28 +msgid "" +"Written in Gambas
\n" +"by Iman Karim
\n" +"and Benoît Minisini\n" +"

\n" +"Thanks to the Gambas team!" +msgstr "" +"Написано в Gambas
\n" +"Иман Каримом
\n" +"и Бенуа Минисини\n" +"

\n" +"Спасибо команде Gambas!" + +#: app/examples/Games/GameOfLife/.src/FMain.form:39 +msgid "Spawn First Generation" +msgstr "Породить первое поколение" + +#: app/examples/Games/GameOfLife/.src/FMain.form:55 +msgid "Start Evolution" +msgstr "Начать эволюцию" + +#: app/examples/Games/GameOfLife/.src/FMain.form:59 +msgid "Evolution Delay: 20ms" +msgstr "Задержка эволюции: 20мс" + +#: app/examples/Games/GameOfLife/.src/FMain.form:65 +msgid "Survival" +msgstr "Выживание" + +#: app/examples/Games/GameOfLife/.src/FMain.form:68 +msgid "8 Neighbours" +msgstr "8 соседей" + +#: app/examples/Games/GameOfLife/.src/FMain.form:74 +msgid "7 Neighbours" +msgstr "7 соседей" + +#: app/examples/Games/GameOfLife/.src/FMain.form:80 +msgid "6 Neighbours" +msgstr "6 соседей" + +#: app/examples/Games/GameOfLife/.src/FMain.form:86 +msgid "5 Neighbours" +msgstr "5 соседей" + +#: app/examples/Games/GameOfLife/.src/FMain.form:92 +msgid "4 Neighbours" +msgstr "4 соседа" + +#: app/examples/Games/GameOfLife/.src/FMain.form:98 +msgid "3 Neighbours" +msgstr "3 соседа" + +#: app/examples/Games/GameOfLife/.src/FMain.form:103 +msgid "2 Neighbours" +msgstr "2 соседа" + +#: app/examples/Games/GameOfLife/.src/FMain.form:109 +msgid "1 Neighbour" +msgstr "1 сосед" + +#: app/examples/Games/GameOfLife/.src/FMain.form:115 +msgid "0 Neighbour" +msgstr "0 соседей" + +#: app/examples/Games/GameOfLife/.src/FMain.form:121 +msgid "Select the Count of Neighbours where a cell will die or keep its state." +msgstr "Выбрать количество соседей, где клетка умрёт или сохранит своё состояние." + +#: app/examples/Games/GameOfLife/.src/FMain.form:125 +msgid "Options" +msgstr "Опции" + +#: app/examples/Games/GameOfLife/.src/FMain.form:128 +msgid "Set here the probability that a Cell will be born or not when you spawn the first Generation." +msgstr "Установить здесь вероятность того, что клетка родится или нет, когда вы породите первое поколение." + +#: app/examples/Games/GameOfLife/.src/FMain.form:137 +msgid "Alive" +msgstr "Жив" + +#: app/examples/Games/GameOfLife/.src/FMain.form:141 +msgid "Dead" +msgstr "Мёртв" + +#: app/examples/Games/GameOfLife/.src/FMain.form:146 +msgid "Draw cell borders" +msgstr "Границы клетки" + +#: app/examples/Games/GameOfLife/.src/FMain.form:150 +msgid "Small generation" +msgstr "Малое поколение" + +#: app/examples/Games/GameOfLife/.src/FMain.form:154 +msgid "Vertical symmetry" +msgstr "Вертикал. симметрия" + +#: app/examples/Games/GameOfLife/.src/FMain.form:158 +msgid "Horizontal symmetry" +msgstr "Горизонт. симметрия" + diff --git a/app/examples/Games/GameOfLife/.project b/app/examples/Games/GameOfLife/.project new file mode 100644 index 00000000..250cecc3 --- /dev/null +++ b/app/examples/Games/GameOfLife/.project @@ -0,0 +1,17 @@ +# Gambas Project File 3.0 +Title=Game of Life +Startup=FMain +Icon=glob2-icon-48x48.png +Version=1.0.0 +Component=gb.image +Component=gb.gui +Description="The Game Of Life.\n\nThis example runs the Game Of Life cellular automaton. It allows to define many parameters of the automaton." +TabSize=2 +Translate=1 +Language=en +Maintainer=benoit +Vendor=Example +Address=benoit@localhost +License=General Public Licence +Packager=1 +Tags=Example diff --git a/app/examples/Games/GameOfLife/.src/CGameField.class b/app/examples/Games/GameOfLife/.src/CGameField.class new file mode 100644 index 00000000..3f998436 --- /dev/null +++ b/app/examples/Games/GameOfLife/.src/CGameField.class @@ -0,0 +1,236 @@ +' Gambas class file + +Fast + +'PRIVATE Game AS Boolean[] +Private Game As New Image +Private MaxX As Integer +Private MaxY As Integer +Private dW As DrawingArea +Private $iZoom As Integer + +Public Function Init(bSmall As Boolean, iLife As Integer, bSymetryH As Boolean, bSymetryV As Boolean) As Integer + + Dim i, j, n, size As Integer + + Randomize + + $iZoom = 3 + MaxX = dw.W \ $iZoom - 3 + MaxY = dw.H \ $iZoom - 3 + + 'Game = NEW Boolean[MaxX + 1, MaxY + 1] + Game = New Image(MaxX + 1, MaxY + 1) + Game.Fill(Color.White) + + If bSmall Then + + size = 12 + + For i = MaxX \ 2 - size To MaxX \ 2 + size + For j = MaxY \ 2 - size To MaxY \ 2 + size + If Rnd(1, 100) >= iLife Then Game[i, j] = Color.Red + Next + Next + + If bSymetryH Then + For i = MaxX \ 2 - size To MaxX \ 2 + size + n = size * 2 + 1 + For j = MaxY \ 2 - size To MaxY \ 2 + Game[i, j] = Game[i, j + n] + n -= 2 + Next + Next + Endif + + If bSymetryV Then + For i = MaxX \ 2 - size To MaxX \ 2 + size + n = size * 2 + 1 + For j = MaxY \ 2 - size To MaxY \ 2 + Game[j, i] = Game[j + n, i] + n -= 2 + Next + Next + Endif + + Else + + For i = 0 To MaxX + For j = 0 To MaxY + If Rnd(1, 100) >= iLife Then Game[i, j] = Color.Red + Next + Next + + Endif + + 'PRINT MaxX + 1;; "x";; MaxY + 1; " game" + +End + +Public Sub SetDrawArea(pdW As DrawingArea) + + dW = pdW + +End + +Public Sub DrawGame(bBorder As Boolean) + + Dim SquareSize As Integer + + 'IF GameRow.Count = 0 OR GameRow[1].Count = 0 THEN RETURN -1 + + SquareSize = 4 'dw.Height / GameRow.Count + + Draw.Begin(dw) + + 'Draw.FillStyle = Fill.Solid + 'Draw.LineStyle = Line.None + 'Draw.FillColor = Color.LightBackground + 'Draw.Rect(4, 4, Game.Width * $iZoom, Game.Height * $iZoom) + + If bBorder Then + Draw.LineStyle = Line.Solid + Else + 'Draw.FillRect(0, 0, dw.W, dw.H, Color.Background) + Draw.LineStyle = Line.None + Endif + + Draw.FillColor = Color.Red + Draw.Foreground = Color.LightBackground + + Draw.Zoom(Game, $iZoom, 4, 4) + + Draw.End + +End + +Private Function CountNeighboursOnBorder(x As Integer, y As Integer) As Integer + + Dim iTot As Integer + Dim i, j, ti, tj As Integer + + For i = x - 1 To x + 1 + If i < 0 Then + ti = MaxX + Else If i > MaxX Then + ti = 0 + Else + ti = i + Endif + For j = y - 1 To y + 1 + If j < 0 Then + tj = MaxY + Else If j > MaxY Then + tj = 0 + Else + tj = j + Endif + iTot += Game[ti, tj] + 'IF Game[ti, tj] = Color.Red THEN INC count + Next + Next + + iTot = iTot - Game[x, y] - Color.White * 8 + + Return iTot \ (Color.Red - Color.White) + +End + +' Private Function CountNeighbours(x As Integer, y As Integer) As Integer +' +' Dim iTot As Integer +' +' iTot = Game[x - 1, y - 1] + Game[x, y - 1] + Game[x + 1, y - 1] + +' Game[x - 1, y] + Game[x + 1, y] + +' Game[x - 1, y + 1] + Game[x, y + 1] + Game[x + 1, y + 1] +' +' iTot -= Color.White * 8 +' 'DEBUG iTot / (Color.Red - Color.Background) +' Return iTot \ (Color.Red - Color.White) +' +' End + +Public Sub SpawnNextGeneration(Live As Boolean[], Keep As Boolean[]) + + Dim x As Integer + Dim y As Integer + Dim myCount As Integer + Dim newGame As Image + Dim myCountSub As Integer = Color.White * 8 + + newgame = Game.Copy() + + For x = 1 To MaxX - 1 + For y = 1 To MaxY - 1 + + 'myCount = CountNeighbours(x, y) + + myCount = Game[x - 1, y - 1] + Game[x, y - 1] + Game[x + 1, y - 1] + + Game[x - 1, y] + Game[x + 1, y] + + Game[x - 1, y + 1] + Game[x, y + 1] + Game[x + 1, y + 1] + + myCount -= myCountSub + myCount \= (Color.Red - Color.White) + + If keep[myCount] Then Continue + If live[myCount] + newGame[x, y] = Color.Red + Else + newGame[x, y] = Color.White + Endif + Next + Next + + For x = 0 To MaxX + y = 0 + myCount = CountNeighboursOnBorder(x, y) + If Not keep[myCount] Then + If live[myCount] + newGame[x, y] = Color.Red + Else + newGame[x, y] = Color.White + Endif + Endif + y = MaxY + myCount = CountNeighboursOnBorder(x, y) + If keep[myCount] Then Continue + If live[myCount] + newGame[x, y] = Color.Red + Else + newGame[x, y] = Color.White + Endif + Next + + For y = 1 To MaxY - 1 + x = 0 + myCount = CountNeighboursOnBorder(x, y) + If Not keep[myCount] Then + If live[myCount] + newGame[x, y] = Color.Red + Else + newGame[x, y] = Color.White + Endif + Endif + x = MaxX + myCount = CountNeighboursOnBorder(x, y) + If keep[myCount] Then Continue + If live[myCount] + newGame[x, y] = Color.Red + Else + newGame[x, y] = Color.White + Endif + Next + ' IF Rnd < 0.1 THEN + ' x = Int(Rnd(0, MaxX - 30)) + ' y = Int(Rnd(0, MaxY - 30)) + ' FOR i = x TO x + 29 + ' FOR j = y TO y + 29 + ' newGame[i, j] = Rnd(1, 100) >= FMain.Slider2.Value + ' NEXT + ' NEXT + ' ENDIF + + Game = newGame + +End + diff --git a/app/examples/Games/GameOfLife/.src/FMain.class b/app/examples/Games/GameOfLife/.src/FMain.class new file mode 100644 index 00000000..50bcfc24 --- /dev/null +++ b/app/examples/Games/GameOfLife/.src/FMain.class @@ -0,0 +1,95 @@ +' Gambas class file + +Private Game As New CGameField + +Private Sub DrawGame() + + Game.DrawGame(chkBorder.Value) + +End + + +Public Sub Form_Open() + + 'System.Profile = False + 'Randomize 1972 + Button1_Click + Slider1_Change + 'togEvolution.Value = True + +End + +Public Sub Button1_Click() + + Game.SetDrawArea(dwgGame) + Game.Init(chkSmall.Value, Slider2.Value, chkSymetryH.Value, chkSymetryV.Value) + DrawGame + +End + +Public Sub Button2_Click() + + tmrEvolution_Timer + 'Game.SpawnNextGeneration + 'DrawGame + +End + +Public Sub tmrEvolution_Timer() + + Dim Live As New Boolean[9] + Dim Keep As New Boolean[9] + + If Not togEvolution.Value Then Return + + live[0] = chkZero.Value = CheckBox.False + live[1] = chkOne.Value = CheckBox.False + live[2] = chkTwo.Value = CheckBox.False + live[3] = chkThree.Value = CheckBox.False + live[4] = chkFour.Value = CheckBox.False + live[5] = chkFive.Value = CheckBox.False + live[6] = chkSix.Value = CheckBox.False + live[7] = chkSeven.Value = CheckBox.False + live[8] = chkEight.Value = CheckBox.False + + keep[0] = chkZero.Value = CheckBox.None + keep[1] = chkOne.Value = CheckBox.None + keep[2] = chkTwo.Value = CheckBox.None + keep[3] = chkThree.Value = CheckBox.None + keep[4] = chkFour.Value = CheckBox.None + keep[5] = chkFive.Value = CheckBox.None + keep[6] = chkSix.Value = CheckBox.None + keep[7] = chkSeven.Value = CheckBox.None + keep[8] = chkEight.Value = CheckBox.None + + Game.SpawnNextGeneration(Live, Keep) + DrawGame + +End + +Public Sub Slider1_Change() + + lblDelay.Caption = ("Evolution Delay: ") & Str(slider1.Value) & ("ms") + tmrEvolution.Delay = slider1.Value + +End + +Public Sub chkBorder_Click() + + If Not togEvolution.Value Then + DrawGame + Endif + +End + +Public Sub togEvolution_Click() + + tmrEvolution.Enabled = togEvolution.Value + +End + +' PUBLIC SUB dW_Draw() +' +' Game.DrawGame(chkBorder.Value) +' +' END diff --git a/app/examples/Games/GameOfLife/.src/FMain.form b/app/examples/Games/GameOfLife/.src/FMain.form new file mode 100644 index 00000000..f2cf88ac --- /dev/null +++ b/app/examples/Games/GameOfLife/.src/FMain.form @@ -0,0 +1,162 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,125,95) + Text = ("The Game of Life") + Icon = Picture["glob2-icon-48x48.png"] + Resizable = False + { Panel1 Panel + MoveScaled(1,1,29,23) + Border = Border.Plain + { Label3 Label + MoveScaled(1,1,19,4) + Font = Font["Bold,+2"] + Text = ("GameOfLife") + } + { Label7 Label + MoveScaled(1,4,19,4) + Text = ("The Game of Life") + Alignment = Align.Left + } + { PictureBox1 PictureBox + MoveScaled(20,1,8,8) + Picture = Picture["glob2-icon-48x48.png"] + } + { Label4 TextLabel + MoveScaled(1,10,26,12) + Font = Font["-1"] + Text = ("Written in Gambas
\nby Iman Karim
\nand Benoît Minisini\n

\nThanks to the Gambas team!") + } + } + { dwgGame DrawingArea + MoveScaled(31,1,93,93) + Background = &HFFFFFF& + Border = Border.Plain + Cached = True + } + { Button1 Button + MoveScaled(1,26,29,6) + Text = ("Spawn First Generation") + } + { Slider1 Slider + MoveScaled(1,44,29,4) + MinValue = 20 + MaxValue = 1000 + Step = 10 + PageStep = 50 + Value = 20 + } + { tmrEvolution #Timer + #MoveScaled(39,20) + Delay = 300 + } + { togEvolution ToggleButton + MoveScaled(1,33,29,6) + Text = ("Start Evolution") + } + { lblDelay TextLabel + MoveScaled(1,39,29,6) + Text = ("Evolution Delay: 20ms") + } + { TabStrip1 TabStrip + MoveScaled(1,49,29,45) + Count = 2 + Index = 0 + Text = ("Survival") + { chkEight CheckBox + MoveScaled(2,36,25,3) + Text = ("8 Neighbours") + Tristate = True + Value = CheckBox.True + } + { chkSeven CheckBox + MoveScaled(2,33,25,3) + Text = ("7 Neighbours") + Tristate = True + Value = CheckBox.True + } + { chkSix CheckBox + MoveScaled(2,30,25,3) + Text = ("6 Neighbours") + Tristate = True + Value = CheckBox.True + } + { chkFive CheckBox + MoveScaled(2,27,25,3) + Text = ("5 Neighbours") + Tristate = True + Value = CheckBox.True + } + { chkFour CheckBox + MoveScaled(2,24,25,3) + Text = ("4 Neighbours") + Tristate = True + Value = CheckBox.True + } + { chkThree CheckBox + MoveScaled(2,21,25,3) + Text = ("3 Neighbours") + Tristate = True + } + { chkTwo CheckBox + MoveScaled(2,18,25,3) + Text = ("2 Neighbours") + Tristate = True + Value = CheckBox.None + } + { chkOne CheckBox + MoveScaled(2,15,25,3) + Text = ("1 Neighbour") + Tristate = True + Value = CheckBox.True + } + { chkZero CheckBox + MoveScaled(2,12,25,3) + Text = ("0 Neighbour") + Tristate = True + Value = CheckBox.True + } + { TextLabel1 TextLabel + MoveScaled(1,1,25,10) + Text = ("Select the Count of Neighbours where a cell will die or keep its state.") + Alignment = Align.Top + } + Index = 1 + Text = ("Options") + { TextLabel3 TextLabel + MoveScaled(1,1,26,12) + Text = ("Set here the probability that a Cell will be born or not when you spawn the first Generation.") + Alignment = Align.Top + } + { Slider2 Slider + MoveScaled(1,14,25,4) + Value = 50 + } + { Label1 Label + MoveScaled(1,18,7,3) + Text = ("Alive") + } + { Label2 Label + MoveScaled(19,18,7,3) + Text = ("Dead") + Alignment = Align.Right + } + { chkBorder CheckBox + MoveScaled(1,36,26,4) + Text = ("Draw cell borders") + } + { chkSmall CheckBox + MoveScaled(1,24,26,4) + Text = ("Small generation") + } + { chkSymetryV CheckBox + MoveScaled(1,32,26,4) + Text = ("Vertical symmetry") + } + { chkSymetryH CheckBox + MoveScaled(1,28,26,4) + Text = ("Horizontal symmetry") + } + Index = 0 + } +} diff --git a/app/examples/Games/GameOfLife/glob2-icon-48x48.png b/app/examples/Games/GameOfLife/glob2-icon-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..5ab8fccb1727f6c93db8e5488cc8ac2d0f4ca335 GIT binary patch literal 3390 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 $aEnemies[$aEnemies.Max].Y Or If iY < $aEnemies[0].Y Then Return Null + For iInd = 0 To $aEnemies.Max + If iY = $aEnemies[iInd].Y Then Break + Next + For iInd = iInd To $aEnemies.Max + If iY <> $aEnemies[iInd].Y Then Break + ' The ship look strings have spaces around them but a 'hit' is + ' only to hit the ship, not the spaces ;-) + If iX > $aEnemies[iInd].X And If iX < $aEnemies[iInd].X + $aEnemies[iInd].Width - 1 Then Return $aEnemies[iInd] + Next + Return Null +End + +Public Sub Enemy_Destroyed() + Dim iInd, iJ As Integer + Dim iAdd As Integer + Dim hEnemy As Enemy + Dim iShift As Integer = 0 + + ' Higher level ships crumble into lower level ones >:-) + iInd = $aEnemies.FindByRef(Last) + $aEnemies.Remove(iInd) + Last.Undraw() + iAdd = Last.Type - 1 + If Not iAdd Then Goto _Out + ' Insert the new ships directly where the destroyed one was + ' shifting all successors forward which is even more diabolic + For iJ = 0 To iAdd + hEnemy = New Enemy(Last.Type - 1) As "Enemy" + hEnemy.Init($hWnd, Last.Shifted + iShift) + $aEnemies.Add(hEnemy, iInd + iJ) + iShift += hEnemy.Width + Next + For iInd = iInd + iAdd + 1 To $aEnemies.Max + $aEnemies[iInd].Move(iShift - Last.Width) + Next +_Out: + If $aEnemies.Count = 0 Then Raise Triumph +End + +Public Sub Enemy_SuperDestroyed() + $aEnemies.Remove($aEnemies.FindByRef(Last)) + Last.Undraw() + If $aEnemies.Count = 0 Then Raise Triumph +End + +Public Sub PlayerDestroyed() + Raise GameOver +End + +Public Sub Draw() + Dim hEnemy As Enemy + + For Each hEnemy In $aEnemies + hEnemy.Draw() + Next +End diff --git a/app/examples/Games/Invaders/.src/Enemy.class b/app/examples/Games/Invaders/.src/Enemy.class new file mode 100644 index 00000000..8e83aaa7 --- /dev/null +++ b/app/examples/Games/Invaders/.src/Enemy.class @@ -0,0 +1,161 @@ +' Gambas class file + +' Types in ascending difficulty +Public Enum Normal = 1, Tough, Borg, BorgQueen +' See looking strings below +Public Const AverageWidth As Integer = 5 + +Property X As Integer +Property Y As Integer +'' Shift distance from 0,0 (may *not* equal Y * Window.Width + X) +Property Read Shifted As Integer +Property Read Width As Integer +Property Read Type As Integer + +Event Destroyed +Event SuperDestroyed + +Private $iType As Integer +Private $sLook As String +Private $iWidth As Integer +Private $iColor As Integer + +Private $hWnd As Window +Private $iX As Integer +Private $iY As Integer +Private $iShifted As Integer + +Public Sub _new(Optional iType As Integer) + ' Calculate a fair share of enemies + If Not iType Then + Select Case CInt(Rnd(0, 100)) + Case 0 To 69 + iType = Normal + Case 70 To 94 + iType = Tough + Case 95 To 98 + iType = Borg + Case 99 + iType = BorgQueen + End Select + Endif + Select Case iType + Case Normal + $sLook = " -o- " + $iColor = Color.Green + Case Tough + $sLook = " ,^, " + $iColor = Color.Cyan + Case Borg + $sLook = " [%] " + $iColor = Color.Magenta + Case BorgQueen + $sLook = " " + $iColor = Color.Red + End Select + $iWidth = Len($sLook) + $iType = iType +End + +Public Sub Init(hWnd As Window, Optional iShift As Integer) + $hWnd = hWnd + $iX = 0 + $iY = 0 + $iShifted = 0 + If iShift Then Shift(iShift) +End + +Public Sub Draw() + $hWnd.Print($sLook, $iX, $iY,, Pair[$iColor, $hWnd.Background]) +End + +Public Sub Undraw() + $hWnd.Print(Space$($iWidth), $iX, $iY) +End + +Public Sub Move(Optional iShift As Integer = 1) + Undraw() + Shift(iShift) + '' FIXME: Value is arbitrary but works kind of + If CInt(Rnd(0, 2000)) = 0 Then + ' Resistance is futile + Missiles.Shoot(Missile.Borg, $iX, $iY + 1) + Endif +End + +'' Shift this ship some places in its row (probably into some other row). +'' Even very huge values are supported. +'' +'' The mathematics in this function should guarantee that no ship ever +'' covers another (accidentally) and that they always stay togehter +'' tightly. +Public Sub Shift(iShift As Integer) + Dim iCur As Integer + + $iShifted += iShift + While iShift <> 0 + ' Handle one row at max at a time + If iShift > $hWnd.Width Then + iCur = $hWnd.Width + Else + iCur = iShift + Endif + iShift -= iCur + ' All even rows go to the right, all odd lines to the left + Select Case $iY % 2 + Case 0 + $iX += iCur + If $iX + $iWidth >= $hWnd.Width Then + ' Goes to an odd row, must start at the end of the row + While $iX + $iWidth >= $hWnd.Width + $iX = ($iX + $iWidth) % $hWnd.Width + Wend + $iX = $hWnd.Width - $iX - $iWidth + Inc $iY + Endif + Case 1 + $iX -= iCur + If $iX < 0 Then + ' Goes to an even row, must start at the beginning + $iX = (- $iX) % $hWnd.Width + Inc $iY + Endif + End Select + Wend +End + +Public Sub Destroy() + Raise Destroyed +End + +Public Sub SuperDestroy() + Raise SuperDestroyed +End + +Private Function X_Read() As Integer + Return $iX +End + +Private Sub X_Write(Value As Integer) + $iX = Value +End + +Private Function Y_Read() As Integer + Return $iY +End + +Private Sub Y_Write(Value As Integer) + $iY = Value +End + +Private Function Width_Read() As Integer + Return $iWidth +End + +Private Function Type_Read() As Integer + Return $iType +End + +Private Function Shifted_Read() As Integer + Return $iShifted +End diff --git a/app/examples/Games/Invaders/.src/MMain.module b/app/examples/Games/Invaders/.src/MMain.module new file mode 100644 index 00000000..7cde3c93 --- /dev/null +++ b/app/examples/Games/Invaders/.src/MMain.module @@ -0,0 +1,139 @@ +' Gambas module file + +' TODO: Make real setup for playing +' TODO: There is an occasional flickering when shooting and the ships are already near the player and few + +Public X As Integer +Public Y As Integer +' Hardcoded corresponding to the strings in Draw() below! +Public Width As Integer = 3 +Public Height As Integer = 2 + +Private $hEnemies As Timer +Private $hMissiles As Timer + +Public Sub Main() + ' Debug aid. Watch /tmp/pipe with "tail -f" + ' Dim hPipe As Stream + ' + ' hPipe = Pipe "/tmp/pipe" For Write + ' Error To #hPipe + + Screen.Cursor = Cursor.Hidden + Screen.Echo = False + Window.Attributes = Attr.Bold + Object.Attach(Window, Me, "Window") + Window.SetFocus() + + X = (Window.Width - Width) \ 2 + Y = Window.Height - Height + + Object.Attach(Enemies, Me, "Enemies") + + Draw() + ' Populate ca. 1/3 of the screen with enemies. It will actually look more + ' because of the enemy arrangement. But that's good :-) + Enemies.Init(Window, Window.Width * Window.Height / 3 / Enemy.AverageWidth) + Missiles.Init(Window) + Window.Buffered = True + + $hEnemies = New Timer As "Enemies" + ' TODO: The Timers are made for a 80*24 terminal. + ' Make it 100 and you'll likely win, 75 really depends on the amount of Borg for me... + $hEnemies.Delay = 75 + $hMissiles = New Timer As "Missiles" + $hMissiles.Delay = 50 + + $hEnemies.Start() + $hMissiles.Start() +End + +Public Sub Window_Read() + Select Window.Read() + ' Navigate left/right + Case Key.Left + If X = 0 Then Return + Undraw() + Dec X + Draw() + Case Key.Right + If X + Width >= Window.Width Then Return + Undraw() + Inc X + Draw() + ' Navigate up/down + Case Key.Up + If Y <= 0 Then Return + Undraw() + Dec Y + Draw() + Case Key.Down + If Y >= Window.Height - Height Then Return + Undraw() + Inc Y + Draw() + ' Shoot normal missile + Case Key[" "] + Missiles.Shoot(Missile.Normal, X, Y - 1) + 'If Not $hMissiles.Enabled Then $hMissiles.Start() + ' Shoot super missile + Case Key["v"] + Missiles.Shoot(Missile.Super, X, Y - 1) + 'If Not $hMissiles.Enabled Then $hMissiles.Start + ' Of course, manipulate the timers + Case Key["+"] + $hEnemies.Delay -= 10 + $hMissiles.Delay -= 5 + Case Key["-"] + $hEnemies.Delay += 10 + $hMissiles.Delay += 5 + End Select +End + +Public Sub Enemies_Triumph() + End("TRIUMPH!", Color.Yellow) +End + +Public Sub Enemies_GameOver() + End("GAME OVER!", Color.Blue) +End + +Private Sub End(sMessage As String, iColor As Integer) + $hEnemies.Stop() + $hMissiles.Stop() + '' TODO: The message display is glitchy + Window.Buffered = False + Window.PrintCenter(sMessage,, Pair[iColor, Window.Background]) + '' TODO: What now? Note that the user can still interact at this point... +End + +Private Sub Draw() + Window.Print(" | ", X, Y) + Window.Print("^'^", X, Y + 1) +End + +Private Sub Undraw() + Window.Print(Space$(Width), X, Y) + Window.Print(Space$(Width), X, Y + 1) +End + +Public Sub Enemies_Timer() + Enemies.Move() + If Not $hMissiles.Enabled Then + Enemies.Draw() + Screen.Refresh() + Endif +End + +Public Sub Missiles_Timer() + If Missiles.Move() And Missiles.Count = 0 Then + '$hMissiles.Stop() + Return + Endif + ' Missiles draw at a higher rate so we can safely redraw everything + ' here. Note that, thanks to ncurses' buffering, only the changed + ' parts are redrawn so that there is no overhead in more frequent + ' Screen.Refresh()es here. + Enemies.Draw() + Screen.Refresh() +End diff --git a/app/examples/Games/Invaders/.src/Missile.class b/app/examples/Games/Invaders/.src/Missile.class new file mode 100644 index 00000000..d06f6af0 --- /dev/null +++ b/app/examples/Games/Invaders/.src/Missile.class @@ -0,0 +1,84 @@ +' Gambas class file + +Public Enum Normal, {Super}, Borg + +Property Read Type As Integer + +Event Destroyed + +Private $iType As Integer +Private $sLook As String +Private $iColor As Integer +Private $iDir As Integer + +Private $hWnd As Window +Private $iX As Integer +Private $iY As Integer + +Public Sub _new(iType As Integer, iX As Integer, iY As Integer) + Select Case iType + Case Normal + $sLook = "|" + $iColor = Color.Yellow + $iDir = -1 + Case {Super} + $sLook = "*" + $iColor = Color.Red + $iDir = -1 + Case Borg + $sLook = "*" + $iColor = Color.Green + $iDir = 1 + End Select + $iType = iType + $iX = iX + $iY = iY +End + +Public Sub Init(hWnd As Window) + $hWnd = hWnd +End + +Public Function Move() As Boolean + Dim hEnemy As Enemy + + Undraw() + $iY += $iDir + If $iType <> Borg Then + hEnemy = Enemies.Hit($iX, $iY) + If hEnemy Then + If $iType = Normal Then + hEnemy.Destroy() + Else + hEnemy.SuperDestroy() + Draw() + Endif + Raise Destroyed + Return True + Endif + Else + If $iY >= MMain.Y And If $iY < MMain.Y + MMain.Height And If + $iX >= MMain.X And If $iX < MMain.X + MMain.Width Then + Enemies.PlayerDestroyed() + Draw() + Endif + Endif + If $iY = -1 Or $iY = $hWnd.Height Then + Raise Destroyed + Return True + Endif + Draw() + Return False +End + +Public Sub Draw() + Window.Print($sLook, $iX, $iY,, Pair[$iColor, $hWnd.Background]) +End + +Public Sub Undraw() + Window.Print(" ", $iX, $iY) +End + +Private Function Type_Read() As Integer + Return $iType +End diff --git a/app/examples/Games/Invaders/.src/Missiles.class b/app/examples/Games/Invaders/.src/Missiles.class new file mode 100644 index 00000000..1219bfb8 --- /dev/null +++ b/app/examples/Games/Invaders/.src/Missiles.class @@ -0,0 +1,65 @@ +' Gambas class file + +Create Static + +'' Maximum number of missiles concurrently displayed +Public Const MaxMissiles As Integer = 3 + +Property Read Count As Integer + +Private $aMissiles As Missile[] +Private $hWnd As Window +Private $iCount As Integer + +Public Sub _new() + $aMissiles = New Missile[] + $iCount = 0 +End + +Public Sub Init(hWnd As Window) + $hWnd = hWnd +End + +Public Function Move() As Boolean + Dim hMissile As Missile + Dim bRes As Boolean = False + + For Each hMissile In $aMissiles + bRes = bRes Or hMissile.Move() + Next + Return bRes +End + +Public Sub Shoot(iType As Integer, iX As Integer, iY As Integer) + Dim hMissile As Missile + + Select Case iType + Case Missile.Normal + ' Consumes one missile + If $iCount >= MaxMissiles Then Return + Inc $iCount + Case Missile.Super + ' Consumes all missiles + If $iCount Then Return + $iCount = MaxMissiles + Case Missile.Borg + ' Consumes none of the (player's) missiles + End Select + hMissile = New Missile(iType, iX, iY) As "Missile" + hMissile.Init($hWnd) + $aMissiles.Add(hMissile) +End + +Public Sub Missile_Destroyed() + Last.Undraw() + $aMissiles.Remove($aMissiles.FindByRef(Last)) + If Last.Type = Missile.Normal Then + Dec $iCount + Else If Last.Type = Missile.Super Then + $iCount = 0 + Endif +End + +Private Function Count_Read() As Integer + Return $iCount +End diff --git a/app/examples/Games/Invaders/invaders.png b/app/examples/Games/Invaders/invaders.png new file mode 100644 index 0000000000000000000000000000000000000000..cfad58b988e93f734bb650be4630ac68286af67c GIT binary patch literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@&H$efS0K$$&+xy2q4t+i1(2=p z>Eak7aXC3bfp-Jj1~!3&jy5Jo4o0_YS2j#-k=U`dy@`>TIho@`P$0XJqzePXvzyAh TnC9;RnaAMi>gTe~DWM4fgJd8H literal 0 HcmV?d00001 diff --git a/app/examples/Games/MineSweeper/.directory b/app/examples/Games/MineSweeper/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Games/MineSweeper/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Games/MineSweeper/.hidden/screenshots/2014-12-14.png b/app/examples/Games/MineSweeper/.hidden/screenshots/2014-12-14.png new file mode 100644 index 0000000000000000000000000000000000000000..eb9b09fa6cff0de41ae3a53448ee3113bb68fa60 GIT binary patch literal 48121 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 M07*qoM6N<$f}|9lUH||9 literal 0 HcmV?d00001 diff --git a/app/examples/Games/MineSweeper/.lang/cs.po b/app/examples/Games/MineSweeper/.lang/cs.po new file mode 100644 index 00000000..dece6115 --- /dev/null +++ b/app/examples/Games/MineSweeper/.lang/cs.po @@ -0,0 +1,52 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 FMain.form:24 +msgid "Minesweeper" +msgstr "-" + +#: FMain.form:30 +msgid "&Game" +msgstr "&Hra" + +#: FMain.form:33 +msgid "&Change Game Parameters" +msgstr "&Změna parametrů hry" + +#: FMain.form:38 +msgid "&Quit" +msgstr "&Ukončit" + +#: FSettings.form:21 +msgid "Settings" +msgstr "Nastavení" + +#: FSettings.form:37 +msgid "Width" +msgstr "Výška" + +#: FSettings.form:54 +msgid "Height" +msgstr "Víška" + +#: FSettings.form:71 +msgid "Number of mines" +msgstr "Počet min" + +#: FSettings.form:91 +msgid "OK" +msgstr "-" + +#: FSettings.form:97 +msgid "Cancel" +msgstr "Zrušit" + diff --git a/app/examples/Games/MineSweeper/.lang/ja.po b/app/examples/Games/MineSweeper/.lang/ja.po new file mode 100644 index 00000000..dabdbf68 --- /dev/null +++ b/app/examples/Games/MineSweeper/.lang/ja.po @@ -0,0 +1,53 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FSettings.form:97 +msgid "Cancel" +msgstr "キャンセル" + +#: FMain.form:26 +msgid "&Change Game Parameters" +msgstr "パラメータを設定(&C)" + +#: FMain.form:23 +msgid "&Game" +msgstr "ゲーム(&G)" + +#: FSettings.form:54 +msgid "Height" +msgstr "縦の長さ" + +#: .project:1 FMain.form:19 +msgid "Minesweeper" +msgstr "マインスイーパ" + +#: FSettings.form:71 +msgid "Number of mines" +msgstr "地雷の数" + +#: FSettings.form:91 +msgid "OK" +msgstr "-" + +#: FMain.form:30 +msgid "&Quit" +msgstr "終了(&Q)" + +#: FSettings.form:21 +msgid "Settings" +msgstr "設定" + +#: FSettings.form:37 +msgid "Width" +msgstr "横の長さ" + diff --git a/app/examples/Games/MineSweeper/.lang/ru.po b/app/examples/Games/MineSweeper/.lang/ru.po new file mode 100644 index 00000000..b07ef7dc --- /dev/null +++ b/app/examples/Games/MineSweeper/.lang/ru.po @@ -0,0 +1,80 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Games/MineSweeper/.project:20 app/examples/Games/MineSweeper/.src/FMain.form:5 +msgid "Minesweeper" +msgstr "Сапёр" + +#: app/examples/Games/MineSweeper/.project:21 +msgid "" +"Minesweeper.\n" +"\n" +"This example is an implementation of the Minesweeper game." +msgstr "" +"Сапёр.\n" +"\n" +"Этот пример является реализацией игры Сапёр." + +#: app/examples/Games/MineSweeper/.src/FMain.form:10 +msgid "Game" +msgstr "Игра" + +#: app/examples/Games/MineSweeper/.src/FMain.form:12 +msgid "Change Game Parameters" +msgstr "Изменить параметры игры" + +#: app/examples/Games/MineSweeper/.src/FMain.form:16 +msgid "Quit" +msgstr "Выход" + +#: app/examples/Games/MineSweeper/.src/FSettings.form:5 +msgid "Settings" +msgstr "Параметры" + +#: app/examples/Games/MineSweeper/.src/FSettings.form:18 +msgid "Width" +msgstr "Ширина" + +#: app/examples/Games/MineSweeper/.src/FSettings.form:32 +msgid "Height" +msgstr "Высота" + +#: app/examples/Games/MineSweeper/.src/FSettings.form:46 +msgid "Number of mines" +msgstr "Количество мин" + +#: app/examples/Games/MineSweeper/.src/FSettings.form:62 +msgid "OK" +msgstr "ОК" + +#: app/examples/Games/MineSweeper/.src/FSettings.form:67 +msgid "Cancel" +msgstr "Отмена" + +#: app/examples/Games/MineSweeper/.src/MineSweeperGame.class:123 +msgid "Index out of bounds" +msgstr "Индекс вне границ" + diff --git a/app/examples/Games/MineSweeper/.lang/zh.po b/app/examples/Games/MineSweeper/.lang/zh.po new file mode 100644 index 00000000..183467dc --- /dev/null +++ b/app/examples/Games/MineSweeper/.lang/zh.po @@ -0,0 +1,52 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FSettings.form:97 +msgid "Cancel" +msgstr "取消" + +#: FMain.form:26 +msgid "&Change Game Parameters" +msgstr "修改游戏参数(&C)" + +#: FMain.form:23 +msgid "&Game" +msgstr "游戏" + +#: FSettings.form:54 +msgid "Height" +msgstr "高度" + +#: FMain.form:19 .project:1 +msgid "Minesweeper" +msgstr "扫雷" + +#: FSettings.form:71 +msgid "Number of mines" +msgstr "地雷数" + +#: FSettings.form:91 +msgid "OK" +msgstr "确定" + +#: FMain.form:30 +msgid "&Quit" +msgstr "离开(&Q)" + +#: FSettings.form:21 +msgid "Settings" +msgstr "参数设置" + +#: FSettings.form:37 +msgid "Width" +msgstr "宽度" + diff --git a/app/examples/Games/MineSweeper/.lang/zh_TW.po b/app/examples/Games/MineSweeper/.lang/zh_TW.po new file mode 100644 index 00000000..681019e6 --- /dev/null +++ b/app/examples/Games/MineSweeper/.lang/zh_TW.po @@ -0,0 +1,52 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 FMain.form:19 +msgid "Minesweeper" +msgstr "踩地雷" + +#: FMain.form:23 +msgid "&Game" +msgstr "遊戲(&G)" + +#: FMain.form:26 +msgid "&Change Game Parameters" +msgstr "修改遊戲參數(&C)" + +#: FMain.form:30 +msgid "&Quit" +msgstr "離開(&Q)" + +#: FSettings.form:21 +msgid "Settings" +msgstr "設定" + +#: FSettings.form:37 +msgid "Width" +msgstr "寬度" + +#: FSettings.form:54 +msgid "Height" +msgstr "高度" + +#: FSettings.form:71 +msgid "Number of mines" +msgstr "地雷數" + +#: FSettings.form:91 +msgid "OK" +msgstr "確定" + +#: FSettings.form:97 +msgid "Cancel" +msgstr "取消" diff --git a/app/examples/Games/MineSweeper/.project b/app/examples/Games/MineSweeper/.project new file mode 100644 index 00000000..eabe3b13 --- /dev/null +++ b/app/examples/Games/MineSweeper/.project @@ -0,0 +1,19 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.6.90 +Title=Minesweeper +Startup=FMain +Icon=image/expr_win.png +Version=1.0.0 +Component=gb.image +Component=gb.gui +Component=gb.form +Description="Minesweeper.\n\nThis example is an implementation of the Minesweeper game." +Authors="Timothy Lin" +TabSize=3 +Translate=1 +Language=en +Vendor=Example +Packager=1 +Tags=Game,LogicGame +Screenshot=.hidden/screenshots/2014-12-14.png +CreateMenu=1 diff --git a/app/examples/Games/MineSweeper/.src/FMain.class b/app/examples/Games/MineSweeper/.src/FMain.class new file mode 100644 index 00000000..224b4e6a --- /dev/null +++ b/app/examples/Games/MineSweeper/.src/FMain.class @@ -0,0 +1,249 @@ +' Gambas class file + +Private img_cover As Picture = Picture.Load("image/cover.png") +Private img_cover_hovered As Picture = Picture.Load("image/coveron.png") +Private img_false As Picture = Picture.Load("image/false.png") +Private img_flag As Picture = Picture.Load("image/flag.png") +Private img_face_normal As Picture = Picture.Load("image/expr_normal.png") +Private img_face_win As Picture = Picture.Load("image/expr_win.png") +Private img_face_lose As Picture = Picture.Load("image/expr_lose.png") +Private img_face_o As Picture = Picture.Load("image/expr_o.png") +Private img_mine As Picture +Private img_num[10] As Picture + +Private dlgSettings As FSettings = New FSettings + +Private game_width As Integer = 20 +Private game_height As Integer = 15 +Private game_mines As Integer = game_width * game_height / 10 + +Private game As MineSweeperGame +Private blocks As PictureBox[] + +Private play_time As Integer = 0 + +Public Sub _new() + ' img_num[0] is none, img_num[9] is mine + ' img_num[1~8] is the number of adjacent mines + ' load number images + Dim i As Integer + Dim a As Integer[] + img_num[0] = Picture.Load("image/empty.png") + img_num[9] = Picture.Load("image/mine.png") + For i = 1 To 8 + img_num[i] = Picture.Load("image/number_" & Str(i) & ".png") + Next + img_mine = img_num[9] + + btnStatus.Resize(img_face_normal.Width + 10, img_face_normal.Height + 10) + btnStatus.Picture = img_face_normal + + Timer1.Enabled = False +End + +' ----- Window Events ----- + +Public Sub Form_Open() + ReDimGame(game_width, game_height, game_mines) + 'Me.Maximized = True +End + +' Public Sub Form_Resize() +' adjust_components() +' End + +Public Sub Block_MouseDown() + Dim index As Integer = Last.Tag + Dim x As Integer = index Mod game_width + Dim y As Integer = index / game_width + + If Mouse.Left Then + If game.Status = game.GAME_STARTED And game.GetBlockStatus(x, y) = game.BLOCK_COVERED Then + btnStatus.Picture = img_face_o + Endif + Endif +End + + +Public Sub Block_MouseUp() + Dim index As Integer = Last.Tag + Dim x As Integer = index Mod game_width + Dim y As Integer = index / game_width + 'Message("Clicked (" & x & "," & y & ")") + + If game.Status = game.GAME_STARTED Then + btnStatus.Picture = img_face_normal + Endif + + ' Skip the event if the mouse button is released outside the block it is pressed + If Mouse.X > blocks[0, 0].Width Or Mouse.y > blocks[0, 0].Height Then Return + If Mouse.X < 0 Or Mouse.y < 0 Then Return + + If Mouse.Right Then + game.ToggleFlag(x, y) + Else If Mouse.Left Then + game.OpenBlock(x, y) + Endif +End + +' highlight the block under cursor +Public Sub Block_Enter() + Dim index As Integer = Last.Tag + Dim x As Integer = index Mod game_width + Dim y As Integer = index / game_width + + If game.Status = game.GAME_WIN Or game.Status = game.GAME_LOSE Then Return + + If game.GetBlockStatus(x, y) = game.BLOCK_COVERED Then + blocks[x, y].Picture = img_cover_hovered + Endif +End + +' un-highlight the block under cursor +Public Sub Block_Leave() + Dim index As Integer = Last.Tag + Dim x As Integer = index Mod game_width + Dim y As Integer = index / game_width + + If game.Status = game.GAME_WIN Or game.Status = game.GAME_LOSE Then Return + + If game.GetBlockStatus(x, y) = game.BLOCK_COVERED Then + blocks[x, y].Picture = img_cover + Endif +End + +Public Sub btnStatus_Click() + game.Reset() +End + +Public Sub Game_OnStart() + Timer1.Enabled = True +End + +Public Sub Game_OnEnd() + Timer1.Enabled = False +End + +Public Sub Game_OnRefresh() + Dim x, y As Integer + Dim s As Integer + For x = 0 To game.Width - 1 + For y = 0 To game.Height - 1 + Select Case game.Status + Case game.GAME_READY + blocks[x, y].Picture = img_cover + btnStatus.Picture = img_face_normal + play_time = 0 ' reset the timer + Timer1.Enabled = False + refresh_timebox() + Case game.GAME_STARTED + s = game.GetBlockStatus(x, y) + If s = game.BLOCK_COVERED Then + blocks[x, y].Picture = img_cover + Else If s = game.BLOCK_FLAGGED Then + blocks[x, y].Picture = img_flag + Else + blocks[x, y].picture = img_num[game.GetBlockNumber(x, y)] + Endif + Case game.GAME_WIN, game.GAME_LOSE + If game.GetBlockStatus(x, y) = game.BLOCK_FLAGGED Then + If game.GetBlockNumber(x, y) = game.NUM_MINE Then + blocks[x, y].Picture = img_flag + Else + blocks[x, y].Picture = img_false + Endif + Else ' the block has been uncovered + blocks[x, y].Picture = img_num[game.GetBlockNumber(x, y)] + Endif + btnStatus.Picture = IIf(game.Status = game.GAME_WIN, img_face_win, img_face_lose) + End Select + Next + Next + refresh_flagbox() +End + +Public Sub Timer1_Timer() + play_time += 1 + refresh_timebox() +End + +Public Sub menuQuit_Click() + Me.Close() +End + +Public Sub menuReDim_Click() + dlgSettings.FieldWidth = game_width + dlgSettings.FieldHeight = game_height + dlgSettings.MineCount = game_mines + If dlgSettings.ShowModal() Then + game_width = dlgSettings.FieldWidth + game_height = dlgSettings.FieldHeight + game_mines = dlgSettings.MineCount + ReDimGame(game_width, game_height, game_mines) + Endif +End + + + +' ----- Private Functions ----- + + +' Generate the a width x height board and adjust control positions +Private Sub ReDimGame(width As Integer, height As Integer, mines As Integer) + Dim x, y As Integer + Dim blk As PictureBox + + blocks = New PictureBox[width, height] + + For x = 0 To width - 1 + For y = 0 To height - 1 + blk = New PictureBox(panelBoard) + With blk + .Picture = img_cover + .Resize(img_cover.Width, img_cover.Height) + .Move(x * .Width, y * .Height) + .Tag = x + y * width + Object.Attach(blk, Me, "Block") + End With + blocks[x, y] = blk + Next + Next + + game = New MineSweeperGame(width, height, mines) + Object.Attach(game, Me, "Game") + game.Reset() + + panelBoard.Resize(width * img_cover.Width, height * img_cover.Height) + 'adjust_components() +End + +' Private Sub adjust_components() +' center_control(panelBoard) +' center_control_horizontal(btnStatus) +' btnStatus.top = panelBoard.top - btnStatus.Height +' TimeBox.Left = 0 +' TimeBox.Top = panelBoard.Top - TimeBox.Height +' FlagBox.Left = Me.Width - FlagBox.Width +' FlagBox.Top = panelBoard.Top - FlagBox.Height +' End + +Private Sub refresh_timebox() + lblTime.Text = Str(play_time) +End + +Private Sub refresh_flagbox() + lblFlags.Text = Str(game.FlagCount) +End + + + +' Center the control in the main window +' Private Sub center_control(c As Control) +' c.Move((Me.Width - c.Width) / 2, (Me.Height - c.Height) / 2) +' End +' +' ' Center the control horizontally in the main window +' Private Sub center_control_horizontal(c As Control) +' c.left = (Me.Width - c.Width) / 2 +' End + diff --git a/app/examples/Games/MineSweeper/.src/FMain.form b/app/examples/Games/MineSweeper/.src/FMain.form new file mode 100644 index 00000000..7e6d2cd6 --- /dev/null +++ b/app/examples/Games/MineSweeper/.src/FMain.form @@ -0,0 +1,77 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,60,66) + Text = ("Minesweeper") + Arrangement = Arrange.Vertical + Spacing = True + Margin = True + { menuGame Menu + Text = Shortcut(("Game"), "G") + { menuReDim Menu + Text = Shortcut(("Change Game Parameters"), "C") + Picture = Picture["icon:/32/edit"] + } + { menuQuit Menu + Text = Shortcut(("Quit"), "Q") + Picture = Picture["icon:/32/quit"] + } + } + { HBox1 HBox + MoveScaled(0,2,59,15) + Spacing = True + Margin = True + { PictureBox2 PictureBox + MoveScaled(0,0,13,13) + Picture = Picture["icon:/64/clock"] + Stretch = True + } + { lblTime Label + MoveScaled(13,2,12,7) + Font = Font["20"] + AutoResize = True + } + { Panel2 Panel + MoveScaled(25,3,1,7) + Expand = True + } + { btnStatus Button + MoveScaled(26,2,7,7) + } + { Panel3 Panel + MoveScaled(33,3,1,7) + Expand = True + } + { PictureBox1 PictureBox + MoveScaled(33,0,13,13) + Picture = Picture["image/bigflag.png"] + Stretch = True + } + { lblFlags Label + MoveScaled(44,5,15,4) + Font = Font["20"] + AutoResize = True + } + } + { Panel6 Panel + MoveScaled(25,17,10,1) + } + { Panel4 HBox + MoveScaled(1,19,58,35) + Expand = True + { Panel1 Panel + MoveScaled(4,7,1,13) + Expand = True + } + { panelBoard Panel + MoveScaled(7,6,47,25) + } + { Panel5 Panel + MoveScaled(55,7,1,20) + Expand = True + } + } + { Timer1 #Timer + #MoveScaled(2,54) + } +} diff --git a/app/examples/Games/MineSweeper/.src/FSettings.class b/app/examples/Games/MineSweeper/.src/FSettings.class new file mode 100644 index 00000000..23366286 --- /dev/null +++ b/app/examples/Games/MineSweeper/.src/FSettings.class @@ -0,0 +1,66 @@ +' Gambas class file + +Property FieldWidth As Integer +Property FieldHeight As Integer +Property MineCount As Integer + +Public Sub Run() As Boolean + + Return Not Me.ShowModal() + +End + +Public Sub btnOK_Click() + + Me.Close(True) + +End + +Public Sub btnCancel_Click() + + Me.Close + +End + +Public Sub spinWidth_Change() + UpdateMineRange() + spinMines.Value = spinWidth.Value * spinHeight.Value / 10 +End + +Public Sub spinHeight_Change() + UpdateMineRange() + spinMines.Value = spinWidth.Value * spinHeight.Value / 10 +End + +Public Sub Form_Open() + UpdateMineRange() +End + +Private Sub UpdateMineRange() + spinMines.MinValue = 1 + spinMines.MaxValue = spinWidth.Value * spinHeight.Value - 1 +End + +Private Function FieldWidth_Read() As Integer + Return spinWidth.Value +End + +Private Sub FieldWidth_Write(Value As Integer) + spinWidth.Value = Value +End + +Private Function FieldHeight_Read() As Integer + Return spinHeight.Value +End + +Private Sub FieldHeight_Write(Value As Integer) + spinHeight.Value = Value +End + +Private Function MineCount_Read() As Integer + Return spinMines.Value +End + +Private Sub MineCount_Write(Value As Integer) + spinMines.Value = Value +End diff --git a/app/examples/Games/MineSweeper/.src/FSettings.form b/app/examples/Games/MineSweeper/.src/FSettings.form new file mode 100644 index 00000000..0c4c815a --- /dev/null +++ b/app/examples/Games/MineSweeper/.src/FSettings.form @@ -0,0 +1,71 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,61,30) + Text = ("Settings") + Resizable = False + Arrangement = Arrange.Vertical + Spacing = True + Margin = True + { VBox1 VBox + MoveScaled(1,1,54,22) + { HBox2 HBox + MoveScaled(2,1,50,6) + { lblX Label + MoveScaled(1,1,24,4) + Expand = True + AutoResize = True + Text = ("Width") + } + { spinWidth SpinBox + MoveScaled(14,1,9,4) + MinValue = 5 + MaxValue = 50 + } + } + { HBox4 HBox + MoveScaled(2,8,50,6) + { lblY Label + MoveScaled(1,1,24,4) + Expand = True + AutoResize = True + Text = ("Height") + } + { spinHeight SpinBox + MoveScaled(26,1,9,4) + MinValue = 5 + MaxValue = 25 + } + } + { HBox6 HBox + MoveScaled(2,15,50,6) + { lblMines Label + MoveScaled(0,1,14,4) + Expand = True + AutoResize = True + Text = ("Number of mines") + } + { spinMines SpinBox + MoveScaled(37,1,9,4) + } + } + } + { HBox1 HBox + MoveScaled(1,25,59,4) + Spacing = True + { Panel1 Panel + MoveScaled(4,0,4,4) + Expand = True + } + { btnOK Button + MoveScaled(24,0,16,4) + Text = ("OK") + Default = True + } + { btnCancel Button + MoveScaled(41,0,16,4) + Text = ("Cancel") + Cancel = True + } + } +} diff --git a/app/examples/Games/MineSweeper/.src/MineSweeperGame.class b/app/examples/Games/MineSweeper/.src/MineSweeperGame.class new file mode 100644 index 00000000..af0a5acf --- /dev/null +++ b/app/examples/Games/MineSweeper/.src/MineSweeperGame.class @@ -0,0 +1,194 @@ +' Gambas class file + +Property Read Width As Integer +Property Read Height As Integer +Property Read Status As Integer +Property Read FlagCount As Integer + +Event OnStart() +Event OnEnd() +Event OnRefresh() + +Public Enum BLOCK_COVERED, BLOCK_FLAGGED, BLOCK_REVEALED +Public Enum GAME_READY, GAME_STARTED, GAME_WIN, GAME_LOSE +Public Enum NUM_MINE = 9 + +Private $width As Integer +Private $height As Integer +Private $blocks As New Integer[] +Private $status As New Integer[] +Private $mine_count As Integer +Private $flag_count As Integer +Private $covered_block_count As Integer +Private $game_state As Integer + +Public Sub _new(w As Integer, h As Integer, n As Integer) + $width = w + $height = h + $mine_count = n + $covered_block_count = 0 + $blocks = New Integer[w, h] + $status = New Integer[w, h] + Reset() +End + +Public Function Reset() + Dim x, y As Integer + For x = 0 To $width - 1 + For y = 0 To $height - 1 + $status[x, y] = BLOCK_COVERED + $blocks[x, y] = 0 + Next + Next + $game_state = GAME_READY + $covered_block_count = $width * $height + $flag_count = $mine_count + Raise OnRefresh() +End + +Public Function GetBlockNumber(x As Integer, y As Integer) As Integer + Return $blocks[x, y] +End + +Public Function GetBlockStatus(x As Integer, y As Integer) As Integer + Return $status[x, y] +End + +Public Sub OpenBlock(x As Integer, y As Integer) + If $game_state = GAME_READY Then + $game_state = GAME_STARTED + GenerateRandomMines($mine_count, x, y) + Raise OnStart() + Endif + + If $game_state = GAME_STARTED And $status[x, y] = BLOCK_COVERED + If $blocks[x, y] = NUM_MINE Then ' stepped on a mine + $game_state = GAME_LOSE + Raise OnEnd() + Else + RecursiveOpen(x, y) + If AllMinesFound() Then + FlagAllMines() + $game_state = GAME_WIN + Raise OnEnd() + Endif + Endif + Endif + + Raise OnRefresh() +End + +Public Sub ToggleFlag(x As Integer, y As Integer) + If $game_state = GAME_STARTED Then + If $status[x, y] = BLOCK_COVERED Then + $status[x, y] = BLOCK_FLAGGED + $flag_count -= 1 + Else If $status[x, y] = BLOCK_FLAGGED Then + $status[x, y] = BLOCK_COVERED + $flag_count += 1 + Else + Return + Endif + Raise OnRefresh() + Endif +End + + +Private Function Width_Read() As Integer + Return $width +End + +Private Function Height_Read() As Integer + Return $height +End + +Private Function Status_Read() As Integer + Return $game_state +End + +Private Function FlagCount_Read() As Integer + Return $flag_count +End + +' Generate n mines in the field and guarantee that (nx, ny) does not contain a mine. +Private Sub GenerateRandomMines(n As Integer, nx As Integer, ny As Integer) + Dim i As Integer + Dim x, y As Integer + Dim x2, y2 As Integer + Dim count As Integer = $width * $height + Dim index As Integer + + ' check if the range is correct + ' note that the field should contain at most (w*h-1) mines, not w*h + If n >= count Then Error.Raise(("Index out of bounds")) + + ' put n mines into the first blocks, and fill in zero in the rest + For i = 0 To count - 1 + x = i Mod $width + y = i / $width + $blocks[x, y] = IIf(i < n, NUM_MINE, 0) + Next + + ' if a mine is located in (nx, ny), then move the mine to the last block + If $blocks[nx, ny] = NUM_MINE Then Swap $blocks[nx, ny], $blocks[$width - 1, $height - 1] + + ' shuffle + For i = 0 To count - 1 + x = i Mod $width + y = i / $width + x2 = Int(Rnd(0, $width)) + y2 = Int(Rnd(0, $height)) + If (x = nx And y = ny) Or (x2 = nx And y2 = ny) Then Continue ' skip (nx, ny) + Swap $blocks[x, y], $blocks[x2, y2] + Next + + ' generate the numbers + For x = 0 To $width - 1 + For y = 0 To $height - 1 + If $blocks[x, y] = NUM_MINE Then + For x2 = x - 1 To x + 1 + For y2 = y - 1 To y + 1 + Try IncrementBlockMineCount(x2, y2) + Next + Next + Endif + Next + Next +End + +Private Sub IncrementBlockMineCount(x As Integer, y As Integer) + If $blocks[x, y] <> NUM_MINE Then $blocks[x, y] += 1 +End + +Private Sub RecursiveOpen(x As Integer, y As Integer) + Dim x2, y2 As Integer + If $status[x, y] = BLOCK_COVERED Then + $status[x, y] = BLOCK_REVEALED + $covered_block_count -= 1 + If $blocks[x, y] = 0 Then + For x2 = x - 1 To x + 1 + For y2 = y - 1 To y + 1 + RecursiveOpen(x2, y2) + Next + Next + Endif + Endif +Catch + +End + +Private Function AllMinesFound() As Boolean + Return $covered_block_count = $mine_count +End + +' Automatically mark all mines as flag +Private Sub FlagAllMines() + Dim x, y As Integer + For x = 0 To $width - 1 + For y = 0 To $height - 1 + If $blocks[x, y] = NUM_MINE Then + $status[x, y] = BLOCK_FLAGGED + Endif + Next + Next +End diff --git a/app/examples/Games/MineSweeper/image/bigflag.png b/app/examples/Games/MineSweeper/image/bigflag.png new file mode 100644 index 0000000000000000000000000000000000000000..334b47127d5a9adb5d4b4e2945f86defc2cb1678 GIT binary patch literal 6066 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/MineSweeper/image/cover.png b/app/examples/Games/MineSweeper/image/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..c366339327dbbbd66eae130f249411c7bf59be01 GIT binary patch literal 331 zcmV-R0kr;!P)xN#0001lP)t-sOw033 z%k)gR^Gvw(+wlC`@%>7*^wRA7O11Mxvh>8}`$w|#M6UC*-ughQ^PklDpVat3s`5Ri z^NY&(i^}&srt&$V^L4%Vb-ngEq4G4F@?Nm@FqZO3qx3A1@;8_BH<$7(k?|*s@+XV& zBZl!Gg7F-F@f?2e7<%y-dhix@@Dz0Ln=38B0001jNklGSSqJkr$LX;^X5X;#-^^1!ovqD^Nm@Q(pV=BabE$fJs2gGBe znut;-#B;0Lh}IXx?#gtC{f+4n@54Am#&JS4#+ryV7V(imd}a`x^Dg3@M-1VW3W)Cv dE`Kug*B3jkAOVA4(5V0b002ovPDHLkV1i*{rYisd literal 0 HcmV?d00001 diff --git a/app/examples/Games/MineSweeper/image/coveron.png b/app/examples/Games/MineSweeper/image/coveron.png new file mode 100644 index 0000000000000000000000000000000000000000..95f9be6eb96d6ccc33088f3c87606d73e9a425e7 GIT binary patch literal 238 zcmVxN#0000{P)t-se*OP` z>i_@$|9t2FdF220|NnO2|KB|)g9HHp%uAdzUCqP&Q;4kN~wfznQCJL6QxA#I=x4qAjb z)3Hv~DM1~;PpAwvVqTFXzC>6;Y>-F@kzGbYUWU3!HoGCo?&j|O_rq}|U^aX2-QC;> z`OiEba`!&xJkRf(d(OG%o)}0H*RhOx2cWm60O%cn-kJiScK~|px(8s2b_K)3!*Dn* zqN%C&n=9o2q^s^q29S?w(@e=Ga&#B(O3rz4-ccUu?l^C2M`zcUnD1= z!|k_+_LC&w*fF5LKL?U@2h!6Y#lnS4U^GUrqec{f!{I<<<4zcj`;eP!M^aLF<#lub zO-(Yw zH`lVhKARp7NJiHN2EeMSU$VX39&Xs*N;3dimU-yVKWMZ4AnJ)z{nU>~?VD#?|zCz0n77`0zhDFra_ZSDVcS78U(L)8n9ch0)Sdk2!PxjwnpU zVJjm8Sg>FZUVr`H(U}H&dwcou$Mbb>=}@+Qy@?GC4UvBYDl7lO;bCP#eEl_e=nyE& zS6-JS@ZER8p`o$;+S|d$9|t=-ue|Q_flodu$_!O^cQ?3n={!o36gdDkTN|63mCyA% zc7Oo*;)|CdjEsO!JteNc_14&aCr*H|vEVJYh$)T)Jsxn?D$rm6OG=d0Us3{=l$1mc zKxyf36(>)M)!NFHBH5Q-63IXPwD^1ddhvHK-|})WJ|4`<0?(cWSFaX+&pxZXexDCq zvEnBj8X5{8fZcwECr`$y0uX?(VufhAd+)uRyw@Ar_x<+;goFg)w{@%fvEa4Wz}>rd zhYz5%bgSyh12#Aarl*S}?z~f3@_}x@WQp*bITP&aQeSs(FPNYIv+w};d_I&@O$hr&};@XGr@}&)z|;v$!3Te(6@bib+ZJg8@cHN9 z^UsU!Jo>uZEs_gNabxwIPd^>|w=cc`olf# za1cmL{3%jWQq%(g0Hg6P$a3TZ^ZNmh2dJw9-hLZ!H~^n7^7V9f0y#OWLf;r{iRg4X zSyvYmktL}lfuDRL_VyMm5HCfeEh!1S|9)`qUhys;i8{A$2Wx6-7)n78NF*jE!sS{H zph|NqT)G78-w*8C1vE7QadALuDo|K><$cY~;`i!mz-$KAtpgr;L@Z@Z8jf)I{lI6R zrJ=AePkRp_$?EF8L3eS-v#u`ig%`lNb43f!n+I;&CO%*U^Km-Cg9pL2YsHor0N#45 z*xu^sP*?xivtUtCQOMRO$Jq}cNtesT+S)W#mG9pVPMK-U#m5quhVAguy}O-EYPW;DHB#%2#Qaew6_B$)1Q%+mZr=h6d|Y6$qzqFRs9&~Wv{$4hh1G=idsKp z4*ztxtv+ z1V^jCzn^t=llKE@adDR7fp4@_of2znI}Y+bWMxgR?J}!13pd~V0a8IzyC+@di6`bp}~yU*f%vN4?x>F zL0OjB*;z%e*QCq9C`q8znxSgC3nonf0y=Z%3_toPSM^FS9CN$D%F5rcySqE=|6SoR_(=YL2})>h6}Ujc1x^WgD3f&Bd6 zAz5od6Ad7sfq?;>JXw#Po+B_AtT3DF0RYRF16ThqL{AUU*a!e7c)iO3EWzBl`N+)t zMPyHgPb7fRl4TjbZ}z=vYAPT}BUk*Mlr$5$xpx6T$W6@eC4kASYyP{y6o4rJQvjv_ bjHmwtb-(7preJMvYDr=jNPS;wv$G;AR#VNF0AGS+cl{ z;Ecjw#w9LbG64k?CAM}13{0@qRt2fJiKVo>`n+d<+%Z5Yy^ogq;G3L;Ue52H-}&78 zyZ7dtpM;1Aud$?oo^kY}p1xL_{DsICx9|Nc`~~(BI#W+S)R7cAkS=UWcftdswo>`#6^ixN!sM z>Pmvkm5SKd?MO~u1F6)1H>ytobaZr}wl*J9=^3P?7!VmL?tE=+Kz;opC={O~E$w|M z6p9xU0Gs$pOq%o)Qc_F^4fX9LtyVyzi3jivR<7KM2@@vx?&Ks=jg3`QQ}YhlY#<{4 zT6Z_7tZX&4wi?7v`+o@rz%UG5y!Zp@^%MP`__KE5LI|nVzY)VQfdODPo2a;WANBN% zZQ?`i;X}}|V;_;z=^R@CeSLjYR+bj9#D|*Q4myAS6S7z=V*`L;7^C64T)TWoEujeSLl6mw>^brG^H%U;uS>AYjn;@AvH6+&tWO z_io`!;lv5hsZ*!K11K*3PVgj%K)ZGgPf9KaSu7*_?%g}wH#8LVgvFgQ1&EGrf>x{b>gy4}g9mpod-g3+ z09snO9pmfEMO(HoC@Cos4&e0ZpD};FsQd$}v@}4YQF-uGBZc^9qIT;Z<&`L10HOr0t&etJ64+}z9`Kv-D4l-(!g6Wbwg+gMrFQprQg;vIK~U@$4&+0OjRCRTZ#sAuxTq z`1oAp5x|TYz6lT#!d_jjz_PN&Ch-Bi_N}p39)P!I$}0~bBO`-90I5_8w|n$~FN0Jn z1>{}|86yIaNF)Ge2YUXZ)Y}V0M9f8WbToee03emF0K)`24dF5xfuy8OUi~}*SiO1^ zu3qKdqi<*cwrvAiTYaAl!vGo$P*VfA-Q32UI|nRZzTCUx=mnAYI2R$RtJxw(SQx0F z0OWG{rqF4%f({%QER+-$dLQF*fi`ZOPCY$6;wnPr<%QJO$9=LlZ-V0E*@-MtIS&d%mk5gHYM#bTkVs_DEYZ8Cv&>|iH6c`_(JAG}*> zy}h7Ahd@C=?0IA|wq(Y&1%Kp-f{aF^cmPC17cU;?-37MWK?e_lBoa1()Kt)=OWeku zJv;oWM@NH-inzyaX#pKQ`ZcHIIRP-6&2;5T3@-o!R#Y?yK`I5MrLniQ+x`5SEhzyh zm8{=D@{1RPbUJ=9j~|~&j~+ep9RMPtYu8GsqeCJHf>sNfF=KeeH#QcuapR!L<Lc#3JUT$C(juG5m8CWPGT5g53}B0wkI&Krbn~XRJNbMH-^my%E|eF+-|pj z0CaVA(dEnH8l;t#pv=sX6Q4VmeSLcB8+fz4yadhAtvT6{)71vYiztmdOb^BXy?Y4rdCJNgwwH`uf1YtgfzCwzeb7%K-oX0Q>s@!omQuvM{c$ zXUfXG{r&y4w12j?B<$<};^F|WuP?j1pY!wcw6ui6!V~!T0P*nvxw#~{xtr0^yu!jN z^YZ|$jHdGwQ~3O z0OsZZLqj9{{QTS7*wN7n?d<^W?g0Aw0G5^jmX?goVI zJT9}dEh8fUzrO%1EC9B)08>)}*4Eb9+0)e200RR6pPvAwr2vJ6g?4sj-Q569O-ld& z{(*rt4GjRPsQ?xh0HB}%NJt#<@$as#4^&hD@9zLyTma|i0694T;Nal#@$iI%0II40 zNl5_w`~b4D06{?je0%`4wY5Gz0LaJyLqh-y3jo2v0FaQ7lam0mvjF7e0I{(EuC7Eu zK@8~V=&r71QBg9mu%Ou30D*yl@9*!uy#<4V0K2=puC7W>P8;;}^tZR3_VxhU+5mKP zbiBM9cz6utKC}e0+Akz8H~_ALZrc!NITV>jA~Z0GF4QudiEwe_HVH@V&h) zg@q~C*T~k^55>hP=jYW z^1{NjuC92muRgW40PE`jwY3DUu8Gdh#rOC3va+kLuBO4kyqapF6%889+2GqbP)0UI+r2Pet8xwv_F`Cx!wKu}0ngaqvzqGIBFXh1?zN}5>hGO}`f zSb)5OA|o;Sm6Wk+2LTmTHGCRW`lCvhmZ2F?&PSR76_u#^tE$lrr~&D!1vBeF%z8BW2Gl&&*o1CCGe}np znAr+qwxP+lcc2*1*@bREH&9bgFPPZ}WcKr;$xoPwVt{7?x&eNZVrwQtn4wc*r%pqc zpD-QOfEnlt_>5-4UG0}Qi;s{2v-wB_gTR0!N)14bM)f(Q8ZdVrYEqn!T^T3|VU^HZ zfR+~)24d9@C(yy7#b^dBS&BWBi?|`TQK!AEZIuD0o%4?F@RymPGSw%wVMGe*b_>e0djkBwAl9T$L<7l z2OQYQfCC&ngv|tW{fCb*-~>ml`A};hEP3G=9{mg=$4{J;6;QR$V?F_Svmk8-+V7Pq68;5qktJjEYwO_w+6N~oHTet5Jr5yzB-n)+)8+;FV z9&!+^9Rwade)9C$Ge3~t=g(fSzI;VgLme$nU%!6y76{(GeoeaOQ9xe+0QnOPgE6Nr QMgRZ+07*qoM6N<$g2st9tN757Xx@78#Zi%R4VlzIeCco_RCaX zA4_9nAR^zI$pkuoKAFDzuE$fi8Soas;c(E!i-pwPJp33RN}LaqKUT3YtP;c#%P$flcARqY|OIq+TGoqhj3sHutDc;L1N z^z__?O7#&!LIVAa-6JLjFdE;7#bRMy$E^Sz9e+i9{Ai$KV~vcA2dJqj@s0rZ@87{| zul*;`F>!)K0t5y99Z#M-VO4&{{eYV{|BbAyF_*lqEqZn5W<$$+#pV9gq*0IODg3!SbGDJj2jUwOL0!D_WqW#w|0L1yPpkVFCkX13Y0 zXVaD~TNsner(~D&u7oC)9D!QuC6ZHx^*k_ z+mazz8x(se?V;P4|xRzzzC0(u+3&eMMVYTFMc^O3xrJ z&b8dZgMih_joWUwW8c1g$jr<{OiTJT}@;p^+HXBt`xDHYZ z1^*|tVZ#P8nM`Cf8YwO=j?SE!ItYe^@#k-AYh!#550@~U<>f2*^#E_<>eZ`IDwQB2 zn9XLd^Y7WS2WQWog+`-+-EQMl*DnG9!04#&meX~0bq z*ZiCW5DJB`+tXe0va`L{XjIhHJa6&4a{tVIh3Te;^77xgOjA}XC@ahJ#Y<5U$l;he z4UUb0-h9(DZiNDL>z0#mWCV2SQVIWQP$*mnhvQ>R9L!22Kv@~k&;aQ5{GLvHJg{U5 zAP`LbEjSpcssgTD0SpFy{F#}+tXaj5mu+bPo98IoB*j*GAb=C zCB0rxdcB?s3kxYXHdi8c_wR7AGIcpa1?z_NepFPIGgTKUu3m2eJC=ebVj?mCh zD3wYml}bpZQpn|UCLJ0YitzAoCOx^lLZQHsBS%nFl!vl1BQi7HKTw@+9g>pPvF=rF z1(3_-5Q&OmFbLT2AvG0fXmH@@(cdB`Cx`dfUteDz($dn<+j|Igb#|;?%_ev;l9K+# zsU22J;f)*LMnl7|F#TxZil``{r3Fwb%dmg{Ud|%a)zu*-Wi7I^ui(T9V2=9^2#W>i z@BbTAs(IcQ002@`kKyaDmvbUNdK4%v1-|;K1cil#7#|;>vAn@xKut{zMn;-&>eK_| z<^m!SySA#UbC8jd$H_lV0?1@C%$@r&Zr_%1YT&K6fU8$6=;I-pjwZ=~=t_U5xqjHJIz}u+a^8?Fb130>s9yg;3ZGjYf^JF+ME(U@`%hF8vw{7Swwj zJOIyciVh46P*v4lYH#=Lg-NRwbnRLMRaYM)tJUhM+x*9X>Cn@22OS-M!Q#bbSianQ zU4jT`Xqb(mq4$uK^heBLvnb#IuV0t%?(RZo=P87R{SyfZ|3h>%Kb~*C0q)#cgt4)m zSigP;qWKc}TYw3eOeVCo)x%(DfI!fQprCpHz~;@)-KEJe7@U_P05L3<%>YucV8MDU zU7G0Ko8kTxU@{yI2dqyI{%UH@!De$^5k^KTpjJCSU_$(S8_O>O{Fw3bU?k8E1R5^| h2($x%#tSdN{{dbS1{HHok=XzM002ovPDHLkV1oMiI;{Wz literal 0 HcmV?d00001 diff --git a/app/examples/Games/MineSweeper/image/false.png b/app/examples/Games/MineSweeper/image/false.png new file mode 100644 index 0000000000000000000000000000000000000000..0f649881a704583e26366d324ff53ff8c5eb0c97 GIT binary patch literal 1021 zcmVk#hqzPa`LXtvA$p!^Q3POc0A|Z8ERjSk<(EbqAU(iLH4T~)L z50bJepoBJn1tffv#D>He`x>x)@7yk?fkx?~%8{-#I#=_YbKZ9}qfJds1$=4*0fy&c zmCFzWR2&C`AfUdc1|cO<2&7^BFP88;!beBMwzr97GDyQns|DFH@ZKF{TJn%L$hqEf-1 zogp|qg1I@ka)s}79d6y?*M$Z2YL)u^eUgidB+_YW4-OE%PoV3RrKDop7-qRls8GOm zUCiTS{C8Qdg~IUgA@ujdg$rPseB=8(cU_#B8KN&`H~u+qYD+do;>0Y;3@*SJ2S`u^1GK+{oo1mjg|Ma2OgIpsS1G*cfkufMPC( zaa>4geeJXN;t7!|pC* zGLX%xQH4;SX{thti%_kq+{KF=OL@i+?>mgg<7}p%(N*-}%^S7p@K9~4t%c@hrCp%_ z^Yg0M_BQnQF4xwKBl6AeDmAQD|vV|8hCl+XKsDr@bB9 zw$C&a??+x=nkSXIN%{8~s%vYiGsjWKW?}-y$03nW1vCv@7a|d4CWB+!ACJ88e2$y3 z&!~I+7YHOAFBO}n*s6fdiw709Z=fV0q(bZLK&->66+p@_1HP2UVw{e!1&^!;> z)I@P~l+(#c;@)pOv>l?5W755kRm1P2Gmo*uNJA&k1Zk1s;Q zfX+^Wi3tK-2j53)Z^sCQ&VgTk`vaAdi?G8`t)hp+=#Hb@{I6(efZ<`ZL;_qF(b0iu rY63v}5q(4|E4eWYO^g#h4hk(GTiNwyp000000NkvXXu0mjf%y;Pi literal 0 HcmV?d00001 diff --git a/app/examples/Games/MineSweeper/image/flag.png b/app/examples/Games/MineSweeper/image/flag.png new file mode 100644 index 0000000000000000000000000000000000000000..47a05b3183b7806f597b77a6e91bb7640d12a50d GIT binary patch literal 765 zcmWlX>rYYv0L3qrW;9!wE44n=m#ntzu{E`o7Fa6gT|Sc3LNNnpR-zP^Gww7WQ>OU> zlt$O2F)&3%&>1B*n;YgFIy3BHr86OVShJejNzZnE=MVUua`NnHZ)O0KAPDcsGputf z>$_U7wJYp9|MdhxFdmYec(zO?Q!14zm1=Hs%zE`AY&MLK(=^?umDgQl!)gUh!*17T zG!2Cro$4xdbzxut8V%ao(AsLXSadpFe%zsHa|e`4$mM8i!p)mVOG9BH#>Ox@3WMRz z$cVvU;015}```iedR(~zi3CYWh>b-<15_&Lbf~Pv@#A><)ND4}o_C8Aj-b6A_4UZf zL1H2zBGA%;Yu9k#z=!d1i^Za?D^e9^LL@?XID&&wRD{QmVK$?<7+mhhsi~o%q0+3F zm(>(=w(cFHli2 zGc%)WprBB|XheQKZr^s!ujZB2gz0JY^`WK)4##)bm!IEUZnt}JaZxE1E-fwn`r&pj z%q=f3&qs?>R%C6DWQE83+4;QZOuvH!SzTUUt|+Om+Q7I=xm>QD%_;inW3C{=_w(%R z?5FLUeSNlVnJppIYPno)E`C(kU8!%b?x*PL`+g+J<#O2xF{!8GqLWXbkBWUC=D$ZE z5M*ShXJzK3y=vPh5MI8@_wwyF8oMSZMA!3j#Wxc2M5dn|9?XJ*0*UkQpMTsx>(_aD zlosEUtnnD!y{m=h>-nEjKKAl`d}^(OQffG`Ml1Z{zd^wjP6f+)CBwsE174fj%kF@( z(&9}0znWJYCEB=` tUU*7*}phM6%Dao}A=S{{hlKt``6R literal 0 HcmV?d00001 diff --git a/app/examples/Games/MineSweeper/image/mine.png b/app/examples/Games/MineSweeper/image/mine.png new file mode 100644 index 0000000000000000000000000000000000000000..b0d8b18c0221a2ac44acbbe0b5ba483030f1125d GIT binary patch literal 755 zcmVxN#00057P)t-sj*gC+ znwp)RouZpozPrjm^BQ+|R??&ce~bvBa>O#>B(M#>Tm%j)Pq|j%-Yi zZB3AGPL6C!jA=)UXhn-?MtoK(@(a_r0)w`mK(!#UJwxheFjI^79xSxi=sg%U8oXfeW z%DAS*u$;lHnA_Xiqlj&$if_KEmcOc&!L6CWt(w5Am%XTzy{VR_jB>7)f8pWb+|tQy zMIUrdDR)pScTp>MP%3s%Ds@gMa!Vy^LmO;G9>}<==;-L()y!x?8(1v^TQUerLCi@r*8n{0tF2X4ULRVOwG*9EiA39Z47MaAPR=f_ZtfnQ zUfyh5U*0ia+n l1^^27VE~|DKL)@a835KzR1(yVKIi}d002ovPDHLkV1gF%VZ#6b literal 0 HcmV?d00001 diff --git a/app/examples/Games/MineSweeper/image/number_1.png b/app/examples/Games/MineSweeper/image/number_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e5bad5a5de6ac307ce01d14ff1ef6f79f4f0139e GIT binary patch literal 388 zcmV-~0ek+5P)xN#00024P)t-sj*gC+ znwp)RouZbSVLhlk5CG3>s+zKe^`Gc)eS#>SD6)ipKn%*@P|mfAKp@zc}O zo15P_IP=@v+o7T5Iy&{?;o+sF={!95=;-LGs_s5M`R?xSzP|B4Kl(5*{16cSZ*TYW z^YgN@_CZ1X_xJbw{QNqE+4BGZ0Fg;VK~xyiZPCXT!Y~j+(NF`3P(rVv_hvf(|6|C< z+BtWndD{tsR2dIr*29>Se4(ht7+R%r1*nD&V`SA(Z=e}DjIq^f#~pNIhp{Jp473=B zGQwDkaUxSBT8uN9W1+>kloi%mj2qcvr^UFJ1CCmZCpqJy#dx)D#@z8R=4lVcm-UA8 iu?OSV!}#;0KjRPRWg|ZpO3Fh30000xN#0002AP)t-sj*gC+ znwp)RouZ~gv9X!3q@}Q{Q>%Vntc19@xMHw~zP`RQtZtaOsK&;|k-euVtZ2;4%%jA! z4yjqw)6=QSxelpXf5D&I+uN_uzYnTfgT|!c;o-E^#1E=lhsmet=;*rJ%8Smd?(Xgo zt6M+0d%ob$^Yinv-pKd&_x$|)WBG8%0001EF3pd1l=x~%%v?997*^`SK zLGxN#0002JP)t-sj*gC+ znwp)RouZZRR?|69V=;-dMs_NO<{2w3io153&#sB~Ss!2paR2b83(MJM;Pz*&; z3!qUHdj)$JD0K+Fq8)ihNJcfT)19B26Nhh^h!6JU$Gz8E4n#i`1i^3f5kCp(KjRCX W&?F-bpPs`20000xN#0001=P)t-sj*gC+ znwp)RouZVvYDEIdo%F4On;cCpx%;e;4+S-=W)6?ACsp{%t z=;(3V+uQT=N#*6C;o;%&@oD$>Jp20|=jXKO=;-tFeD3b<_V$1C^Yi)ng7^3L{QUfu zzQqLq005s!L_t&-({0h)0)apjh2an_=R=~9L{3E#@BeJpY&AF2cQJeK|8^{^QOm&C zHZXQH+wRI_?A08=k%h5e8DNN!Y>eZ|WIDrKHpa!Di=_)!Rz^>(u=afTvNHx^v)u(D zLfIMjN`!-YA~_giI^x7PL86YB@k|%guDlp;bWfEGS^D6`_|$UbG8tc5fkGzZTPsn@ hWc(NyzlP?|_yIdMAPZ2QuyX(a002ovPDHLkV1gD?)1UwV literal 0 HcmV?d00001 diff --git a/app/examples/Games/MineSweeper/image/number_5.png b/app/examples/Games/MineSweeper/image/number_5.png new file mode 100644 index 0000000000000000000000000000000000000000..f7e88fa2e1b94a1a482082c6ccf4ebeb777f8a40 GIT binary patch literal 381 zcmV-@0fPRCP)xN#0001)P)t-sj*gC+ znwp)RouZ? z#)4>1zrDK5%*>jHc8hdfXG0%$Ryfns)62=mZ%!?(pp)C%+oF$t;o;$&hjXQqf#~Sy z&BeXn+}deHA@1((teS{vMIxDjYxDE-!nLSsMIx@8iud>T&&0af(aHS$`~t5m3;+NC zpGibPR2b83(Mb}5KoCSxoJvJRoNyLYR0a|B{)aOw+kgeU1)cpj5P@a2>NFsB8xVWc zH@Fc8BnCI)kYqGg+=w>G#I7JZBvYq?=#tDlZ*HcGxFEh}x#C7#lkfYRt?alF_m#s@ zPI@AqYk>rMAcnPzT=hV_spzhcheUcoe5yD}<1~?!7sO1xa(q$#=FSicqbxuFRUm#F b+JD9mxN#0002eP)t-sj*gC+ znwp)RouZ?gbwirl+uLqAmb|UU;o;$jU8b;^!P(W^=;-LQoyCAsqN|a=k!!B* z?(Tt9qCnO4+Rx+s{QO3+ z2mSy60Jlj*K~xyiZPCYa!cY)IQNVzqMHV@Ou?^Vdob&(x65S8MMx4cH=5C}ac|31< zT^M~Xj2{kvAQ=2K8)N7p3^6OCWke8-SytTaj0s5ssl*ebEoo%z7sjmQkS`RAd9!C3 zOHxLq%=c7lIvDH1&}e?O(9ps7Ex-@wFWNd7JJQ9U9)Kp}zx2@O9H6U%aVR5xN#0001-P)t-sj*gC+ znwp)RouZvq$tDvi}eXPAutZE;)}Y=#>U31!^;}6>def{Qo7-Kz}nN()3?so4zTUT(be1A+jYj| zX2a&;;o;KW;t#Rz!`kEM=;(aS>ps2h?(Xg&x9^|X?(_5WlGpJdxA6D(_x$|)Zd7m5 z0001vNklRNGk$peAJOc2R6PIy N002ovPDHLkV1gp*!rK4< literal 0 HcmV?d00001 diff --git a/app/examples/Games/MineSweeper/image/number_8.png b/app/examples/Games/MineSweeper/image/number_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d4f0896f0c6a4ee0c9d4fd22e218c75c3f189479 GIT binary patch literal 454 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

Qid@c*Q=tJRs+sk=fNd$&W z!3{u@{TrZ0%+ z%)zUpCGDRhdHsYi+HasIOwtz!u=hDXptvcn17YIT7a!o$=f0<4lCDrYbQpZypM7-S zHa60-y+XJJM{ONM6VEoLn#E{q=|kn4L|81Ak+JcnHFod`frHYr$B{R>+S<-h0wI@@ zcB2G`A>)Jy1Y?=vK%nFkVylPyfBe{D0W6NOJW$66uD>d@!e!C0{Xe=XTsHek-xd`P zgJGi?@x}H6PYXx=%LjeSC;_1TJC*7&9Wu65ce!$?B?_W%q1-{&7#B?{Z9|{Z*}Ef2 zN*>sA!U#~fwhyuwM@;wD28W@5$;a>imSFou;N!8inH&)yNeU`_m)I72>LHl>On`~$ zvCWwrMTM^in5*4;K|ig2yPBJu&ofw2D^u~C491*soS|I#ByHjQcMAq> z(z&F+@GvIxyg-FzSofrF?EsAtYXz6vEosaHCx9!BPM-XN(t37yMOzV`-wF6$kf$5u z+MbSFG4b~H{^_%UvOGQqg+dp&9M;dt92O(0>4qe8t2#V#8d`(GC(0Z<#4RUY05nr zdqxOT+4NrAIbk>88Xv7vB?!9h(;WmW4c3y$tbfuo`!S4j`+j=5HC?bz_agWfrM2?# zPPk>*#K+Fg&XzeX&1)y_Vf2DktE?R;jwl0M+-O-XV?7npY><$wMohdxEmKqXxn z@6b65a`$g)(BGL zgJlGRIlMW^Lx9A&+ggak+%yr=Y6ZXJ+S>j&e*F0S#Qv#ILDGBvS3v%0u=4_@;~+!p zW%ry<;rz<_Z%TE7?f19!=kOn?`6)^NKM0M*MKV%Yf9^{Djm9<>Kytp5!)Sc=vi~TQ8Xw;LJ8&`= hP1.Y And If $iY < hP1.Y + hP1.Height Then GoSub _OnPaddle + If hP2 And If $iX = hP2.X And If $iY >= hP2.Y And If $iY < hP2.Y + hP2.Height Then GoSub _OnPaddle + ' Flip at top/bottom border? + If $iY < 0 Or $iY >= $hWindow.Height Then + GoSub _UndoMovement + $iVD = -$iVD + Move(hP1, hP2) + Endif + ' Made a point (left/right border)? + If $iX < 0 Or $iX >= $hWindow.Width Then + GoSub _UndoMovement + Return $iHD + Endif + Return 0 + +_UndoMovement: + $iX -= $iHD + $iY -= $iVD + Return + +_OnPaddle: + GoSub _UndoMovement + $iHD = -$iHD + Move(hP1, hP2) + $bHitPaddle = True + +End + +Public Sub Draw() + + If $bSimulate Then Return + $hWindow.Print("o", $iX, $iY) + +End + +Public Sub Undraw() + + If $bSimulate Then Return + $hWindow.Print(" ", $iX, $iY) + +End + +Private Sub HDir_Read() As Integer + + Return $iHD + +End + +Private Sub HDir_Write(Value As Integer) + + $iHD = Value + +End + +Private Sub VDir_Read() As Integer + + Return $iVD + +End + +Private Sub VDir_Write(Value As Integer) + + $iVD = Value + +End + +Private Function X_Read() As Integer + + Return $iX + +End + +Private Sub X_Write(Value As Integer) + + $iX = Value + +End + +Private Function Y_Read() As Integer + + Return $iY + +End + +Private Sub Y_Write(Value As Integer) + + $iY = Value + +End + +Private Sub HitPaddle_Read() As Boolean + + Return $bHitPaddle + +End diff --git a/app/examples/Games/Pong/.src/MMain.module b/app/examples/Games/Pong/.src/MMain.module new file mode 100644 index 00000000..486dcb4c --- /dev/null +++ b/app/examples/Games/Pong/.src/MMain.module @@ -0,0 +1,191 @@ +' Gambas module file + +Private $hConfig As Window +Private $hTimer As Timer +' Scores +Private $iS1 As Integer +Private $iS2 As Integer +' Players' paddles +Private $hP1 As Paddle +Private $hP2 As Paddle +' If Paddle2 shall be controlled by an NPC object +Private $bNPC As Boolean +Private $hNPC As NPC +' The ball +Private $hBall As Ball + +Public Sub Main() + + ' Make our Window raise events + Object.Attach(Window, Me, "Window") + Window.SetFocus() + + Screen.Cursor = Cursor.Hidden + Screen.Echo = False + Screen.Input = Input.CBreak + + Window.Border = Border.Ascii + Window.Caption = Subst$(("Pong v&1 - gb.ncurses Example"), Application.Version) + Window.Clear() + + $hConfig = New Window(True, 0, 0, 30, 5) + $hConfig.Border = Border.Ascii + $hConfig.Center() + + $hTimer = New Timer As "Timer" + + $iS1 = 0 + $iS2 = 0 + + $bNPC = True + GameInit() + +End + +Private Sub Configure() + + $hConfig.Show() + $hConfig.Clear() + $hConfig.PrintCenter(("What to do?\nPlay again: [P]\nChange opponent: [o]\n\nQuit [q]")) + Select Case Window.Ask(("Poq")) + Case ("o") + Configure_Opponent() + Case ("q") + Quit + End Select + $hConfig.Hide() + +End + +Private Sub Configure_Opponent() + + $hConfig.Clear() + $hConfig.PrintCenter(("Play against whom?\n[h]uman, [N]ormal, [m]aster")) + $bNPC = True + Select Case Window.Ask(("hNm")) + Case ("h") + $bNPC = False + Case ("n") + $hNPC.Mode = NPC.Normal + Case ("m") + $hNPC.Mode = NPC.Master + End Select + +End + +Private Sub GameInit() + + ' If both as 'master' NPCs we could make a screensaver out of it :-) + $hP1 = New Paddle(Window, 1) + $hP2 = New Paddle(Window, -1) + $hBall = New Ball(Window) + $hNPC = New NPC(Window, $hBall, $hP2) + GameStart() + +End + +Private Sub GameStart() + + Window.Buffered = False + Configure() + $hP1.Reset() + $hP2.Reset() + $hBall.Reset() + $hNPC.Init() + Window.Buffered = True + Redraw() + ' See SPEED. The width means actually the intra-paddle width: + $hTimer.Delay = 4000 / Sqr(2 * (Window.Width - 4) ^ 2) + $hTimer.Start() + +End + +Public Sub Timer_Timer() + + If $bNPC Then $hNPC.Move() + Select Case $hBall.Move($hP1, $hP2) + Case -1 + Inc $iS2 + Goto _NewGame + Case 1 + Inc $iS1 + Goto _NewGame + End Select + ' I suppose that this does not go down to zero + If $hBall.HitPaddle Then Dec $hTimer.Delay + Redraw() + Return + +_NewGame: + ' We want to see it + Redraw() + $hTimer.Stop() + ' FIXME: Makes stack overflow eventually + GameStart() + +End + +Public Sub Window_Read() + + Dim iKey As Integer + + iKey = Window.Read() + Window.Drain() + ' Go two steps per keystroke + ' FIXME: Can't reach some coordinate with odd Window.Height + Select Case iKey + ' Player 1 + Case Key.Up + If $hP1.Y > 0 Then $hP1.Y -= 2 + Case Key.Down + If $hP1.Y + $hP1.Height < Window.Height Then $hP1.Y += 2 + ' Human player 2 + Case Asc("j") + If Not $bNPC And $hP2.Y > 0 Then $hP2.Y -= 2 + Case Asc("k") + If Not $bNPC And $hP2.Y + $hP2.Height < Window.Height Then $hP2.Y += 2 + ' Change ball speed :-) + Case Asc("+") + If $hTimer.Delay > 10 Then $hTimer.Delay -= 10 + Case Asc("-") + $hTimer.Delay += 10 + ' Pause + Case Asc(("p")) + Pause() + ' Quit + Case Asc(("q")) + Quit + Case Else + Return + End Select + Redraw() + +End + +Private Sub Redraw() + + Dim iX As Integer = Window.Width / 4 + + ' Scores and net + Window.Print(" " & Str$($iS1) & " ", iX, 1, Attr.Reverse) + Window.Print(" " & Str$($iS2) & " ", iX * 3, 1, Attr.Reverse) + Window.DrawVLine(Window.Width / 2 + 1, 0, Window.Height, ".") + ' Players and ball may overwrite the unimportant stuff above + $hP1.Draw() + $hP2.Draw() + $hBall.Draw() + Screen.Refresh() + +End + +Private Sub Pause() + + $hTimer.Stop() + Window.PrintCenter(("PAUSE")) + Screen.Refresh() + Window.Ask(("p")) + Window.Clear() + Redraw() + $hTimer.Start() + +End diff --git a/app/examples/Games/Pong/.src/NPC.class b/app/examples/Games/Pong/.src/NPC.class new file mode 100644 index 00000000..fd651a8f --- /dev/null +++ b/app/examples/Games/Pong/.src/NPC.class @@ -0,0 +1,116 @@ +' Gambas class file + +Public Const Normal As Integer = 0 +Public Const Master As Integer = 1 + +Property Mode As Integer + +Private $hWindow As Window +' Ball is needed to calculate movements, of course >:-) +Private $hBall As Ball +Private $hPaddle As Paddle +Private $iMode As Integer + +' This is the Y coordinate we wish to reach with the middle of our paddle +Private $iY As Integer +Private $bReady As Boolean + +' Master's control data +Private $iLastDir As Integer +Private $hMyPaddle As Paddle + +Public Sub _new(hWnd As Window, hBall As Ball, hPaddle As Paddle, Optional iMode As Integer = Normal) + + $hWindow = hWnd + $hBall = hBall + $hPaddle = hPaddle + $iMode = iMode + +End + +Public Sub Init() + + $bReady = False +$iLastDir = $hBall.HDir + ' We need to insert an opponent paddle that would block everything to not + ' go into an infinite loop when trying to calculate the ball's positions + $hMyPaddle = New Paddle($hWindow, -$hPaddle.Dir) + $hMyPaddle.Reset() + $hMyPaddle.Y = 0 + $hMyPaddle.Height = $hWindow.Height + +End + +Public Sub Move() + + If $iMode = Normal Then + Move_Normal() + Else If $iMode = Master Then + Move_Master() + Endif + +End + +Private Sub Move_Normal() + + ' Make him beatable... + If CInt(Rnd(0, 2)) Then Return + ' Just follow the ball + $iY = $hBall.Y + Move_Generic() + +End + +Private Sub Move_Master() + + ' Calculate the future ball's position and move accordingly + If Not $bReady Then MasterCalc() + Move_Generic() + ' If the ball hits this paddle, we can begin calculating again + If $hBall.HDir <> $iLastDir And $iLastDir = -$hPaddle.Dir Then + $bReady = False + Endif + $iLastDir = $hBall.HDir + +End + +Private Sub Move_Generic() + + Dim iMid As Integer = $hPaddle.Y + ($hPaddle.Height / 2) + Dim iDiff As Integer = $iY - iMid + + If Abs(iDiff) <= 1 Then Return + $hPaddle.Y += 2 * Sgn(iDiff) + +End + +Private Sub MasterCalc() + + Dim hMyBall As New Ball($hWindow, True) + + ' Use the CBall class to sneakily get the position we have to sit on + ' when the ball arrives at this end + hMyBall.HDir = $hBall.HDir + hMyBall.VDir = $hBall.VDir + hMyBall.X = $hBall.X + hMyBall.Y = $hBall.Y + ' Simulate the ball flying thither and back again + While hMyBall.X <> $hPaddle.X + hMyBall.Move($hMyPaddle, Null) + Wend + $iY = hMyBall.Y + $bReady = True + +End + +Private Sub Mode_Read() As Integer + + Return $iMode + +End + +Private Sub Mode_Write(Value As Integer) + + $iMode = Value + +End diff --git a/app/examples/Games/Pong/.src/Paddle.class b/app/examples/Games/Pong/.src/Paddle.class new file mode 100644 index 00000000..09a745fb --- /dev/null +++ b/app/examples/Games/Pong/.src/Paddle.class @@ -0,0 +1,96 @@ +' Gambas class file + +Property X As Integer +Property Y As Integer +Property Height As Integer +Property Read Dir As Integer + +' Direction in which to play +Private $iDir As Integer +Private $hWindow As Window +Private $iOrigX As Integer +Private $iOrigY As Integer +Private $iX As Integer +Private $iY As Integer +Private $iHeight As Integer + +Public Sub _new(hWnd As Window, iDir As Integer) + + $hWindow = hWnd + $iHeight = hWnd.Height / 6 + 1 + $iDir = iDir + If iDir > 0 Then + $iOrigX = 1 + Else + $iOrigX = hWnd.Width - 2 + Endif + $iOrigY = (hWnd.Height - $iHeight) / 2 + If Odd($iOrigY) Then Inc $iOrigY + +End + +Public Sub Reset() + + Undraw() + $iX = $iOrigX + $iY = $iOrigY + +End + +Public Sub Draw() + + $hWindow.DrawVLine($iX, $iY, $iHeight, "|") + +End + +Public Sub Undraw() + + $hWindow.DrawVLine($iX, $iY, $iHeight, " ") + +End + +Private Sub X_Read() As Integer + + Return $iX + +End + +Private Sub X_Write(Value As Integer) + + If Value < 0 Or If Value + 1 > $hWindow.Width Then Return + Undraw() + $iX = Value + +End + +Private Sub Y_Read() As Integer + + Return $iY + +End + +Private Sub Y_Write(Value As Integer) + + If Value < 0 Or If Value + $iHeight > $hWindow.Height Then Return + Undraw() + $iY = Value + +End + +Private Function Height_Read() As Integer + + Return $iHeight + +End + +Private Sub Height_Write(Value As Integer) + + $iHeight = Value + +End + +Private Function Dir_Read() As Integer + + Return $iDir + +End diff --git a/app/examples/Games/Pong/SPEED b/app/examples/Games/Pong/SPEED new file mode 100644 index 00000000..2d7658ab --- /dev/null +++ b/app/examples/Games/Pong/SPEED @@ -0,0 +1,47 @@ +Different people have different terminal dimensions. The following shall +outline my attempt to make Pong soundly playable with every one. + +Consider this picture. Assume that it is your terminal: + +........... Legend: +, -, | = Real border (of terminal) +. '. . = Imaginary border +. ' . o = Ball +. ' . " = Real flying behaviour +. ' . ' = Equivalent imaginary flying behaviour ++----'----+ The real and imaginary border make a square w^2. +| " | \ +| " " "| | +| " " " | | Height h +|o " | / ++---------+ + \_______/ + Width w + +We clearly want that the ball gets some velocity linearly proportional to +the distance it has to fly so that the time the ball needs (and the human +player has time to react) is constant. + +As you can see, the distance from paddle 1 to paddle 2 is sqrt(2w^2) units. +The ball goes one unit per Timer event. We need a Timer.Delay that makes the +constant time elapse after sqrt(2w^2) Timer events. + +Let's arbitrarily set the time from one paddle to the other to 4s: + + Timer.Delay = 4000 / Sqr(2 * w ^ 2). + +This is the starting delay. With each hit on a paddle, it decrements. + +This was tested with ANSI's 80*24 terminal dimensions in xterm and my home +180*74 on the Linux console. Feel free to set the LINES and COLUMNS +environment variables to try different proportions. + +One may see the crux with this approach: The larger/smaller the terminal, +the faster/slower the ball. I found both scenarios equally hard: with a +large terminal, the paddle is large; with a small terminal, the paddle is +small. It compensates. + +TODO: The above is not true for terminals which are much _wider_ than high. + I found it problematic to play "LINES=10" but easy with "COLUMNS=30". + +BTW: The NPCs make one step per each ball step. You may have to resize your + terminal to be able to win against 'master' ;-) diff --git a/app/examples/Games/Pong/pong.png b/app/examples/Games/Pong/pong.png new file mode 100644 index 0000000000000000000000000000000000000000..e17e6d06a6a181530d684b20f09fbc2135c32732 GIT binary patch literal 89 zcmeAS@N?(olHy`uVBq!ia0vp^3Lwk~Bp9L@-6KI9PZ!4!j_b(@4b0qsTo^lEI4Gq! jBpE40F5+Ml;^bgpFyQ6bn!qvh4M>lttDnm{r-UW|)npR= literal 0 HcmV?d00001 diff --git a/app/examples/Games/Puzzle1To8/.directory b/app/examples/Games/Puzzle1To8/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Games/Puzzle1To8/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Games/Puzzle1To8/.icon.png b/app/examples/Games/Puzzle1To8/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8974e481fb528ee79b660581b3a16beef405f087 GIT binary patch literal 4303 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/Puzzle1To8/.lang/ca.po b/app/examples/Games/Puzzle1To8/.lang/ca.po new file mode 100644 index 00000000..698cb846 --- /dev/null +++ b/app/examples/Games/Puzzle1To8/.lang/ca.po @@ -0,0 +1,98 @@ +# Catalan translation of Puzzle1To8 +# Copyright (C) 2000-2010 Benoît Minisini. +# This file is distributed under the same license as the Puzzle1To8 package. +# Jordi Sayol , 2007-2010. +# +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Puzzle1To8 3.13.90\n" +"PO-Revision-Date: 2019-06-04 19:27 UTC\n" +"Last-Translator: benoit \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Puzzle 1 to 8" +msgstr "Puzzle 1 a 8" + +#: .project:2 FrmAyuda.form:19 +msgid "Place the numbers 1 to 8 in each of the boxes without repeating, so that each box does not contain a correlative number to its neighbors or adjacent boxes. See the following examples:" +msgstr "Poseu els números de l'1 al 8 a cada una de les caixes sense repetir-los, en que cada caixa no contingui números correlatius amb les caixes veïnes o adjacents. Mireu l'exemple següent:" + +#: FMain.class:69 +msgid "Are you sure?" +msgstr "N'esteu segurs?" + +# gb-ignore +#: FMain.class:69 +msgid "No" +msgstr "" + +#: FMain.class:69 +msgid "Yes" +msgstr "Sí" + +#: FMain.class:90 +msgid "Congratulations! You did it!" +msgstr "Felicitats! Ho heu fet!" + +#: FMain.form:22 +msgid "Puzzle 1 to 8 - Locate the numbers!" +msgstr "Puzle 1 a 8 - Troba els números!" + +#: FMain.form:27 +msgid "Game" +msgstr "Joc" + +#: FMain.form:30 +msgid "Clear" +msgstr "Neteja" + +#: FMain.form:35 +msgid "Quit" +msgstr "Surt" + +#: FMain.form:41 +msgid "Help" +msgstr "Ajuda" + +#: FMain.form:44 FrmAyuda.form:14 +msgid "How to play?" +msgstr "Com jugar-hi?" + +#: FMain.form:49 FrmAbout.form:12 +msgid "About" +msgstr "" + +#: FrmAbout.form:21 +msgid "Author" +msgstr "Autor" + +#: FrmAbout.form:25 +msgid "Author: Pablo Mileti.

You can submit your questions, suggestions, bugs, etc, to the following E-Mail address:\n
pablomileti@gmail.com" +msgstr "Autor: Pablo Mileti.

Podeu enviar les vostres preguntes, suggeriments, errors, etc. a aquesta adreça de correu electrònic:\n pablomileti@gmail.com" + +#: FrmAbout.form:29 +msgid "License" +msgstr "Llicència" + +#: FrmAbout.form:33 +msgid "\n Copyright (C) 2010. Author: Pablo Mileti \n\nThis program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see ." +msgstr "\n Copyright (C) 2010. Autor: Pablo Mileti \n\nAquest programa és programari lliure; el podeu distribuir i/o modificar sota els termes de la llicència GNU General Public License tal i com està publicada per la Free Software Foundation; ja sigui la versió 3 de la llicència, o bé (si ho preferiu) qualsevol versió posterior.\n\nAquest programa es distribueix amb la voluntat que pugui ser útil però SENSE CAP GARANTIA; ni tant sols les garanties implícites MERCANTILS o ESPECÍFIQUES PER UN PROPÒSIT DETERMINAT. Si voleu més informació, vegeu la llicència GNU General Public Licence.\n\nHauríeu d'haver rebut una còpia de la GNU General Public Licence juntament amb aquest programa. Si no fos així, mireu ." + +#: FrmAbout.form:43 FrmAyuda.form:43 +msgid "Close" +msgstr "" + +#: FrmAyuda.form:31 +msgid "Way incorrect:

The numbers 1 and 2 are consecutive and are in adjoining boxes, so it is not allowed." +msgstr "Manera incorrecta:

Els números 1 i 2 són consecutius i estan en caixes adjacents, o sigui que no està permès." + +#: FrmAyuda.form:48 +msgid "Way correct:

There aren't correlativity between to the numbers entered with respect to their adjoining boxes, so it's allowed." +msgstr "Manera correcta:

No hi ha correlativitat entre els números respecte de les caixes adjacents, o sigui que està permès." + diff --git a/app/examples/Games/Puzzle1To8/.lang/cs.po b/app/examples/Games/Puzzle1To8/.lang/cs.po new file mode 100644 index 00000000..1e6a9407 --- /dev/null +++ b/app/examples/Games/Puzzle1To8/.lang/cs.po @@ -0,0 +1,92 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Puzzle1To8 3.13.90\n" +"PO-Revision-Date: 2019-06-04 19:28 UTC\n" +"Last-Translator: benoit \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Puzzle 1 to 8" +msgstr "Puzzle 1 z 8" + +#: .project:2 FrmAyuda.form:19 +msgid "Place the numbers 1 to 8 in each of the boxes without repeating, so that each box does not contain a correlative number to its neighbors or adjacent boxes. See the following examples:" +msgstr "Umístěte čísla 1 až 8 v každém z polí bez opakování, takže každý box neobsahuje souvztažnosti čísla na své sousedy nebo přilehlehlé pole. Viz následující příklady:" + +#: FMain.class:69 +msgid "Are you sure?" +msgstr "Jsi si jistý?" + +#: FMain.class:69 +msgid "No" +msgstr "Ne" + +#: FMain.class:69 +msgid "Yes" +msgstr "Ano" + +#: FMain.class:90 +msgid "Congratulations! You did it!" +msgstr "Gratuluji! Dokázal si to!" + +#: FMain.form:22 +msgid "Puzzle 1 to 8 - Locate the numbers!" +msgstr "Puzzle 1 z 8 - Umísťování čísel!" + +#: FMain.form:27 +msgid "Game" +msgstr "Hra" + +#: FMain.form:30 +msgid "Clear" +msgstr "Vyčistit" + +#: FMain.form:35 +msgid "Quit" +msgstr "Ukončit" + +#: FMain.form:41 +msgid "Help" +msgstr "Nápověda" + +#: FMain.form:44 FrmAyuda.form:14 +msgid "How to play?" +msgstr "Jak hrát?" + +#: FMain.form:49 FrmAbout.form:12 +msgid "About" +msgstr "" + +#: FrmAbout.form:21 +msgid "Author" +msgstr "Autor" + +#: FrmAbout.form:25 +msgid "Author: Pablo Mileti.

You can submit your questions, suggestions, bugs, etc, to the following E-Mail address:\n pablomileti@gmail.com" +msgstr "Autor: Pablo Mileti.

Můžete odeslat Vaše dotazy, připomínky, chyby, atd., na následující e-mailovou adresu:\n pablomileti@gmail.com" + +#: FrmAbout.form:29 +msgid "License" +msgstr "Kicence" + +# gb-ignore +#: FrmAbout.form:33 +msgid "\n Copyright (C) 2010. Author: Pablo Mileti \n\nThis program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see ." +msgstr "" + +#: FrmAbout.form:43 FrmAyuda.form:43 +msgid "Close" +msgstr "" + +#: FrmAyuda.form:31 +msgid "Way incorrect:

The numbers 1 and 2 are consecutive and are in adjoining boxes, so it is not allowed." +msgstr "Špatná cesta:

Čísla 1 a 2 jsou po sobě jdoucí a jsou v přilehlých polí, tak to není dovoleno." + +#: FrmAyuda.form:48 +msgid "Way correct:

There aren't correlativity between to the numbers entered with respect to their adjoining boxes, so it's allowed." +msgstr "Správná cesta:

Není mezi korelativností na zadaná čísla s ohledem na jejich přilehlé pole, takže je to dovoleno." + diff --git a/app/examples/Games/Puzzle1To8/.lang/de.po b/app/examples/Games/Puzzle1To8/.lang/de.po new file mode 100644 index 00000000..1ec4d723 --- /dev/null +++ b/app/examples/Games/Puzzle1To8/.lang/de.po @@ -0,0 +1,112 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2019-06-04 19:27 UTC\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Puzzle 1 to 8" +msgstr "Puzzle 1 bis 8" + +#: .project:2 FrmAyuda.form:19 +msgid "Place the numbers 1 to 8 in each of the boxes without repeating, so that each box does not contain a correlative number to its neighbors or adjacent boxes. See the following examples:" +msgstr "Setze die Zahlen von 1 bis 8 ohne Wiederholung so in die Kästchen, dass kein direkt oder schräg angrenzendes Feld eine benachbarte Zahl enthält. Siehe die folgenden Beispiele:" + +#: FMain.class:69 +msgid "Are you sure?" +msgstr "Bist du sicher?" + +#: FMain.class:69 +msgid "No" +msgstr "Nein" + +#: FMain.class:69 +msgid "Yes" +msgstr "Ja" + +#: FMain.class:90 +msgid "Congratulations! You did it!" +msgstr "Glückwunsch! Du hast es geschafft!" + +#: FMain.form:22 +msgid "Puzzle 1 to 8 - Locate the numbers!" +msgstr "Puzzle 1 bis 8 - Platziere die Zahlen!" + +#: FMain.form:27 +msgid "Game" +msgstr "Spiel" + +#: FMain.form:30 +msgid "Clear" +msgstr "Löschen" + +#: FMain.form:35 +msgid "Quit" +msgstr "Beenden" + +#: FMain.form:41 +msgid "Help" +msgstr "Hilfe" + +#: FMain.form:44 FrmAyuda.form:14 +msgid "How to play?" +msgstr "Spielanleitung" + +#: FMain.form:49 FrmAbout.form:12 +msgid "About" +msgstr "Über" + +#: FrmAbout.form:21 +msgid "Author" +msgstr "Autor" + +#: FrmAbout.form:25 +msgid "" +"Author: Pablo Mileti.

You can submit your questions, suggestions, bugs, etc, to the following E-Mail address:\n" +" pablomileti@gmail.com" +msgstr "" +"Autor: Pablo Mileti.

Du kannst Fragen, Vorschläge, Bugs usw. an diese E-Mail-Adresse senden:\n" +" pablomileti@gmail.com" + +#: FrmAbout.form:29 +msgid "License" +msgstr "Lizenz" + +#: FrmAbout.form:33 +msgid "" +"\n" +" Copyright (C) 2010. Author: Pablo Mileti \n" +"\n" +"This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n" +"\n" +"This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n" +"\n" +"You should have received a copy of the GNU General Public License along with this program. If not, see ." +msgstr "" +"\n" +" Copyright (C) 2010. Autor: Pablo Mileti \n" +"\n" +"This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n" +"\n" +"This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n" +"\n" +"You should have received a copy of the GNU General Public License along with this program. If not, see ." + +#: FrmAbout.form:43 FrmAyuda.form:43 +msgid "Close" +msgstr "Schließen" + +#: FrmAyuda.form:31 +msgid "Way incorrect:

The numbers 1 and 2 are consecutive and are in adjoining boxes, so it is not allowed." +msgstr "Unkorrekt:

Die Zahlen 1 und 2 sind fortlaufend und in benachbarten Feldern, also ungültig." + +#: FrmAyuda.form:48 +msgid "Way correct:

There aren't correlativity between to the numbers entered with respect to their adjoining boxes, so it's allowed." +msgstr "Korrekt:

Keine aufeinanderfolgenden Zahlen stehen in benachbarten Feldern, das ist erlaubt." diff --git a/app/examples/Games/Puzzle1To8/.lang/es_AR.po b/app/examples/Games/Puzzle1To8/.lang/es_AR.po new file mode 100644 index 00000000..f3efd468 --- /dev/null +++ b/app/examples/Games/Puzzle1To8/.lang/es_AR.po @@ -0,0 +1,94 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Puzzle1To8 3.13.90\n" +"PO-Revision-Date: 2019-06-04 19:27 UTC\n" +"Last-Translator: benoit \n" +"Language: es_AR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +# gb-ignore +#: .project:1 +msgid "Puzzle 1 to 8" +msgstr "" + +#: .project:2 FrmAyuda.form:19 +msgid "Place the numbers 1 to 8 in each of the boxes without repeating, so that each box does not contain a correlative number to its neighbors or adjacent boxes. See the following examples:" +msgstr "Ubique los números del 1 al 8 en cada uno de los casilleros sin repetirlos, de manera tal que cada casillero no contenga un número consecutivo al de sus casilleros vecinos o limítrofes. Observe los siguientes ejemplos:" + +#: FMain.class:69 +msgid "Are you sure?" +msgstr "Desea salir?" + +# gb-ignore +#: FMain.class:69 +msgid "No" +msgstr "" + +#: FMain.class:69 +msgid "Yes" +msgstr "Si" + +#: FMain.class:90 +msgid "Congratulations! You did it!" +msgstr "Felicitaciones! Lo lograste!" + +#: FMain.form:22 +msgid "Puzzle 1 to 8 - Locate the numbers!" +msgstr "Puzzle 1 to 8 - Disperse los números!" + +#: FMain.form:27 +msgid "Game" +msgstr "Juego" + +#: FMain.form:30 +msgid "Clear" +msgstr "Limpiar" + +#: FMain.form:35 +msgid "Quit" +msgstr "Salir" + +#: FMain.form:41 +msgid "Help" +msgstr "Ayuda" + +#: FMain.form:44 FrmAyuda.form:14 +msgid "How to play?" +msgstr "Cómo jugar?" + +#: FMain.form:49 FrmAbout.form:12 +msgid "About" +msgstr "" + +#: FrmAbout.form:21 +msgid "Author" +msgstr "Autor" + +#: FrmAbout.form:25 +msgid "Author: Pablo Mileti.

You can submit your questions, suggestions, bugs, etc, to the following E-Mail address:\n pablomileti@gmail.com" +msgstr "Autor: Pablo Mileti.

Pueden enviar sus dudas, sugerencias, bugs, etc, a la siguiente dirección de correo electrónico: pablomileti@gmail.com" + +#: FrmAbout.form:29 +msgid "License" +msgstr "Licencia" + +# gb-ignore +#: FrmAbout.form:33 +msgid "\n Copyright (C) 2010. Author: Pablo Mileti \n\nThis program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see ." +msgstr "" + +#: FrmAbout.form:43 FrmAyuda.form:43 +msgid "Close" +msgstr "" + +#: FrmAyuda.form:31 +msgid "Way incorrect:

The numbers 1 and 2 are consecutive and are in adjoining boxes, so it is not allowed." +msgstr "Disposición incorrecta:

Los números 1 y 2 son consecutivos y estan en casilleros lindantes, por lo tanto es una disposición no permitida." + +#: FrmAyuda.form:48 +msgid "Way correct:

There aren't correlativity between to the numbers entered with respect to their adjoining boxes, so it's allowed." +msgstr "Disposición válida:

No existe correlatividad en los números ingresados con respecto a sus casilleros lindantes, por lo tanto es una disposición permitida." + diff --git a/app/examples/Games/Puzzle1To8/.lang/fr.po b/app/examples/Games/Puzzle1To8/.lang/fr.po new file mode 100644 index 00000000..4a2db834 --- /dev/null +++ b/app/examples/Games/Puzzle1To8/.lang/fr.po @@ -0,0 +1,111 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Puzzle1To8 3.13.90\n" +"POT-Creation-Date: 2019-06-04 19:28 UTC\n" +"PO-Revision-Date: 2019-06-04 19:25 UTC\n" +"Last-Translator: benoit \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Puzzle 1 to 8" +msgstr "Puzzle 1 à 8" + +#: .project:2 FrmAyuda.form:19 +msgid "Place the numbers 1 to 8 in each of the boxes without repeating, so that each box does not contain a correlative number to its neighbors or adjacent boxes. See the following examples:" +msgstr "Placez les nombres 1 à 8 dans chacune des cases sans vous répéter, de sorte que chaque boîte ne contienne pas un nombre corrélatif à ses voisins ou à des cases adjacentes. Voir les exemples suivants :" + +#: FMain.class:69 +msgid "Are you sure?" +msgstr "Es-tu sûr ?" + +#: FMain.class:69 +msgid "No" +msgstr "Non" + +#: FMain.class:69 +msgid "Yes" +msgstr "Oui" + +#: FMain.class:90 +msgid "Congratulations! You did it!" +msgstr "Félicitations ! Vous avez réussi !" + +#: FMain.form:22 +msgid "Puzzle 1 to 8 - Locate the numbers!" +msgstr "Puzzle 1 à 8 - Trouvez les chiffres !" + +#: FMain.form:27 +msgid "Game" +msgstr "Jeu" + +#: FMain.form:30 +msgid "Clear" +msgstr "Effacer" + +#: FMain.form:35 +msgid "Quit" +msgstr "Quitter" + +#: FMain.form:41 +msgid "Help" +msgstr "Aide" + +#: FMain.form:44 FrmAyuda.form:14 +msgid "How to play?" +msgstr "Comment jouer ?" + +#: FMain.form:49 FrmAbout.form:12 +msgid "About" +msgstr "A propos" + +#: FrmAbout.form:21 +msgid "Author" +msgstr "Auteur" + +#: FrmAbout.form:25 +msgid "" +"Author: Pablo Mileti.

You can submit your questions, suggestions, bugs, etc, to the following E-Mail address:\n" +" pablomileti@gmail.com" +msgstr "" +"Auteur: Pablo Mileti.

Vous pouvez soumettre vos questions, suggestions, bogues, etc. à l’adresse E-Mail suivante :\n" +"pablomileti@gmail.com" + +#: FrmAbout.form:29 +msgid "License" +msgstr "Licence" + +#: FrmAbout.form:33 +msgid "" +"\n" +" Copyright (C) 2010. Author: Pablo Mileti \n" +"\n" +"This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n" +"\n" +"This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n" +"\n" +"You should have received a copy of the GNU General Public License along with this program. If not, see ." +msgstr "" +"\n" +"Copyright (C) 2010. Auteur: Pablo Mileti\n" +"\n" +"Ce programme est un logiciel libre: vous pouvez le redistribuer et/ou le modifier selon les termes de la licence publique générale GNU telle que publiée par la Free Software Foundation, soit la version 3 de la licence, soit (à votre discrétion) toute version ultérieure.\n" +"\n" +"Ce programme est distribué dans l’espoir qu’il sera utile, mais sans aucune garantie; sans même la garantie implicite de qualité marchande ou d’adéquation à un usage particulier. Pour plus de détails, consultez la licence publique générale GNU.\n" +"\n" +"Vous auriez dû recevoir une copie de la licence publique générale GNU ainsi que ce programme. Sinon, voyez ." + +#: FrmAbout.form:43 FrmAyuda.form:43 +msgid "Close" +msgstr "Fermer" + +#: FrmAyuda.form:31 +msgid "Way incorrect:

The numbers 1 and 2 are consecutive and are in adjoining boxes, so it is not allowed." +msgstr "Manière incorrecte:

Les nombres 1 et 2 sont consécutifs et sont dans des cases adjacentes, il n’est donc pas autorisé." + +#: FrmAyuda.form:48 +msgid "Way correct:

There aren't correlativity between to the numbers entered with respect to their adjoining boxes, so it's allowed." +msgstr "Façon correcte:

Il n’y a pas de corrélation entre les nombres entrés par rapport à leurs cases adjacentes, donc c’est permis." diff --git a/app/examples/Games/Puzzle1To8/.lang/ru.po b/app/examples/Games/Puzzle1To8/.lang/ru.po new file mode 100644 index 00000000..b7a01ec7 --- /dev/null +++ b/app/examples/Games/Puzzle1To8/.lang/ru.po @@ -0,0 +1,126 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-06-17 02:57+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Games/Puzzle1To8/.project:18 +msgid "Puzzle 1 to 8" +msgstr "Головоломка с 1 по 8" + +#: app/examples/Games/Puzzle1To8/.project:19 app/examples/Games/Puzzle1To8/.src/FrmAyuda.form:10 +msgid "Place the numbers 1 to 8 in each of the boxes without repeating, so that each box does not contain a correlative number to its neighbors or adjacent boxes. See the following examples:" +msgstr "Разместите числа от 1 до 8 в каждом из блоков без повторения, чтобы каждый блок не содержал номера, соответствующего его соседям или смежным блокам. Смотрите следующие примеры:" + +#: app/examples/Games/Puzzle1To8/.src/FMain.class:61 app/examples/Games/Puzzle1To8/.src/FMain.form:6 +msgid "Puzzle 1 to 8 - Locate the numbers!" +msgstr "Головоломка с 1 по 8 - разместите номера!" + +#: app/examples/Games/Puzzle1To8/.src/FMain.class:69 +msgid "Are you sure?" +msgstr "Вы уверены?" + +#: app/examples/Games/Puzzle1To8/.src/FMain.class:69 +msgid "Yes" +msgstr "Да" + +#: app/examples/Games/Puzzle1To8/.src/FMain.class:69 +msgid "No" +msgstr "Нет" + +#: app/examples/Games/Puzzle1To8/.src/FMain.class:90 +msgid "Congratulations! You did it!" +msgstr "Поздравляем! Вы сделали это!" + +#: app/examples/Games/Puzzle1To8/.src/FMain.form:10 +msgid "Game" +msgstr "Игра" + +#: app/examples/Games/Puzzle1To8/.src/FMain.form:12 +msgid "Clear" +msgstr "Очистить" + +#: app/examples/Games/Puzzle1To8/.src/FMain.form:16 +msgid "Quit" +msgstr "Выход" + +#: app/examples/Games/Puzzle1To8/.src/FMain.form:21 +msgid "Help" +msgstr "Справка" + +#: app/examples/Games/Puzzle1To8/.src/FMain.form:23 app/examples/Games/Puzzle1To8/.src/FrmAyuda.form:6 +msgid "How to play?" +msgstr "Как играть?" + +#: app/examples/Games/Puzzle1To8/.src/FMain.form:27 app/examples/Games/Puzzle1To8/.src/FrmAbout.form:5 +msgid "About" +msgstr "О программе" + +#: app/examples/Games/Puzzle1To8/.src/FrmAbout.form:13 +msgid "Author" +msgstr "Автор" + +#: app/examples/Games/Puzzle1To8/.src/FrmAbout.form:16 +msgid "" +"Author: Pablo Mileti.

You can submit your questions, suggestions, bugs, etc, to the following E-Mail address:\n" +" pablomileti@gmail.com" +msgstr "" +"Автор: Пабло Милети.

Вы можете отправить свои вопросы, предложения, ошибки и т. д. на следующий электронный адрес:\n" +"pablomileti@gmail.com" + +#: app/examples/Games/Puzzle1To8/.src/FrmAbout.form:20 +msgid "License" +msgstr "Лицензия" + +#: app/examples/Games/Puzzle1To8/.src/FrmAbout.form:23 +msgid "" +"\n" +" Copyright (C) 2010. Author: Pablo Mileti \n" +"\n" +"This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n" +"\n" +"This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n" +"\n" +"You should have received a copy of the GNU General Public License along with this program. If not, see ." +msgstr "" +"\n" +" Copyright (C) 2010. Автор: Пабло Милети\n" +"\n" +"Эта программа ― свободное программное обеспечение. Вы можете распространять или изменять его при условиях соответствия лицензии GNU General Public License опубликованной Free Software Foundation; либо версии 3 лицензии, либо (на ваше усмотрение) любой более поздней версии.\n" +"\n" +"Программа распространяется в надежде на то, что приложение будет полезно, но БЕЗ ВСЯКИХ ГАРАНТИЙ; не гарантируется даже ПРИГОДНОСТЬ или СООТВЕТСТВИЕ КАКИМ-ЛИБО ТРЕБОВАНИЯМ. Для получения дополнительной информации ознакомьтесь с лицензией GNU General Public License.\n" +"\n" +"Вы должны получить копию лицензии GNU General Public License вместе с программой. Если этого не произошло, посмотрите ." + +#: app/examples/Games/Puzzle1To8/.src/FrmAbout.form:32 app/examples/Games/Puzzle1To8/.src/FrmAyuda.form:30 +msgid "Close" +msgstr "Закрыть" + +#: app/examples/Games/Puzzle1To8/.src/FrmAyuda.form:20 +msgid "Way incorrect:

The numbers 1 and 2 are consecutive and are in adjoining boxes, so it is not allowed." +msgstr "Неверный путь:

числа 1 и 2 являются последовательными и находятся в соседних блоках, поэтому это не допускается." + +#: app/examples/Games/Puzzle1To8/.src/FrmAyuda.form:34 +msgid "Way correct:

There aren't correlativity between to the numbers entered with respect to their adjoining boxes, so it's allowed." +msgstr "Неверный путь:

не существует корреляции между числами относительно их соседних блоков, поэтому это разрешено." + diff --git a/app/examples/Games/Puzzle1To8/.project b/app/examples/Games/Puzzle1To8/.project new file mode 100644 index 00000000..06150596 --- /dev/null +++ b/app/examples/Games/Puzzle1To8/.project @@ -0,0 +1,17 @@ +# Gambas Project File 3.0 +Title=Puzzle 1 to 8 +Startup=FMain +Icon=logo.png +Version=3.13.90 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.form +Component=gb.vb +Description="Place the numbers 1 to 8 in each of the boxes without repeating, so that each box does not contain a correlative number to its neighbors or adjacent boxes. See the following examples:" +Authors="Pablo Mileti" +Environment="GB_GUI=gb.gtk3" +TabSize=2 +Translate=1 +Language=en_US +Packager=1 diff --git a/app/examples/Games/Puzzle1To8/.src/Casillero.class b/app/examples/Games/Puzzle1To8/.src/Casillero.class new file mode 100644 index 00000000..3d3fc714 --- /dev/null +++ b/app/examples/Games/Puzzle1To8/.src/Casillero.class @@ -0,0 +1,66 @@ +' Gambas class file + +' Copyright(C)2010. Autor: Pablo Mileti + +'This program Is free software: you can redistribute it And / Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 Of the License, Or (at your option)any later version. + +'This program Is distributed In the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty Of MERCHANTABILITY Or FITNESS For A PARTICULAR PURPOSE.See the GNU General Public License For more details. + +'You should have received a Copy Of the GNU General Public License along With this program.IfNot, see < http: / / www.gnu.org / licenses / > . + + +'****English documentation***** +'This class represents each box of the game (8) + +' Public Var: +' Value ---> Contains the number that was put in a box +' isEmpty ---> Return true if value is 0, else return false +' isInvalid ---> Return true if Value there are a conflict with the value of another box + +' Public Methods: +'setValue(nValue As Integer) ---> Put a value in a box +'validateWith(nBox As Casillero) ---> Return true if there are a conflict with a neighbor box + + + +'* * * * Documentación en español******* +' Esta clase corresponde a representar cada uno de los 8 casilleros del juego + +' Variables públicas: +' Value ---> Contiene el numero que se ingreso en el casillero +' isEmpty ---> True si no hay valor, False si lo tiene +' isInvalid ---> True si hay un numero que esta en conflicto con otro casillero + +' Metodos públicos: +'setValue(nValue As Integer) - - > Se encarga de almacenar el nro de un casillero +'validateWith(nBox As Casillero) ---> Devuelve true si hay conflicto con otro casillero + +Public Value As Integer +Public isEmpty As Boolean +Public isInvalid As Boolean + +Public Sub _new() + Value = 0 + isEmpty = True + isInvalid = True +End + +Public Sub setValue(nValue As Integer) + Value = nvalue + If nvalue = 0 Then + isEmpty = True + Else + isEmpty = False + End If +End + +Public Function validateWith(nBox As Casillero) As Boolean + If isEmpty Or nBox.isEmpty Then Return False + If value + 1 = nBox.Value Then Return True + If value - 1 = nBox.Value And Value > 1 Then Return True +End + + + + + diff --git a/app/examples/Games/Puzzle1To8/.src/Esquema.class b/app/examples/Games/Puzzle1To8/.src/Esquema.class new file mode 100644 index 00000000..17cc9657 --- /dev/null +++ b/app/examples/Games/Puzzle1To8/.src/Esquema.class @@ -0,0 +1,110 @@ +' Gambas class file + +' Copyright(C)2010. Autor: Pablo Mileti + +'This program Is free software: you can redistribute it And / Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 Of the License, Or (at your option)any later version. + +'This program Is distributed In the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty Of MERCHANTABILITY Or FITNESS For A PARTICULAR PURPOSE.See the GNU General Public License For more details. + +'You should have received a Copy Of the GNU General Public License along With this program.IfNot, see < http: / / www.gnu.org / licenses / > . + + + +'****English documentation***** +'This class represents the gameboard, all boxes of the game. + +'Public var: +'Boxes---> Array of Casillero (box), there are 9 elements, it uses from 1 to 8. + +'Public methods: +'Set---> Put a value in a object Casillero (box). Receive 2 parameters: the position of the box in the gameboard and the value to put, return true if there are a conflict with another box. +'isRepeats---> Return true if value already exists in another box. +'isInvalid---> Compare a determinated box (parameter), with your neighbor boxes. Return true if there are conflicts. +'isWin---> If all boxes have a correct value and nothing is empty then return true - Win! + + + + +'* * * * * Documentación en español ****** +'Esta clase representa el juego en conjunto, es decir integro los 8 casilleros + +'Variables públicas: +'Boxes---> Array de Casilleros, son 9 elementos, se usan del 1 al 8. + +'Métodos públicos: +'Set---> Se encarga de darle un valor a cada Casillero. Recibe 2 parametros el nro de casillero y el valor, devuelve true si ese valor entra en conflicto con otro casillero +'isRepeats--->Devuelve true si el valor de un casillero ya esta en otro. +'isInvalid---> Compara un determinado casillero, segun su parametro, con sus casilleros vecinos. Devuelve true si hay conflicto +'isWin---> Verifica si todos los casilleros tienen un valor correcto, si todos son correctos y no hay ninguno vacio devuelve true. + +Public Boxes As New Casillero[9] + +Public Sub _new() + Dim i As Integer + For i = 1 To 8 + Boxes[i] = New Casillero + Next +End + +Public Function Set(nBox As Integer, nValue As Integer) As Boolean + Boxes[nbox].setValue(nValue) + If (isRepeats(nBox) And nValue <> 0) Or isInvalid(nBox) Then + Boxes[nBox].isInvalid = True + Return True + Else + Boxes[nBox].isInvalid = False + Return False + End If +End + +Private Function isRepeats(nBox As Integer) As Boolean + Dim i As Integer + For i = 1 To 8 + If i <> nBox Then + If Boxes[nBox].Value = Boxes[i].Value Then + Return True + End If + End If + Next + Return False +End + +Private Function isInvalid(nBox As Integer) As Boolean +Select Case nBox +Case 1 + Boxes[1].isInvalid = Boxes[1].validateWith(Boxes[2]) Or Boxes[1].validateWith(Boxes[3]) Or Boxes[1].validateWith(Boxes[4]) + Return Boxes[1].isInvalid +Case 2 + Boxes[2].isInvalid = Boxes[2].validateWith(Boxes[1]) Or Boxes[2].validateWith(Boxes[3]) Or Boxes[2].validateWith(Boxes[5]) Or Boxes[2].validateWith(Boxes[6]) + Return Boxes[2].isInvalid +Case 3 + Boxes[3].isInvalid = Boxes[3].validateWith(Boxes[1]) Or Boxes[3].validateWith(Boxes[2]) Or Boxes[3].validateWith(Boxes[4]) Or Boxes[3].validateWith(Boxes[5]) Or Boxes[3].validateWith(Boxes[6]) Or Boxes[3].validateWith(Boxes[7]) + Return Boxes[3].isInvalid +Case 4 + Boxes[4].isInvalid = Boxes[4].validateWith(Boxes[1]) Or Boxes[4].validateWith(Boxes[3]) Or Boxes[4].validateWith(Boxes[6]) Or Boxes[4].validateWith(Boxes[7]) + Return Boxes[4].isInvalid +Case 5 + Boxes[5].isInvalid = Boxes[5].validateWith(Boxes[2]) Or Boxes[5].validateWith(Boxes[3]) Or Boxes[5].validateWith(Boxes[6]) Or Boxes[5].validateWith(Boxes[8]) + Return Boxes[5].isInvalid +Case 6 + Boxes[6].isInvalid = Boxes[6].validateWith(Boxes[2]) Or Boxes[6].validateWith(Boxes[3]) Or Boxes[6].validateWith(Boxes[4]) Or Boxes[6].validateWith(Boxes[5]) Or Boxes[6].validateWith(Boxes[7]) Or Boxes[6].validateWith(Boxes[8]) + Return Boxes[6].isInvalid +Case 7 + Boxes[7].isInvalid = Boxes[7].validateWith(Boxes[3]) Or Boxes[7].validateWith(Boxes[4]) Or Boxes[7].validateWith(Boxes[6]) Or Boxes[7].validateWith(Boxes[8]) + Return Boxes[7].isInvalid +Case 8 + Boxes[8].isInvalid = Boxes[8].validateWith(Boxes[5]) Or Boxes[8].validateWith(Boxes[6]) Or Boxes[8].validateWith(Boxes[7]) + Return Boxes[8].isInvalid +End Select +End + + +Public Function isWin() As Boolean + Dim i As Integer + For i = 1 To 8 + If Boxes[i].isInvalid Or Boxes[i].isEmpty Then + Return False + End If + Next + Return True +End diff --git a/app/examples/Games/Puzzle1To8/.src/FMain.class b/app/examples/Games/Puzzle1To8/.src/FMain.class new file mode 100644 index 00000000..de579899 --- /dev/null +++ b/app/examples/Games/Puzzle1To8/.src/FMain.class @@ -0,0 +1,111 @@ +' Gambas class file + +' Copyright(C)2010. Autor: Pablo Mileti + +'This program Is free software: you can redistribute it And / Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 Of the License, Or (at your option)any later version. + +'This program Is distributed In the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty Of MERCHANTABILITY Or FITNESS For A PARTICULAR PURPOSE.See the GNU General Public License For more details. + +'You should have received a Copy Of the GNU General Public License along With this program.IfNot, see < http: / / www.gnu.org / licenses / > . + + + +'****English documentation***** +'Public sub +'Winner() ---> Procedure to Finish the game and write a congratulation message! +'updateBoxes()---> Rewrite the values in each box to compare with the last value wrote. If it presents conflict, mark it with red color. + + +'* * * * * Documentación en español ****** +'Public sub +'Winner() ---> Ha ganado el juego, finalizarlo y felicitar! +'updateBoxes()---> Volver a escribir los valores en cada casillero para que se compare con el ultimo valor ingresado y se coloree si ha conflicto + + +Public Game As Esquema + +Public Sub Form_Open() + Game = New Esquema + Me.Window.Center +End + +Public Sub TXT_Change() + Dim value As Integer + If Last.text = "" Then + value = 0 + Else + value = Val(Last.text) + End If + Game.Set(Last.tag, value) + updateBoxes() + If Game.isWin() Then Winner() +End + +Public Sub TXT_KeyPress() + If Not (Key.code = Key.BackSpace Or Key.code = Key.Delete Or Key.Code = Key.F10) Then + If InStr("12345678", Key.Text) = 0 Then Stop Event + End If +End + +Public Sub MnuReiniciar_Click() + Dim control As Object + Game = New Esquema + For Each control In Me.Children + If Object.Type(control) = "TextBox" Then + control.text = "" + control.foreground = &H000000& + control.background = &HFFFFFF& + control.enabled = True + End If + Next + Me.Title = ("Puzzle 1 to 8 - Locate the numbers!") +End + +Public Sub MnuSalir_Click() + Me.Close +End + +Public Sub Form_Close() + If Message.Question(("Are you sure?"), ("Yes"), ("No")) = 2 Then + Stop Event + End If +End + +Public Sub MnuAutor_Click() + FrmAbout.Showmodal() +End + +Public Sub MnuComoJugar_Click() + FrmAyuda.Show() +End + +Public Sub Winner() + Dim control As Object + For Each control In Me.Children + If Object.Type(control) = "TextBox" Then + control.background = &FFFF9F& + control.enabled = False + End If + Next + Me.Title = ("Congratulations! You did it!") +End + +Private Sub updateBoxes() + Dim control As Object + Dim value As Integer + For Each control In Me.Children + If Object.Type(control) = "TextBox" Then + If control.text = "" Then + value = 0 + Else + value = Val(control.text) + End If + If Game.Set(control.tag, value) Then + control.foreground = &HFF0000& + Else + control.foreground = &000000& + End If + End If + Next +End + diff --git a/app/examples/Games/Puzzle1To8/.src/FMain.form b/app/examples/Games/Puzzle1To8/.src/FMain.form new file mode 100644 index 00000000..98665517 --- /dev/null +++ b/app/examples/Games/Puzzle1To8/.src/FMain.form @@ -0,0 +1,95 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,62,50) + Background = Color.LightForeground + Text = ("Puzzle 1 to 8 - Locate the numbers!") + Icon = Picture["logo.png"] + Resizable = False + { MnuJuego Menu + Text = ("Game") + { MnuReiniciar Menu + Text = ("Clear") + Picture = Picture["icon:/small/refresh"] + } + { MnuSalir Menu + Text = ("Quit") + Picture = Picture["icon:/small/quit"] + } + } + { Mnuayuda Menu + Text = ("Help") + { MnuComoJugar Menu + Text = ("How to play?") + Picture = Picture["icon:/small/help"] + } + { MnuAutor Menu + Text = ("About") & "..." + Picture = Picture["icon:/small/gambas"] + } + } + { TextBox1 TextBox TXT + Name = "TextBox1" + MoveScaled(25,5,12,9) + Font = Font["Bitstream Charter,+8"] + Tag = "1" + Alignment = Align.Center + MaxLength = 1 + } + { TextBox2 TextBox TXT + Name = "TextBox2" + MoveScaled(13,14,12,9) + Font = Font["Bitstream Charter,+8"] + Tag = "2" + Alignment = Align.Center + MaxLength = 1 + } + { TextBox3 TextBox TXT + Name = "TextBox3" + MoveScaled(25,14,12,9) + Font = Font["Bitstream Charter,+8"] + Tag = "3" + Alignment = Align.Center + MaxLength = 1 + } + { TextBox4 TextBox TXT + Name = "TextBox4" + MoveScaled(37,14,12,9) + Font = Font["Bitstream Charter,+8"] + Tag = "4" + Alignment = Align.Center + MaxLength = 1 + } + { TextBox5 TextBox TXT + Name = "TextBox5" + MoveScaled(13,23,12,9) + Font = Font["Bitstream Charter,+8"] + Tag = "5" + Alignment = Align.Center + MaxLength = 1 + } + { TextBox6 TextBox TXT + Name = "TextBox6" + MoveScaled(25,23,12,9) + Font = Font["Bitstream Charter,+8"] + Tag = "6" + Alignment = Align.Center + MaxLength = 1 + } + { TextBox7 TextBox TXT + Name = "TextBox7" + MoveScaled(37,23,12,9) + Font = Font["Bitstream Charter,+8"] + Tag = "7" + Alignment = Align.Center + MaxLength = 1 + } + { TextBox8 TextBox TXT + Name = "TextBox8" + MoveScaled(25,32,12,9) + Font = Font["Bitstream Charter,+8"] + Tag = "8" + Alignment = Align.Center + MaxLength = 1 + } +} diff --git a/app/examples/Games/Puzzle1To8/.src/FrmAbout.class b/app/examples/Games/Puzzle1To8/.src/FrmAbout.class new file mode 100644 index 00000000..217d0bdd --- /dev/null +++ b/app/examples/Games/Puzzle1To8/.src/FrmAbout.class @@ -0,0 +1,18 @@ +' Gambas class file + +' Copyright(C)2010. Autor: Pablo Mileti + +'This program Is free software: you can redistribute it And / Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 Of the License, Or (at your option)any later version. + +'This program Is distributed In the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty Of MERCHANTABILITY Or FITNESS For A PARTICULAR PURPOSE.See the GNU General Public License For more details. + +'You should have received a Copy Of the GNU General Public License along With this program.IfNot, see < http: / / www.gnu.org / licenses / > . + + +Public Sub Form_Open() + Me.Window.Center +End + +Public Sub Button1_Click() + Me.Close +End diff --git a/app/examples/Games/Puzzle1To8/.src/FrmAbout.form b/app/examples/Games/Puzzle1To8/.src/FrmAbout.form new file mode 100644 index 00000000..7898c4dd --- /dev/null +++ b/app/examples/Games/Puzzle1To8/.src/FrmAbout.form @@ -0,0 +1,39 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,75,36) + Text = ("About") & "..." + Resizable = False + { TabStrip1 TabStrip + MoveScaled(1,1,52,34) + Arrangement = Arrange.Fill + Margin = True + Count = 2 + Index = 0 + Text = ("Author") + { TextLabel1 TextLabel + MoveScaled(2,2,41,21) + Text = ("Author: Pablo Mileti.

You can submit your questions, suggestions, bugs, etc, to the following E-Mail address:\n pablomileti@gmail.com") + Alignment = Align.Justify + } + Index = 1 + Text = ("License") + { TextArea1 TextArea + MoveScaled(2,3,42,22) + Text = ("\n Copyright (C) 2010. Author: Pablo Mileti \n\nThis program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see .") + ReadOnly = True + Wrap = True + ScrollBar = Scroll.Vertical + } + Index = 0 + } + { Button1 Button + MoveScaled(54,31,20,4) + Text = Shortcut(("Close"), "C") + } + { PictureBox1 PictureBox + MoveScaled(54,1,20,20) + Picture = Picture["logo.png"] + Stretch = True + } +} diff --git a/app/examples/Games/Puzzle1To8/.src/FrmAyuda.class b/app/examples/Games/Puzzle1To8/.src/FrmAyuda.class new file mode 100644 index 00000000..42f43ffd --- /dev/null +++ b/app/examples/Games/Puzzle1To8/.src/FrmAyuda.class @@ -0,0 +1,18 @@ +' Gambas class file + + +' Copyright(C)2010. Autor: Pablo Mileti + +'This program Is free software: you can redistribute it And / Or modify it under the terms Of the GNU General Public License As published by the Free Software Foundation, either version 3 Of the License, Or (at your option)any later version. + +'This program Is distributed In the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty Of MERCHANTABILITY Or FITNESS For A PARTICULAR PURPOSE.See the GNU General Public License For more details. + +'You should have received a Copy Of the GNU General Public License along With this program.IfNot, see < http: / / www.gnu.org / licenses / > . + +Public Sub Button1_Click() + Me.close +End + +Public Sub Form_Open() + Me.Window.center +End diff --git a/app/examples/Games/Puzzle1To8/.src/FrmAyuda.form b/app/examples/Games/Puzzle1To8/.src/FrmAyuda.form new file mode 100644 index 00000000..2b7d295c --- /dev/null +++ b/app/examples/Games/Puzzle1To8/.src/FrmAyuda.form @@ -0,0 +1,37 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,68,66) + Background = Color.LightForeground + Text = ("How to play?") + Resizable = False + { TextLabel1 TextLabel + MoveScaled(2,2,63,11) + Text = ("Place the numbers 1 to 8 in each of the boxes without repeating, so that each box does not contain a correlative number to its neighbors or adjacent boxes. See the following examples:") + Alignment = Align.Justify + } + { PictureBox1 PictureBox + MoveScaled(32,15,32,21) + Picture = Picture["ejemplo1.png"] + Stretch = True + } + { TextLabel3 TextLabel + MoveScaled(2,15,28,21) + Text = ("Way incorrect:

The numbers 1 and 2 are consecutive and are in adjoining boxes, so it is not allowed.") + Alignment = Align.Justify + } + { PictureBox2 PictureBox + MoveScaled(32,38,32,21) + Picture = Picture["ejemplo2.png"] + Stretch = True + } + { Button1 Button + MoveScaled(23,60,22,5) + Text = Shortcut(("Close"), "C") + } + { TextLabel2 TextLabel + MoveScaled(2,39,28,18) + Text = ("Way correct:

There aren't correlativity between to the numbers entered with respect to their adjoining boxes, so it's allowed.") + Alignment = Align.Justify + } +} diff --git a/app/examples/Games/Puzzle1To8/Licence b/app/examples/Games/Puzzle1To8/Licence new file mode 100644 index 00000000..b17f91b9 --- /dev/null +++ b/app/examples/Games/Puzzle1To8/Licence @@ -0,0 +1,189 @@ +GNU GENERAL PUBLIC LICENSE + +Version 3, 29 June 2007 + +Copyright © 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. +Preamble + +The GNU General Public License is a free, copyleft license for software and other kinds of works. + +The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. + +Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and modification follow. +TERMS AND CONDITIONS +0. Definitions. + +“This License” refers to version 3 of the GNU General Public License. + +“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. + +“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. + +To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. + +A “covered work” means either the unmodified Program or a work based on the Program. + +To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. + +To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. + +An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. +1. Source Code. + +The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. + +A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. + +The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. + +The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same work. +2. Basic Permissions. + +All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. +3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. + +When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. +4. Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. +5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: + + * a) The work must carry prominent notices stating that you modified it, and giving a relevant date. + * b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. + * c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. + * d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. + +A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. +6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: + + * a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. + * b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. + * c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. + * d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. + * e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. + +A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. + +“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. + +If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). + +The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. + +Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. +7. Additional Terms. + +“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: + + * a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or + * b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or + * c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or + * d) Limiting the use for publicity purposes of names of licensors or authors of the material; or + * e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or + * f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. + +All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. +8. Termination. + +You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). + +However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. + +Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. +9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. +10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. + +An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. +11. Patents. + +A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. + +A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. + +In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. + +If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. + +A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. +12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. +13. Use with the GNU Affero General Public License. + +Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. +14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. + +Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. +15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. +16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/app/examples/Games/Puzzle1To8/ejemplo1.png b/app/examples/Games/Puzzle1To8/ejemplo1.png new file mode 100644 index 0000000000000000000000000000000000000000..fa41d8272840de5b877321438986b3efa602b9d2 GIT binary patch literal 5594 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 Uxya5^Ea2e44NVO2H*Y`qC#&<-5dZ)H literal 0 HcmV?d00001 diff --git a/app/examples/Games/Puzzle1To8/ejemplo2.png b/app/examples/Games/Puzzle1To8/ejemplo2.png new file mode 100644 index 0000000000000000000000000000000000000000..4fd108c2eb12eeded962c8024fb618748d72a5a3 GIT binary patch literal 5481 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 Warw)WKiOF&z~qMIb?i0Ignt2a#J73? literal 0 HcmV?d00001 diff --git a/app/examples/Games/Puzzle1To8/logo.png b/app/examples/Games/Puzzle1To8/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..bd7a6ecb124c71d724093c1265d18f04e6d6abda GIT binary patch literal 41279 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

    aoPw@^hX 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/RobotFindsKitten/.directory b/app/examples/Games/RobotFindsKitten/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Games/RobotFindsKitten/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Games/RobotFindsKitten/.icon.png b/app/examples/Games/RobotFindsKitten/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..22619f882e95662d476a4c1fc66c62e6b446aed6 GIT binary patch literal 4141 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 literal 0 HcmV?d00001 diff --git a/app/examples/Games/RobotFindsKitten/.lang/ca.po b/app/examples/Games/RobotFindsKitten/.lang/ca.po new file mode 100644 index 00000000..e1325016 --- /dev/null +++ b/app/examples/Games/RobotFindsKitten/.lang/ca.po @@ -0,0 +1,40 @@ +# Catalan translation of RobotFindsKitten +# Copyright (C) 2000-2010 Benoît Minisini. +# This file is distributed under the same license as the RobotFindsKitten package. +# Jordi Sayol , 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: RobotFindsKitten\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2011-03-20 21:58+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: .project:1 +msgid "gambrfk" +msgstr "-" + +#: Frfk.class:180 +msgid "You found kitten! Way to go, robot!" +msgstr "Heu trobat el gatet! Ben fet robot!" + +#: Frfk.class:203 +msgid "robotfindskitten" +msgstr "robottrobaelgatet" + +#: Frfk.class:211 +msgid "Esc" +msgstr "Esc" + +#: Frfk.class:231 +msgid "In this game, you are robot (#). Your job is to find kitten. This task is complicated by the existence of various things which are not kitten. Robot must touch items to determine if they are kitten or not. The game ends when robot finds kitten. Alternatively, you may end the game by hitting the Esc key.\n" +msgstr "En aquest joc, sou el robot (#). La vostra missió es trobar el gatet. Aquesta tasca es complica per l'existència de diverses coses que no son el gatet. El robot ha de tocar les coses per determinar si son el gatet o no. El joc acaba quan el robot troba el gatet. També podeu acabar el joc tot prement la tecla Esc.\n" + diff --git a/app/examples/Games/RobotFindsKitten/.lang/cs.po b/app/examples/Games/RobotFindsKitten/.lang/cs.po new file mode 100644 index 00000000..12cbca63 --- /dev/null +++ b/app/examples/Games/RobotFindsKitten/.lang/cs.po @@ -0,0 +1,32 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "gambrfk" +msgstr "-" + +#: Frfk.class:180 +msgid "You found kitten! Way to go, robot!" +msgstr "NaÅ¡el jsi kočku! Jdi do cesty, robot!" + +#: Frfk.form:13 +msgid "robotfindskitten" +msgstr "-" + +#: Frfk.form:21 +msgid "Esc" +msgstr "-" + +#: Frfk.form:40 +msgid "In this game, you are robot (#). Your job is to find kitten. This task is complicated by the existence of various things which are not kitten. Robot must touch items to determine if they are kitten or not. The game ends when robot finds kitten. Alternatively, you may end the game by hitting the Esc key.\n" +msgstr "V této hře, jsi robot (#). Vaším úkolem je najít kotě. Tato úloha je komplikována existencí různých věcí, které nejsou kotě. Robot se musí dotknout položek k určení, jsou-li kotě nebo ne. Hra končí, když zjistí, kotě robot. Alternativně můžete hru ukončit a stisknouttlačítko Esc.\n" diff --git a/app/examples/Games/RobotFindsKitten/.lang/de.po b/app/examples/Games/RobotFindsKitten/.lang/de.po new file mode 100644 index 00000000..2acb6415 --- /dev/null +++ b/app/examples/Games/RobotFindsKitten/.lang/de.po @@ -0,0 +1,32 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "gambrfk" +msgstr "-" + +#: Frfk.class:180 +msgid "You found kitten! Way to go, robot!" +msgstr "Du hast das Kätzchen gefunden. Gut gemacht, Roboter!" + +#: Frfk.form:13 +msgid "robotfindskitten" +msgstr "-" + +#: Frfk.form:21 +msgid "Esc" +msgstr "-" + +#: Frfk.form:40 +msgid "In this game, you are robot (#). Your job is to find kitten. This task is complicated by the existence of various things which are not kitten. Robot must touch items to determine if they are kitten or not. The game ends when robot finds kitten. Alternatively, you may end the game by hitting the Esc key.\n" +msgstr "In diesem Spiel bist du ein Roboter (#). Deine Aufgabe ist es, das Kätzchen zu finden. Das ist kompliziert, weil verschiedene Dinge existieren, die kein Kätzchen sind. Du musst die Dinge berühren, um zu bestimmen, ob sie das Kätzchen sind oder nicht. Das Spiel endet, wenn der Roboter das Kätzchen gefunden hat. Alternativ kannst du das Spiel mit der ESC-Taste beenden.\n" diff --git a/app/examples/Games/RobotFindsKitten/.lang/es.po b/app/examples/Games/RobotFindsKitten/.lang/es.po new file mode 100644 index 00000000..463341c0 --- /dev/null +++ b/app/examples/Games/RobotFindsKitten/.lang/es.po @@ -0,0 +1,28 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: Frfk.class:220 +msgid "Esc" +msgstr "Esc" + +#: .project:1 +msgid "gambrfk" +msgstr "gambrfk" + +#: Frfk.class:211 +msgid "In this game, you are robot (#). Your job is to find kitten. This task is complicated by the existence of various things which are not kitten. Robot must touch items to determine if they are kitten or not. The game ends when robotfindskitten. Alternatively, you may end the game by hitting the Esc key.\n" +msgstr "En este juego, usted es robot (#). Su trabajo es encontrar a Kitten. Esta tarea es complicada por la existencia de varias cosas que no son Kitten. Robot debe tocar las cosas para determinar si son Kitten o no. El juego finaliza cuando Robot encuentra a Kitten. Alternativamente usted puede terminar el juego presionando la tecla Esc.\n" + +#: Frfk.class:204 +msgid "robotfindskitten" +msgstr "robotfindskitten" + diff --git a/app/examples/Games/RobotFindsKitten/.lang/ru.po b/app/examples/Games/RobotFindsKitten/.lang/ru.po new file mode 100644 index 00000000..7a3bd023 --- /dev/null +++ b/app/examples/Games/RobotFindsKitten/.lang/ru.po @@ -0,0 +1,50 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-28 09:00+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Games/RobotFindsKitten/.project:19 +msgid "RobotFindsKitten" +msgstr "Робот ищет котёнка" + +#: app/examples/Games/RobotFindsKitten/.project:20 +msgid "Your job is to find kitten" +msgstr "Ваша задача найти котёнка" + +#: app/examples/Games/RobotFindsKitten/.src/Frfk.class:187 +msgid "You found kitten! Way to go, robot!" +msgstr "Вы нашли котёнка! Молодец, робот!" + +#: app/examples/Games/RobotFindsKitten/.src/Frfk.form:7 +msgid "robotfindskitten" +msgstr "Робот ищет котёнка" + +#: app/examples/Games/RobotFindsKitten/.src/Frfk.form:14 +msgid "Esc" +msgstr "Esc" + +#: app/examples/Games/RobotFindsKitten/.src/Frfk.form:30 +msgid "In this game, you are robot (#). Your job is to find kitten. This task is complicated by the existence of various things which are not kitten. Robot must touch items to determine if they are kitten or not. The game ends when robot finds kitten. Alternatively, you may end the game by hitting the Esc key.\n" +msgstr "В этой игре вы робот (#). Ваша задача найти котёнка. Эта задача усложняется наличием различных вещей, которые не являются котятами. Робот должен коснуться предметов, чтобы определить, котёнок они или нет. Игра заканчивается, когда робот находит котёнка. Кроме того, вы можете закончить игру, нажав клавишу Esc.\n" + diff --git a/app/examples/Games/RobotFindsKitten/.project b/app/examples/Games/RobotFindsKitten/.project new file mode 100644 index 00000000..0e3dd113 --- /dev/null +++ b/app/examples/Games/RobotFindsKitten/.project @@ -0,0 +1,18 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.0.0 +Title=RobotFindsKitten +Description="Your job is to find kitten" +Startup=Frfk +Icon=heart.png +Version=3.6.2 +VersionFile=1 +Component=gb.image +Component=gb.gui +TabSize=2 +Translate=1 +Language=fr +ExecPath=/home/benoit/gambas/gambas.link/share/gambas/examples/Games/RobotFindsKitten/RobotFindsKitten +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence diff --git a/app/examples/Games/RobotFindsKitten/.src/Frfk.class b/app/examples/Games/RobotFindsKitten/.src/Frfk.class new file mode 100644 index 00000000..fb90f90e --- /dev/null +++ b/app/examples/Games/RobotFindsKitten/.src/Frfk.class @@ -0,0 +1,193 @@ +' Gambas class file + +Public NKIs As Object[] +Public Robot As Object +Public OrigHeight As Integer +Public OrigWidth As Integer +Public OrigFontSize As Integer +Public KittenIsFound As Boolean +Public NumNKIs As Integer +Public KittenIndex As Integer + +Public Sub Timer1_Timer() + + Dim middle As Float + Dim kitten As Object + + Try TextLabel1.setfocus() + If kittenisfound Then + kitten = nkis[kittenindex] + middle = CFloat(kitten.x + robot.x) / 2 + robot.x = robot.x + Round(CFloat(middle - 8 - robot.x) / 2) + kitten.x = kitten.x + Round(CFloat(middle + 8 - kitten.x) / 2) + End If +End + +Public Sub Form_KeyPress() + + Dim i As Integer + + If Key.Code = Key.Escape Then Esc_Click + If kittenisfound Then Return + + Select Case Key.Code + Case Key.Up + For i = 0 To nkis.count - 1 + If Abs(robot.y - (nkis[i].y + nkis[i].height)) < 4 And Abs(robot.x - nkis[i].x) < 4 Then + Textlabel1.text = nkis[i].tag + If nkis[i].tag = "kitten" Then FoundKitten(i) + Return + Endif + Next + If robot.y - robot.height >= Textlabel1.height Then + robot.y = robot.y - robot.height + Endif + Case Key.Down + For i = 0 To nkis.count - 1 + If Abs(robot.y + robot.height - nkis[i].y) < 4 And Abs(robot.x - nkis[i].x) < 4 Then + TextLabel1.text = nkis[i].tag + If nkis[i].tag = "kitten" Then FoundKitten(i) + Return + Endif + Next + If robot.y + robot.height + robot.height < Me.clientheight Then + robot.y = robot.y + robot.height + Endif + Case Key.Left + For i = 0 To nkis.count - 1 + If Abs(robot.x - (nkis[i].x + nkis[i].width)) < 4 And Abs(robot.y - nkis[i].y) < 4 Then + TextLabel1.text = nkis[i].tag + If nkis[i].tag = "kitten" Then FoundKitten(i) + Return + Endif + Next + If robot.x - robot.width >= 0 Then + robot.x = robot.x - robot.width + Endif + Case Key.Right + For i = 0 To nkis.count - 1 + If Abs(robot.x + robot.width - nkis[i].x) < 4 And Abs(robot.y - nkis[i].y) < 4 Then + TextLabel1.text = nkis[i].tag + If nkis[i].tag = "kitten" Then FoundKitten(i) + Return + Endif + Next + If robot.x + robot.width + robot.width < Me.clientwidth Then + robot.x = robot.x + robot.width + Endif + End Select + +End + +Public Sub Esc_Click() + + Me.close + +End + + +Public Sub Form_Open() + + Dim tmp As Label + Dim i As Integer + Dim nkistring As String + Dim nkitext As String[] + NKIs = New Object[] + nkitext = New String[] + Dim sLanguage As String + + Randomize + origheight = Me.height + origwidth = Me.width + origfontsize = 12 + sLanguage = Left$(System.Language, 2) + Try nkistring = File.load("nkis_" & sLanguage & ".txt") + If Error Then + Try nkistring = File.load("nkis.txt") + Endif + + nkitext = Split(nkistring, "\n") + KittenisFound = False + numnkis = 20 + + For i = 1 To NumNKIs + tmp = New Label(Me) + tmp.x = Int(Rnd(0, Me.width / 16)) * 16 + tmp.y = Int(Rnd(5, Me.height / 16)) * 16 + tmp.AutoResize = False + tmp.width = 16 + tmp.height = 16 + tmp.font.size = 12 + tmp.Foreground = Int(Rnd(32, 255)) * 65536 + Int(Rnd(32, 255)) * 256 + Int(Rnd(32, 255)) + tmp.alignment = Align.center + tmp.text = "#" + Do While tmp.text = "#" + tmp.text = Chr(Rnd(33, 126)) + Loop + tmp.tag = nkitext[Int(Rnd(0, nkitext.count))] + NKIs.add(tmp) + Next + nkis[nkis.count - 1].tag = "kitten" + robot = New Label(Me) + robot.x = 192 + robot.y = 192 + robot.AutoResize = False + robot.height = 16 + robot.width = 16 + robot.font.size = 12 + robot.Background = Color.white + robot.Foreground = Color.black + robot.alignment = Align.center + robot.text = "#" + + +End + +Public Sub Form_Resize() + + Dim scalex As Float + Dim scaley As Float + Dim i As Integer + + 'STOP + scalex = CFloat(Me.width) / origwidth + scaley = CFloat(Me.height) / origheight + If nkis.count < NumNKIs Then Return + For i = 0 To nkis.count - 1 + NKIs[i].x = NKIs[i].x * scalex + NKIs[i].y = NKIs[i].y * scaley + NKIs[i].width = Round(NKIs[i].width * scalex) + NKIs[i].height = Round(NKIs[i].height * scaley) + If nkis[i].y < TextLabel1.height Then nkis[i].y = Round(TextLabel1.height / nkis[i].height) * nkis[i].height + NKIs[i].font.size = Round(NKIs[i].font.size * scaley) + Next + robot.x = robot.x * scalex + robot.y = robot.y * scaley + robot.width = Round(robot.width * scalex) + robot.height = Round(robot.height * scaley) + robot.font.size = Round(robot.font.size * scaley) + origwidth = Me.width + origheight = Me.height + +End + +Sub FoundKitten(nki As Integer) + + Dim i As Integer + For i = 0 To nkis.count - 1 + If i <> nki Then + nkis[i].visible = False + nkis[i].x = Me.width + 100 + nkis[i].y = Me.height + 100 + Endif + Next + heart.visible = True + KittenIsFound = True + kittenindex = nki + TextLabel1.text = ("You found kitten! Way to go, robot!") + nkis[nki].y = heart.y + heart.height + robot.y = heart.y + heart.height + robot.x = heart.x - robot.width + nkis[nki].x = heart.x + heart.width + +End diff --git a/app/examples/Games/RobotFindsKitten/.src/Frfk.form b/app/examples/Games/RobotFindsKitten/.src/Frfk.form new file mode 100644 index 00000000..8246f54f --- /dev/null +++ b/app/examples/Games/RobotFindsKitten/.src/Frfk.form @@ -0,0 +1,32 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(25.1429,22.5714,110,79) + Background = &H000000& + Foreground = &HFFFFFF& + Text = ("robotfindskitten") + Resizable = False + { Esc Button + MoveScaled(102,1,7,5) + Visible = False + Background = &H000000& + Foreground = &HFFFFFF& + Text = ("Esc") + Border = False + Cancel = True + } + { Timer1 #Timer + Enabled = True + Delay = 200 + } + { Heart PictureBox + MoveScaled(40,20,29.1429,24) + Visible = False + Foreground = &HFFFFFF& + Picture = Picture["heart.png"] + } + { TextLabel1 TextLabel + MoveScaled(1,1,100,10) + Text = ("In this game, you are robot (#). Your job is to find kitten. This task is complicated by the existence of various things which are not kitten. Robot must touch items to determine if they are kitten or not. The game ends when robot finds kitten. Alternatively, you may end the game by hitting the Esc key.\n") + } +} diff --git a/app/examples/Games/RobotFindsKitten/COPYING b/app/examples/Games/RobotFindsKitten/COPYING new file mode 100644 index 00000000..d60c31a9 --- /dev/null +++ b/app/examples/Games/RobotFindsKitten/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/app/examples/Games/RobotFindsKitten/heart.png b/app/examples/Games/RobotFindsKitten/heart.png new file mode 100644 index 0000000000000000000000000000000000000000..80a25fecc65eb6b55acfd0f06dbe059898e11113 GIT binary patch literal 9149 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 Hu0mjf?sI`2 literal 0 HcmV?d00001 diff --git a/app/examples/Games/RobotFindsKitten/nkis.txt b/app/examples/Games/RobotFindsKitten/nkis.txt new file mode 100644 index 00000000..743506b4 --- /dev/null +++ b/app/examples/Games/RobotFindsKitten/nkis.txt @@ -0,0 +1,622 @@ +"201 Kitten Verbs, Fully Conjugated". You look for "find". +"50 Years Among the Non-Kitten Items", by Ann Droyd. +99 bottles of beer are on a wall here. +A 100 meter long chain of jumbo paper clips. +A 256 kilobyte write-only memory chip. +A 3-inch floppy disk. +A 3-sided Monty Python record. +A 540Hz tuning fork. +A baboon with a bassoon hoots angrily at you. +A badly dented high-hat cymbal lies on its side here. +A bag of groceries taken off the shelf before the expiration date. +A ball of pocket fluff. +A ball of yarn. +A big bass drum bearing a hole and suspicious clawmarks. +A big chunk of frozen chocolate pudding. +A bitchin' homemade tesla coil. +A blank deposit slip. +A bobolink is twittering a happy tune here. +A book: Feng Shui, Zen: the art of randomly arranging items that are not kitten. +A book with "Don't Panic" in large friendly letters across the cover. +A bottle of distilled water. +A bottle of hair tonic. +A bottle of oil! Refreshing! +A bottle of smelling salts. +A bowling ball with the name "Bob" inscribed on it. +A bowl of cherries. +A box of brand-new nixie tubes. +A box of dancing mechanical pencils. They dance! They sing! +A box of fumigation pellets. +A brain cell. Oddly enough, it seems to be functioning. +A breadbox. Nope, Kitten isn't in the breadbox. +A briefcase filled with spy stuff. +A broken metronome sits here, it's needle off to one side. +A Buttertonsils bar. +A caboodle. +A canister of pressurized whipped cream, sans whipped cream. +A can of Spam Lite. +A card shark sits here, practicing his Faro shuffle. He ignores you. +A card sharp sits here, practicing his Faro shuffle. He ignores you. +A chain hanging from two posts reminds you of the Gateway Arch. +A cluster of cattails are growing here. +A coat hanger hovers in thin air. Odd. +A cockatoo shrieks at you. +A compendium of haiku about metals. +A copy of DeCSS. They're a dime a dozen these days. +A copy of the Weekly World News. Watch out for the chambered nautilus! +A coupon for one free steak-fish at your local family diner. +A crouton. +A crowd of people, and at the center, a popular misconception. +A crystal ball. It doesn't seem to know where Kitten is. +A cyclops glowers angrily at you. +A dangly thing mangled by Kitten. +A dark-emitting diode. +"Address Allocation for Private Internets" by Yakov Rekhter et al. +A demonic voice proclaims "There is no kitten, only Zuul". You flee. +A digital clock. It's stuck at 2:17 PM. +A discarded bagpipe chanter reed. +A discarded pop bottle. +A discarded refrigerator box. Nope, Kitten isn't in the box. +A discredited cosmology, relic of a bygone era. +A dodecahedron bars your way. +A dumpster full of hair. +A family of integrals are here integrating. +A flamboyant feather boa. Now you can dress up like Carol Channing! +A flyer advertising a sale at Spatula City. +A flyer reads, "Please donate hydraulic fluid" +A forgotten telephone switchboard. +A forgotten telephone switchboard operator. +A freshly-baked pumpkin pie. +A frosted pink party-cake, half eaten. +A "Get Out of Jail Free" card. +A geyser sprays water high into the air. +A glorious fan of peacock feathers. +A gravestone stands here. "Izchak Miller, ascended." +A green yo-yo. +A grin. +A haircut and a real job. Now you know where to get one! +A hairless rat. +A half-eaten cheese sandwich. +A hammock stretched between a tree and a volleyball pole. +A hedgehog. It looks like it knows something important. +A helicopter has crashed here. +A herd of wild coffee mugs slumber here. +A herd of wild coffee mugs slumbers here. +A historical marker showing the actual location of /dev/null. +A hollow voice says "Fool." +A hollow voice says "Plugh". +Ah, the skirl of the pipes and the rustle of the silicon... +Ah, the uniform of a Revolutionary-era minuteman. +Air. +Air Guitar!!! NA na NA na!! +A jar of dehydrated water. +A jar of library paste. +A jar of Vegemite is playing hopscotch here. +A ketchup bottle (nearly empty). +A kitten sink, for washing kitten (if only kitten liked water). +A kitten source (to match the kitten sink). +A knight who says "Either I am an insane knave, or you will find kitten." +A large blue eye floats in midair. +A large pile of rubber bands. +A large snake bars your way. +A largish bath towel. +A leather pouch filled with multisided dice. +Alien underwear. +A little glass tub of Carmex. ($.89) Too bad you have no lips. +A livery stable! Get your livery! +A lone, forgotten comma, sits here, sobbing. +A lotus. You make an interesting pair. +A magical... magic thing. +A marijuana brownie. +A mason jar lies here open. It's label reads: "do not open!". +A mathematician calculates the halting probability of a Turing machine. +A meerkat... not even close. +A Mentos wrapper. +A mere collection of pixels. +A milk carton, with a black and white picture of kitten on the side. +A mouse. +An 80286 machine. +An abandoned used-car lot. +An AK-47 rifle. +An AK-97 rifle. +An animate blob of acid. Being metallic, you keep well away. +An aromatherapy candle burns with healing light. +An atomic vector plotter. +An autographed copy of "Primary Colors", by Anonymous. +An automated robot-doubter. It doesn't believe in you. +An automated robot-hater. It frowns disapprovingly at you. +An automated robot-liker. It smiles at you. +An eminently forgettable zahir. +An empty Altoids tin. +An empty coaxial cable spool. +An empty Penguin Mints tin. +An empty shopping bag. Paper or plastic? +An Enfield Mk3 rifle. +A neural net -- maybe it's trying to recognize kitten. +An expired transistor. +An FN-FAL rifle. +An ice cube. +An incredibly expensive "Mad About You" collector plate. +An M16 rifle. +An M1911A1 pistol. +An M9 pistol. +An old bootable business card, unfortunately cracked down the middle. +An old pattern is here going on and on. +An old rusty revolver. +A non-descript box of crackers. +Another rabbit? That's three today! +An oven mitt with kittens on it. +An overflowing bit bucket. +An overturned bottle of ink and lots of kitten pawprints. +A number of short theatrical productions are indexed 1, 2, 3, ... n. +An unlicensed nuclear accelerator. +Any ordinary robot could see from a mile away that this wasn't kitten. +A packet of catnip. +A packet of pipe cleaners. +A pair of combat boots. +A pair of saloon-style doors swing slowly back and forth here. +A paper shopping bag. Nope, Kitten isn't in the bag. +A parrot, kipping on its back. +A patch from the Mammoth Caves. +A patch of grape jelly grows here. +A patch of mushrooms grows here. +A pile of coaxial plumbing lies here. +A pile of coconuts. +A pink plastic watering can. +A piping-hot pizza. Useless. +A pizza, melting in the sun. +A plastic model of Kitten. +A plush Chewbacca. +Apparently, it's Edmund Burke. +Approaching. One car. J. Followed by. Two car. M, M. In five. Minutes. +A puddle of chocolate sauce. +A puddle of mud, where the mudskippers play. +A punch bowl, filled with punch and lemon slices. +A radio hisses away. Kitten must have been here. +A rancid corn dog. +A Remington 870 shotgun. +A robot comedian. You feel amused. +A rusty melon-baller. +A rusty slinky. It was such a wonderful toy! +A sack of doorknobs. +A sack of hammers. +A sack of wet mice. +A salmon hatchery? Look again. It's merely a single salmon. +A Sanrio catalog. +A scrap of parchment bears the single word, "meow". +A scratching-post. +A screwdriver. +A section of glowing phosphor cells sings a song of radiation to you. +A set of keys to a 2001 Rolls Royce. Worthless. +A shameless plug for Crummy: http://www.crummy.com/ +A shameless plug for Frotz: http://www.cs.csubak.edu/@@126dgriffi/proj/frotz/ +A shameless plug for the UCLA Linux Users Group: http://linux.ucla.edu/ +Ash is mumbling "KLAATU BARATA NI" here. +A signpost saying "TO KITTEN". It points in no particular direction. +A sign reads "Don't step on the Mome Raths". +A sign reads: "Go home!" +A sign reads: "No robots allowed!" +A singing frog. Useless. +A slightly-used smellovision set. +A smoking branding iron shaped like a 24-pin connector. +A spindle, and a grindle, and a bucka-wacka-woom! +A stack of 7 inch floppies wobbles precariously. +A statue of a girl holding a goose like the one in Gottingen, Germany. +A steam-powered bunnytron. +A stegosaurus, escaped from the stegosaurusfindsrobot game. It finds you. +A sub-atomic particle languishes here all alone. +A Swiss-Army knife. All of its appendages are out. (toothpick lost) +A team of arctic explorers is camped here. +A technical university in Australia. +A tetradrachm dated "42 B.C." +A Texas Instruments of Destruction calculator. +A tiny ceramic Kitten. It's probably not the Kitten you're looking for. +A toenail? What good is a toenail? +A toilet bowl occupies this space. +A ton of feathers. +A traffic signal. It appears to have been recently vandalized. +A train of thought chugs through here. +A trash compactor, compacting away. +A travel-sized cyclotron. +A tree with some jelly nailed to it. +A tribe of cannibals lives here. They eat Malt-O-Meal for breakfast, you know. +A troll. Ewww!!! +A tube of toothpaste. Too bad you have no teeth. +A tube of white lithium grease. Perfect for your robotic joints. +A tuft of kitten fur, but no kitten. +A vase full of artificial flowers is stuck to the floor here. +A vase of roses. +A voice booms out "Onward, kitten soldiers..." +A willing, ripe tomato bemoans your inability to digest fruit. +A wireframe model of a hot dog rotates in space here. +A wondrous and intricate golden amulet. Too bad you have no neck. +A zorkmid coin. +Baling wire and chewing gum. +Bibbidy bibbidy bibbidy bibbidy bibbidy bibbidy... +Big Bird is here looking for Mr. Looper. +Billions and billions of things that aren't Kitten. +Biscuits. +"Blup, blup, blup", says the mud pot. +Bright copper kettles. +BURRRRP!!!! Flavorful and full of protein! +Butane!!! +Carbonated Water, High Fructose Corn Syrup, Color, Phosphoric Acid, Flavors, Caffeine. +Carlos Tarango stands here, doing his best impression of Pat Smear. +Catsup and Mustard all over the place! It's the Human Hamburger! +Chewing gum and baling wire. +Clang, clang, clang goes the tranny! +Clifford Stoll is here selling Klein bottles. +Conan O'Brian, sans jawbone. +Could it be... a big ugly bowling trophy? +Daily hunger conditioner from Australasia +Dancing cold water pipes. Mikey must have been here. +Darth Vader is here looking for his Teddywookie. +"Dear robot, you may have already won our 10 MILLION DOLLAR prize..." +Definitely not Kitten. +Dinsdale! +Diogenes is here demanding whisky. +Dirty socks. +"Dogbert's tech support, how may I abuse you?" +Doodles Weaver is here looking over a horse race schedule. +Ed McMahon stands here, lost in thought. Seeing you, he bellows, "YES SIR!" +Ed Witten sits here, pondering string theory. +Empty jewelboxes litter the landscape. +Faboo! +Fonzie sits here, mumbling incoherently about a shark and a pair of waterskis. +For a moment, you feel something in your hands, but it disappears! +Free Dmitry Sklyarov! +Free Jon Johansen! +Gibble, Gobble, we ACCEPT YOU ... +"Go back to Libraria!", says Pat Schroeder. +Grind 'em up, spit 'em out, they're twigs. +Heart of Darkness brand pistachio nuts. +Heeeeeeeeeeeeres Johnny! +Hello, nurse! +Hello, sailor! +Here is a book about Robert Kennedy. +Here is no kitten but only rock, rock and no kitten and the sandy road. +Here's Cal Worthington and his dog "Spot"! +Here's Pete Peterson. His batteries seem to have long gone dead. +Hey, I bet you thought this was kitten. +Hey, look, it's war. What is it good for? Absolutely nothing. Say it again. +Hey, robot, leave those lists alone. +"Hi, I'm Anson Williams, TV's 'Potsy'." +Ho hum. Another synthetic a posteriori. +"How in heck can I wash my neck if it ain't gonna rain no more?" asks Farmer Al. +Hydraulic fluid and jagged metal bits. You recoil from the scene of carnage. +I don't know what that is, but it's not kitten. +If it's not one thing, it's another. +If it's one thing, it's not another. +"I pity the fool who mistakes me for kitten!", sez Mr. T. +Is that an elephant's head or a winged sandal? +It is a cloud shaped like an ox. +It is a marzipan dreadnought that appears to have melted and stuck. +It is an ancient mariner, and he stoppeth one of three. +It is a set of wind-up chatter teeth. +It is -- I just feel something wonderful is about to happen. +It pleases you to be kind to what appears to be kitten -- but it's not! +It's 1000 secrets the government doesn't want you to know! +It's a banana! Oh, joy! +It's a big block of ice. Something seems to be frozen inside it. +It's a big smoking fish. +It's a black hole. Don't fall in! +It's a blatant plug for Ogg Vorbis, http://www.vorbis.com/ +It's a blind man. When you touch, he exclaims "It's a kitten prospecting robot!" +It's a blob of white goo. +It's a bottle of nail polish remover. +It's a bug. +It's a burrito stand flyer. "Taqueria El Ranchito". +It's a business plan for a new startup, kitten.net. +It's a cardboard box full of 8-tracks. +It's a Cat 5 cable. +It's a catalog from some company called Infocom. +It's a charcoal briquette, smoking away. +It's a clue! +It's a cookie shaped like a kitten. +It's a copy of Knuth with the chapter on kitten-search algorithms torn out. +It's a copy of the robotfindskitten EULA. +It's a copy of "The Rubaiyat of Spike Schudy". +It's a copy of "Zen and The Art of Robot Maintenance". +It's a dark, amphorous blob of matter. +It's a DVD of "Crouching Monkey, Hidden Kitten", region encoded for the moon. +It's a Dvorak keyboard. +It's a fly on the wall. Hi, fly! +It's a free beer cozy (with your paid subscription.) +It's a free Dmitry Sklyarov! +It's a free Jon Johansen! +It's a funky beat! +It's a giant slorr! +It's a gun of some sort. +It's a hologram of a crashed helicopter. +It's a "HOME ALONE 2: Lost in New York" novelty cup. +It's a hundred-dollar bill. +It's a Java applet. +It's a limbo bar! How low can you go? +It's a Linux install CD. +IT'S ALIVE! AH HA HA HA HA! +It's all a dream. +It's a lost wallet. It's owner didn't have pets, so you discard it. +It's a mighty zombie talking about some love and prosperity. +It's a moment of silence. +It's a mousetrap, baited with soap. +It's an altar to the horse god. +It's an autographed copy of "Secondary Colors," by Bob Ross. +It's an autographed copy of "Secondary Colors", by Bob Ross. +It's an automated robot-disdainer. It pretends you're not there. +It's Andrew Plotkin plotting something. +It's a NetBSD install CD. +It's an Internet chain letter about sodium laureth sulfate. +It's an inverted billiard ball! +It's an old Duke Ellington record. +It's an ordinary bust of Beethoven... but why is it painted green? +It's another robot, more advanced in design than you but strangely immobile. +It's a perpetual immobility machine. +It's a piece of cloth used to cover a stage in between performances. +It's a pool with a straw in it. +It's a portable hole. A sign reads: "Closed for the winter". +It's a Quaker Oatmeal tube, converted into a drum. +It's a recursive recursive recursive recursive recursive... +It's a revised business plan for a new startup, my.kitten.net. +It's a rim shot. Ba-da-boom! +It's a roll of industrial-strength copper wire. +It's a rotten old shoe. +It's a segmentation fault. Core dumped, by the way. +It's a Shamrock Shake(tm). At least I hope it is. +It's Asimov's Laws of Robotics. You feel a strange affinity for them. +It's a solitary vaccuum tube. +It's a solitary vacuum tube. +It's a squad of Keystone Kops. +It's a square. +It's a stupid mask, fashioned after a beagle. +It's a symbol. You see in it a model for all symbols everywhere. +It's a synthetic a priori truth! Immanuel would be so pleased! +It's a tape of '70s rock. All original hits! All original artists! +It's a tribute to fishnet stockings. +It's a U.S. president. +It's a wonderful life. +It's a zen simulation, trapped within an ASCII character. +It's Babe Flathead's favorite bat. +It's Bach's Mass in B-minor! +It's Brian Kernigan. +It's "Chicken Soup for the Kitten-seeking Soulless Robot." +It's creepy and it's kooky, mysterious and spooky. It's also somewhat ooky. +It's cute like a kitten, but isn't a kitten. +It's Death. +It's Dennis Ritchie. +It seems to be a copy of "A Tail of Two Kitties". +It's either a mirror, or another soulless kitten-seeking robot. +It's Emporer Shaddam the 4th's planet! +It's "Finding kitten", published by O'Reilly and Associates. +It's Grundle, the Green Dragon. +It's just an object. +It's Kieran Hervold. Damn dyslexia! +It's KITT, the talking car. +It's Lucy Ricardo. "Aaaah, Ricky!", she says. +It's Mary Poppins! +It's nothing but a corrupted floppy. Coaster anyone? +It's nothing but a G-thang, baby. +It's nothing in particular. +It's Princess Leia, the yodel of life. +It's Professor Feedlebom. +It's Rhindle, the Red Dragon. +It's Richard Nixon's nose! +It's Roya Naini. +It's scenery for "Waiting for Godot". +It's Sirhan-Sirhan, looking guilty. +It's some compromising photos of Babar the Elephant. +It's the amazing self-referential thing that's not kitten. +It's the ASCII Floating Head of Seth David Schoen! +It's the astounding meta-object. +It's the author of "Randomness and Mathematical Proof". +It's the Bass-Matic '76! Mmm, that's good bass! +It's the constellation Pisces. +It's the cork to someone's lunch. +It's the crusty exoskeleton of an arthropod! +It's the Donation of Constantine! +It's the embalmed corpse of Vladimir Lenin. +It's the Golden Banana of Discord! +It's the handheld robotfindskitten game, by Tiger. +It's the horizon. Now THAT'S weird. +It's the instruction manual for a previous version of this game. +It's the local draft board. +It's the missing chapter to "A Clockwork Orange". +It's the phrase "and her", written in ancient Greek. +It's the proverbial wet blanket. +It's the Tiki Room. +It's the triangle leg adjacent to an angle divided by the leg opposite it. +It's the Will Rogers Highway. Who was Will Rogers, anyway? +It's this message, nothing more. +It's TV's lovable wisecracking Crow! "Bite me!", he says. +It's Uncle Doctor Hurkamur! +It's "War and Peace" (unabridged, very small print). +It's Yorgle, the Yellow Dragon. +It's your favorite game -- robotfindscatan! +Judith Platt insults librarians. +Just a big brick wall. +Just a box of backscratchers. +Just a broken hard drive containg the archives of Nerth Pork. +Just a cage of white mice. +Just a man selling an albatross. +Just a moldy loaf of bread. +Just a monitor with the blue element burnt out. +Just an autographed copy of the Kama Sutra. +Just a pincushion. +Just some glop of some sort. +Just some old play by a Czech playwright, and you can't read Czech. +Just some stuff. +Just some swamp gas. +Just the empty husk of a locust. +Just Walter Mattheau and Jack Lemmon. +"Kibo was here" +"Kilroy was here" +Kitten is the letter 'Q'. Oh, wait, maybe not. +"Lend us a fiver 'til Thursday", pleas Andy Capp. +Leonard Richardson is here, asking people to lick him. +Long lost needle nose pliers. +Look at that, it's the Crudmobile. +Look, it's Fanny the Irishman! +Look out! Exclamation points! +Lysine, an essential amino acid. Well, maybe not for robots. +"Mail Routing and the Domain System" by Craig Partridge. +Marvin is complaining about the pain in the diodes down his left side. +"Meow meow meow meow..." How discouraging! It's only a recording. +More grist for the mill. +"Move along! Nothing to see here!" +Mr. Hooper is here, surfing. +Mr. Kamikaze and Mr. DNA are here drinking tea. +Ne'er but a potted plant. +Nipples, dimples, knuckles, NICKLES, wrinkles, pimples!! +No kitten here. +"No!" says the bit. +Not kitten, just a packet of Kool-Aid(tm). +Oh boy! Grub! Er, grubs. +ONE HUNDRED THOUSAND CARPET FIBERS!!!!! +One of the few remaining discoes. +One of those stupid "Homes of the Stars" maps. +One person shouts "What do we want?" The crowd answers "Free Dmitry!" +"On this spot in 1962, Henry Winkler was sick." +Ooh, shiny! +Paul Moyer's necktie. +Plenty of nothing. +"Plexar was here" +Preoccupation with finding kitten prevents you from investigating further. +Pumpkin pie spice. +Quidquid Latine dictum sit, kitten non est. +Rene Descarte is whistling a happy tune here. +"Robot may not injure kitten, or, through inaction, ..." +Robot should not be touching that. +Roger Avery, persona un famoso de los Estados Unidos. +Run away! Run away! +Seargent Duffy is here. +Seven 1/4" screws and a piece of plastic. +Several meters of cat5 cable. +Sigmund Freud is here asking about your mother. +Slack! +Snarf? +Some coconut crabs are milling about here. +Someone has written "ad aerarium" on the ground here. +Someone is talking to Ralph on the big white phone here. +Someone's identity disk lies here. +Some sort of electronic handheld game from the 1970s. +Something is written here in the dust. You read: "rJbotfndQkttten". +So, THAT's what an invisible barrier looks like! +Spoon!!! +Stimutacs. +"Sure hope we get some rain soon," says Farmer Joe. +Sutro Tower is visible at some distance through the fog. +Talcum powder. +Tea and/or crumpets. +Ten yards of avocado-green shag carpet. +Thar's Mobius Dick, the convoluted whale. Arrr! +That's just a charred human corpse. +That's just an old tin can. +The boom box cranks out an old Ethel Merman tune. +The Digital Millennium Copyright Act of 1998. +The dirty old tramp bemoans the loss of his harmonica. +The ghost of your dance instructor, his face a paper-white mask of evil. +The Inform Designer's Manual (4th edition) +The intermission from a 1930s silent movie. +The ionosphere seems charged with meaning. +The letters O and R. +The Monolith of Spam towers above you. +The non-kitten item bites! +The non-kitten item like this but with "false" and "true" switched is true. +The non-kitten item like this but with "true" and "false" switched is false. +The object pushes back at you. +There is an opulent throne here. +"There is no kitten!" cackles the old crone. You are shocked by her blasphemy. +There is no tea here. +There's nothing here; it's just an optical illusion. +The rothe hits! The rothe hits! +The score for a Czech composer's "Kitten-Finding Symphony in C". +These aren't ordinary beans. They're magic beans! +The spectre of Sherlock Holmes wills you onwards. +The swampy ground around you seems to stink with disease. +"The Theory and Practice of Oligarchical Collectivism" by Emmanuel Goldstein. +The United States Court of Appeals for the Federal Circuit. +The World's Biggest Motzah Ball! +The world's largest ball of pocket lint. +...thingy??? +This appears to be a rather large stack of trashy romance novels. +This appears to be a statue of Perseus. +This balogna has a first name, it's R-A-N-C-I-D. +This copy of "Steal This Book" has been stolen from a bookstore. +This corroded robot is clutching a mitten. +This grain elevator towers high above you. +This invisible box contains a pantomime horse. +This is a Lagrange point. Don't come too close now. +This is a large brown bear. Oddly enough, it's currently peeing in the woods. +This is an anagram. +This is another fine mess you've gotten us into, Stanley. +This is a porcelain kitten-counter. 0, 0, 0, 0, 0... +This is a remote control. Being a robot, you keep a wide berth. +This is a tasty-looking banana creme pie. +This is a television. On screen you see a robot strangely similar to yourself. +This isn't the item you're looking for. +This is the chapter called "A Map of the Cat?" from Feynman's autobiography. +This is the forest primeval. +This is the tenth key you've found so far. +This is the world-famous Chain of Jockstraps. +This jar of pickles expired in 1957. +This jukebox has nothing but Cliff Richards albums in it. +This kind of looks like kitten, but it's not. +This kit is the fourteenth in a series of kits named with Roman letters. +This looks like Bradley's "Appearance and Reality", but it's really not. +This map is not the territory. +This might be the fountain of youth, but you'll never know. +This non-kitten item no verb. +This nonkitten may contain peanuts. +This object here appears to be Louis Farrakhan's bow tie. +This object is like an analogy. +This particular monstrosity appears to be ENIAC. +This peg-leg is stuck in a knothole! +This place is called Antarctica. There is no kitten here. +This seems to be junk mail addressed to the finder of the Eye of Larn. +This smiling family is happy because they eat LARD. +This subwoofer was blown out in 1974. +This toaster strudel is riddled with bullet holes! +This tomography is like, hella axial, man! +This TRS-80 III is eerily silent. +This was no boating accident! +Three half-pennies and a wooden nickel. +Thunder, Thunder, Thunder, Thunder Cats!!! +Tigerbot Hesh. +"Topsoil's all gone, ma," weeps Lil' Greg. +TV says donuts are high in fat. +'Twas brillig in the slivey-toves... +Two crepes, two crepes in a box. +Vladimir Lenin's casket rests here. +Wait! This isn't the poker chip! You've been tricked! DAMN YOU, MENDEZ! +Werner's "Pocket Field Guide to Things That Are Not Kitten". +We wish you a merry kitten, and a happy New Year! +What in blazes is this? +What's that blue thing doing here? +Why are you touching this when you should be finding kitten? +YEEEEEEEEEEEHAAAAAAAA!!!!! +"Yes!" says the bit. +You can see right through this copy of Brin's "Transparent Society". +You disturb a murder of crows. +You feel strangely unfulfilled. +You find a bright shiny penny. +You find a fraud scheme in which loans are used as security for other loans. +You found Chinchilla! Too bad this isn't "Robot Finds Chinchilla". +You found kitten! No, just kidding. +You found netkit! Way to go, robot! +You found nettik, but that's backwards. +You found Parakeet. Too bad this isn't "Robot Finds Parakeet". +You found Puppy! Too bad this isn't "Robot Finds Puppy". +You found the marble in the oatmeal! +You have found some zinc, but you must not stop here, for you must find kitten. +You have new mail in /var/spool/robot +You hit the non-kitten item. The non-kitten item fails to yowl. +You really don't want to know what this is. +Your pal Floyd is here and wants to play Hucka-Bucka-Beanstalk. +Your State Farm Insurance(tm) representative! +You see a snowflake here, melting slowly. +You stumble upon Bill Gates' stand-up act. +You suddenly yearn for your distant homeland. +You've found Harvey, the Wonder Hamster! +You've found... Oh wait, that's just a cat. +You've found the fabled America Online disk graveyard! +You've found the fish! Not that it does you much good in this game. +You've found the snows of yesteryear! So that's where they all went to. diff --git a/app/examples/Games/RobotFindsKitten/nkis_ru.txt b/app/examples/Games/RobotFindsKitten/nkis_ru.txt new file mode 100644 index 00000000..6fe5f4db --- /dev/null +++ b/app/examples/Games/RobotFindsKitten/nkis_ru.txt @@ -0,0 +1,622 @@ +«201 глагол для котёнка, полностью спрягаемые». Вы ищете глагол «найти». +«50 лет среди предметов, не относящихся к котятам», Энн Дройд. +Здесь на стене 99 бутылок пива. +100-метровая цепь гигантских скрепок. +256-килобайтный чип памяти только для записи. +3-дюймовая дискета. +3-сторонняя запись Монти Пайтона. +Камертон 540 Гц. +Бабуин с фаготом сердито кричит на вас. +Здесь на боку лежит сильно помятая высокая цимбала. +Мешок с продуктами снят с полки до истечения срока годности. +Шарик из карманного пуха. +Клубок пряжи. +Большой бас-барабан с дыркой и подозрительными следами от когтей. +Большой кусок замороженного шоколадного пудинга. +Самодельная катушка Тесла. +Пустой депозитный чек. +Боболинк здесь щебечет счастливую мелодию. +Книга: Фен-шуй, Дзен: искусство случайного расположения предметов, которые не являются котятами. +Книга с надписью «Не паникуй» большими дружескими буквами на обложке. +Бутылка дистиллированной воды. +Бутылка с тоником для волос. +Бутылка масла! Освежающая! +Бутылка вонючих солей. +Шар для боулинга с надписью «Боб». +Ваза с вишнями. +Коробка с новыми трубками Никси. +Коробка с танцующими механическими карандашами. Они танцуют! Они поют! +Коробка фумигационных гранул. +Мозговая клетка. Как ни странно, она, кажется, функционирует. +Хлебница. Нет, котёнка нет в хлебнице. +Портфель со шпионскими штучками. +Сломанный метроном сидит здесь, он накренился в сторону. +Бар Маслянка. +Капуста. +Канистра взбитых сливок под давлением, без взбитых сливок. +Консервы тушёнки. +Здесь сидит карточная акула, тренирующая свои плавники. Она игнорирует вас. +Здесь сидит колдун, практикуя свою фаро-перетасовку. Он игнорирует вас. +Цепочка, висящая на двух столбах, напоминает вам арку ворот. +Заросли камышей растут здесь. +Вешалка парит в воздухе. Странно. +Какаду вопит на вас. +Сборник хайку о металлах. +Копия Мурзилки. В эти дни она стоит десять рублей. +Копия еженедельных мировых новостей. Остерегайтесь камерного наутилуса! +Купон на одну бесплатную стейк-рыбу в местном ресторане. +Сухарик. +Толпа людей, а в центре популист. +Хрустальный шар. Кажется, он не знает, где котёнок. +Циклоп сердито смотрит на вас. +Качающаяся вещь, изуродованная котёнком. +Тёмно-излучающий диод. +«Распределение адресов для домашнего Интернета» Якова Рехтера и соавторов. +Демонический голос провозглашает: «Нет котёнка, только Зуул». Вы бежите. +Цифровые часы. Они встали в 14:17. +Выброшенная волынка из певчего тростника. +Выброшенная разбитая бутылка. +Выброшенный холодильник. Нет, котёнка нет в нём. +Дискредитированная космология, пережиток ушедшей эпохи. +Додекаэдр преграждает вам путь. +Корзина, полная волос. +Семейство интегралов здесь интегрируется. +Яркая боа из перьев. Теперь вы можете одеваться как Филипп Киркоров! +Листовка, рекламирующая продажу в городе Париже. +Листовка гласит: «Пожалуйста, пожертвуйте гидравлическую жидкость» +Забытый телефонный коммутатор. +Забытый оператор телефонного коммутатора. +Свежеиспечённый тыквенный пирог. +Замороженое розовое праздничное пирожное, наполовину съеденное. +Карта «Выйти из тюрьмы свободным». +Гейзер распыляет воду высоко в воздух. +Славный поклонник перьев павлина. +Здесь стоит надгробие. «Вечная память». +Зелёный йо-йо. +Смайлик. +Машинка для стрижки волос. Теперь вы знаете, где её взять! +Безволосая крыса. +Недоеденный бутерброд с сыром. +Гамак растянулся между деревом и волейбольным шестом. +Ёжик. Похоже, он знает что-то важное. +Здесь разбился вертолёт. +Здесь дремлет стадо диких кофейных кружек. +Здесь притаилась дюжина одичавших кофейных кружек. +Исторический маркер, показывающий фактическое местоположение /dev/null. +Гулкий голос говорит: «Дурак». +Гулкий голос говорит «Паши». +Ах, юбка с волынками и шелест кремния... +Ах, мундир эпохи Революции. +Воздух. +Воображаемая гитара!!! Нету-нету-нетушки!!! +Баночка с дистиллированной водой. +Баночка с библиотечной пастой. +Баночка Вегемита играет здесь классики. +Бутылка кетчупа (почти пустая). +Раковина котёнка, для мытья котёнка (если только котёнку понравилась вода). +Туалет котёнка (рядом с раковиной котёнка). +Рыцарь, который говорит: «Или я безумный мошенник, или вы найдёте котёнка». +Большой голубой глаз плавает в воздухе. +Большая куча резинок. +Большая змея преграждает вам дорогу. +Огромное банное полотенце. +Кожаный чехол, наполненный многогранными кубиками. +Чужое нижнее бельё. +Маленькая стеклянная ванночка от бальзама для губ. Жаль, что у вас нет губ. +Костюм члена гильдии! Получи свой! +Одинокая, забытая запятая сидит здесь, рыдая. +Лотос. Вы образуете интересную пару. +Волшебная... преволшебная вещь. +Марихуана домового. +Здесь находится открытое варенье. На этикетке написано: «Не открывай!». +Математик вычисляет вероятность остановки машины Тьюринга. +Сурикат... даже не близко. +Обёртка от Ментос. +Простая коллекция пикселей. +Коробка с молоком, с чёрно-белым изображением котёнка сбоку. +Мышь. +Процессор 80286. +Заброшенная стоянка подержанных машин. +Винтовка АК-47. +Винтовка АК-97. +Живой шарик кислоты. Будучи металлическим, вы держитесь от него подальше. +Ароматерапевтическая свеча горит целительным светом. +Атомно-векторный плоттер. +Копия с автографом «Основные цвета», анонимный автор. +Автоматизированный робот-сомневающийся. Он не верит в вас. +Автоматизированный робот-ненавистник. Он неодобрительно смотрит на вас. +Автоматизированный робот-улыбашка. Он улыбается вам. +В высшей степени забытый Гоголь. +Пустая оловянная банка. +Пустая катушка коаксиального кабеля. +Пустая жестянка от мятной вкусняшки. +Пустая корзина. Бумага или пластик? +Винтовка Маузера. +Нейронная сеть - возможно, она пытается распознать котёнка. +Транзистор с истёкшим сроком годности. +Винтовка Генри. +Ледяной айсберг. +Невероятно дорогая коллекционная тарелка «Схожу по вам с ума». +Винтовка Шарпса. +Пистолет Макарова. +Пистолет Колибри. +Старая загрузочная дискета, к сожалению, сломанная посередине. +Старый шаблон здесь продолжается и продолжается. +Старый ржавый револьвер. +Неописанное поле крекеров. +Ещё один кролик? Сегодня три! +Рукавица с вышитыми на ней котятами. +Переполненное ведро с битами. +Опрокинутая бутылка чернил и множество следов котёнка. +Ряд коротких театральных постановок индексируются 1, 2, 3, ... n. +Нелицензированный ядерный ускоритель. +Любой обычный робот может видеть за милю, что это не котёнок. +Пакет из кошачьей мяты. +Очистители для труб. +Пара боевых ботинок. +Пара дверей в салонном стиле медленно качаются взад и вперёд. +Бумажная хозяйственная сумка. Нет, котёнка нет в сумке. +Попугай, бьющий по спине. +Реликвия из пещер мамонта. +Виноградное желе варится здесь. +Здесь поляна грибов. +Здесь лежит куча коаксиальных кабелей. +Куча кокосовых орехов. +Розовая пластиковая лейка. +Горячая пицца. Бесполезная. +Пицца, тающая на солнце. +Пластиковая модель котёнка. +Плюшевый чебурашка. +Видимо, это Эдмунд Берк. +Врезаюсь. Одна машина. Далее две машины. Пять. Протокол. +Лужа с шоколадным соусом. +Лужа грязи, где играют прыгуны. +Чаша для чая, наполненная чаем и дольками лимона. +Радио хрипит. Котёнок, должно быть, был здесь. +Протухший собачий корм. +Ружьё Оленебой. +Робот-комик. Вы чувствуете себя удивленными. +Переспелая дыня. +Ржавая слинки. Это была такая замечательная игрушка! +Мешок с дверными ручками. +Мешок с молотками. +Мешок мокрых мышей. +Инкубаторий с лососем? Посмотрите снова. Это просто один лосось. +Каталог компании Санрио. +Кусок пергамента с единственным словом «мяу». +Приспособление для царапания. +Отвёртка. +Секция светящихся люминофорных клеток поёт вам песню радиации. +Набор ключей для Запорожца. Безделушка. +Бесстыдный форк для Crummy: http://www.crummy.com/ +Бесстыдный форк для Frotz: http://www.cs.csubak.edu/@@126dgriffi/proj/frotz/ +Бесстыдный плагин для UCLA Linux Users Group: http://linux.ucla.edu/ +Ash здесь бормочет «KLAATU BARATA NI <кашель>». +Указатель «Котёнок». Это не указывает ни на какое конкретное направление. +Вывеска гласит: «Не наступайте на маму-крыску». +Надпись гласит: «Идите домой!» +Надпись гласит: «Роботы не допускаются!» +Поющая лягушка. Бесполезная. +Слегка использованный набор для фильма с запахом. +Дымящийся утюг в форме 24-контактного разъёма. +Шпиндель и точильный станок! +Пачка 7-дюймовых дискет шатко шатается. +Статуя девушки с гусем, как в Геттингене, Германия. +Паровой двигатель. +Стегозавр, сбежавший из игры «стегозавр ищет робота». Он нашёл вас. +Субатомная частица томится здесь одна. +Швейцарский армейский нож. Все его придатки отсутствуют. (зубочистка потеряна) +Команда арктических исследователей находится здесь. +Технический университет в Австралии. +Тетрадрахма, датированная «42 г. до н.э.» +Калькулятор. +Крошечный керамический котёнок. Вероятно, это не тот котёнок, которого вы ищете. +А ногти на ногах? Что хорошего в ногтях на ногах? +Унитаз занимает это место. +Тонна перьев. +Светофор. Похоже, что недавно был разбит вандалами. +Здесь проходит поток мыслей. +Уплотнитель мусора, уплотняющий. +Циклотрон путешествующего размера. +Дерево с желе, намазанном по нему. +Здесь живёт племя людоедов. Вы знаете, они едят кашу на завтрак. +Тролль!!! +Тюбик зубной пасты. Жаль, что у вас нет зубов. +Тюбик белой литиевой смазки. Идеально подходит для ваших роботизированных суставов. +Клок шерсти котёнка, но без котёнка. +Ваза, полная искусственных цветов, поставлена на пол. +Ваза с розами. +Раздаётся голос «Вперёд, кошачьи солдаты...» +Готовый спелый помидор оплакивает вашу неспособность переваривать фрукты. +Каркасная модель хот-дога вращается здесь в космосе. +Удивительный и замысловатый золотой амулет. Жаль, что у вас нет шеи. +Монета Зоркмида. +Уплотнительная проволока и жвачка. +Бибиди Бибиди Бибиди Бибиди Бибиди Бибиди... +Большая птица здесь ищет мистера Лупера. +Миллиарды и миллиарды вещей, которые не являются котятами. +Печенье. +«Блеф, блеф, блеф», говорит грязевой котелок. +Яркие медные чайники. +Бургер!!!! Вкусный и полный белка! +Бутан!!! +Газированная вода, кукурузный сироп с высоким содержанием фруктозы, краситель, фосфорная кислота, ароматизаторы, кофеин. +Карлос Таранго стоит здесь, производя лучшее впечатление на Пэт Смир. +Кетчуп и горчица повсюду! Это человеческий гамбургер! +Жевательная резинка и проволока. +Клэнг, клэнг, клэнг идёт поездом! +Клиффорд Столл здесь продаёт бутылки Кляйн. +Конан О'Брайан, без челюсти. +Это может быть... большой уродливый трофей для боулинга? +Ежедневный подвешивающийся кондиционер из Австралии +Танцуют трубы холодной воды. Майк, должно быть, был здесь. +Дарт Вейдер здесь ищет своего тедди-вуки. +«Дорогой робот, вы, возможно, уже выиграли приз в 10 МИЛЛИОНОВ ДОЛЛАРОВ...» +Определённо не котенок. +Динсдейл! +Диоген здесь требует виски. +Грязные носки. +«Техническая поддержка Догберта, как я могу оскорбить тебя?» +Дудлс Уивер просматривает расписание скачек. +Эд МакМэхон стоит здесь, задумавшись. Увидев вас, он ревёт: «Да, сэр!» +Эд Виттен сидит здесь, размышляя над теорией струн. +Пустые шкатулки засоряют пейзаж. +Невероятно! +Фонзи сидит здесь, бессвязно бормоча о акуле и паре водных лыж. +На мгновение вы чувствуете что-то в своих руках, но это исчезает! +Свободный Дмитрий Скляров! +Свободный Джон Йохансен! +Гибл, Гоббл, мы принимаем тебя... +«Возвращайтесь в библиотеку!» - говорит Пэт Шредер. +Измельчить их, выплюнуть, они ветки. +Фисташковые орехи. +Здеееееееесь Джонни! +Здравствуйте, медсестра! +Привет, моряк! +Вот книга о Роберте Кеннеди. +Здесь нет котёнка, а есть только камень, булыжник и песчаная дорога. +Здесь Кэл Уортингтон и его собака «Спот»! +Здесь Пит Питерсон. Его батареи, кажется, давно разряжены. +Эй, держу пари, вы думали, что это котёнок. +Эй, смотрите, это война. Для чего это? Совершенно не для чего. Скажите это снова. +Эй, робот, оставьте эти списки в покое. +«Привет, меня зовут Энсон Уильямс, телевизионная «Потси»». +Гул. Ещё один синтетический апостериорный. +«Как, чёрт возьми, я могу вымыть свою шею, если больше не будет дождя?», - спрашивает фермер Аль. +Гидравлическая жидкость и зубчатые металлические биты. Вы отпрыгиваете от сцены резни. +Я не знаю, что это, но это не котёнок. +Если это не одно, то это другое. +Если это одно, то это не другое. +«Мне жаль дурака, который принимает меня за котёнка!». +Это голова слона или крылатая сандалия? +Это облако в форме вола. +Это марципановый дредноут, который, похоже, расплавлен и застрял. +Это древний моряк, и он останавливает одного из трёх. +Это вставные зубы. +Это - я просто чувствую, - что должно произойти что-то чудесное. +Приятно быть добрым к котёнку, но это не так! +Это 1000 секретов, которые правительство не хочет, чтобы вы знали! +Это банан! О, радость! +Это большой кусок льда. Кажется, что-то застыло внутри. +Это большая курящая рыба. +Это чёрная дыра. Не падай! +Это явный штекер для Ogg Vorbis, http://www.vorbis.com/ +Это слепой человек. Когда вы касаетесь, он восклицает: «Я робот для поиска котят!» +Это капля белого липкого вещества. +Это бутылка для снятия лака. +Это баг. +Это стенд для буррито. +Это бизнес-план для нового стартапа, котёнок.нет. +Это картонная коробка, полная 8-миллиметровой ленты. +Это кабель Кошак-5. +Это каталог какой-то компании Инфоком. +Это угольный брикет, дымящий по ветру. +Это ключ! +Это печенье в форме котёнка. +Это копия Кнута с вырванной главой об алгоритмах поиска котят. +Это копия лицензионного соглашения с роботом. +Это копия «Рубайят Шипа Шуди». +Это копия «Дзен и искусство обслуживания роботов». +Это тёмная амфорическая капля материи. +Это DVD «Крадущаяся обезьяна, скрытый котенок», регион, закодированный для Луны. +Это клавиатура Дворака. +Это муха на стене. Привет, лети! +Это бесплатное пиво (с вашей платной подпиской.) +Это свободный Дмитрий Скляров! +Это свободный Джон Йохансен! +Это фанк-бит! +Это гигантский слорр! +Это какой-то пистолет. +Это голограмма разбитого вертолета. +Это кружка с новеллой «ОДИН ДОМА 2: Затерянный в Нью-Йорке». +Это сто долларов. +Это Java-апплет. +Это подвешенный бар! Как низко ты можешь пасть? +Это установочный компакт-диск Linux. +ОНО ЖИВОЕ! АХ ХА ХА ХА ХА! +Это всё мечта. +Это потерянный кошелёк. У его владельца не было домашних животных, так что вы отказываетесь от него. +Это могучий зомби, говорящий о любви и процветании. +Это минута молчания. +Это мышеловка, приманка с мылом. +Это алтарь бога лошади. +Это копия с автографом «Вторичные цвета» Боба Росса. +Это копия с автографом «Боярыня Морозова» Сурикова. +Это автоматический робот-презиратор. Он делает вид, что вас там нет. +Это Андрей Плоткин что-то замышляет. +Это установочный компакт-диск NetBSD. +Это интернет-письмо о лауретсульфате натрия. +Это перевёрнутый бильярдный шар! +Это старый альбом Дюк Эллингтона. +Это обычный бюст Бетховена... но почему он окрашен в зелёный цвет? +Это ещё один робот, более продвинутый по дизайну, чем вы, но странно неподвижный. +Это вечная машина неподвижности. +Это кусок ткани, используемый для закрытия сцены между выступлениями. +Это бассейн с соломой. +Это портативное отверстие. Вывеска гласит: «Закрыто на зиму». +Это коробка от овсяных хлопьев, превращённая в барабан. +Это рекурсивная рекурсивная рекурсивная рекурсивная рекурсия... +Это пересмотренный бизнес-план для нового стартапа - моего.котёнка.нет. +Это выстрел обода. Ба-да-бум! +Это рулон медной проволоки промышленной прочности. +Это гнилая старая обувь. +Это ошибка сегментации. Ядро сброшено, кстати. +Это сезонный молочный коктейль со вкусом зелёной мяты. По крайней мере, я на это надеюсь. +Это законы робототехники Азимова. Вы чувствуете странную близость к ним. +Это одиночная вакуумная трубка. +Это синхрофазотрон. +Это команда Кейстоун Копс. +Это квадрат. +Это глупая маска, созданная по образцу бигля. +Это символ. Вы видите в нём модель для всех символов повсюду. +Это синтетическая априорная истина! Иммануил был бы так рад! +Это лента рока 70-х. Все оригинальные хиты! Все оригинальные художники! +Это дань чулкам в сеточку. +Это президент США. +Это прекрасная жизнь. +Это симуляция дзен, заключённая в символ ASCII. +Это любимая летучая мышь детки Флэтхеда. +Это «Реквием» Баха си-минор! +Это Брайан Керниган. +Это «Куриный суп для котёнка, ищущего бездушного робота». +Это жутко и странно, таинственно и жутко. Это также несколько странно. +Это милое создание как котёнок, но не котёнок. +Это погибель. +Это Деннис Ритчи. +Кажется, это копия «Хвоста двух котят». +Это либо зеркало, либо другой бездушный робот, ищущий котёнка. +Это Эмпорер Шаддам четвёртая планета! +Это «В поисках котёнка», изданная «О'Рейли и Партнеры». +Это зелёный дракон Grundle. +Это просто объект. +Это Киран Хервольд. Чёртова дислексия! +Это КОТ, говорящая машина. +Это Люси Рикардо. «Ааааа, Рикки!», - говорит она. +Это Мэри Поппинс! +Это не что иное, как испорченная дискета. У кого-нибудь есть подставка? +Это всего лишь рэпчик, детка. +Ничего особенного. +Это принцесса Лея, йодел жизни. +Это профессор Фидлбом. +Это красный дракон Rhindle. +Это нос Ричарда Никсона! +Это Роя Найни. +Это декорация для «В ожидании Годо». +Это Сирхан-Сирхан, выглядит виноватым. +Это несколько компрометирующих фотографий слона Бабара. +Это удивительная вещь, которая не является котёнком. +Это таблица ASCII! +Это поразительный мета-объект. +Это автор «Случайности и математические доказательства». +Это Бас-Матик 76 года! Ммм, это хороший бас! +Это созвездие Рыб. +Это пробка для чьей-то бутылки. +Это хрустящий экзоскелет членистоногого! +Это пожертвование Константина! +Это забальзамированный труп Владимира Ленина. +Это золотой банан раздора! +Это портативная игра для роботов и тигров от Tiger. +Это горизонт. Теперь это странно. +Это инструкция к предыдущей версии этой игры. +Это местная доска объявлений. +Это недостающая глава к «Заводному апельсину». +Это фраза «и она», написанная на древнегреческом языке. +Это общеизвестное мокрое одеяло. +Это комната Тики. +Это треугольная нога, примыкающая к углу, разделенному на ногу напротив нее. +Это шоссе Уилла Роджерса. Кто такой Уилл Роджерс? +Это сообщение, не более того. +Это привлекательная ворона! «Угостите сыром!» - говорит она. +Это дядя доктор Хуркамур! +Это «Война и мир» (без ограничений, очень мелкий шрифт). +Это жёлтый дракон Yorgle. +Это твоя любимая игра - робот ищет кошака! +Джудит Платт оскорбляет библиотекарей. +Просто большая кирпичная стена. +Просто ящик с царапинами. +Просто сломанный жёсткий диск. +Просто клетка белых мышей. +Просто человек, продающий альбатроса. +Просто заплесневелый кусок хлеба. +Просто монитор с сгоревшим синим элементом. +Просто копия Йоги с автографом. +Просто подушечка для булавок. +Просто какая-то жижа. +Просто какая-то старая пьеса чешского драматурга, и вы не умеете читать по-чешски. +Просто кое-что. +Просто немного болотного газа. +Просто пустая шелуха саранчи. +Просто Уолтер Матто и Джек Леммон. +«Кибо был здесь» +«Килрой был здесь» +Котёнок это буква «К». Ой, подожди, может быть нет. +«Одолжите нам пятёрку до четверга», - радует Энди Кэпп. +Леонард Ричардсон здесь, просит людей поцеловать его. +Длинные утерянные плоскогубцы. +Посмотрите на это, это Моторолла. +Смотри, это чудной ирландец! +Быдьте осторожны! Восклицательные знаки! +Лизин, незаменимая аминокислота. Ну, может быть, не для роботов. +«Маршрутизация почты и доменная система» Крейга Партриджа. +Марвин жалуется на боль в диодах внизу слева. +«Мяу мяу мяу мяу...» Как обескураживает! Это только запись. +Больше зерна для мельницы. +«Двигайтесь! Здесь нечего смотреть!» +Мистер Хупер здесь, занимается серфингом. +Мистер Камикадзе и мистер ДНК здесь пьют чай. +Не то, но растение в горшке. +Соски, ямочки, костяшки, щипцы, морщины, прыщи! +Здесь нет котёнка. +«Нет!» говорит немного. +Не котёнок, просто пакет Юпи. +О, парень! Grub! Эээ, загрузчики. +СТО ТЫСЯЧ КОВРОВЫХ ВОЛОКОН!!!!! +Одна из немногих оставшихся дискотек. +Одна из тех глупых карт «Дома звёзд». +Один человек кричит «Что мы хотим?» Толпа отвечает «Свободу Дмитрию!» +«На этом месте в 1962 году Генри Винклер заболел». +О, блестяще! +Галстук Саакашвили. +Много пустоты. +«Плексар был здесь» +Озабоченность поиском котёнка мешает вам продолжить расследование. +Тыквенный пирог со специями. +Что угодно, сказанное на латыни, звучит как котёнок. +Рене Декарт насвистывает счастливую мелодию здесь. +«Робот не может причинить вред котёнку или вследствие бездействия...» +Робот не должен прикасаться к этому. +Роджер Эвери, человек, известный в Соединённых Штатах. +Убегайте! Убегайте! +Сирджент Даффи здесь. +Семь 1/4 винтов и кусок пластика. +Несколько метров кабеля кот5. +Зигмунд Фрейд здесь спрашивает о вашей матери. +Отнимите! +Снарф? +Некоторые кокосовые крабы валяются здесь. +Кто-то написал здесь «ad aerarium». +Здесь кто-то разговаривает с Ральфом по большому белому телефону. +Чей-то личный диск лежит здесь. +Какая-то электронная портативная игра 1970-х годов. +Здесь что-то написано в пыли. Вы читаете: «Робат ищит катёнка». +Так вот как выглядит невидимый барьер! +Ложка!!! +Стимутакс. +«Надеюсь, скоро будет дождь», - говорит фермер Джо. +Башня Сутро видна на некотором расстоянии сквозь туман. +Тальк. +Чай и/или сухарики. +Десять ярдов авокадо-зелёного ковра. +Тар Мобиус Дик, извилистый кит. Аррр! +Это просто мумия. +Это просто старая консервная банка. +Бумбокс заводит старую мелодию Этель Мерман. +Закон о защите авторских прав в цифровую эпоху 1998 года. +Грязный старый бродяга оплакивает потерю его гармоники. +Призрак вашего преподавателя танцев, его лицо - бумажно-белая маска зла. +Руководство дизайнера Информ (4-е издание) +Перерыв в немом фильме 1930-х годов. +Ионосфера кажется заряженной смыслом. +Буквы О и Р. +Монолит спама возвышается над вами. +Укус не котёнка! +Элемент без котёнка, подобный этому, но с «ложь» и «истина», переключенным в значение истины. +Элемент без котенка, подобный этому, но с «истина» и «ложь», переключенным в значение лжи. +Объект отталкивает вас. +Здесь есть роскошный трон. +«Там нет котёнка!» хихикает старая карга. Вы в шоке от её кощунства. +Здесь нет чая. +Здесь ничего нет; это просто оптический обман. +Хиты Роты! Хиты Роты! +Партитура для чешской композиции «Симфония ищущего котёнка до мажор». +Это не обычные бобы. Это волшебные бобы! +Призрак Шерлока Холмса побеждает вас впереди. +Болотистая земля вокруг вас, кажется, воняет болезнью. +«Теория и практика олигархического коллективизма» Эммануила Гольдштейна. +Апелляционный суд США по федеральному округу. +Самый большой в мире бал! +Самый большой в мире шар из карманных ворсинок. +...штучка??? +Похоже, это довольно большой сборник романов. +Это похоже на статую Персея. +У этой кассеты есть имя, это R-A-N-C-I-D. +Этот экземпляр «Украсть эту книгу» был украден из книжного магазина. +Этот ржавый робот сжимает варежку. +Этот элеватор возвышается над вами. +Эта невидимая шкатулка содержит лошадь пантомимы. +Это точка Лагранжа. Не подходи слишком близко. +Это большой бурый медведь. Как ни странно, в настоящее время он мочится в лесу. +Это анаграмма. +Это ещё один хороший беспорядок, в который ты нас втянул, Стэнли. +Это фарфоровый котёнок-счётчик. 0, 0, 0, 0, 0... +Это пульт дистанционного управления. Будучи роботом, вы имеете широкую койку. +Это вкусный пирог с банановым кремом. +Это телевизор. На экране вы видите робота, странно похожего на вас. +Это не тот предмет, который вы ищете. +Эта глава называется «Карта кота?» из автобиографии Фейнмана. +Это первобытный лес. +Это десятый ключ, который вы нашли. +Это всемирно известная сеть Jockstraps. +Срок хранения этой банки с маринадом истёк в 1957 году. +Этот музыкальный автомат содержит только альбомы Клиффа Ричардса. +Этот вид похож на котёнка, но это не так. +Этот набор является четырнадцатым в серии наборов, названных римскими буквами. +Это похоже на «Внешний вид и реальность» Брэдли, но на самом деле это не так. +Эта карта не является территорией. +Это может быть источником молодости, но вы никогда не узнаете. +Это кошатник, предмет без глагола. +Этот кошатник может содержать арахис. +Этот объект здесь кажется бабочкой Луи Фаррахана. +Этот объект похож на аналогию. +Это конкретное чудовище, похоже ЭНИАК. +Этот колышек застрял в норе! +Это место называется Антарктида. Здесь нет котёнка. +Похоже, это нежелательная почта, адресованная искателю Ока Ларна. +Эта улыбающаяся семья счастлива, потому что они едят сало. +Этот сабвуфер был взорван в 1974 году. +Этот тостер штрудель пронизан пулевыми отверстиями! +Это томография! +Этот TRS-80 III жутко тихий. +Это не было несчастным случаем на лодке! +Три полпенни и деревянный никель. +Гром, Гром, Гром, Гром Кошек!!! +Тигрэбот Хеш. +«Всё прошло верхний слой почвы, ма», плачет Лил Грег. +Телевизор говорит, что пончики с высоким содержанием жира. +«Алиса в Стране чудес» Кэрролла +Два блинчика, два блинчика в коробке. +Шкатулка Владимира Ленина отдыхает здесь. +Подождите! Это не покерная фишка! Вы были обмануты! +«Карманный полевой путеводитель по вещам, которые не котята» Вернера. +Желаем вам прощённого котёнка и счастливого Нового года! +Что это полыхает? +Что эта синяя штука делает здесь? +Почему вы касаетесь этого, когда вам нужно найти котёнка? +Ох!!!!! +«Да!» говорит немного. +Вы можете видеть прямо сквозь эту копию «Прозрачного общества» Брина. +Вы мешаете убийству ворон. +Вы чувствуете себя странно неудовлетворённым. +Вы нашли яркую блестящую копейку. +Вы нашли схему мошенничества, в которой кредиты используются в качестве обеспечения для других кредитов. +Вы нашли шиншиллу! Жаль, что это не «Робот ищет шиншиллу». +Вы нашли котёнка! Нет, просто прикалываюсь. +Вы нашли неткот! В путь, робот! +Вы нашли конёток, но это задом наперед. +Вы нашли попугая. Жаль, что это не «Робот ищет попугая». +Вы нашли щенка! Жаль, что это не «Робот ищет щенка». +Вы нашли мрамор в овсянке! +Вы нашли немного цинка, но вы не должны останавливаться на достигнутом, потому что вы должны найти котёнка. +У вас есть новая почта в /var/spool/робот +Вы попали в предмет не из котят. Не котёнок не может выкрикнуть. +Вы действительно не хотите знать, что это такое. +Ваш приятель Флойд здесь и хочет сыграть Хака-Бука-Бобовое дерево. +Ваш страховщик! +Вы видите снежинку, которая медленно тает. +Вы наткнулись на постоянный акт Билла Гейтса. +Вы вдруг жаждете своей далёкой родины. +Вы нашли Харви, чудо-хомяка! +Вы нашли... Ой, подождите, это просто кот. +Вы нашли легендарное дисковое кладбище! +Вы нашли рыбу! Не то, чтобы это принесло вам много пользы в этой игре. +Вы нашли снег прошлых лет! Так вот, куда они все пошли. \ No newline at end of file diff --git a/app/examples/Games/RobotFindsKitten/readme.txt b/app/examples/Games/RobotFindsKitten/readme.txt new file mode 100644 index 00000000..67d00522 --- /dev/null +++ b/app/examples/Games/RobotFindsKitten/readme.txt @@ -0,0 +1,24 @@ +gambrfk 1.00 +Copyright 2003 Rob Kudla + +In this game, you are robot (#). Your job is to find kitten. This task +is complicated by the existence of various things which are not +kitten. Robot must touch items to determine if they are kitten or +not. The game ends when robotfindskitten. Alternatively, you may end +the game by hitting the Esc key. + +Please see http://www.robotfindskitten.org for more information. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA diff --git a/app/examples/Games/Snake/.directory b/app/examples/Games/Snake/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Games/Snake/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Games/Snake/.icon.png b/app/examples/Games/Snake/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..401780e5af5caa4c9594f42894a573f8567d3c74 GIT binary patch literal 3584 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\n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FrmMain.form:90 +msgid "&About" +msgstr "Qu&ant a..." + +#: FrmMain.form:72 +msgid "&Auto Advance Speed (Challenge ME)" +msgstr "&Increment automàtic de velocitat (Desafia'm)" + +#: FrmMain.form:64 +msgid "&Cool" +msgstr "&Moderat" + +#: FrmMain.class:318 +msgid "Do not Hit the walls, or bite yourself!\n\n" +msgstr "No colpegis les parets, ni et mosseguis a tu mateix!\n\n" + +#: FrmMain.class:317 +msgid "Eat as many apples as you can\n" +msgstr "Mengeu tantes pomes com podeu\n" + +#: FrmMain.form:34 +msgid "&Game" +msgstr "&Joc" + +#: FrmMain.form:60 +msgid "&GrandMa" +msgstr "À&via" + +#: FrmMain.form:78 +msgid "&Help" +msgstr "A&juda" + +#: FrmMain.form:81 +msgid "&How To Play" +msgstr "Com &jugar-hi" + +#: FrmMain.form:37 +msgid "&New" +msgstr "&Nou" + +#: FrmMain.class:245 +msgid "\nPress Game -> New to play again." +msgstr "\nPrem Joc -> Nou per tornar a jugar." + +#: FrmMain.form:42 +msgid "&Pause" +msgstr "&Pausa" + +#: FrmMain.form:51 +msgid "&Quit" +msgstr "&Surt" + +#: FrmMain.class:358 +msgid "Score: " +msgstr "Puntuació:" + +#: FrmMain.class:58 +msgid "Snake" +msgstr "Serp" + +#: .project:1 +msgid "Snake game" +msgstr "Joc de la serp" + +#: FrmMain.form:57 +msgid "&Speed" +msgstr "&Velocitat" + +#: FrmMain.class:359 +msgid "Speed: " +msgstr "Velocitat:" + +#: FrmMain.form:68 +msgid "&Speed Freak" +msgstr "&Velocitat fora de control" + +#: FrmMain.class:316 +msgid "The Rules are simple:\n" +msgstr "Les normes son senzilles:\n" + +#: FrmMain.class:245 +msgid "The snake's soul will always be remembered.\nGame Over!!\nYou scored: " +msgstr "Sempre recordarem l'ànima de la serp.\nJoc acabat!!\nLa teva puntuació: " + +#: FrmMain.class:319 +msgid "Use the arrow keys to move the snake" +msgstr "Utilitzeu les tecles de fletxa per moure la serp" + diff --git a/app/examples/Games/Snake/.lang/cs.po b/app/examples/Games/Snake/.lang/cs.po new file mode 100644 index 00000000..5da464fa --- /dev/null +++ b/app/examples/Games/Snake/.lang/cs.po @@ -0,0 +1,114 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Snake game" +msgstr "Hadí hra" + +#: FrmMain.class:58 +msgid "Snake" +msgstr "Had" + +#: FrmMain.class:245 +msgid "" +"\n" +"Press Game -> New to play again." +msgstr "" +"\n" +"Pro novou hru -> Zmáčkni Hra." + +#: FrmMain.class:245 +msgid "" +"The snake's soul will always be remembered.\n" +"Game Over!!\n" +"You scored: " +msgstr "" +"DuÅ¡e hada bude uložena.\n" +"Konec hry!!\n" +"Tvoje skore:" + +#: FrmMain.class:316 +msgid "The Rules are simple:\n" +msgstr "Pravidla jsou jednoduchá:\n" + +#: FrmMain.class:317 +msgid "Eat as many apples as you can\n" +msgstr "MužeÅ¡ jíst mnoho jablek\n" + +#: FrmMain.class:318 +msgid "" +"Do not Hit the walls, or bite yourself!\n" +"\n" +msgstr "" +"Nenařážejte do zdí, nebo se nekousejte!\n" +"\n" + +#: FrmMain.class:319 +msgid "Use the arrow keys to move the snake" +msgstr "Použij klávesy Å¡ipek pro pohyb hada" + +#: FrmMain.class:358 +msgid "Score: " +msgstr "Skóre:" + +#: FrmMain.class:359 +msgid "Speed: " +msgstr "Rychlost:" + +#: FrmMain.form:34 +msgid "&Game" +msgstr "&Hra" + +#: FrmMain.form:37 +msgid "&New" +msgstr "&Nová" + +#: FrmMain.form:42 +msgid "&Pause" +msgstr "&Pauza" + +#: FrmMain.form:51 +msgid "&Quit" +msgstr "&Ukončit" + +#: FrmMain.form:57 +msgid "&Speed" +msgstr "&Rychlost" + +#: FrmMain.form:60 +msgid "&GrandMa" +msgstr "&Babička" + +#: FrmMain.form:64 +msgid "&Cool" +msgstr "&Užasný" + +#: FrmMain.form:68 +msgid "&Speed Freak" +msgstr "&Šílená rychlost" + +#: FrmMain.form:72 +msgid "&Auto Advance Speed (Challenge ME)" +msgstr "&Auto zvyÅ¡ování rychlosti (moje výzva)" + +#: FrmMain.form:78 +msgid "&Help" +msgstr "&Nápověda" + +#: FrmMain.form:81 +msgid "&How To Play" +msgstr "&Jak hrát" + +#: FrmMain.form:90 +msgid "&About" +msgstr "&O aplikaci" diff --git a/app/examples/Games/Snake/.lang/de.po b/app/examples/Games/Snake/.lang/de.po new file mode 100644 index 00000000..f48ae5dc --- /dev/null +++ b/app/examples/Games/Snake/.lang/de.po @@ -0,0 +1,101 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Snake game" +msgstr "Schlangenspiel" + +#: FrmMain.class:58 +msgid "Snake" +msgstr "Schlange" + +#: FrmMain.class:245 +msgid "\nPress Game -> New to play again." +msgstr "\nWähle Spiel -> Neu, um nochmal zu spielen." + +#: FrmMain.class:245 +msgid "The snake's soul will always be remembered.\nGame Over!!\nYou scored: " +msgstr "Die Seele der Schlange bleibt unvergessen.\nSpiel ist aus!!\nDeine Punkte: " + +#: FrmMain.class:316 +msgid "The Rules are simple:\n" +msgstr "Die Regeln sind einfach:\n" + +#: FrmMain.class:317 +msgid "Eat as many apples as you can\n" +msgstr "Iss so viele Äpfel, wie du kannst\n" + +#: FrmMain.class:318 +msgid "Do not Hit the walls, or bite yourself!\n\n" +msgstr "Do not Hit the walls, or bite yourself!\n\n" + +#: FrmMain.class:319 +msgid "Use the arrow keys to move the snake" +msgstr "Die Schlange wird mit den Pfeiltasten bewegt." + +#: FrmMain.class:358 +msgid "Score: " +msgstr "Punkte:" + +#: FrmMain.class:359 +msgid "Speed: " +msgstr "Geschwindigkeit:" + +#: FrmMain.form:34 +msgid "&Game" +msgstr "&Spiel" + +#: FrmMain.form:37 +msgid "&New" +msgstr "&Neues Spiel" + +#: FrmMain.form:42 +msgid "&Pause" +msgstr "-" + +#: FrmMain.form:51 +msgid "&Quit" +msgstr "&Beenden" + +#: FrmMain.form:57 +msgid "&Speed" +msgstr "&Geschwindigkeit" + +#: FrmMain.form:60 +msgid "&GrandMa" +msgstr "&Großmutter" + +#: FrmMain.form:64 +msgid "&Cool" +msgstr "&Mäßig" + +#: FrmMain.form:68 +msgid "&Speed Freak" +msgstr "-" + +#: FrmMain.form:72 +msgid "&Auto Advance Speed (Challenge ME)" +msgstr "&Automatischer Geschwindigkeitsfortschritt" + +#: FrmMain.form:78 +msgid "&Help" +msgstr "&Hilfe" + +#: FrmMain.form:81 +msgid "&How To Play" +msgstr "&Spielanleitung" + +#: FrmMain.form:90 +msgid "&About" +msgstr "&Über" + diff --git a/app/examples/Games/Snake/.lang/ru.po b/app/examples/Games/Snake/.lang/ru.po new file mode 100644 index 00000000..f90d7505 --- /dev/null +++ b/app/examples/Games/Snake/.lang/ru.po @@ -0,0 +1,162 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Games/Snake/.project:19 +msgid "Snake game" +msgstr "Игра змея" + +#: app/examples/Games/Snake/.src/FrmMain.class:46 app/examples/Games/Snake/.src/FrmMain.class:58 +msgid "Snake" +msgstr "Змея" + +#: app/examples/Games/Snake/.src/FrmMain.class:46 +msgid "v1.0" +msgstr "- версия 1.0" + +#: app/examples/Games/Snake/.src/FrmMain.class:61 +msgid "ver 1.0 by: Ahmad Kamal" +msgstr "версия 1.0 от: Ахмад Камаль" + +#: app/examples/Games/Snake/.src/FrmMain.class:245 +msgid "" +"The snake's soul will always be remembered.\n" +"Game Over!!\n" +"You scored: " +msgstr "" +"Душа змеи навсегда останется в памяти.\n" +"Игра окончена!!\n" +"Вы набрали: " + +#: app/examples/Games/Snake/.src/FrmMain.class:245 +msgid "" +"\n" +"Press Game -> New to play again." +msgstr "" +"\n" +"Нажмите Игра -> Новый, чтобы играть снова." + +#: app/examples/Games/Snake/.src/FrmMain.class:268 app/examples/Games/Snake/.src/FrmMain.class:275 app/examples/Games/Snake/.src/FrmMain.form:18 +msgid "&Pause" +msgstr "Пауза" + +#: app/examples/Games/Snake/.src/FrmMain.class:271 app/examples/Games/Snake/.src/FrmMain.class:272 +msgid "Un&Pause" +msgstr "Возобновить" + +#: app/examples/Games/Snake/.src/FrmMain.class:290 app/examples/Games/Snake/.src/FrmMain.class:366 +msgid "GrandMa" +msgstr "Неспеша" + +#: app/examples/Games/Snake/.src/FrmMain.class:299 app/examples/Games/Snake/.src/FrmMain.class:367 +msgid "Cool" +msgstr "Спокойный" + +#: app/examples/Games/Snake/.src/FrmMain.class:308 +msgid "Speed Freak" +msgstr "Быстрый" + +#: app/examples/Games/Snake/.src/FrmMain.class:316 +msgid "The Rules are simple:\n" +msgstr "Правила просты:\n" + +#: app/examples/Games/Snake/.src/FrmMain.class:317 +msgid "Eat as many apples as you can\n" +msgstr "Ешьте как можно больше яблок\n" + +#: app/examples/Games/Snake/.src/FrmMain.class:318 +msgid "" +"Do not Hit the walls, or bite yourself!\n" +"\n" +msgstr "" +"Не попадайте по стенам и не кусайте себя!\n" +"\n" + +#: app/examples/Games/Snake/.src/FrmMain.class:319 +msgid "Use the arrow keys to move the snake" +msgstr "Использовать клавиши со стрелками для перемещения змеи" + +#: app/examples/Games/Snake/.src/FrmMain.class:358 +msgid "Score: " +msgstr "Счёт: " + +#: app/examples/Games/Snake/.src/FrmMain.class:359 +msgid "Speed: " +msgstr "Скорость: " + +#: app/examples/Games/Snake/.src/FrmMain.class:405 +msgid "" +"Snake v1.0\n" +"By: Ahmad Kamal \n" +"Written for Gambas http://gambas.sf.net" +msgstr "" +"Змея версии 1.0\n" +"От: Ахмад Камаль \n" +"Написано для Gambas http://gambas.sf.net" + +#: app/examples/Games/Snake/.src/FrmMain.form:12 +msgid "&Game" +msgstr "Игра" + +#: app/examples/Games/Snake/.src/FrmMain.form:14 +msgid "&New" +msgstr "Новый" + +#: app/examples/Games/Snake/.src/FrmMain.form:25 +msgid "&Quit" +msgstr "Выход" + +#: app/examples/Games/Snake/.src/FrmMain.form:30 +msgid "&Speed" +msgstr "Скорость" + +#: app/examples/Games/Snake/.src/FrmMain.form:32 +msgid "&GrandMa" +msgstr "Неспеша" + +#: app/examples/Games/Snake/.src/FrmMain.form:35 +msgid "&Cool" +msgstr "Спокойный" + +#: app/examples/Games/Snake/.src/FrmMain.form:38 +msgid "&Speed Freak" +msgstr "Быстрый" + +#: app/examples/Games/Snake/.src/FrmMain.form:41 +msgid "&Auto Advance Speed (Challenge ME)" +msgstr "Автоматическая скорость (Сразись со мной)" + +#: app/examples/Games/Snake/.src/FrmMain.form:46 +msgid "&Help" +msgstr "Справка" + +#: app/examples/Games/Snake/.src/FrmMain.form:48 +msgid "&How To Play" +msgstr "Как играть" + +#: app/examples/Games/Snake/.src/FrmMain.form:55 +msgid "&About" +msgstr "О программе" + diff --git a/app/examples/Games/Snake/.project b/app/examples/Games/Snake/.project new file mode 100644 index 00000000..915eafcc --- /dev/null +++ b/app/examples/Games/Snake/.project @@ -0,0 +1,18 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.6.90 +Title=Snake game +Startup=FrmMain +Icon=head.png +Version=1.0.0 +Component=gb.image +Component=gb.gui +Component=gb.sdl.sound +Environment="GB_GUI=gb.qt" +TabSize=2 +Translate=1 +Language=en +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence +Packager=1 diff --git a/app/examples/Games/Snake/.src/FrmMain.class b/app/examples/Games/Snake/.src/FrmMain.class new file mode 100644 index 00000000..5a53af7d --- /dev/null +++ b/app/examples/Games/Snake/.src/FrmMain.class @@ -0,0 +1,430 @@ +' Gambas class file + +'***********Snake Example Game********************************* +'***********By: Ahmad Kamal ****************** +'***********Written for Gambas: gambas.sourceforge.net********* +'***********V1.0: 02-Aug-2003********************************** +'***********V1.1: 16-Apr-2004********************************** +'***********Added SDL sound support**************************** + +Public Head_Direction As String + +Public Xpos As New Integer[] 'Snake's Xpositions, Xpos[0] = head +Public Ypos As New Integer[] 'Snake's Ypositions, Ypos[0] = head +Public Tailpos As New Integer[] 'Array holding the index of the square to be moved. Xpos[ TailPos[0] ] is Xposition of the tail. TailPos keeps rotating +Public AppleXpos As New Integer[] 'Apples Xpos +Public AppleYpos As New Integer[] 'Apples Ypos + +Public Score As Integer +Public Speed As String + +Public hPictHead As Picture +Public hPictBody As Picture +Public hPictApple As Picture + +Public StartSound As Sound +Public EatSound As Sound +Public DeadSound As Sound + +Private $eLast As Float + +Public Sub Form_Open() + + Dim i As Integer + + Randomize + + StartSound = New Sound("start.wav") 'Pre-load all sounds FOR speed issues + EatSound = New Sound("eat.wav") 'Although, one SDL component could handle + DeadSound = New Sound("dead.wav") 'All of them! + + MenuGrandMa_Click() + InitSnake + UpdateScoreBoard + Play("start.wav") + + Me.Text = ("Snake") & " " & ("v1.0") + hPictHead = Picture.Load("head.png") + ' ME.Icon = hPictHead 'The same as head icon but in a standard size + + Dwg.background = Color.Black 'BM: ?????????? Doesn't work + + Draw.Begin(dwg) + Draw.Foreground = &HAA0000& 'Faded red + Draw.Font.Name = "Serif" + Draw.Font.Size = 120 'Give me real big font + For i = 1 To 10 'Trick to draw 3D text + If i = 10 Then Draw.Foreground = &HFF0000& 'This is the last layer, so make it pure red + Draw.text(("Snake"), (dwg.clientW - Draw.TextWidth("Snake")) / 2 - i, (dwg.Height + Draw.TextHeight("Snake")) / 2 - i - 50) + Next + Draw.Font.Size = 18 + Draw.Text(("ver 1.0 by: Ahmad Kamal"), (dwg.clientW - Draw.TextWidth(("ver 1.0 by: Ahmad Kamal"))) / 2, 100) + Draw.End + + hPictHead = Picture.Load("head.png") 'Load images + 'hPictHead.Mask(Color.white) + hPictBody = Picture.Load("body.png") + hPictApple = Picture.Load("apple.png") + + TimerApple_Timer() 'Init apples location array + +End + + +Public Sub Form_KeyPress() +'This function stores the snake direction taken from the keyboard in head_direction + + Dim tmp As Integer + + Select Key.Code + Case Key.Left + If (Head_Direction <> "right") Then Head_Direction = "left" 'Snake isn't supposed to go backwards! + Case Key.Right + If (Head_Direction <> "left") Then Head_Direction = "right" + Case Key.Up + If (Head_Direction <> "down") Then Head_Direction = "up" + Case Key.Down + If (Head_Direction <> "up") Then Head_Direction = "down" + End Select + +End + +Public Sub TmrEngine_Timer() +'This is the main game engine. With every tick, the game status get updated. + + Dim i As Integer + Dim hPictHeadRotated As New Picture + + 'Here we will move the snake. Instead of moving each & every square of the snake + 'We will use an optimized method. Only the head moves one step forward & the + 'Tail moves to where the head previously was. That way, all the snake seems to be moving! + +' If $eLast Then Debug TmrEngine.Delay;; Format(Timer - $eLast, "0.###") + $eLast = Timer + + Xpos[TailPos[0]] = Xpos[0] 'Tail goes to head + Ypos[TailPos[0]] = Ypos[0] + TailPos.add(TailPos.pop(), 0) 'Array is rotated => Last element is put as first element, i.e. new tail is calculated + + Select Head_Direction 'See the current head direction and start moving + Case "left" + Xpos[0] = Xpos[0] - 20 + hPictHeadRotated = hPictHead.Image.Rotate(Pi).Picture 'Snake looks to where it's going :) + Case "right" + Xpos[0] = Xpos[0] + 20 + hPictHeadRotated = hPictHead + Case "up" + Ypos[0] = Ypos[0] - 20 + hPictHeadRotated = hPictHead.Image.Rotate(Pi / 2).Picture + Case "down" + Ypos[0] = Ypos[0] + 20 + hPictHeadRotated = hPictHead.Image.Rotate(-Pi / 2).Picture + End Select + + + 'Begin drawing + Dwg.Clear 'Clear old game drawings + Draw.Begin(Dwg) + + For i = 1 To Xpos.count - 1 'Draw snake + Draw.Picture(hPictBody, Xpos[i], Ypos[i]) + Next + + For i = 0 To 2 'Draw apples + Draw.Picture(hPictApple, AppleXpos[i], AppleYpos[i]) + Next + + Draw.Picture(hPictHeadRotated, Xpos[0], Ypos[0]) 'BM: Why doesn't the head appear on top? put hPictHead, and it will !!! + + Draw.End + + If (SnakeHasEatenApple()) Then + Play("eat") + MakeSnakeLonger '4th Generation programming :) + Inc Score + End If + + UpdateSpeed 'Should snake go faster? + UpdateScoreBoard 'Write score & speed on screen + + If (SnakeHitTheWall()) Then SnakeDies 'G4 again ;) + + If (SnakeBitHimself()) Then SnakeDies 'So cool + + If (SnakeAteAllApples()) Then 'If you've eaten the 3 apples, throw some more apples + TimerApple_Timer() 'Call the timer manually + TimerApple.Enabled = False 'Timer is disabled and re-enabled to reset it's internal timer + TimerApple.Enabled = True + End If + +End + +Public Sub TimerApple_Timer() + + Dim I, J As Integer 'Throw 3 random apples all over the screen + Dim X, Y As Integer + + AppleXpos.Clear + AppleYpos.Clear + + For I = 0 To 2 + + ' Do not add an apple on the snake + Do + X = Int(Rnd(1, 30)) * 20 + Y = Int(Rnd(1, 20)) * 20 + + For J = 0 To Xpos.Max + If X = Xpos[J] And Y = Ypos[J] Then Break + Next + + If J = Xpos.Count Then Break + Loop + + AppleXpos.Add(X) + AppleYpos.Add(Y) + + Next + +End + +Public Sub MakeSnakeLonger() + + Xpos.add(Xpos[Tailpos[0]]) 'Add a new square to where the tail square is, to make the snake longer + Ypos.add(Ypos[Tailpos[0]]) + + TailPos.add(TailPos[0]) 'Remember when we said, tailpos keeps rotating. Now we have put an extra + TailPos.remove(0) 'Square, to make it move instead of the real tail, we make a back rotation (in + TailPos.add(Xpos.Length - 1, 0) 'opposite direction). First element => Last position, then index of new tail + 'gets added at location 0. Remember, TailPos[0] is the index of the tail!!! + +End + +Public Function SnakeHasEatenApple() As Boolean + + Dim RetVal As Boolean + Dim TmpAppleX As Integer + Dim TmpAppleY As Integer + Dim i As Integer + + RetVal = False + + For i = 0 To 2 + + TmpAppleX = AppleXpos[i] + TmpAppleY = AppleYpos[i] + If (Xpos[0] = (TmpAppleX) And Ypos[0] = (TmpAppleY)) Then 'Snake head on an apple? + AppleXpos[i] = -100 'Hide eaten apples + AppleYpos[i] = -100 + RetVal = True + End If + + Next + + + Return RetVal + +End + + +Public Function SnakeHitTheWall() As Boolean + + If (Xpos[0] < 0 Or Ypos[0] < 0 Or Xpos[0] >= 600 Or Ypos[0] >= 400) Then 'Duh + Return True + Else + Return False + End If + +End + +Public Sub SnakeDies() + + TmrEngine.Enabled = False + TimerApple.Enabled = False + Play("dead") + Message(("The snake's soul will always be remembered.\nGame Over!!\nYou scored: ") & score & ("\nPress Game -> New to play again.")) + +End + + +Public Sub MenuNew_Click() + + Dim i As Integer + + Head_Direction = "" 'Reset everything + Score = 0 + MenuGrandMa_Click() 'Reset speed + + InitSnake + TimerApple_Timer + + TmrEngine.Enabled = True + TimerApple.Enabled = True + +End + +Public Sub MenuPause_Click() + + If (MenuPause.Caption = ("&Pause") And (TmrEngine.Enabled = True)) Then + TmrEngine.Enabled = False + TimerApple.Enabled = False + MenuPause.Caption = ("Un&Pause") + Else If (MenuPause.Caption = ("Un&Pause") And (TmrEngine.Enabled = False)) Then + TmrEngine.Enabled = True + TimerApple.Enabled = True + MenuPause.Caption = ("&Pause") + End If + +End + +Public Sub MenuQuit_Click() + + FrmMain.Close + +End + +Public Sub MenuGrandMa_Click() + + TmrEngine.delay = 200 + TimerApple.delay = 8000 + Speed = ("GrandMa") + +End + + +Public Sub MenuCool_Click() + + TmrEngine.delay = 150 + TimerApple.delay = 5000 + Speed = ("Cool") + +End + + +Public Sub MenuSpeedFreak_Click() + + TmrEngine.delay = 100 + TimerApple.delay = 2500 + Speed = ("Speed Freak") + +End + +Public Sub MenuHowToPlay_Click() + + Dim Help As String + + Help = ("The Rules are simple:\n") + Help = Help & ("Eat as many apples as you can\n") + Help = Help & ("Do not Hit the walls, or bite yourself!\n\n") + Help = Help & ("Use the arrow keys to move the snake") + + Message(Help) + +End + + +Public Sub InitSnake() + + Dim i As Integer + + Xpos.Clear() + Ypos.Clear() + TailPos.Clear() + + For i = 0 To 3 + Xpos.add(0, i) + Ypos.add(0, i) + Next 'BM: Here i exists with value 4, shouldn't it be 3?! + + TailPos.add(3, 0) + TailPos.add(2, 1) + TailPos.add(1, 2) + +End + +Public Function SnakeAteAllApples() As Boolean + + 'IF ( AppleXpos[0] = AppleXpos[1] = AppleXpos[2] = -100) THEN 'BM: Doesn't work + If ((AppleXpos[0] = -100) And (AppleXpos[1] = -100) And (AppleXpos[2] = -100)) Then + Return True + Else + Return False + End If + +End + +Public Sub UpdateScoreBoard() + + LblScore.Text = ("Score: ") & Score + LblSpeed.Text = ("Speed: ") & Speed + +End + +Public Sub UpdateSpeed() + + If MenuAutoAdvanceSpeed.checked Then + If (Score > 19 And Speed = ("GrandMa")) Then MenuCool_Click + If (Score > 79 And Speed = ("Cool")) Then MenuSpeedFreak_Click 'Let's kill ur snake :) + End If + +End + +Public Sub MenuAutoAdvanceSpeed_Click() + + MenuAutoAdvanceSpeed.Checked = Not MenuAutoAdvanceSpeed.Checked 'Toggle menu checking + +End + +Public Function SnakeBitHimself() As Boolean + + Dim RetVal As Boolean + Dim TmpAppleX As Integer + Dim TmpAppleY As Integer + Dim i As Integer + + RetVal = False + + For i = 1 To (Xpos.Length - 1) + + TmpAppleX = Xpos[i] + TmpAppleY = Ypos[i] + If (Xpos[0] = (TmpAppleX) And Ypos[0] = (TmpAppleY) And Xpos[0] <> 0) Then 'Snake head on part of its body? + RetVal = True + End If + + Next + + Return RetVal + +End + +Public Sub MenuAbout_Click() + + Dim About As String + + About = ("Snake v1.0\nBy: Ahmad Kamal \nWritten for Gambas http://gambas.sf.net") + Message(About) + +End + +Public Sub Play(sound As String) +'I know it's slow, but I had to give it sound!!! +'Now I can safely move on to writing Quake17 ;) + +' EXEC [ "playwave", "/tmp/" & sound & ".wav" ] + Select Case sound + Case "start" + startsound.Play() + Case "eat" + eatsound.Play() + Case "dead" + deadsound.Play() + End Select +End + + +Public Sub dwg_KeyPress() + + Form_KeyPress + +End diff --git a/app/examples/Games/Snake/.src/FrmMain.form b/app/examples/Games/Snake/.src/FrmMain.form new file mode 100644 index 00000000..c506eab1 --- /dev/null +++ b/app/examples/Games/Snake/.src/FrmMain.form @@ -0,0 +1,89 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(34.3333,27.3333,105.3333,81.6667) + Font = Font["Bold"] + Background = &H000000& + Foreground = &HFF0000& + Text = ("") + Icon = Picture["head.png"] + Resizable = False + { MenuGame Menu + Text = ("&Game") + { MenuNew Menu + Text = ("&New") + Shortcut = "Ctrl+N" + } + { MenuPause Menu + Text = ("&Pause") + Shortcut = "F3" + } + { MenuSep Menu + Text = ("") + } + { MenuQuit Menu + Text = ("&Quit") + Shortcut = "Ctrl+Q" + } + } + { MenuSpeed Menu + Text = ("&Speed") + { MenuGrandMa Menu + Text = ("&GrandMa") + } + { MenuCool Menu + Text = ("&Cool") + } + { MenuSpeedFreak Menu + Text = ("&Speed Freak") + } + { MenuAutoAdvanceSpeed Menu + Text = ("&Auto Advance Speed (Challenge ME)") + Checked = True + } + } + { MenuHelp Menu + Text = ("&Help") + { MenuHowToPlay Menu + Text = ("&How To Play") + Shortcut = "F1" + } + { Menu1 Menu + Text = ("") + } + { MenuAbout Menu + Text = ("&About") + } + } + { LblScore Label + MoveScaled(3,1,49.3333,6.6667) + Font = Font["16"] + Background = &H000000& + Foreground = &HFF0000& + Text = ("") + } + { LblSpeed Label + MoveScaled(54,1,49.3333,6.6667) + Font = Font["16"] + Background = &H000000& + Foreground = &HFF0000& + Text = ("") + } + { dwg DrawingArea + MoveScaled(3,8,100,66.6667) + Font = Font["14"] + Mouse = Mouse.Blank + Cached = True + Focus = True + } + { TmrEngine #Timer + #X = 0 + #Y = 432 + Delay = 100 + } + { TimerApple #Timer + #X = 592 + #Y = 432 + Delay = 10000 + } +} diff --git a/app/examples/Games/Snake/apple.png b/app/examples/Games/Snake/apple.png new file mode 100644 index 0000000000000000000000000000000000000000..cef23a2c1546d91cc63572321f1533d24469d25f GIT binary patch literal 1141 zcmV-*1d98KP)W@%!HPTf4Ck8T+tRM`bCn!V- z6nZYRpwd5jqES?W5(Xj>N-~?y&`sUF+r8U;_&t74e_T`i!=Ur`IWIVe563hjym$N{ zjwhyWx_ehstGaVavzm18qS{=#c}+C**Gc|Qsji+xZU1?Hr5nf^uf$AIm?%V73Jg!I z*RQXBxZ&`t^0MtdwwU|AJxCX?{5SYOr&(F@qi&^0+lczWCsnB+p^p=WxS^{)Tyoaw zoiI^HgT>%V(6J)F^XxWx@goO{3pui4!j0e~Yim=5u(TzDE~{{CNILQnu}~@y3(G`z zpM_hJT)CK|@pc$TaXPQ`k?f@8!P&dkUHTxkRz^D?tbzdh-n~a3`r*W^Vp*CpS=y#w zvd%YVS}NP5Nb@3^c*m82+qU!X|4CfGqd&_-v2_BUA6%O@ZC3qvSQ1V zxy2t3$ijYqZ)=|BnIqI@#z<-xJshE}!DL$SOdQqb5rq-41k@t3C|?@!<~1((ZRf8) zRzZLTK~3V0Qv-)4i_DFI3PCF{Nyus;DMGAVB;MMH9?z0Y2wnwr1;i6+A31U4=$Cu% zzkCf`eg5*QjI~>1pcGoibzH}lR*tCDG!(5kL9=hmPL3fXcmc!$NE9F{gSe4QtIHR@ zG60XySgU5`PQKQFYSUZ#CZVW|KhO2SAo>z|K|;U@KrBcEIsj8vGDibA zpB$};!9Z_;oLp!C}(3W~jTh1xLq}sm8(z5P^yy=7G{+LQrK<^$x(~w)!AC zI~)oag+j!t;S0Q~Cl zl?$o})&(;L+6C)r_4&4?HoOLQtlFCIi^n%zgz-_V9m7fqOR0*fGAO@_i3>6cQUsHS zs00IUZS8^m-_PJ0xNXl%GXKqvqy6z%*Eu9t02u*Bs##NIP-8$AxCC~ry0Sk8m)*GO z{-Wi%v19aI2LZPC{45PU2YRoh5-Tq%Ih6xD3ThO{0i#t=^1vXtS@_#^RM(>qJ@fnG zMLTZ(BzGM6R6W+zRJTs+?HgcdGXxvK>w;i8c(Wnb4DU}(#;0%W+zlev|KZKhO;0~d zygRM_SoTKR^W6^LN_!GgIT-X3=BFtuJJ0QFfhBK!cEj910HYLlJcP&F00000NkvXX Hu0mjfGj0~# literal 0 HcmV?d00001 diff --git a/app/examples/Games/Snake/body.png b/app/examples/Games/Snake/body.png new file mode 100644 index 0000000000000000000000000000000000000000..1baff801f471c73643bd9d2194766d5d84cff58c GIT binary patch literal 1138 zcmX|93s96*6#nl2FT2Y=1QCM)gnS^5q96<^ln}T(f+;Nsp@PO(L$S2vA`LHbcquSL zMkoo&64_vyqpmumi<%ngG=*cEC=W@%p&>vKBU&Ejp8j2{nRCB;&Ufa{Irp5eQWLvg zDf5s4P{u^7;)UDQcBH(3my<>#0PeVEV}e=;(Fz;{(t$MKJ}?Maz^sfB0|7?hN61O; zKn@&nCdH@UO+G*`_ewJH~F&9|4E_5BgRkglD{QNQaX_nT7bI{jfj*pO0O4Q0Td8U z;b9cEl$PQv;2QW2UN$E4dF~Tt4NIYvLMkkxB0cFov7qA2VKn!rp<`ipeV$eiHG;N%y{2k5{}x;a1t9n@hWla{o8@F6CxY zriL`WG@7 zE*X+=0~~~vWdmh4fw5zZJInD`c+o8p-^TN1o|zeL14Tds@HLo`v5O3sflQzpr~?{- z9GeENcqa>gMPzn->}H!{v8J%Dde^+9PHRh$sBtE(&blRj{MGiu!B6RYb?FtZ2$j$lmy2 z%ATm5@mU+RN6HpOSE-k-T^PLVHNVvX*PDzdOe&8>OEzzNdq>>X#O<4tllshE_xzVh zTn~MeuFDu3dNT5Kc+>FXF9P*7oJOM`KXkJF_|J8r8J32YKL-Q0n4%q*oOnI&kDBJT z&(CgY(f)O$JEQY-UlZq=V7RJpA6%Y%N!NF7cjwc!1(TymyzHB|8h_2|@Bi|2o0Csy z{*$T7gC40l+StZDBNO!(e!ugMDR+3h_SCl2NZq{Z2N`dk?K9;)w&=F6tvEd4$KUTw z-*mlTZ14W!`TnY^s_$Bzyfas=RF@g*TO2gG=bLLoHZ1AsdeGgrroU1whI(60@965| Pf=GZEb*$=4RBFjT&knM( literal 0 HcmV?d00001 diff --git a/app/examples/Games/Snake/dead.wav b/app/examples/Games/Snake/dead.wav new file mode 100644 index 0000000000000000000000000000000000000000..f8d4292d0fb411872b8676e3ed8fd1938e03d40e GIT binary patch literal 10026 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 L|42+7neY4`JMe+U literal 0 HcmV?d00001 diff --git a/app/examples/Games/Snake/eat.wav b/app/examples/Games/Snake/eat.wav new file mode 100644 index 0000000000000000000000000000000000000000..fc8ff1e38449462023247971bd26d878c3060d6c GIT binary patch literal 1192 zcmeHG&uM5-wza#KGb~%o34a5}&PX%wy^+3e=6&B> zoyue$$N&oy^XcMO>&yZGEM{aLV0b|!vJ4D5Qa=ECf8>f4wjcqv*#AU^`#t)^E#_~n z3lR7P0~GS>c@PQ4=O7M0xFvK6-GOYuvpMj)cO|~@&5LgC=_@_5+G%vNr);%yCAR$^ zi#R(zmVDkA!4Ss!&nJ%ISxY4-H|X@5J^=fSWS55b72|nL<>TMIT$G9CsK9prQFEQg z1ET?3)f|QVdJr;q8~08F4`~4WN#ll~NW@yb=BMpY^~aA{v_4>AF#h_jq0s8}KCUbU z_m4v1de2pjwKuhqlw9cwHdWImI;w`Y4nz3Sfu4-kkM3TU_Fn0j_ohcBuFQ-{_fHVS z6=G7yC1sDj<7L#@yD~Z2Rs_K2fnrE5Ssg}p2=UrOZv;DPJ}y;!VDB9E5@~UXg2z?? z@rGhrDVeSH^B$0DL%(&w59DT_&5v=K)7N5cm4xfvN=*-2e|#H{Viw(f_}1uvy*OsI zpInOJjgNpJf^B^+u;pbD@p4!>h1_wOnA-Npnhq=^{S9MTdYG3Wdw z;z!I+rTl9Zk+psVxjurxOpUhBte$pMquA~lgQD3mAp>WTZIuNpH_{R$Cx;wC#n4ax zF7*q4ATR>^dy9j0#Y_dQ`c60ZW>XG@O()zrWfeRYkMp znPNbr2uQfi6B%4t9215T8c~2`8b3M=MKMX;nfD`L(N@hDrj$l;IC&N^%Js?FvzVB- z)5i|}e|)G8d^R;Zml0r7+067*>guFd#OB3|7tR~jc_S|B>Fj0kuOa#6@-kZ}Ef-7W af~d}B=7^}ymTrGtV3|_+i_ckX#DI5=O%5^u literal 0 HcmV?d00001 diff --git a/app/examples/Games/Snake/head.png b/app/examples/Games/Snake/head.png new file mode 100644 index 0000000000000000000000000000000000000000..c6576d3fc8568e7ca518403fbbf437409b797b78 GIT binary patch literal 1197 zcmYjR3ozAL82_FB|2}f>&DG7svU@&HjcxN-kDFaAxo7XS)6C9%=XbvIeRIBZ&hPx@OY_?1K3iZU z05IFr!_`|e>ubj>R)cr_2Au(>*=x&AH_Z}f0Sbfzp+Ggz3}GiQ1~N?uCE8RGtiJ}2 z@)*h>5x4*em2fE+a%eFU`c$8#EF!?Cd`%G%6=^qy;y<)((E29LGxd9BumfnFacX8z zbM77B=NUg2`2Iss6Hl74P#ABZ3k-nFv z(X4+44~*A-3i*NX%6Ymix@K?9Tqax&s6Wr@lvS6=pInQ5P#ANeBEY@RT1>?_2t)&^ zAi0DsW_2Fw7<3!hJ}`}4A}A!JT__y4x2JMB&CjP%QI)$4w4`N#xz2EZ<%%AQ7FW*o zwdEgSkW5G}hock-YQ^GOi7->j(Xt%_l0}$&hNtAseK~i*OCzfX#x_brtMYkEo=8M0 z9cGw8EN~LY26Kzy{KDba@P*AnahF*4jjpI)#INGBZ&d4qBK;#@|QwO?z^dfruaLf+Bs6Xs8E zt{xK|-H;lR5)|&ROvQhgQs+~*zh*`a_Fn?lo-9FKH2n-z{r?W`*DiVBoBN)&;DCFVgp{C5TU z?Dp$wY-Qv2=`IIrRS2w>c~Kl%5#8JFiXk!l5pESEus$ zz}V%o@ge8N*5qTJiS5Ow&&+o|KB>6hQ<}7B&4%>!t-<$Xe^1tzBu8zn*V}vW$lia3 rrca0aKC?By8X0kLxV!h{QX@lDElMy8>071gKY*v(HrJmvhRFW~B!a^H literal 0 HcmV?d00001 diff --git a/app/examples/Games/Snake/start.wav b/app/examples/Games/Snake/start.wav new file mode 100644 index 0000000000000000000000000000000000000000..a23faacb29c03708040e51ad597a5ac191f5c0da GIT binary patch literal 31810 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 LFFLto!{+}FrKSsa literal 0 HcmV?d00001 diff --git a/app/examples/Games/Solitaire/.directory b/app/examples/Games/Solitaire/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Games/Solitaire/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Games/Solitaire/.icon.png b/app/examples/Games/Solitaire/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..fa870190609f8e8604fbe60579cb818f75902353 GIT binary patch literal 4209 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 Hu0mjfc$N3r literal 0 HcmV?d00001 diff --git a/app/examples/Games/Solitaire/.lang/ca.po b/app/examples/Games/Solitaire/.lang/ca.po new file mode 100644 index 00000000..c9e2e690 --- /dev/null +++ b/app/examples/Games/Solitaire/.lang/ca.po @@ -0,0 +1,96 @@ +# Catalan translation of Solitaire +# Copyright (C) 2000-2010 Benoît Minisini. +# This file is distributed under the same license as the Solitaire package. +# Jordi Sayol , 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: Solitaire\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2011-03-20 22:40+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FGameArea.form:48 +msgid "&About" +msgstr "&Quant a" + +#: FBoardSelect.form:21 +msgid "Board Layout" +msgstr "Format del tauler" + +#: FBoardSelect.form:31 +msgid "Cancel" +msgstr "Canceŀla" + +#: FGameArea.form:25 +msgid "&File" +msgstr "&Fitxer" + +#: FGameArea.form:37 +msgid "&Game" +msgstr "J&oc" + +#: FGameArea.form:45 +msgid "&Help" +msgstr "&Ajuda" + +#: FGameArea.form:28 +msgid "&New Game" +msgstr "&Joc nou" + +#: FGameArea.form:57 +msgid "New Game" +msgstr "Joc nou" + +#: FBoardSelect.form:26 +msgid "OK" +msgstr "D'acord" + +#: FGameArea.form:87 +msgid "Quit" +msgstr "Surt" + +#: FGameArea.form:32 +msgid "&Quit" +msgstr "&Surt" + +#: FGameArea.form:80 +msgid "Redo" +msgstr "Refés" + +#: FGameArea.form:65 +msgid "Restart" +msgstr "torna a iniciar" + +#: FBoardSelect.form:11 +msgid "Select board" +msgstr "Seleccioneu tauler" + +#: FGameArea.form:40 +msgid "&Select Board" +msgstr "&Seleccioneu tauler" + +#: FGameArea.form:20 +msgid "Solitaire" +msgstr "Solitari" + +#: FGameArea.class:259 +msgid "Solitaire v0.3\nBy: Grahame White \nWritten for Gambas http://gambas.sf.net" +msgstr "Solitari v0.3\nPer: Grahame White \nEscrit per al Gambas http://gambas.sf.net" + +#: .project:1 +msgid "Some sort of solitaire game" +msgstr "Una mena de joc del solitari" + +#: FGameArea.form:72 +msgid "Undo" +msgstr "Desfés" + diff --git a/app/examples/Games/Solitaire/.lang/cs.po b/app/examples/Games/Solitaire/.lang/cs.po new file mode 100644 index 00000000..24468c0b --- /dev/null +++ b/app/examples/Games/Solitaire/.lang/cs.po @@ -0,0 +1,94 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Some sort of solitaire game" +msgstr "Nějaké solitaire hry" + +#: FBoardSelect.form:11 +msgid "Select board" +msgstr "Vyber hru" + +#: FBoardSelect.form:21 +msgid "Board Layout" +msgstr "Rozložení hry" + +#: FBoardSelect.form:26 +msgid "OK" +msgstr "-" + +#: FBoardSelect.form:31 +msgid "Cancel" +msgstr "ZruÅ¡it" + +#: FGameArea.class:259 +msgid "" +"Solitaire v0.3\n" +"By: Grahame White \n" +"Written for Gambas http://gambas.sf.net" +msgstr "" +"Solitaire v0.3\n" +"Od: Grahame White \n" +"Napsaný pro Gambas http://gambas.sf.net" + +#: FGameArea.form:20 +msgid "Solitaire" +msgstr "-" + +#: FGameArea.form:25 +msgid "&File" +msgstr "&Soubor" + +#: FGameArea.form:28 +msgid "&New Game" +msgstr "&Nová hra" + +#: FGameArea.form:32 +msgid "&Quit" +msgstr "&Ukončit" + +#: FGameArea.form:37 +msgid "&Game" +msgstr "&Hra" + +#: FGameArea.form:40 +msgid "&Select Board" +msgstr "&Vyber hru" + +#: FGameArea.form:45 +msgid "&Help" +msgstr "&Nápověda" + +#: FGameArea.form:48 +msgid "&About" +msgstr "&O aplikaci" + +#: FGameArea.form:57 +msgid "New Game" +msgstr "Nová hra" + +#: FGameArea.form:65 +msgid "Restart" +msgstr "-" + +#: FGameArea.form:72 +msgid "Undo" +msgstr "Vpřed" + +#: FGameArea.form:80 +msgid "Redo" +msgstr "Zpět" + +#: FGameArea.form:87 +msgid "Quit" +msgstr "Ukončit" diff --git a/app/examples/Games/Solitaire/.lang/de.po b/app/examples/Games/Solitaire/.lang/de.po new file mode 100644 index 00000000..1ccd7676 --- /dev/null +++ b/app/examples/Games/Solitaire/.lang/de.po @@ -0,0 +1,89 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Some sort of solitaire game" +msgstr "Eine Solitär-Variante" + +#: FBoardSelect.form:11 +msgid "Select board" +msgstr "Spielfeld auswählen" + +#: FBoardSelect.form:21 +msgid "Board Layout" +msgstr "Spielfeld" + +#: FBoardSelect.form:26 +msgid "OK" +msgstr "-" + +#: FBoardSelect.form:31 +msgid "Cancel" +msgstr "Abbrechen" + +#: FGameArea.class:259 +msgid "Solitaire v0.3\nBy: Grahame White \nWritten for Gambas http://gambas.sf.net" +msgstr "Solitaire v0.3\nVon: Grahame White \nGeschrieben für Gambas http://gambas.sf.net" + +#: FGameArea.form:20 +msgid "Solitaire" +msgstr "-" + +#: FGameArea.form:25 +msgid "&File" +msgstr "&Datei" + +#: FGameArea.form:28 +msgid "&New Game" +msgstr "&Neues Spiel" + +#: FGameArea.form:32 +msgid "&Quit" +msgstr "&Beenden" + +#: FGameArea.form:37 +msgid "&Game" +msgstr "&Spiel" + +#: FGameArea.form:40 +msgid "&Select Board" +msgstr "&Spielfeld auswählen" + +#: FGameArea.form:45 +msgid "&Help" +msgstr "&Hilfe" + +#: FGameArea.form:48 +msgid "&About" +msgstr "&Über" + +#: FGameArea.form:57 +msgid "New Game" +msgstr "Neues Spiel" + +#: FGameArea.form:65 +msgid "Restart" +msgstr "Neu starten" + +#: FGameArea.form:72 +msgid "Undo" +msgstr "Rückgängig" + +#: FGameArea.form:80 +msgid "Redo" +msgstr "Wiederherstellen" + +#: FGameArea.form:87 +msgid "Quit" +msgstr "Beenden" + diff --git a/app/examples/Games/Solitaire/.lang/es.po b/app/examples/Games/Solitaire/.lang/es.po new file mode 100644 index 00000000..bc88c09b --- /dev/null +++ b/app/examples/Games/Solitaire/.lang/es.po @@ -0,0 +1,79 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FBoardSelect.class:50 +msgid "Select board" +msgstr "Seleccionar tablero" + +#: FBoardSelect.class:60 +msgid "Board Layout" +msgstr "Tablero de diseño" + +#: FBoardSelect.class:65 +msgid "OK" +msgstr "OK" + +#: FBoardSelect.class:70 +msgid "Cancel" +msgstr "Cancelar" + +#: FGameArea.class:392 +msgid "Solitaire" +msgstr "&Seleccionar tablero" + +#: FGameArea.class:397 +msgid "&File" +msgstr "&Archivo" + +#: FGameArea.class:400 +msgid "&New Game" +msgstr "&Nuevo juego" + +#: FGameArea.class:404 +msgid "&Quit" +msgstr "&Salir" + +#: FGameArea.class:409 +msgid "&Game" +msgstr "&Juego" + +#: FGameArea.class:412 +msgid "&Select Board" +msgstr "&Seleccionar tablero" + +#: FGameArea.class:417 +msgid "&Help" +msgstr "&Ayuda" + +#: FGameArea.class:420 +msgid "&About" +msgstr "&Acerca de" + +#: FGameArea.class:429 +msgid "New Game" +msgstr "Nuevo juego" + +#: FGameArea.class:437 +msgid "Restart" +msgstr "Reiniciar" + +#: FGameArea.class:444 +msgid "Undo" +msgstr "Deshacer" + +#: FGameArea.class:452 +msgid "Redo" +msgstr "Rehacer" + +#: FGameArea.class:459 +msgid "Quit" +msgstr "Salir" diff --git a/app/examples/Games/Solitaire/.lang/ru.po b/app/examples/Games/Solitaire/.lang/ru.po new file mode 100644 index 00000000..ae7b85ea --- /dev/null +++ b/app/examples/Games/Solitaire/.lang/ru.po @@ -0,0 +1,116 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-28 09:00+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Games/Solitaire/.project:19 +msgid "Some sort of solitaire game" +msgstr "Своего рода игра в пасьянс" + +#: app/examples/Games/Solitaire/.project:20 app/examples/Games/Solitaire/.src/FGameArea.form:5 +msgid "Solitaire" +msgstr "Пасьянс" + +#: app/examples/Games/Solitaire/.src/FBoardSelect.form:5 +msgid "Select board" +msgstr "Выбрать доску" + +#: app/examples/Games/Solitaire/.src/FBoardSelect.form:13 +msgid "Board Layout" +msgstr "Макет доски" + +#: app/examples/Games/Solitaire/.src/FBoardSelect.form:17 +msgid "OK" +msgstr "ОК" + +#: app/examples/Games/Solitaire/.src/FBoardSelect.form:21 +msgid "Cancel" +msgstr "Отмена" + +#: app/examples/Games/Solitaire/.src/FGameArea.class:259 +msgid "" +"Solitaire v0.3\n" +"By: Grahame White \n" +"Written for Gambas http://gambas.sf.net" +msgstr "" +"Пасьянс версии 0.3\n" +"От: Грэхем Уайт \n" +"Написан для Gambas http://gambas.sf.net" + +#: app/examples/Games/Solitaire/.src/FGameArea.form:9 +msgid "&File" +msgstr "Файл" + +#: app/examples/Games/Solitaire/.src/FGameArea.form:11 +msgid "&New Game" +msgstr "Новая игра" + +#: app/examples/Games/Solitaire/.src/FGameArea.form:14 +msgid "&Quit" +msgstr "Выход" + +#: app/examples/Games/Solitaire/.src/FGameArea.form:18 +msgid "&Game" +msgstr "Игра" + +#: app/examples/Games/Solitaire/.src/FGameArea.form:20 +msgid "&Select Board" +msgstr "Выбрать доску" + +#: app/examples/Games/Solitaire/.src/FGameArea.form:24 +msgid "&Help" +msgstr "Справка" + +#: app/examples/Games/Solitaire/.src/FGameArea.form:26 +msgid "&About" +msgstr "О программе" + +#: app/examples/Games/Solitaire/.src/FGameArea.form:33 +msgid "New Game" +msgstr "Новая игра" + +#: app/examples/Games/Solitaire/.src/FGameArea.form:40 +msgid "Restart" +msgstr "Перезапустить" + +#: app/examples/Games/Solitaire/.src/FGameArea.form:46 +msgid "Undo" +msgstr "Откатить" + +#: app/examples/Games/Solitaire/.src/FGameArea.form:53 +msgid "Redo" +msgstr "Вернуть" + +#: app/examples/Games/Solitaire/.src/FGameArea.form:59 +msgid "Quit" +msgstr "Выход" + +#: app/examples/Games/Solitaire/.src/MBoards.module:27 +msgid "Original" +msgstr "Оригинал" + +#: app/examples/Games/Solitaire/.src/MBoards.module:49 +msgid "Plus" +msgstr "Плюс" + diff --git a/app/examples/Games/Solitaire/.project b/app/examples/Games/Solitaire/.project new file mode 100644 index 00000000..f9f4bf26 --- /dev/null +++ b/app/examples/Games/Solitaire/.project @@ -0,0 +1,18 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.0.0 +Title=Some sort of solitaire game +Description="Solitaire" +Startup=FGameArea +Icon=ball.png +Version=3.6.2 +VersionFile=1 +Component=gb.image +Component=gb.gui +TabSize=2 +Translate=1 +Language=fr +ExecPath=/home/benoit/gambas/gambas.link/share/gambas/examples/Games/Solitaire/Solitaire +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence diff --git a/app/examples/Games/Solitaire/.src/CBoardDesign.class b/app/examples/Games/Solitaire/.src/CBoardDesign.class new file mode 100644 index 00000000..3e2c55ef --- /dev/null +++ b/app/examples/Games/Solitaire/.src/CBoardDesign.class @@ -0,0 +1,9 @@ +' Gambas class file + +' each row is stored as a number between 0-1023 (inc) +' each column numbered in 2^ and the row is the sum of the active columns +' leftmost column is 512, rightmost is 1 +Public Name As String ' Board desidn name +Public Row As New Byte[] ' Board layout +Public Placed As New Byte[] ' The cells with balls on them +Public Finish As Byte ' The cell that the last ball must be on diff --git a/app/examples/Games/Solitaire/.src/CMove.class b/app/examples/Games/Solitaire/.src/CMove.class new file mode 100644 index 00000000..6698dd82 --- /dev/null +++ b/app/examples/Games/Solitaire/.src/CMove.class @@ -0,0 +1,5 @@ +' Gambas class file + +Public Source As Byte ' Start cell +Public Target As Byte ' Finish cell +Public Captured As Byte ' Ball taken diff --git a/app/examples/Games/Solitaire/.src/FBoardSelect.class b/app/examples/Games/Solitaire/.src/FBoardSelect.class new file mode 100644 index 00000000..adc3e845 --- /dev/null +++ b/app/examples/Games/Solitaire/.src/FBoardSelect.class @@ -0,0 +1,35 @@ +' Gambas class file + +Public Sub cmdCancel_Click() + + FBoardSelect.Close + +End + +Public Sub Form_Show() + + Dim i As Byte + + ' Fill in the combo box text section + cboLayout.Text = Global.boarddesign[Global.selectedlayout].Name + + ' Fill in the combo box dropdown section + For i = 0 To Global.boarddesign.Count - 1 + cboLayout.Add(Global.boarddesign[i].Name) + Next + +End + + +Public Sub cmdOK_Click() + + ' Set board layout index + Global.selectedlayout = cboLayout.Index + + ' Reset board + FGameArea.reset_board() + + ' Close this window + FBoardSelect.Close + +End diff --git a/app/examples/Games/Solitaire/.src/FBoardSelect.form b/app/examples/Games/Solitaire/.src/FBoardSelect.form new file mode 100644 index 00000000..3d2c9094 --- /dev/null +++ b/app/examples/Games/Solitaire/.src/FBoardSelect.form @@ -0,0 +1,23 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(42.6667,7.5,40,11) + Text = ("Select board") + Resizable = False + { cboLayout ComboBox + MoveScaled(16,1,23,4) + Text = (" ") + } + { lblLayout TextLabel + MoveScaled(1,1,14,4) + Text = ("Board Layout") + } + { cmdOK Button + MoveScaled(1,6,11,4) + Text = ("OK") + } + { cmdCancel Button + MoveScaled(28,6,11,4) + Text = ("Cancel") + } +} diff --git a/app/examples/Games/Solitaire/.src/FGameArea.class b/app/examples/Games/Solitaire/.src/FGameArea.class new file mode 100644 index 00000000..c2312114 --- /dev/null +++ b/app/examples/Games/Solitaire/.src/FGameArea.class @@ -0,0 +1,368 @@ +' Gambas class file + +Public board As New Object[] + +Public Sub Form_Open() + + Dim i As Byte + Dim j As Byte + + Global.POW2 = [64, 32, 16, 8, 4, 2, 1] + Global.Ball = Picture.Load("ball.png") + + board.Resize(49) + + 'FGameArea.Border = window.Resizable + FGameArea.Resize((8 * 2) + (48 * 7), (8 * 2) + (48 * 8) + panToolBar.Height) + 'FGameArea.Border = window.Fixed + Global.selectedlayout = 0 + + ' Create master geometry (7 x 7 grid) + For i = 0 To 6 + For j = 0 To 6 + Wait + board[(i * 7) + j] = New PictureBox(Me) As "GameBoard" + board[(i * 7) + j].Alignment = Align.Center + board[(i * 7) + j].Border = Border.Plain + board[(i * 7) + j].height = 48 + board[(i * 7) + j].width = 48 + board[(i * 7) + j].x = 8 + (48 * j) + board[(i * 7) + j].y = 8 + (48 * i) + panToolBar.Height + Next + Next + + ' Create board layouts + MBoards.make_boards() + MBoards.fill_boards() + + reset_board() + +End + +Private Sub set_row(row_value As Byte, row_no As Byte) + + Dim i As Byte + + ' Just to be sure + If row_value > 127 Then row_value = 127 + + For i = 0 To 6 + If row_value >= global.POW2[i] Then + board[(row_no * 7) + i].visible = True + board[(row_no * 7) + i].border = border.Raised + row_value = row_value - global.POW2[i] + board[(row_no * 7) + i].Tag = (row_no * 7) + i + Else + board[(row_no * 7) + i].visible = False + Endif + Next + +End + +Private Sub place_balls(row_value As Byte, row_no As Byte) + + Dim i As Byte + + ' Just to be sure + If row_value > 127 Then row_value = 127 + + For i = 0 To 6 + If row_value >= global.POW2[i] Then + If board[(row_no * 7) + i].visible = True Then + board[(row_no * 7) + i].picture = Global.Ball + row_value = row_value - global.POW2[i] + Global.BallCount = Global.BallCount + 1 + Endif + Else + board[(row_no * 7) + i].picture = Null + Endif + Next + +End + +Public Sub GameBoard_MouseUp() + + ' If not enough balls left then return + If Global.BallCount <= 1 Then Return + ' If a ball is not already selected then select it + If Last.Picture = global.Ball Then + global.Selected = True + If global.ClickedBall <> Null Then + board[global.ClickedBall].background = 15658726 + Endif + global.ClickedBall = CByte(Last.Tag) + Last.background = &HFF0000& + Else + If global.Selected = True Then + try_take(global.ClickedBall, CByte(Last.tag)) + Endif + Endif + +End + +Private Sub try_take(source_cell As Byte, target_cell As Byte) + + Dim current_row As Byte + Dim target_row As Byte + Dim current_col As Byte + Dim target_col As Byte + Dim i As Byte + + + If board[target_cell].visible = False Then Return + + current_row = source_cell \ 7 + target_row = target_cell \ 7 + + ' Are both cells on the same row + If current_row = target_row Then + ' (YES) Check that they are close enough and have a ball in between + ' Check to the right + If source_cell + 2 < 49 Then + If source_cell + 2 = target_cell Then + ' In range + If board[source_cell + 1].picture = global.Ball Then + ' Ah good! A move can be made + ' Record move + set_move(Global.totalballs - Global.ballcount, source_cell, target_cell, source_cell + 1) + + ' clean up move recorder to make undo/redo work correctly + For i = (Global.totalballs - Global.ballcount) + 1 To Global.totalballs - 1 + set_move(i, 0, 0, 0) + Next + + ' Move pieces + board[source_cell].picture = Null + board[source_cell].background = 15658726 + board[source_cell + 1].picture = Null + board[target_cell].picture = global.Ball + global.BallCount = global.BallCount - 1 + + ' Finally activate Undo seeing as a move has been made + tbtnUndo.Enabled = True + tbtnRedo.Enabled = False + + Return + Endif + Endif + Endif + + ' Then to the left + If source_cell - 2 >= 0 Then + If source_cell - 2 = target_cell Then + ' In range + If board[source_cell - 1].picture = global.Ball Then + ' Ah good! A move can be made + ' Record move + set_move(Global.totalballs - Global.ballcount, source_cell, target_cell, source_cell - 1) + + ' clean up move recorder to make undo/redo work correctly + For i = (Global.totalballs - Global.ballcount) + 1 To Global.totalballs - 1 + set_move(i, 0, 0, 0) + Next + + ' Move pieces + board[source_cell].picture = Null + board[source_cell].background = 15658726 + board[source_cell - 1].picture = Null + board[target_cell].picture = global.Ball + global.BallCount = global.BallCount - 1 + + ' Finally activate Undo seeing as a move has been made + tbtnUndo.Enabled = True + tbtnRedo.Enabled = False + + Return + Endif + Endif + Endif + Endif + + ' Ok, so not on the same row ... how about the same column? + current_col = source_cell Mod 7 + target_col = target_cell Mod 7 + + If current_col = target_col Then + If source_cell + 14 < 49 Then + If source_cell + 14 = target_cell Then + If board[source_cell + 7].picture = global.Ball Then + ' Record move + set_move(Global.totalballs - Global.ballcount, source_cell, target_cell, source_cell + 7) + + ' clean up move recorder to make undo/redo work correctly + For i = (Global.totalballs - Global.ballcount) + 1 To Global.totalballs - 1 + set_move(i, 0, 0, 0) + Next + + ' Move pieces + board[source_cell].Picture = Null + board[source_cell].background = 15658726 + board[source_cell + 7].Picture = Null + board[target_cell].picture = global.Ball + global.BallCount = global.BallCount - 1 + + ' Finally activate Undo seeing as a move has been made + tbtnUndo.Enabled = True + tbtnRedo.Enabled = False + + Return + Endif + Endif + Endif + + If source_cell - 14 >= 0 Then + If source_cell - 14 = target_cell Then + If board[source_cell - 7].picture = global.Ball Then + ' Record move + set_move(Global.totalballs - Global.ballcount, source_cell, target_cell, source_cell - 7) + + ' clean up move recorder to make undo/redo work correctly + For i = (Global.totalballs - Global.ballcount) + 1 To Global.totalballs - 1 + set_move(i, 0, 0, 0) + Next + + ' Move pieces + board[source_cell].picture = Null + board[source_cell].background = 15658726 + board[source_cell - 7].picture = Null + board[target_cell].picture = global.Ball + global.BallCount = global.BallCount - 1 + + ' Finally activate Undo seeing as a move has been made + tbtnUndo.Enabled = True + tbtnRedo.Enabled = False + + Return + Endif + Endif + Endif + Endif + +End + +Public Sub mnuQuit_Click() + + Me.Close + +End + +Public Sub mnuNew_Click() + + reset_board() + +End + +Public Sub mnuAbout_Click() + + Dim About As String + + About = ("Solitaire v0.3\nBy: Grahame White \nWritten for Gambas http://gambas.sf.net") + Message(About) + +End + +Public Sub tbtnQuit_Click() + + Me.Close + +End + +Public Sub tbtnNewGame_Click() + + reset_board() + +End + +Public Sub reset_board() + + Dim j As Byte + + ' Clear ball count + Global.BallCount = 0 + + ' Display the board layout + For j = 0 To 6 + set_row(Global.boarddesign[Global.selectedlayout].Row[j], j) + place_balls(Global.boarddesign[Global.selectedlayout].Placed[j], j) + Next + + Global.totalballs = Global.ballcount + + ' Make sure there is enough room for all the moves (number of balls, which leaves 1 extra just in case) + Global.gamemove.Resize(Global.ballcount) + + ' Reset the move recorder + For j = 0 To Global.ballcount - 1 + Global.gamemove[j] = New CMove + set_move(j, 0, 0, 0) + Next + + ' Disable Undo/Redo buttons + tbtnUndo.Enabled = False + tbtnRedo.Enabled = False + +End + +Private Sub set_move(movenumber As Byte, source As Byte, target As Byte, capture As Byte) + + With Global.gamemove[movenumber] + .Source = Source + .Target = Target + .Captured = capture + End With + +End + +Private Sub undo_move(movenumber As Byte) + + tbtnUndo.Enabled = False + + ' Put balls in correct places + board[Global.gamemove[movenumber].target].Picture = Null + board[Global.gamemove[movenumber].captured].picture = Global.ball + board[Global.gamemove[movenumber].source].picture = Global.ball + + ' update ball counter + global.ballcount = global.ballcount + 1 + + If global.ballcount < global.totalballs Then tbtnUndo.Enabled = True + tbtnRedo.Enabled = True + +End + +Public Sub tbtnUndo_Click() + + undo_move((global.totalballs - global.ballcount) - 1) + +End + +Private Sub redo_move(movenumber As Byte) + + tbtnRedo.Enabled = False + + ' Put balls in correct places + board[Global.gamemove[movenumber].target].picture = Global.ball + board[Global.gamemove[movenumber].captured].Picture = Null + board[Global.gamemove[movenumber].source].Picture = Null + + ' Update ball counter + global.ballcount = global.ballcount - 1 + + If movenumber + 1 < global.totalballs Then + If global.gamemove[movenumber + 1].target <> global.gamemove[movenumber + 1].source Then tbtnRedo.Enabled = True + Endif + tbtnUndo.Enabled = True + +End + +Public Sub tbtnRedo_Click() + + redo_move(global.totalballs - global.ballcount) + +End + +Public Sub mnuBoardSelect_Click() + + FBoardSelect.ShowModal + +End diff --git a/app/examples/Games/Solitaire/.src/FGameArea.form b/app/examples/Games/Solitaire/.src/FGameArea.form new file mode 100644 index 00000000..0af8fb6f --- /dev/null +++ b/app/examples/Games/Solitaire/.src/FGameArea.form @@ -0,0 +1,64 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(57.5714,37.1429,50,58) + Text = ("Solitaire") + Icon = Picture["ball.png"] + Resizable = False + { mnuFile Menu + Text = ("&File") + { mnuNew Menu + Text = ("&New Game") + } + { mnuQuit Menu + Text = ("&Quit") + } + } + { mnuGame Menu + Text = ("&Game") + { mnuBoardSelect Menu + Text = ("&Select Board") + } + } + { mnuHelp Menu + Text = ("&Help") + { mnuAbout Menu + Text = ("&About") + } + } + { panToolBar Panel + MoveScaled(0,0,82.6667,4) + { tbtnNewGame ToolButton + MoveScaled(0,0,4,4) + ToolTip = ("New Game") + Text = ("") + Picture = Picture["new.png"] + } + { tbtnRestartGame ToolButton + MoveScaled(4,0,4,4) + Enabled = False + ToolTip = ("Restart") + Text = ("") + } + { tbtnUndo ToolButton + MoveScaled(4,0,4,4) + Enabled = False + ToolTip = ("Undo") + Text = ("") + Picture = Picture["undo.png"] + } + { tbtnRedo ToolButton + MoveScaled(8,0,4,4) + Enabled = False + ToolTip = ("Redo") + Text = ("") + Picture = Picture["redo.png"] + } + { tbtnQuit ToolButton + MoveScaled(12,0,4,4) + ToolTip = ("Quit") + Text = ("") + Picture = Picture["quit.png"] + } + } +} diff --git a/app/examples/Games/Solitaire/.src/Global.class b/app/examples/Games/Solitaire/.src/Global.class new file mode 100644 index 00000000..4c3d6ca2 --- /dev/null +++ b/app/examples/Games/Solitaire/.src/Global.class @@ -0,0 +1,11 @@ +' Gambas class file + +Static Public boarddesign As New Object[] ' The game grid +Static Public POW2 As Integer[] ' Array for display algo +Static Public ball As Picture ' The ball graphic +Static Public selected As Boolean ' Is a ball selected? +Static Public clickedball As Byte ' Which ball, ignored if above is false +Static Public ballcount As Byte ' The number of balls in play +Static Public totalballs As Byte ' The number of balls at the start +Static Public gamemove As New Object[] ' Stores the moves made to allow for undoing +Static Public selectedlayout As Byte ' The active board layout diff --git a/app/examples/Games/Solitaire/.src/MBoards.module b/app/examples/Games/Solitaire/.src/MBoards.module new file mode 100644 index 00000000..ec7e8ebb --- /dev/null +++ b/app/examples/Games/Solitaire/.src/MBoards.module @@ -0,0 +1,69 @@ +' Gambas module file + +Public Sub make_boards() + + Dim i As Byte + Dim j As Byte + + ' Create the board design objects + + Global.boarddesign.Resize(2) + + For i = 0 To Global.boarddesign.Count - 1 + Global.boarddesign[i] = New CBoardDesign + For j = 1 To 7 + Global.boarddesign[i].Row.Add(0) + Global.boarddesign[i].Placed.Add(0) + Next + Next + +End + +Public Sub fill_boards() + + ' Fill the board design Array + + With Global.boarddesign[0] + .Name = ("Original") + + .Row[0] = 28 + .Row[1] = 28 + .Row[2] = 127 + .Row[3] = 127 + .Row[4] = 127 + .Row[5] = 28 + .Row[6] = 28 + + .Placed[0] = 28 + .Placed[1] = 28 + .Placed[2] = 127 + .Placed[3] = 119 + .Placed[4] = 127 + .Placed[5] = 28 + .Placed[6] = 28 + + .Finish = 28 + End With + + With Global.boarddesign[1] + .Name = ("Plus") + + .Row[0] = 28 + .Row[1] = 28 + .Row[2] = 127 + .Row[3] = 127 + .Row[4] = 127 + .Row[5] = 28 + .Row[6] = 28 + + .Placed[0] = 0 + .Placed[1] = 8 + .Placed[2] = 8 + .Placed[3] = 62 + .Placed[4] = 8 + .Placed[5] = 8 + .Placed[6] = 0 + + .Finish = 28 + End With +End diff --git a/app/examples/Games/Solitaire/ball.png b/app/examples/Games/Solitaire/ball.png new file mode 100644 index 0000000000000000000000000000000000000000..5e5e042e2f7b73ca288b0cbbe68961df1796dd3c GIT binary patch literal 3327 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 VZ-apY?{=W+44$rjF6*2UngFwdJ>38R literal 0 HcmV?d00001 diff --git a/app/examples/Games/Solitaire/redo.png b/app/examples/Games/Solitaire/redo.png new file mode 100644 index 0000000000000000000000000000000000000000..72b4ce5cc8cdaa52f3740cfde3b48acbfdd4d9c9 GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|uJ`WUYi?|2U})Abigp7E zGL{7S1v5B2yO9RuXn49fhHzX@PB_3S5zfeI*2c=kBf}%Z-M}K;@gRyp4;#Cuxa@2uUG{2v!Lei3nK-7lsZF#x6qx1IvWV a%nW69%#vXnX3PibVeoYIb6Mw<&;$Sq{2`wJ literal 0 HcmV?d00001 diff --git a/app/examples/Games/StarField/.directory b/app/examples/Games/StarField/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Games/StarField/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Games/StarField/.icon.png b/app/examples/Games/StarField/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..236e2ed08cdf5d55458da6809196a99a16380280 GIT binary patch literal 3140 zcmV-K47>A*P)=h(Q=m1hIJ^E=OX-!|REu1WywAdK9Uo3)Ph^|pLCFFXJIV1Z$9!!e5Wjo@7zu1Q5~54cxln*d9#Q#%Wx)R>ao}r&Yydps6pzXTViyW%iItrP_`&371t~4oK9sSpuz% zczf5=xTPytvf>Upn-9>_ew3R(`J2-sfU*+>C@7aR+9+QuJy8I;dI7ABIQaH+$cohz zPQ1^6s$i(Pj6_nSMPGIQSAq*Hz(l_Bl+G$M@y50AfVQUn3|5vRVSsBn!`XVv(&Za* zdmB+&2(lSWB85`dPYgGSnHTD;(OTs$umE>;77zwG&VA5~S6>g#;cfXW1MMfdz0%{% z!e2p)=49i~Xjr$6RC&$y6JXN%uC>h>(c&9XlYV$*8=-@*KFPV0jYJN@4Vx%W&%zc0 zN-C?!o!ZZleP^kz-^iYqzDHBfF&1t3H0nC8I5MdK7HIK}5%I6Zy8ps=zseu}?tOgi zAD?9Bzx*?Q{rrCuEL@IGq^R~_NJ4h+c@fig5bvhBq$-jat2(!gvb8DYeB~+aD5a_Q!xkpA8_+Pj)Kedsk-RkpGC?z<@i zQZ+TSb$0RC-#tztQA#0KG>$RVQvC<=18meb6uoR2Zyhd%3?w@ExbrF|pfGFlMF z`2v8u#H_TRXe8qm$l5$dJ6gGaSv9tLKF{oL9;9Lu<=dWhY{H51#>Wecz&I3k<AtKb?elJh_>!Sqw zU!X}0RdLPV-0>T<1_5)sJJ|a9-=7xZMHoTc`C6X}t#q0&mF!Fu@-l9T7~2b-IdOmm zHyPeK)yDhe@KR-jnO>ry0YWdquH$D}xzr;W^BB$!)7Rd@_bZn0!$Z5+Ah4sXiY{lE z(|m$$4?aAt4`=U&}K%RrVy zRV^l!rhotIl&{)Ernj3f)yLVBE2U}IE7WX#fb3uf^@|M(vhR2s*cls zhQypY@;T_fxlc!__IEH9@wYq24oe*#bcrBC#?uy&dF+-{BM6 zew|JmCsVVL(uJGRCWiK67wyW(c?)pjvgZZR_+!6PpdF;k%Q$>E!-*&U0bMqi{?-l% z1B`;ZHr>nroH@!`105yhgl;6&)G~5Xq~!yjS+(^XIQ}l7XcjiCLFp?id}R8&3DYYf zy%JFh;~XEf?j`AU(B9Lef?cD*#Z2P4s_*Ql;=^bC21ubXzk&a73+ENg=e{~ z&`0xuecb<kJpB{qRF_gwwUEqkj+b89LG7o$h+4dfTbFfmps5{~ zXaL;kOBEqzH1D?d;H~-u!#%D1(ZhejzrFM_3kDi!Sh98s5(q}0f3@#Yc>!oB&jQ(g-Rr`g@E#|W_~rP`P@BUWJ6h+{GmNK zYmw2qzi5x({axHVuZ~SIh@Wdm3Yw#b_Yn+dE_lvI-9(MV03{=w$1Ff;1pWn))r*81ZkY8dLCHX|$>jOx8{Ox@!&+;Ask1eA!jN{NWL(wG~D zQ5P8K{oqs>D~o0Gk;?h`(Uk25Q~-1c@shZ<1HGA3#j65T{rHWuZ^YA;iz8QDXm3aX z&|(Yu!M;CiyR>qBr5R5h-2mv>l;Eh7~as-*d e3}!Hc8T=n6Y29`>ozrOm0000 screen.Width Then + Stars.x = 0 + Stars.y = Int(Rnd(screen.Height)) + Stars.speed = Int(Rnd(1, 4)) + Endif + Next + + ' Attention la couleur affecte aussi les images ! + Draw.ForeColor = &hFFFFFF& + + Draw.Font.Size = Font.DefaultFontSize * 2 + Draw.Text(Screen.Framerate, 10, Screen.Height - 40) + + ' on applique la rotation et on affiche le logo + Draw.Rotate(rotation) + Draw.Image(img, Screen.Width \ 2 - 64, Screen.Height \ 2 - 64) + + ' rotation de 0 a 360 :-) + rotation = (rotation + 1) Mod 360 + +End diff --git a/app/examples/Games/StarField/enterprise.png b/app/examples/Games/StarField/enterprise.png new file mode 100644 index 0000000000000000000000000000000000000000..e76709e4227732091a19a2b225498f8413006efb GIT binary patch literal 4623 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 literal 0 HcmV?d00001 diff --git a/app/examples/Image/ImageViewer/.directory b/app/examples/Image/ImageViewer/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Image/ImageViewer/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Image/ImageViewer/.icon.png b/app/examples/Image/ImageViewer/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0ca93bd80534e39fec653bd33b959a86998f0765 GIT binary patch literal 4419 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 JPDHLkV1lkhc-8;_ literal 0 HcmV?d00001 diff --git a/app/examples/Image/ImageViewer/.lang/ca.po b/app/examples/Image/ImageViewer/.lang/ca.po new file mode 100644 index 00000000..4073799a --- /dev/null +++ b/app/examples/Image/ImageViewer/.lang/ca.po @@ -0,0 +1,64 @@ +# Catalan translation of ImageViewer +# Copyright (C) 2000-2010 Benoît Minisini. +# This file is distributed under the same license as the ImageViewer package. +# Jordi Sayol , 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: ImageViewer\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2010-12-17 01:07+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FViewer.form:48 +msgid "&?" +msgstr "-" + +#: FViewer.form:51 +msgid "&About..." +msgstr "&Quant a..." + +#: FViewer.class:101 +msgid "A simple image viewer example by\nBenoit Minisini (gambas@users.sourceforge.net)" +msgstr "Un exemple senzill de visualitzador d'imatges per\n Benoit Minisini (gambas@users.souceforge.net)" + +#: FViewer.form:40 +msgid "&Draw" +msgstr "&Dibuixa" + +#: FViewer.form:23 +msgid "&File" +msgstr "&Fitxer" + +#: .project:1 +msgid "Image viewer example" +msgstr "Exemple de visor d'imatges" + +#: FViewer.form:26 +msgid "&Open..." +msgstr "&Obre..." + +#: FViewer.form:34 +msgid "&Quit" +msgstr "&Surt" + +#: FViewer.form:18 +msgid "Simple Image Viewer" +msgstr "Visor d'imatges senzill" + +#: FViewer.form:43 +msgid "&Start" +msgstr "&Inicia" + +#: FViewer.class:51 +msgid "&Stop" +msgstr "&Atura" + diff --git a/app/examples/Image/ImageViewer/.lang/cs.po b/app/examples/Image/ImageViewer/.lang/cs.po new file mode 100644 index 00000000..6b8d73b6 --- /dev/null +++ b/app/examples/Image/ImageViewer/.lang/cs.po @@ -0,0 +1,60 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Image viewer example" +msgstr "Příklad prohlížeče obrázků" + +#: FViewer.class:53 +msgid "&Stop" +msgstr "-" + +#: FViewer.class:103 +msgid "" +"A simple image viewer example by\n" +"Benoit Minisini (gambas@users.sourceforge.net)" +msgstr "" +"Jednoduchý například prohlížeče obrázků od\n" +"Benoit Minisini (gambas@users.sourceforge.net)" + +#: FViewer.form:19 +msgid "Simple Image Viewer" +msgstr "Ukázka prohlížeče obrázků" + +#: FViewer.form:24 +msgid "&File" +msgstr "&Soubor" + +#: FViewer.form:27 +msgid "&Open..." +msgstr "&Otevřít..." + +#: FViewer.form:35 +msgid "&Quit" +msgstr "&Ukončit" + +#: FViewer.form:41 +msgid "&Draw" +msgstr "&Kresli" + +#: FViewer.form:44 +msgid "&Start" +msgstr "-" + +#: FViewer.form:49 +msgid "&?" +msgstr "-" + +#: FViewer.form:52 +msgid "&About..." +msgstr "&O programu..." diff --git a/app/examples/Image/ImageViewer/.lang/de.po b/app/examples/Image/ImageViewer/.lang/de.po new file mode 100644 index 00000000..5e24c275 --- /dev/null +++ b/app/examples/Image/ImageViewer/.lang/de.po @@ -0,0 +1,57 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Image viewer example" +msgstr "Beispiel für einen Bildbetrachter" + +#: FViewer.class:53 +msgid "&Stop" +msgstr "&Stopp" + +#: FViewer.class:103 +msgid "A simple image viewer example by\nBenoit Minisini (gambas@users.sourceforge.net)" +msgstr "Ein einfaches Bildbetrachter-Beispiel von\nBenoit Minisini (gambas@users.sourceforge.net)" + +#: FViewer.form:19 +msgid "Simple Image Viewer" +msgstr "Einfacher Bildbetrachter" + +#: FViewer.form:24 +msgid "&File" +msgstr "&Datei" + +#: FViewer.form:27 +msgid "&Open..." +msgstr "&Öffnen..." + +#: FViewer.form:35 +msgid "&Quit" +msgstr "&Beenden" + +#: FViewer.form:41 +msgid "&Draw" +msgstr "&Zeichnen" + +#: FViewer.form:44 +msgid "&Start" +msgstr "-" + +#: FViewer.form:49 +msgid "&?" +msgstr "-" + +#: FViewer.form:52 +msgid "&About..." +msgstr "&Über..." + diff --git a/app/examples/Image/ImageViewer/.lang/es.po b/app/examples/Image/ImageViewer/.lang/es.po new file mode 100644 index 00000000..cce89879 --- /dev/null +++ b/app/examples/Image/ImageViewer/.lang/es.po @@ -0,0 +1,43 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FViewer.class:147 +msgid "Simple Image Viewer" +msgstr "Visor de imágenes simple" + +#: FViewer.class:151 +msgid "&File" +msgstr "&Archivo" + +#: FViewer.class:154 +msgid "&Open..." +msgstr "&Abrir..." + +#: FViewer.class:163 +msgid "&Quit" +msgstr "&Salir" + +#: FViewer.class:169 +msgid "&Draw" +msgstr "&Dibujar" + +#: FViewer.class:172 +msgid "&Start" +msgstr "&Inicio" + +#: FViewer.class:177 +msgid "&?" +msgstr "&?" + +#: FViewer.class:180 +msgid "&About..." +msgstr "&Acerca de..." diff --git a/app/examples/Image/ImageViewer/.lang/nl.po b/app/examples/Image/ImageViewer/.lang/nl.po new file mode 100644 index 00000000..2d106e7f --- /dev/null +++ b/app/examples/Image/ImageViewer/.lang/nl.po @@ -0,0 +1,55 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ImageViewer 3.5.90\n" +"PO-Revision-Date: 2014-09-25 21:29 UTC\n" +"Last-Translator: Willy Raets \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Image viewer example" +msgstr "Image viewer voorbeeld" + +#: FViewer.class:53 +msgid "&Stop" +msgstr "&Stop" + +#: FViewer.class:103 +msgid "A simple image viewer example by\nBenoit Minisini (gambas@users.sourceforge.net)" +msgstr "Een eenvoudig Image Viewer voorbeeld door\nBenoît Minisini (gambas@users.sourceforge.net)" + +#: FViewer.form:19 +msgid "Simple Image Viewer" +msgstr "Eenvoudige Image Viewer" + +#: FViewer.form:24 +msgid "&File" +msgstr "&Bestand" + +#: FViewer.form:27 +msgid "&Open..." +msgstr "&Open..." + +#: FViewer.form:35 +msgid "&Quit" +msgstr "&Afsluiten" + +#: FViewer.form:41 +msgid "&Draw" +msgstr "&Teken" + +#: FViewer.form:44 +msgid "&Start" +msgstr "&Start" + +#: FViewer.form:49 +msgid "&?" +msgstr "-" + +#: FViewer.form:52 +msgid "&About..." +msgstr "&Over..." + diff --git a/app/examples/Image/ImageViewer/.lang/ru.po b/app/examples/Image/ImageViewer/.lang/ru.po new file mode 100644 index 00000000..2eaee01e --- /dev/null +++ b/app/examples/Image/ImageViewer/.lang/ru.po @@ -0,0 +1,82 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-30 09:26+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Image/ImageViewer/.project:22 +msgid "Image viewer example" +msgstr "Пример просмотрщика изображений" + +#: app/examples/Image/ImageViewer/.project:23 +msgid "A simple image viewer example" +msgstr "Простой пример просмотрщика изображений" + +#: app/examples/Image/ImageViewer/.src/FViewer.class:14 +msgid "Picture files" +msgstr "Файлы изображений" + +#: app/examples/Image/ImageViewer/.src/FViewer.class:53 +msgid "&Stop" +msgstr "Стоп" + +#: app/examples/Image/ImageViewer/.src/FViewer.class:55 app/examples/Image/ImageViewer/.src/FViewer.form:24 +msgid "&Start" +msgstr "Начать" + +#: app/examples/Image/ImageViewer/.src/FViewer.class:103 +msgid "" +"A simple image viewer example by\n" +"Benoit Minisini (gambas@users.sourceforge.net)" +msgstr "" +"Простой пример просмотрщика изображений\n" +"от Бенуа Минисини (gambas@users.sourceforge.net)" + +#: app/examples/Image/ImageViewer/.src/FViewer.form:5 +msgid "Simple Image Viewer" +msgstr "Простой просмотрщик изображений" + +#: app/examples/Image/ImageViewer/.src/FViewer.form:9 +msgid "&File" +msgstr "Файл" + +#: app/examples/Image/ImageViewer/.src/FViewer.form:11 +msgid "&Open..." +msgstr "Открыть..." + +#: app/examples/Image/ImageViewer/.src/FViewer.form:17 +msgid "&Quit" +msgstr "Выход" + +#: app/examples/Image/ImageViewer/.src/FViewer.form:22 +msgid "&Draw" +msgstr "Рисовать" + +#: app/examples/Image/ImageViewer/.src/FViewer.form:28 +msgid "&?" +msgstr "&?" + +#: app/examples/Image/ImageViewer/.src/FViewer.form:30 +msgid "&About..." +msgstr "О программе..." + diff --git a/app/examples/Image/ImageViewer/.project b/app/examples/Image/ImageViewer/.project new file mode 100644 index 00000000..96d71cdb --- /dev/null +++ b/app/examples/Image/ImageViewer/.project @@ -0,0 +1,21 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.5.90 +Title=Image viewer example +Description="A simple image viewer example" +Startup=FViewer +Icon=image.png +Version=3.6.2 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.form +Component=gb.form.dialog +Environment="GB_GUI=gb.gtk" +TabSize=2 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence +Packager=1 diff --git a/app/examples/Image/ImageViewer/.src/FViewer.class b/app/examples/Image/ImageViewer/.src/FViewer.class new file mode 100644 index 00000000..78362945 --- /dev/null +++ b/app/examples/Image/ImageViewer/.src/FViewer.class @@ -0,0 +1,106 @@ +' Gambas class file + +Public Sub mnuOpen_Click() + + Dim hImage As Image + + Dialog.Path = "/usr/share/wallpapers" + If Not Exist(Dialog.Path) Then + Dialog.Path = User.Home + Endif + + 'Dialog.Path = Application.Path + + Dialog.Filter = ["*.jpg;*.jpeg;*.png;*.bmp", ("Picture files")] + + If Dialog.OpenFile() Then Return + + hImage = Image.Load(Dialog.Path) + + dwgImage.Clear() + dwgImage.Resize(hImage.Width, hImage.Height) + + Draw.Begin(dwgImage) + Draw.FillRect(0, 0, hImage.Width, hImage.Height, Color.Gray) + Draw.Image(hImage, 0, 0) + Draw.End + + dwgImage.Visible = True + +Catch + + Message.Warning(Error.Text & " !") + +End + +Public Sub mnuQuit_Click() + + Me.Close + +End + +'PUBLIC SUB dwgImage_Draw() +' +' IF hPict THEN Draw.Picture(0, 0, hPict) +' +'END + +Public Sub mnuStart_Click() + + timDraw.Enabled = Not timDraw.Enabled + + If timDraw.Enabled Then + mnuStart.Text = ("&Stop") + Else + mnuStart.Text = ("&Start") + Endif + +End + +Public Sub timDraw_Timer() + + Dim iInd As Integer + Dim X1 As Float + Dim Y1 As Float + Dim X2 As Float + Dim Y2 As Float + Dim W As Float + Dim H As Float + Dim eTime As Float + + Paint.Begin(dwgImage) + + Paint.LineWidth = 1 + + For iInd = 1 To 16 + + Paint.Brush = Paint.Color(Color.RGB(Int(Rnd(256)), Int(Rnd(256)), Int(Rnd(256)), 128)) + + X1 = Rnd(dwgImage.Width) + Y1 = Rnd(dwgImage.Height) + W = Rnd(16, 32) + H = Rnd(16, 32) + + Paint.Rectangle(X1, Y1, W, H) + Paint.Fill() + + Paint.Rotate(Pi(0.125)) + + 'Paint.Brush = Paint.Color(Color.Black) + 'Paint.Stroke + + Next + + Paint.End + + 'dwgImage.Refresh + +End + + +Public Sub mnuAbout_Click() + + Message.Info(("A simple image viewer example by\nBenoit Minisini (gambas@users.sourceforge.net)")) + +End + diff --git a/app/examples/Image/ImageViewer/.src/FViewer.form b/app/examples/Image/ImageViewer/.src/FViewer.form new file mode 100644 index 00000000..91b3c7a5 --- /dev/null +++ b/app/examples/Image/ImageViewer/.src/FViewer.form @@ -0,0 +1,52 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(34.4286,25.4286,106,81) + Text = ("Simple Image Viewer") + Icon = Picture["image.png"] + Arrangement = Arrange.Vertical + { mnuFile Menu + Text = ("&File") + { mnuOpen Menu + Text = ("&Open...") + Shortcut = "Ctrl+O" + } + { Menu1 Menu + } + { mnuQuit Menu + Text = ("&Quit") + Shortcut = "Ctrl+Q" + } + } + { Menu3 Menu + Text = ("&Draw") + { mnuStart Menu + Text = ("&Start") + } + } + { Menu2 Menu + Text = ("&?") + { mnuAbout Menu + Text = ("&About...") + } + } + { Separator1 Separator + MoveScaled(42,1,33,0) + } + { svwImage ScrollView + MoveScaled(1,4,52,46) + Background = Color.LightForeground + Expand = True + Border = False + { dwgImage DrawingArea + MoveScaled(0,0,29,27) + Visible = False + Background = &H00AA7F& + Cached = True + } + } + { timDraw #Timer + #MoveScaled(51,10) + Delay = 50 + } +} diff --git a/app/examples/Image/ImageViewer/image.png b/app/examples/Image/ImageViewer/image.png new file mode 100644 index 0000000000000000000000000000000000000000..a415746af95a1a1ce9ea0520657bfd2b61dc19d9 GIT binary patch literal 8428 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ǵhm?bQk81p5xpaeDS7vuB&!c3*?TGZ*o$H{SpT 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 O0000mpL{Qv*oQPxBdD5C7? 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 Y12T8Jaaw$ZcK`qY07*qoM6N<$f>!i~0{{R3 literal 0 HcmV?d00001 diff --git a/app/examples/Image/Lighttable/.lang/ca.po b/app/examples/Image/Lighttable/.lang/ca.po new file mode 100644 index 00000000..c3c49747 --- /dev/null +++ b/app/examples/Image/Lighttable/.lang/ca.po @@ -0,0 +1,337 @@ +# Catalan translation of Lighttable +# Copyright (C) 2000-2010 Benoît Minisini. +# This file is distributed under the same license as the Lighttable package. +# Jordi Sayol , 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: Lighttable\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2011-01-01 02:59+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: .project:1 +msgid "Lighttable" +msgstr "-" + +#: .project:2 +msgid "A tool to sort photographs" +msgstr "Una eina per a ordenar les fotografies" + +#: FHelp.form:11 +msgid "Help" +msgstr "Ajuda" + +#: FHelp.form:31 FInfo.form:17 +msgid "&Close" +msgstr "&Tanca" + +#: FInfo.class:10 +msgid "There are no Exif informations in this file." +msgstr "No hi ha informació Exif en aquest fitxer." + +#: FInfo.class:29 +msgid "&Less" +msgstr "&Menys" + +#: FInfo.form:11 +msgid "Picture Informations" +msgstr "Informacions de la imatge" + +#: FInfo.form:24 +msgid "&More" +msgstr "&Més" + +#: FMain.class:33 +msgid "Lighttable - " +msgstr "-" + +#: FMain.class:47 +msgid "Right-click for Main Menu" +msgstr "Menú principal amb un clic del botó dret" + +#: FMain.class:48 +msgid " pictures" +msgstr "Imatge" + +#: FMain.class:49 +msgid "sorted alphabetically" +msgstr "Ordenat alfabèticament" + +#: FMain.class:75 +msgid "Right-click on the background or on a frame for menus." +msgstr "Menú amb un clic del botó dret al fons o a un marc" + +#: FMain.class:95 +msgid "Right-click for Picture Menu" +msgstr "Menú de la imatge amb un clic del botó dret" + +#: FMain.class:174 +msgid "&Rename all files..." +msgstr "Canvia de nom tots els &fitxers..." + +#: FMain.class:269 +msgid "Loading picture..." +msgstr "Carregant imatges..." + +#: FMain.class:344 +msgid "sorted chronologically" +msgstr "Ordenat cronològicament" + +#: FMain.class:384 +msgid "The file &1 already exists in the current directory!" +msgstr "El fitxer &1 ja existeix al directori actual!" + +#: FMain.class:436 FRename.form:32 FRenameAll.form:80 +#: FRenameAllWarning.form:17 FStart.form:26 FTime.form:51 +msgid "&Cancel" +msgstr "&Canceŀla" + +#: FMain.class:436 FRename.form:26 FRenameAll.form:74 FStart.form:20 +#: FTime.form:45 +msgid "&OK" +msgstr "D'ac&ord" + +#: FMain.class:436 +msgid "The file &1 will be deleted." +msgstr "El fitxer &1 serà esborrat." + +#: FMain.class:729 +msgid "Loading of pictures is being aborted..." +msgstr "La càrrega d'imatges s'està canceŀlant..." + +#: FMain.class:780 +msgid "Files are being renamed..." +msgstr "S'està canviant el nom dels fitxers..." + +#: FMain.class:809 +msgid "&1 files renamed" +msgstr "&1 fitxers han canviat de nom" + +#: FMain.class:825 +msgid "Setting time informations in all files..." +msgstr "Establint la informació de l'hora a tots els fitxers..." + +#: FMain.form:44 +msgid "Main menu" +msgstr "Menú principal" + +#: FMain.form:48 +msgid "Sorted &alphabetically" +msgstr "Ordenat &alfabèticament" + +#: FMain.form:55 +msgid "Sorted &chronologically" +msgstr "Ordenat &cronològicament" + +#: FMain.form:61 +msgid "&Slideshow" +msgstr "Presentació de &diapositives" + +#: FMain.form:67 +msgid "Abort &Loading" +msgstr "Atura &la Càrrega" + +#: FMain.form:73 +msgid "&Time correction..." +msgstr "Correcció de &temps..." + +#: FMain.form:79 +msgid "&Open folder..." +msgstr "&Obre la carpeta..." + +#: FMain.form:85 +msgid "&Help" +msgstr "&Ajuda" + +#: FMain.form:91 +msgid "&Quit" +msgstr "&Surt" + +#: FMain.form:98 +msgid "Picture menu" +msgstr "Menú de la imatge" + +#: FMain.form:102 +msgid "(Move picture: drag frame with mouse)" +msgstr "(Mou la imatge: arrossega el marc amb el ratolí)" + +#: FMain.form:107 +msgid "&View picture (click on picture)" +msgstr "&Visualitza la imatge (clic a la imatge)" + +#: FMain.form:113 +msgid "&Full Screen View" +msgstr "&Vista de pantalla completa" + +#: FMain.form:119 +msgid "&Close view" +msgstr "&Tanca la vista" + +#: FMain.form:125 +msgid "&Next picture" +msgstr "&Propera imatge" + +#: FMain.form:131 +msgid "&Previous picture" +msgstr "Imatge &anterior" + +#: FMain.form:137 +msgid "Picture &informations" +msgstr "&Informacions de la imatge" + +#: FMain.form:143 +msgid "&Rename picture" +msgstr "Canvia de nom la &imatge" + +#: FMain.form:149 +msgid "&Delete picture" +msgstr "&Suprimeix la imatge" + +#: FRename.class:43 +msgid "Old and new filename are identical." +msgstr "El nom de fitxer antic i el nou són idèntics." + +#: FRename.form:11 +msgid "Rename" +msgstr "Canvi de nom" + +#: FRename.form:17 +msgid "New filename:" +msgstr "Nom de fitxer nou:" + +#: FRenameAll.class:11 +msgid "MyPicture.JPG" +msgstr "LaMevaImatge.JPG" + +#: FRenameAll.form:22 +msgid "Rename all pictures" +msgstr "Canvia de nom totes les imatges" + +#: FRenameAll.form:41 +msgid "1" +msgstr "-" + +#: FRenameAll.form:47 +msgid "Keep original filename as suffix" +msgstr "Manté el nom original del fitxer com a sufix" + +#: FRenameAll.form:53 +msgid "Number format" +msgstr "Format del nombre" + +#: FRenameAll.form:58 +msgid "digits" +msgstr "dígits" + +#: FRenameAll.form:63 +msgid "Prefix" +msgstr "Prefix" + +#: FRenameAll.form:68 +msgid "Start value" +msgstr "Valor inicial" + +#: FRenameAll.form:88 +msgid "This function will rename all .jp(e)g files in the directory and add serial numbers to the filenames.
    The pictures will be handled in the order they are shown right now, in rows from left to right, rows from top to bottom." +msgstr "Aquesta funció canviarà el nom de tots els fitxers del directori i afegirà un número de serie al nom dels fitxers.
    Les imatges es gestionaran en el mateix ordre en que es mostren ara, en files d'esquerra a dreta, files de dalt a baix." + +#: FRenameAll.form:94 +msgid "Options" +msgstr "Opcions" + +#: FRenameAll.form:99 +msgid "Example:" +msgstr "Exemple:" + +#: FRenameAllWarning.form:12 +msgid "File Conflicts" +msgstr "Conflictes de fitxers" + +#: FRenameAllWarning.form:24 +msgid "Continue &anyway" +msgstr "Continua de totes m&aneres" + +#: FRenameAllWarning.form:29 +msgid "The following files can't be renamed, because the target filenames already exist in the directory.
    If you continue, only the files without conflicts will be renamed.
    If you cancel, you can choose new filename options." +msgstr "No es pot canviar el nom d'aquests fitxers perquè els noms de fitxer de destí ja existeixen al directori.
    Si continueu, només els fitxers sense conflicte canviaran de nom.
    Si canceŀleu, podreu triar noves opcions de nom de fitxer." + +#: FSlideshow.form:38 +msgid "Pause between pictures:" +msgstr "Pausa entre imatges:" + +#: FSlideshow.form:49 +msgid "sec" +msgstr "seg" + +#: FSlideshow.form:54 +msgid "Stop" +msgstr "Atura" + +#: FStart.class:54 +msgid "The folder &1 doesn't contain any jp(e)g files." +msgstr "La carpeta &1 no conté cap fitxer jp(e)g." + +#: FStart.form:15 +msgid "Lighttable - Select picture folder" +msgstr "Lighttable - Trieu una carpeta d'imatges " + +#: FStart.form:41 +msgid "New selection" +msgstr "Nova selecció" + +#: FStart.form:51 +msgid "Last selections" +msgstr "Últimes seleccions" + +#: FTime.class:21 +msgid "There is no time correction selected." +msgstr "No hi ha correcció de temps seleccionat." + +#: FTime.form:18 +msgid "Time correction" +msgstr "Correcció de temps" + +#: FTime.form:39 +msgid "earlier" +msgstr "previ" + +#: FTime.form:39 +msgid "later" +msgstr "posterior" + +#: FTime.form:59 +msgid "This function will correct all date/time informations in the EXIF section of all .jp(e)g files in the folder.
    A backup of the files will be made with file names like 'MyPicture.jpg_original'.
    If there are no EXIF date/time informations in a file, nothing will be done." +msgstr "Aquesta funció corregirà les informacions de data/hora dins de la secció Exif de tots els fitxers .jp(e)g de la carpeta.
    Es farà una còpia de seguretat dels fitxers amb noms de fitxers com «LaMevaImatge.jpg_original».
    Si no hi ha informacions Exif de data/hora dins el fitxer, no es farà res." + +#: FTime.form:65 +msgid "Set the original time of all pictures to" +msgstr "Estableix l'hora original de totes les imatges de" + +#: FTime.form:70 +msgid "day(s)" +msgstr "dia(es)" + +#: FTime.form:75 +msgid "hour(s)" +msgstr "Hora(es)" + +#: FTime.form:80 +msgid "minute(s)" +msgstr "minut(s)" + +#: MMain.module:12 +msgid "To run this program, exiftool must be installed." +msgstr "Per poder executar aquest programa, l'exiftool ha d'estar instaŀlat." + +#: MMain.module:18 +msgid "To run this program, convert must be installed." +msgstr "Per poder executar aquest programa, el convertidor ha d'estar instaŀlat." diff --git a/app/examples/Image/Lighttable/.lang/cs.po b/app/examples/Image/Lighttable/.lang/cs.po new file mode 100644 index 00000000..9b909c49 --- /dev/null +++ b/app/examples/Image/Lighttable/.lang/cs.po @@ -0,0 +1,330 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Lighttable" +msgstr "-" + +#: .project:2 +msgid "A tool to sort photographs" +msgstr "Nástroj na třídění fotografií" + +#: FHelp.form:11 +msgid "Help" +msgstr "Nápověda" + +#: FHelp.form:31 FInfo.form:17 +msgid "&Close" +msgstr "&Zavři" + +#: FInfo.class:10 +msgid "There are no Exif informations in this file." +msgstr "O tomto souboru nejsou Exif informace." + +#: FInfo.class:29 +msgid "&Less" +msgstr "&Méně" + +#: FInfo.form:11 +msgid "Picture Informations" +msgstr "Informace o obrázku" + +#: FInfo.form:24 +msgid "&More" +msgstr "&Více" + +#: FMain.class:32 +msgid "Lighttable - " +msgstr "-" + +#: FMain.class:46 +msgid "Right-click for Main Menu" +msgstr "Klikni pravým pro menu" + +#: FMain.class:47 +msgid " pictures" +msgstr " obrázek" + +#: FMain.class:48 +msgid "sorted alphabetically" +msgstr "seřadit abecedně" + +#: FMain.class:74 +msgid "Right-click on the background or on a frame for menus." +msgstr "Klikni pravým na pozadí a nebo rám pro menu." + +#: FMain.class:94 +msgid "Right-click for Picture Menu" +msgstr "Klikni pravým pro menu obrázku" + +#: FMain.class:173 +msgid "&Rename all files..." +msgstr "&Přejmenovat všechny soubory..." + +#: FMain.class:268 +msgid "Loading picture..." +msgstr "Načítání obrázku..." + +#: FMain.class:343 +msgid "sorted chronologically" +msgstr "seřadit chronologicky" + +#: FMain.class:383 +msgid "The file &1 already exists in the current directory!" +msgstr "Soubor &1 již existuje v aktuální složce!" + +#: FMain.class:435 FRename.form:32 FRenameAll.form:80 +#: FRenameAllWarning.form:17 FStart.form:26 FTime.form:51 +msgid "&Cancel" +msgstr "&Zrušit" + +#: FMain.class:435 FRename.form:26 FRenameAll.form:74 FStart.form:20 +#: FTime.form:45 +msgid "&OK" +msgstr "-" + +#: FMain.class:435 +msgid "The file &1 will be deleted." +msgstr "Soubor &1 bude smazán." + +#: FMain.class:727 +msgid "Loading of pictures is being aborted..." +msgstr "Načítání obrázků bylo přerušeno..." + +#: FMain.class:778 +msgid "Files are being renamed..." +msgstr "Soubor byl přejmenován..." + +#: FMain.class:807 +msgid "&1 files renamed" +msgstr "Soubor &1 přejmenován" + +#: FMain.class:823 +msgid "Setting time informations in all files..." +msgstr "Nastavení časové informace ve všech souborech..." + +#: FMain.form:44 +msgid "Main menu" +msgstr "Hlavní menu" + +#: FMain.form:48 +msgid "Sorted &alphabetically" +msgstr "Seřadit &abecedně" + +#: FMain.form:55 +msgid "Sorted &chronologically" +msgstr "Seřadit &chronologicky" + +#: FMain.form:61 +msgid "&Slideshow" +msgstr "&Promítání" + +#: FMain.form:67 +msgid "Abort &Loading" +msgstr "Přerušit &načítání" + +#: FMain.form:73 +msgid "&Time correction..." +msgstr "&Korekce času..." + +#: FMain.form:79 +msgid "&Open folder..." +msgstr "&Otevřít složku..." + +#: FMain.form:85 +msgid "&Help" +msgstr "&Nápověda" + +#: FMain.form:91 +msgid "&Quit" +msgstr "&Ukončit" + +#: FMain.form:98 +msgid "Picture menu" +msgstr "Menu obrázku" + +#: FMain.form:102 +msgid "(Move picture: drag frame with mouse)" +msgstr "(Přesun obrázku: uchop s myší rám)" + +#: FMain.form:107 +msgid "&View picture (click on picture)" +msgstr "&Zobrazení obrázku (klikni na obrázek)" + +#: FMain.form:113 +msgid "&Full Screen View" +msgstr "&Plný náhled obrázku" + +#: FMain.form:119 +msgid "&Close view" +msgstr "&Zavřít pohled" + +#: FMain.form:125 +msgid "&Next picture" +msgstr "&Další obrázek" + +#: FMain.form:131 +msgid "&Previous picture" +msgstr "&Předchozí obrázek" + +#: FMain.form:137 +msgid "Picture &informations" +msgstr "&Informace o obrázku" + +#: FMain.form:143 +msgid "&Rename picture" +msgstr "&Přejmenovat obrázek" + +#: FMain.form:149 +msgid "&Delete picture" +msgstr "&Smazat obrázek" + +#: FRename.class:43 +msgid "Old and new filename are identical." +msgstr "Starý a nový název je identický." + +#: FRename.form:11 +msgid "Rename" +msgstr "Přejmenovat" + +#: FRename.form:17 +msgid "New filename:" +msgstr "Nový název souboru:" + +#: FRenameAll.class:11 +msgid "MyPicture.JPG" +msgstr "-" + +#: FRenameAll.form:22 +msgid "Rename all pictures" +msgstr "Přejmenovat všechy obrázky" + +#: FRenameAll.form:41 +msgid "1" +msgstr "-" + +#: FRenameAll.form:47 +msgid "Keep original filename as suffix" +msgstr "Nechat originální název jako příponu" + +#: FRenameAll.form:53 +msgid "Number format" +msgstr "Číselný formát" + +#: FRenameAll.form:58 +msgid "digits" +msgstr "číslice" + +#: FRenameAll.form:63 +msgid "Prefix" +msgstr "Předpona" + +#: FRenameAll.form:68 +msgid "Start value" +msgstr "Startovní hodnota" + +#: FRenameAll.form:88 +msgid "This function will rename all .jp(e)g files in the directory and add serial numbers to the filenames.
    The pictures will be handled in the order they are shown right now, in rows from left to right, rows from top to bottom." +msgstr "Tato funkce přejmenuje všechny .jp(e)g soubory v adresáři a přidat sériová čísla do názvu souborů.
    Fotografie budou zpracovány v pořadí, v jakém jsou právě teď zobrazeny, v řádcích zleva doprava, řádky od shora dolů." + +#: FRenameAll.form:94 +msgid "Options" +msgstr "Možnosti" + +#: FRenameAll.form:99 +msgid "Example:" +msgstr "Příklad:" + +#: FRenameAllWarning.form:12 +msgid "File Conflicts" +msgstr "Konflikt souboru" + +#: FRenameAllWarning.form:24 +msgid "Continue &anyway" +msgstr "Pokračuj &stejně" + +#: FRenameAllWarning.form:29 +msgid "The following files can't be renamed, because the target filenames already exist in the directory.
    If you continue, only the files without conflicts will be renamed.
    If you cancel, you can choose new filename options." +msgstr "Následující soubory nelze přejmenovat, protože cílový souborů již v adresáři existuje.
    Budete-li pokračovat, budou přejmenovány pouze soubory bez konfliktů.
    Pokud zrušíte, můžete zvolit možnost nového jména souboru." + +#: FSlideshow.form:38 +msgid "Pause between pictures:" +msgstr "Pauza mezi obrázky:" + +#: FSlideshow.form:49 +msgid "sec" +msgstr "-" + +#: FSlideshow.form:54 +msgid "Stop" +msgstr "-" + +#: FStart.class:54 +msgid "The folder &1 doesn't contain any jp(e)g files." +msgstr "Složka &1 neobsahuje žádný soubor typu jp(e)g." + +#: FStart.form:15 +msgid "Lighttable - Select picture folder" +msgstr "Lighttable - Výběr složky obrázků" + +#: FStart.form:41 +msgid "New selection" +msgstr "Nový výběr" + +#: FStart.form:51 +msgid "Last selections" +msgstr "Poslední výběry" + +#: FTime.class:18 +msgid "There is no time correction selected." +msgstr "Není vybrán čas korekce." + +#: FTime.form:18 +msgid "Time correction" +msgstr "Korekce času" + +#: FTime.form:39 +msgid "earlier" +msgstr "dříve" + +#: FTime.form:39 +msgid "later" +msgstr "později" + +#: FTime.form:59 +msgid "This function will correct all date/time informations in the EXIF section of all .jp(e)g files in the folder.
    A backup of the files will be made with file names like 'MyPicture.jpg_original'.
    If there are no EXIF date/time informations in a file, nothing will be done." +msgstr "Tato funkce opraví všechny informace o datu/času v sekci EXIF všechny. jp(e)g soubory ve složce.
    Záloha souborů s názvy souborů bude jako 'MyPicture.jpg_original'.
    Pokud není EXIF informace o datu/času v souboru, nebude dělat nic." + +#: FTime.form:65 +msgid "Set the original time of all pictures to" +msgstr "Nastav původní čas všech obrázků na" + +#: FTime.form:70 +msgid "day(s)" +msgstr "dní" + +#: FTime.form:75 +msgid "hour(s)" +msgstr "hodin" + +#: FTime.form:80 +msgid "minute(s)" +msgstr "minut" + +#: MMain.module:12 +msgid "To run this program, exiftool must be installed." +msgstr "Aby program běžel, musí být nainstalován exiftool." + +#: MMain.module:18 +msgid "To run this program, convert must be installed." +msgstr "Aby program běžel, musí být nainstalován convert." diff --git a/app/examples/Image/Lighttable/.lang/de.po b/app/examples/Image/Lighttable/.lang/de.po new file mode 100644 index 00000000..a30ab99d --- /dev/null +++ b/app/examples/Image/Lighttable/.lang/de.po @@ -0,0 +1,330 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Lighttable" +msgstr "Leuchttisch" + +#: .project:2 +msgid "A tool to sort photographs" +msgstr "Fotos sortieren" + +#: FHelp.form:11 +msgid "Help" +msgstr "Hilfe" + +#: FHelp.form:31 FInfo.form:17 +msgid "&Close" +msgstr "&Schließen" + +#: FInfo.class:10 +msgid "There are no Exif informations in this file." +msgstr "Diese Datei entält keine Exif-Informationen." + +#: FInfo.class:29 +msgid "&Less" +msgstr "&Weniger" + +#: FInfo.form:11 +msgid "Picture Informations" +msgstr "Bildinformationen" + +#: FInfo.form:24 +msgid "&More" +msgstr "&Mehr" + +#: FMain.class:33 +msgid "Lighttable - " +msgstr "Leuchttisch - " + +#: FMain.class:47 +msgid "Right-click for Main Menu" +msgstr "Rechtsklick für das Hauptmenü" + +#: FMain.class:48 +msgid " pictures" +msgstr " Bilder" + +#: FMain.class:49 +msgid "sorted alphabetically" +msgstr "alphabetisch sortiert" + +#: FMain.class:75 +msgid "Right-click on the background or on a frame for menus." +msgstr "Menüs: auf den Hintergrund oder auf einen Rahmen rechtsklicken." + +#: FMain.class:95 +msgid "Right-click for Picture Menu" +msgstr "Rechtsklick für das Bildmenü" + +#: FMain.class:174 +msgid "&Rename all files..." +msgstr "Alle Dateien &umbenennen..." + +#: FMain.class:269 +msgid "Loading picture..." +msgstr "Bild wird geladen..." + +#: FMain.class:344 +msgid "sorted chronologically" +msgstr "chronologisch sortiert" + +#: FMain.class:384 +msgid "The file &1 already exists in the current directory!" +msgstr "Die Datei &1 existiert im aktuellen Verzeichnis bereits!" + +#: FMain.class:436 FRename.form:32 FRenameAll.form:80 +#: FRenameAllWarning.form:17 FStart.form:26 FTime.form:51 +msgid "&Cancel" +msgstr "&Abbrechen" + +#: FMain.class:436 FRename.form:26 FRenameAll.form:74 FStart.form:20 +#: FTime.form:45 +msgid "&OK" +msgstr "-" + +#: FMain.class:436 +msgid "The file &1 will be deleted." +msgstr "Die Datei &1 wird gelöscht." + +#: FMain.class:729 +msgid "Loading of pictures is being aborted..." +msgstr "Das Laden der Bilder wird abgebrochen..." + +#: FMain.class:780 +msgid "Files are being renamed..." +msgstr "Dateien werden umbenannt..." + +#: FMain.class:809 +msgid "&1 files renamed" +msgstr "&1 Dateien umbenannt" + +#: FMain.class:825 +msgid "Setting time informations in all files..." +msgstr "Die Zeitinformationen in allen Dateien werden geändert..." + +#: FMain.form:44 +msgid "Main menu" +msgstr "Hauptmenü" + +#: FMain.form:48 +msgid "Sorted &alphabetically" +msgstr "&Alphabetisch sortiert" + +#: FMain.form:55 +msgid "Sorted &chronologically" +msgstr "&Chronologisch sortiert" + +#: FMain.form:61 +msgid "&Slideshow" +msgstr "Dia&show" + +#: FMain.form:67 +msgid "Abort &Loading" +msgstr "&Laden abbrechen" + +#: FMain.form:73 +msgid "&Time correction..." +msgstr "&Zeitkorrektur..." + +#: FMain.form:79 +msgid "&Open folder..." +msgstr "&Ordner öffnen..." + +#: FMain.form:85 +msgid "&Help" +msgstr "&Hilfe" + +#: FMain.form:91 +msgid "&Quit" +msgstr "&Beenden" + +#: FMain.form:98 +msgid "Picture menu" +msgstr "Bildermenü" + +#: FMain.form:102 +msgid "(Move picture: drag frame with mouse)" +msgstr "(Bild verschieben: Rahmen mit Maus ziehen)" + +#: FMain.form:107 +msgid "&View picture (click on picture)" +msgstr "Vergrößerte &Ansicht (Bild anklicken)" + +#: FMain.form:113 +msgid "&Full Screen View" +msgstr "&Vollbildansicht" + +#: FMain.form:119 +msgid "&Close view" +msgstr "&Ansicht schließen" + +#: FMain.form:125 +msgid "&Next picture" +msgstr "&Nächstes Bild" + +#: FMain.form:131 +msgid "&Previous picture" +msgstr "Vor&heriges Bild" + +#: FMain.form:137 +msgid "Picture &informations" +msgstr "&Bildinformationen" + +#: FMain.form:143 +msgid "&Rename picture" +msgstr "Bild &umbenennen" + +#: FMain.form:149 +msgid "&Delete picture" +msgstr "Bild &löschen" + +#: FRename.class:43 +msgid "Old and new filename are identical." +msgstr "Alter und neuer Dateiname sind gleich." + +#: FRename.form:11 +msgid "Rename" +msgstr "Umbenennen" + +#: FRename.form:17 +msgid "New filename:" +msgstr "Neuer Dateiname:" + +#: FRenameAll.class:11 +msgid "MyPicture.JPG" +msgstr "MeinBild.JPG" + +#: FRenameAll.form:22 +msgid "Rename all pictures" +msgstr "Alle Bilder umbenennen" + +#: FRenameAll.form:41 +msgid "1" +msgstr "-" + +#: FRenameAll.form:47 +msgid "Keep original filename as suffix" +msgstr "originalen Dateinamen als Suffix behalten" + +#: FRenameAll.form:53 +msgid "Number format" +msgstr "Zahlenformat" + +#: FRenameAll.form:58 +msgid "digits" +msgstr "Stellen" + +#: FRenameAll.form:63 +msgid "Prefix" +msgstr "Präfix" + +#: FRenameAll.form:68 +msgid "Start value" +msgstr "Startwert" + +#: FRenameAll.form:88 +msgid "This function will rename all .jp(e)g files in the directory and add serial numbers to the filenames.
    The pictures will be handled in the order they are shown right now, in rows from left to right, rows from top to bottom." +msgstr "Diese Funktion benennt alle .jp(e)g-Dateien im Verzeichnis um und fügt Seriennummern zu den Dateinamen hinzu.
    Die Dateien werden in der Reihenfolge bearbeitet, in der sie jetzt gezeigt werden, die Reihen von oben nach unten, in der Reihe von links nach rechts." + +#: FRenameAll.form:94 +msgid "Options" +msgstr "Optionen" + +#: FRenameAll.form:99 +msgid "Example:" +msgstr "Beispiel:" + +#: FRenameAllWarning.form:12 +msgid "File Conflicts" +msgstr "Dateikonflikte" + +#: FRenameAllWarning.form:24 +msgid "Continue &anyway" +msgstr "&Trotzdem fortfahren" + +#: FRenameAllWarning.form:29 +msgid "The following files can't be renamed, because the target filenames already exist in the directory.
    If you continue, only the files without conflicts will be renamed.
    If you cancel, you can choose new filename options." +msgstr "Folgende Dateien können nicht umbenannt werden, weil die Zielnamen im Verzeichnis bereits existieren.
    Wenn Sie fortfahren, werden nur die Dateien ohne Konflikt umbenannt.
    Wenn Sie abbrechen, können Sie neue Optionen für die Dateinamen einstellen." + +#: FSlideshow.form:38 +msgid "Pause between pictures:" +msgstr "Pause zwischen Bildern:" + +#: FSlideshow.form:49 +msgid "sec" +msgstr "Sek." + +#: FSlideshow.form:54 +msgid "Stop" +msgstr "-" + +#: FStart.class:54 +msgid "The folder &1 doesn't contain any jp(e)g files." +msgstr "Das Verzeichnis &1 enthält keine jp(e)g-Dateien." + +#: FStart.form:15 +msgid "Lighttable - Select picture folder" +msgstr "Leuchttisch - Bilderverzeichnis auswählen" + +#: FStart.form:41 +msgid "New selection" +msgstr "Neue Auswahl" + +#: FStart.form:51 +msgid "Last selections" +msgstr "Zuletzt ausgewählt" + +#: FTime.class:21 +msgid "There is no time correction selected." +msgstr "Es ist keine Zeitkorrektur gesetzt." + +#: FTime.form:18 +msgid "Time correction" +msgstr "Zeitkorrektur" + +#: FTime.form:39 +msgid "earlier" +msgstr "früher" + +#: FTime.form:39 +msgid "later" +msgstr "später" + +#: FTime.form:59 +msgid "This function will correct all date/time informations in the EXIF section of all .jp(e)g files in the folder.
    A backup of the files will be made with file names like 'MyPicture.jpg_original'.
    If there are no EXIF date/time informations in a file, nothing will be done." +msgstr "Diese Funktion korrigiert alle Datums-/Zeitinformationen im EXIF-Abschnitt aller .jp(e)g-Dateien im Verzeichnis.
    Es werden Sicherungskopien mit Namen wie 'MeinBild.jpg_original' erstellt.
    Falls eine Datei keine Zeitinformationen enthält, wird nichts unternommen." + +#: FTime.form:65 +msgid "Set the original time of all pictures to" +msgstr "Die Originalzeit aller Bilder ändern auf" + +#: FTime.form:70 +msgid "day(s)" +msgstr "Tag(e)" + +#: FTime.form:75 +msgid "hour(s)" +msgstr "Stunde(n)" + +#: FTime.form:80 +msgid "minute(s)" +msgstr "Minute(n)" + +#: MMain.module:12 +msgid "To run this program, exiftool must be installed." +msgstr "Für dieses Programm muss exiftool installiert sein." + +#: MMain.module:18 +msgid "To run this program, convert must be installed." +msgstr "Für dieses Programm muss convert installiert sein." diff --git a/app/examples/Image/Lighttable/.lang/en.po b/app/examples/Image/Lighttable/.lang/en.po new file mode 100644 index 00000000..9ebff4fb --- /dev/null +++ b/app/examples/Image/Lighttable/.lang/en.po @@ -0,0 +1,264 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 FMain.class:40 +msgid "Lighttable" +msgstr "" + +#: FHelp.class:30 +msgid "Help" +msgstr "" + +#: FHelp.class:38 +msgid "&Close" +msgstr "" + +#: FMain.class:67 +msgid "Choose picture folder" +msgstr "" + +#: FMain.class:76 +msgid "The folder &1 doesn't contain any jp(e)g files." +msgstr "" + +#: FMain.class:80 +#, fuzzy +msgid "Lighttable - " +msgstr "Lighttable - " + +#: FMain.class:81 +msgid " pictures" +msgstr "" + +#: FMain.class:82 +msgid "sorted alphabetically" +msgstr "" + +#: FMain.class:100 +msgid "To see the menus, right-click on the background or on a frame." +msgstr "" + +#: FMain.class:189 +msgid "&Rename all..." +msgstr "" + +#: FMain.class:332 +msgid "sorted chronologically" +msgstr "" + +#: FMain.class:389 +msgid "This filename already exists in the current directory !" +msgstr "" + +#: FMain.class:421 FRename.class:71 FRenameAll.class:69 +msgid "&Cancel" +msgstr "" + +#: FMain.class:421 FRename.class:65 FRenameAll.class:76 +#, fuzzy +msgid "&OK" +msgstr "-" + +#: FMain.class:421 +msgid "The file &1 will be deleted." +msgstr "" + +#: FMain.class:787 +msgid "Main menu" +msgstr "" + +#: FMain.class:792 +msgid "Sorted &alphabetically" +msgstr "" + +#: FMain.class:799 +msgid "Sorted &chronologically" +msgstr "" + +#: FMain.class:805 +msgid "Abort &Loading" +msgstr "" + +#: FMain.class:810 +msgid "&Help" +msgstr "" + +#: FMain.class:816 +msgid "&Quit" +msgstr "" + +#: FMain.class:823 +msgid "Frames menu" +msgstr "" + +#: FMain.class:827 +msgid "(Move picture: drag frame with mouse)" +msgstr "" + +#: FMain.class:832 +msgid "&View picture (click on picture)" +msgstr "" + +#: FMain.class:838 +msgid "&Full Screen View" +msgstr "" + +#: FMain.class:844 +msgid "&Close view" +msgstr "" + +#: FMain.class:850 +msgid "&Next picture" +msgstr "" + +#: FMain.class:856 +msgid "&Previous picture" +msgstr "" + +#: FMain.class:862 +#, fuzzy +msgid "Picture &informations" +msgstr "Picture informations" + +#: FMain.class:868 +msgid "&Rename picture" +msgstr "" + +#: FMain.class:874 +msgid "&Delete picture" +msgstr "" + +#: FRename.class:43 +msgid "Rename" +msgstr "" + +#: FRename.class:50 +msgid "New filename:" +msgstr "" + +#: FRename.class:56 +msgid "lblHidden" +msgstr "" + +#: FRenameAll.class:65 +msgid "Rename all pictures" +msgstr "" + +#: FRenameAll.class:83 +msgid "This function will number serially all the pictures.
    The pictures will be handled in the order they are
    shown right now, in rows from left to right,
    rows from top to bottom." +msgstr "" + +#: FRenameAll.class:94 +msgid "&Add number, keep the filename" +msgstr "" + +#: FRenameAll.class:100 +msgid "&Replace filename with number" +msgstr "" + +#: FRenameAll.class:111 +msgid "Number format:" +msgstr "" + +#: FRenameAll.class:116 +msgid "digits" +msgstr "" + +#: FRenameAll.class:123 +msgid "Options" +msgstr "" + +#: FRenameAll.class:129 +msgid "TextBox1" +msgstr "" + +#: FRenameAll.class:136 +msgid "Example:" +msgstr "" + +#~ msgid "sortiert nach Dateinamen" +#~ msgstr "Sorted by file names" + +#~ msgid "sortiert nach Aufnahmedatum und -zeit" +#~ msgstr "Sorted by picture date/time" + +#~ msgid "abbrechen" +#~ msgstr "Cancel" + +#~ msgid "Ansicht schließen" +#~ msgstr "Close current view" + +#~ msgid "beenden" +#~ msgstr "Quit" + +#~ msgid " Bilder" +#~ msgstr " pictures" + +#~ msgid "Bilderverzeichnis auswählen" +#~ msgstr "Choose picture folder" + +#~ msgid "Bild löschen" +#~ msgstr "Delete picture" + +#~ msgid "Bild umbenennen" +#~ msgstr "Rename picture" + +#~ msgid "(Bild verschieben: Rahmen mit der Maus ziehen)" +#~ msgstr "(Move picture: drag frame with mouse)" + +#~ msgid "Das Verzeichnis &1 enthält keine jp(e)g-Dateien." +#~ msgstr "The folder &1 doesn't contain .jp(e)g files." + +#~ msgid "Die Datei &1 wird gelöscht." +#~ msgstr "The file &1 will be deleted." + +#~ msgid "Dieser Dateiname existiert im aktuellen Verzeichnis schon!" +#~ msgstr "This filename already exists in the current directory!" + +#~ msgid "Für die Menüs mit der rechten Maustaste überall klicken!" +#~ msgstr "Just right-click everywhere to get the menus!" + +#~ msgid "Größeres Bild (Bild anklicken)" +#~ msgstr "View picture (click picture)" + +#~ msgid "Hauptmenü" +#~ msgstr "-" + +#~ msgid "Hilfe" +#~ msgstr "Help" + +#~ msgid "Label1" +#~ msgstr "-" + +#~ msgid "Leuchttisch" +#~ msgstr "Lighttable" + +#~ msgid "Nächstes Bild" +#~ msgstr "Next picture" + +#~ msgid "neuer Dateiname:" +#~ msgstr "New filename:" + +#~ msgid "Rahmenmenü" +#~ msgstr "-" + +#~ msgid "schließen" +#~ msgstr "Close" + +#~ msgid "sortiert nach Aufnahmedatum/-zeit" +#~ msgstr "Sorted by picture date/time" + +#~ msgid "Vollbildansicht" +#~ msgstr "Full Screen View" + +#~ msgid "Vorheriges Bild" +#~ msgstr "Previous picture" diff --git a/app/examples/Image/Lighttable/.lang/nl.po b/app/examples/Image/Lighttable/.lang/nl.po new file mode 100644 index 00000000..3c79a5c3 --- /dev/null +++ b/app/examples/Image/Lighttable/.lang/nl.po @@ -0,0 +1,327 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Lighttable 3.5.90\n" +"PO-Revision-Date: 2014-09-25 21:48 UTC\n" +"Last-Translator: Willy Raets \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Lighttable" +msgstr "Lichttabel" + +#: .project:2 +msgid "A tool to sort photographs" +msgstr "Gereedschap om foto's mee te sorteren" + +#: FHelp.form:11 +msgid "Help" +msgstr "Help" + +#: FHelp.form:31 FInfo.form:17 +msgid "&Close" +msgstr "&Sluiten" + +#: FInfo.class:10 +msgid "There are no Exif informations in this file." +msgstr "Er is geen Exif informatie in dit bestand." + +#: FInfo.class:29 +msgid "&Less" +msgstr "&Minder" + +#: FInfo.form:11 +msgid "Picture Informations" +msgstr "Afbeeldingsinformatie" + +#: FInfo.form:24 +msgid "&More" +msgstr "&Meer" + +#: FMain.class:32 +msgid "Lighttable - " +msgstr "Lichttabel - " + +#: FMain.class:46 +msgid "Right-click for Main Menu" +msgstr "Rechts klikken voor Hoofdmenu" + +#: FMain.class:47 +msgid " pictures" +msgstr " afbeeldingen" + +#: FMain.class:48 +msgid "sorted alphabetically" +msgstr "alfabetisch gesorteerd" + +#: FMain.class:74 +msgid "Right-click on the background or on a frame for menus." +msgstr "Rechts klikken op achtergrond of frame voor menus." + +#: FMain.class:94 +msgid "Right-click for Picture Menu" +msgstr "Rechts klikken voor Afbeeldingsmenu" + +#: FMain.class:173 +msgid "&Rename all files..." +msgstr "&Hernoem alle bestanden..." + +#: FMain.class:268 +msgid "Loading picture..." +msgstr "Afbeelding laden..." + +#: FMain.class:343 +msgid "sorted chronologically" +msgstr "chronologisch gesorteerd" + +#: FMain.class:383 +msgid "The file &1 already exists in the current directory!" +msgstr "Het bestand &1 bestaat reeds in de huidige map!" + +#: FRenameAllWarning.form:17 FStart.form:26 FTime.form:51 +msgid "&Cancel" +msgstr "&Annuleer" + +#: FTime.form:45 +msgid "&OK" +msgstr "&OK" + +#: FMain.class:435 +msgid "The file &1 will be deleted." +msgstr "Het bestand &1 wordt verwijdert." + +#: FMain.class:727 +msgid "Loading of pictures is being aborted..." +msgstr "Laden van afbeeldingen wordt afgebroken..." + +#: FMain.class:778 +msgid "Files are being renamed..." +msgstr "Bestanden worden hernoemt..." + +#: FMain.class:807 +msgid "&1 files renamed" +msgstr "&1 bestanden hernoemt" + +#: FMain.class:823 +msgid "Setting time informations in all files..." +msgstr "Instellen van de tijd informatie in alle bestanden ..." + +#: FMain.form:44 +msgid "Main menu" +msgstr "Hoofdmenu" + +#: FMain.form:48 +msgid "Sorted &alphabetically" +msgstr "&Alfabetisch gesorteerd" + +#: FMain.form:55 +msgid "Sorted &chronologically" +msgstr "&Chronologisch gesorteerd" + +#: FMain.form:61 +msgid "&Slideshow" +msgstr "&Diavoorstelling" + +#: FMain.form:67 +msgid "Abort &Loading" +msgstr "Laden &Afbreken" + +#: FMain.form:73 +msgid "&Time correction..." +msgstr "&Tijd correctie..." + +#: FMain.form:79 +msgid "&Open folder..." +msgstr "&Open map..." + +#: FMain.form:85 +msgid "&Help" +msgstr "&Help" + +#: FMain.form:91 +msgid "&Quit" +msgstr "&Afsluiten" + +#: FMain.form:98 +msgid "Picture menu" +msgstr "Afbeeldingsmenu" + +#: FMain.form:102 +msgid "(Move picture: drag frame with mouse)" +msgstr "(Verplaats afbeelding: sleep frame met muis)" + +#: FMain.form:107 +msgid "&View picture (click on picture)" +msgstr "&Afbeelding weergeven (klik op afbeelding)" + +#: FMain.form:113 +msgid "&Full Screen View" +msgstr "&Volledig scherm weergave" + +#: FMain.form:119 +msgid "&Close view" +msgstr "&Sluit weergave" + +#: FMain.form:125 +msgid "&Next picture" +msgstr "&Volgende afbeelding" + +#: FMain.form:131 +msgid "&Previous picture" +msgstr "&Vorige afbeelding" + +#: FMain.form:137 +msgid "Picture &informations" +msgstr "Afbeeldings&informatie" + +#: FMain.form:143 +msgid "&Rename picture" +msgstr "&Hernoem afbeelding" + +#: FMain.form:149 +msgid "&Delete picture" +msgstr "&Verwijder afbeelding" + +#: FRename.class:43 +msgid "Old and new filename are identical." +msgstr "Oude en nieuwe bestandnaam zijn identiek." + +#: FRename.form:11 +msgid "Rename" +msgstr "Hernoem" + +#: FRename.form:17 +msgid "New filename:" +msgstr "Nieuwe bestandsnaam:" + +#: FRenameAll.class:11 +msgid "MyPicture.JPG" +msgstr "MijnAfbeelding.JPG" + +#: FRenameAll.form:22 +msgid "Rename all pictures" +msgstr "Hernoem alle afbeeldingen" + +#: FRenameAll.form:41 +msgid "1" +msgstr "-" + +#: FRenameAll.form:47 +msgid "Keep original filename as suffix" +msgstr "Bewaar originele bestandnaam as achtervoegsel" + +#: FRenameAll.form:53 +msgid "Number format" +msgstr "Nummerformaat" + +#: FRenameAll.form:58 +msgid "digits" +msgstr "cijfers" + +#: FRenameAll.form:63 +msgid "Prefix" +msgstr "Prefix" + +#: FRenameAll.form:68 +msgid "Start value" +msgstr "Aanvangswaarde" + +#: FRenameAll.form:88 +msgid "This function will rename all .jp(e)g files in the directory and add serial numbers to the filenames.
    The pictures will be handled in the order they are shown right now, in rows from left to right, rows from top to bottom." +msgstr "Deze functie hernoemt alle .jp(e)g bestanden in de map en voegt serieële nummers toe aan de bestandnamen.
    De afbeeldingen worden behandelt in de volgorde waarop nu weergegeven, in rijen van links naar rechts, rijen van boven naar beneden." + +#: FRenameAll.form:94 +msgid "Options" +msgstr "Opties" + +#: FRenameAll.form:99 +msgid "Example:" +msgstr "Voorbeeld:" + +#: FRenameAllWarning.form:12 +msgid "File Conflicts" +msgstr "Bestandsconflicten" + +#: FRenameAllWarning.form:24 +msgid "Continue &anyway" +msgstr "Tock &doorgaan" + +#: FRenameAllWarning.form:29 +msgid "The following files can't be renamed, because the target filenames already exist in the directory.
    If you continue, only the files without conflicts will be renamed.
    If you cancel, you can choose new filename options." +msgstr "De volgende bestanden kunnen niet hernoemt worden, omdat de doel bestandnamen reeds bestaan in de map.
    Indien je verder gaat worden enkel de bestand zonden conflicten hernoemt.
    Indien je annuleert, kun je nieuwe bestandnamen kiezen." + +#: FSlideshow.form:38 +msgid "Pause between pictures:" +msgstr "Pause tussen afbeeldingen:" + +#: FSlideshow.form:49 +msgid "sec" +msgstr "sec" + +#: FSlideshow.form:54 +msgid "Stop" +msgstr "Stop" + +#: FStart.class:54 +msgid "The folder &1 doesn't contain any jp(e)g files." +msgstr "De map &1 bevat geen jp(e)g bestanden." + +#: FStart.form:15 +msgid "Lighttable - Select picture folder" +msgstr "Lichttabel - Selecteer afbeeldingsmap" + +#: FStart.form:41 +msgid "New selection" +msgstr "Nieuwe selectie" + +#: FStart.form:51 +msgid "Last selections" +msgstr "Laatste selecties" + +#: FTime.class:18 +msgid "There is no time correction selected." +msgstr "Er is geen tijdscorrectie geselecteerd." + +#: FTime.form:18 +msgid "Time correction" +msgstr "Tijdscorrectie" + +#: FTime.form:39 +msgid "earlier" +msgstr "eerder" + +#: FTime.form:39 +msgid "later" +msgstr "-" + +#: FTime.form:59 +msgid "This function will correct all date/time informations in the EXIF section of all .jp(e)g files in the folder.
    A backup of the files will be made with file names like 'MyPicture.jpg_original'.
    If there are no EXIF date/time informations in a file, nothing will be done." +msgstr "Deze functie zal alle datum/tijd informatie in de EXIF sectie van alle .jp(e)g bestanden in de map corrigeren.
    Een backup van de bestanden zal worden gemaakt met bestandnamen zoals 'MijnAfbeelding.jpg_original'.
    Indien er geen EXIF datum/tijd informatie beschikbaar is in het bestand, wordt er niets gedaan." + +#: FTime.form:65 +msgid "Set the original time of all pictures to" +msgstr "Stel de oorspronkelijke tijd van alle afbeeldingen in" + +#: FTime.form:70 +msgid "day(s)" +msgstr "dag(en)" + +#: FTime.form:75 +msgid "hour(s)" +msgstr "U(u)r(en)" + +#: FTime.form:80 +msgid "minute(s)" +msgstr "minu(u)t(en)" + +#: MMain.module:12 +msgid "To run this program, exiftool must be installed." +msgstr "Op dit programma uit te voeren dient exiftool geïnstalleert te zijn." + +#: MMain.module:18 +msgid "To run this program, convert must be installed." +msgstr "Op dit programma uit te voeren dient convert geïnstalleert te zijn." + diff --git a/app/examples/Image/Lighttable/.lang/ru.po b/app/examples/Image/Lighttable/.lang/ru.po new file mode 100644 index 00000000..3acac0d5 --- /dev/null +++ b/app/examples/Image/Lighttable/.lang/ru.po @@ -0,0 +1,350 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Image/Lighttable/.project:28 +msgid "Lighttable" +msgstr "Световой планшет" + +#: app/examples/Image/Lighttable/.project:29 +msgid "A tool to sort photographs" +msgstr "Инструмент для сортировки фотографий" + +#: app/examples/Image/Lighttable/FStart.form:5 +msgid "Lighttable - Choose picture folder" +msgstr "Световой планшет - Выбрать директорию с изображениями" + +#: app/examples/Image/Lighttable/FStart.form:8 app/examples/Image/Lighttable/.src/FMain.class:435 app/examples/Image/Lighttable/.src/FRename.form:17 app/examples/Image/Lighttable/.src/FRenameAll.form:47 app/examples/Image/Lighttable/.src/FStart.form:9 app/examples/Image/Lighttable/.src/FTime.form:27 +msgid "&OK" +msgstr "ОК" + +#: app/examples/Image/Lighttable/FStart.form:13 app/examples/Image/Lighttable/.src/FMain.class:435 app/examples/Image/Lighttable/.src/FRename.form:22 app/examples/Image/Lighttable/.src/FRenameAll.form:52 app/examples/Image/Lighttable/.src/FRenameAllWarning.form:9 app/examples/Image/Lighttable/.src/FStart.form:14 app/examples/Image/Lighttable/.src/FTime.form:32 +msgid "&Cancel" +msgstr "Отмена" + +#: app/examples/Image/Lighttable/FStart.form:25 app/examples/Image/Lighttable/.src/FStart.form:26 +msgid "New selection" +msgstr "Новое выделение" + +#: app/examples/Image/Lighttable/FStart.form:33 app/examples/Image/Lighttable/.src/FStart.form:34 +msgid "Last selections" +msgstr "Последние" + +#: app/examples/Image/Lighttable/.src/FHelp.class:11 app/examples/Image/Lighttable/.src/FHelp.class:16 +msgid "help" +msgstr "справка" + +#: app/examples/Image/Lighttable/.src/FHelp.form:5 +msgid "Help" +msgstr "Справка" + +#: app/examples/Image/Lighttable/.src/FHelp.form:21 app/examples/Image/Lighttable/.src/FInfo.form:10 +msgid "&Close" +msgstr "Закрыть" + +#: app/examples/Image/Lighttable/.src/FInfo.class:10 +msgid "There are no Exif informations in this file." +msgstr "В этом файле нет информации Exif." + +#: app/examples/Image/Lighttable/.src/FInfo.class:25 app/examples/Image/Lighttable/.src/FInfo.class:34 app/examples/Image/Lighttable/.src/FInfo.form:16 +msgid "&More" +msgstr "Ещё" + +#: app/examples/Image/Lighttable/.src/FInfo.class:29 +msgid "&Less" +msgstr "Меньше" + +#: app/examples/Image/Lighttable/.src/FInfo.form:5 +msgid "Picture Informations" +msgstr "Информация об изображениях" + +#: app/examples/Image/Lighttable/.src/FMain.class:32 +msgid "Lighttable - " +msgstr "Световой планшет - " + +#: app/examples/Image/Lighttable/.src/FMain.class:46 +msgid "Right-click for Main Menu" +msgstr "Правый клик для главного меню" + +#: app/examples/Image/Lighttable/.src/FMain.class:47 app/examples/Image/Lighttable/.src/FMain.class:159 app/examples/Image/Lighttable/.src/FMain.class:449 +msgid " pictures" +msgstr " изображения" + +#: app/examples/Image/Lighttable/.src/FMain.class:48 app/examples/Image/Lighttable/.src/FMain.class:315 +msgid "sorted alphabetically" +msgstr "отсортировано по алфавиту" + +#: app/examples/Image/Lighttable/.src/FMain.class:74 +msgid "Right-click on the background or on a frame for menus." +msgstr "Щёлкнуть правой кнопкой мыши на фоне или на кадре для меню." + +#: app/examples/Image/Lighttable/.src/FMain.class:94 +msgid "Right-click for Picture Menu" +msgstr "Правый клик для меню изображения" + +#: app/examples/Image/Lighttable/.src/FMain.class:173 +msgid "&Rename all files..." +msgstr "Переименовать все файлы..." + +#: app/examples/Image/Lighttable/.src/FMain.class:268 +msgid "Loading picture..." +msgstr "Загрузка изображения..." + +#: app/examples/Image/Lighttable/.src/FMain.class:343 +msgid "sorted chronologically" +msgstr "отсортировано в хронологическом порядке" + +#: app/examples/Image/Lighttable/.src/FMain.class:383 +msgid "The file &1 already exists in the current directory!" +msgstr "Файл &1 уже существует в текущей директории!" + +#: app/examples/Image/Lighttable/.src/FMain.class:435 +msgid "The file &1 will be deleted." +msgstr "Файл &1 будет удалён." + +#: app/examples/Image/Lighttable/.src/FMain.class:727 +msgid "Loading of pictures is being aborted..." +msgstr "Загрузка изображений прерывается ..." + +#: app/examples/Image/Lighttable/.src/FMain.class:778 +msgid "Files are being renamed..." +msgstr "Файлы переименовываются..." + +#: app/examples/Image/Lighttable/.src/FMain.class:807 +msgid "&1 files renamed" +msgstr "&1 файлов переименовано" + +#: app/examples/Image/Lighttable/.src/FMain.class:823 +msgid "Setting time informations in all files..." +msgstr "Установка информации о времени во все файлы..." + +#: app/examples/Image/Lighttable/.src/FMain.form:9 +msgid "Main menu" +msgstr "Главное меню" + +#: app/examples/Image/Lighttable/.src/FMain.form:12 +msgid "Sorted &alphabetically" +msgstr "Отсортировано по алфавиту" + +#: app/examples/Image/Lighttable/.src/FMain.form:18 +msgid "Sorted &chronologically" +msgstr "Отсортировано в хронологическом порядке" + +#: app/examples/Image/Lighttable/.src/FMain.form:23 +msgid "&Slideshow" +msgstr "Слайд-шоу" + +#: app/examples/Image/Lighttable/.src/FMain.form:28 +msgid "Abort &Loading" +msgstr "Прервать загрузку" + +#: app/examples/Image/Lighttable/.src/FMain.form:33 +msgid "&Time correction..." +msgstr "Коррекция времени..." + +#: app/examples/Image/Lighttable/.src/FMain.form:38 +msgid "&Open folder..." +msgstr "Открыть директорию..." + +#: app/examples/Image/Lighttable/.src/FMain.form:43 +msgid "&Help" +msgstr "Справка" + +#: app/examples/Image/Lighttable/.src/FMain.form:48 +msgid "&Quit" +msgstr "Выход" + +#: app/examples/Image/Lighttable/.src/FMain.form:54 +msgid "Picture menu" +msgstr "Меню изображения" + +#: app/examples/Image/Lighttable/.src/FMain.form:57 +msgid "(Move picture: drag frame with mouse)" +msgstr "(Переместить картинку: перетащить кадр мышью)" + +#: app/examples/Image/Lighttable/.src/FMain.form:61 +msgid "&View picture (click on picture)" +msgstr "Просмотр изображения (нажать на изображение)" + +#: app/examples/Image/Lighttable/.src/FMain.form:66 +msgid "&Full Screen View" +msgstr "Полный экран" + +#: app/examples/Image/Lighttable/.src/FMain.form:71 +msgid "&Close view" +msgstr "Закрыть вид" + +#: app/examples/Image/Lighttable/.src/FMain.form:76 +msgid "&Next picture" +msgstr "Следующее изображение" + +#: app/examples/Image/Lighttable/.src/FMain.form:81 +msgid "&Previous picture" +msgstr "Предыдущее изображение" + +#: app/examples/Image/Lighttable/.src/FMain.form:86 +msgid "Picture &informations" +msgstr "Информация об изображениях" + +#: app/examples/Image/Lighttable/.src/FMain.form:91 +msgid "&Rename picture" +msgstr "Переименовать изображение" + +#: app/examples/Image/Lighttable/.src/FMain.form:96 +msgid "&Delete picture" +msgstr "Удалить изображение" + +#: app/examples/Image/Lighttable/.src/FRename.class:43 +msgid "Old and new filename are identical." +msgstr "Старое и новое имена файла идентичны." + +#: app/examples/Image/Lighttable/.src/FRename.form:5 +msgid "Rename" +msgstr "Переименовать" + +#: app/examples/Image/Lighttable/.src/FRename.form:10 +msgid "New filename:" +msgstr "Новое имя файла:" + +#: app/examples/Image/Lighttable/.src/FRenameAll.class:11 +msgid "MyPicture.JPG" +msgstr "MyPicture.JPG" + +#: app/examples/Image/Lighttable/.src/FRenameAll.form:5 +msgid "Rename all pictures" +msgstr "Переименовать все изображения" + +#: app/examples/Image/Lighttable/.src/FRenameAll.form:20 +msgid "1" +msgstr "1" + +#: app/examples/Image/Lighttable/.src/FRenameAll.form:25 +msgid "Keep original filename as suffix" +msgstr "Сохранить оригинальное имя файла как суффикс" + +#: app/examples/Image/Lighttable/.src/FRenameAll.form:30 +msgid "Number format" +msgstr "Числовой формат" + +#: app/examples/Image/Lighttable/.src/FRenameAll.form:34 +msgid "digits" +msgstr "цифры" + +#: app/examples/Image/Lighttable/.src/FRenameAll.form:38 +msgid "Prefix" +msgstr "Префикс" + +#: app/examples/Image/Lighttable/.src/FRenameAll.form:42 +msgid "Start value" +msgstr "Начальное значение" + +#: app/examples/Image/Lighttable/.src/FRenameAll.form:59 +msgid "This function will rename all .jp(e)g files in the directory and add serial numbers to the filenames.
    The pictures will be handled in the order they are shown right now, in rows from left to right, rows from top to bottom." +msgstr "Эта функция переименует все файлы .jp(e)g в директории и добавит серийные номера в имена файлов.
    Изображения будут обрабатываться в том порядке, в котором они отображаются прямо сейчас, в строках слева направо, рядами сверху вниз." + +#: app/examples/Image/Lighttable/.src/FRenameAll.form:64 +msgid "Options" +msgstr "Опции" + +#: app/examples/Image/Lighttable/.src/FRenameAll.form:68 +msgid "Example:" +msgstr "Пример:" + +#: app/examples/Image/Lighttable/.src/FRenameAllWarning.form:5 +msgid "File Conflicts" +msgstr "Конфликты файлов" + +#: app/examples/Image/Lighttable/.src/FRenameAllWarning.form:15 +msgid "Continue &anyway" +msgstr "Всё равно продолжить" + +#: app/examples/Image/Lighttable/.src/FRenameAllWarning.form:19 +msgid "The following files can't be renamed, because the target filenames already exist in the directory.
    If you continue, only the files without conflicts will be renamed.
    If you cancel, you can choose new filename options." +msgstr "Следующие файлы не могут быть переименованы, поскольку целевые имена файлов уже существуют в директории.
    Если вы продолжите, только файлы без конфликтов будут переименованы.
    При отмене вы можете выбрать новые параметры имени файла." + +#: app/examples/Image/Lighttable/.src/FSlideshow.form:24 +msgid "Pause between pictures:" +msgstr "Пауза между изобр-ми:" + +#: app/examples/Image/Lighttable/.src/FSlideshow.form:33 +msgid "sec" +msgstr "сек" + +#: app/examples/Image/Lighttable/.src/FSlideshow.form:37 +msgid "Stop" +msgstr "Стоп" + +#: app/examples/Image/Lighttable/.src/FStart.class:54 +msgid "The folder &1 doesn't contain any jp(e)g files." +msgstr "Директория &1 не содержит файлов jp(e)g." + +#: app/examples/Image/Lighttable/.src/FStart.form:5 +msgid "Lighttable - Select picture folder" +msgstr "Световой планшет - Выбрать директорию с изображениями" + +#: app/examples/Image/Lighttable/.src/FTime.class:18 +msgid "There is no time correction selected." +msgstr "Коррекция времени не выбрана." + +#: app/examples/Image/Lighttable/.src/FTime.form:5 +msgid "Time correction" +msgstr "Коррекция времени" + +#: app/examples/Image/Lighttable/.src/FTime.form:22 +msgid "earlier" +msgstr "ранее" + +#: app/examples/Image/Lighttable/.src/FTime.form:22 app/examples/Image/Lighttable/.src/FTime.form:23 +msgid "later" +msgstr "познее" + +#: app/examples/Image/Lighttable/.src/FTime.form:39 +msgid "This function will correct all date/time informations in the EXIF section of all .jp(e)g files in the folder.
    A backup of the files will be made with file names like 'MyPicture.jpg_original'.
    If there are no EXIF date/time informations in a file, nothing will be done." +msgstr "Эта функция исправит всю информацию о дате/времени в разделе EXIF всех файлов .jp(e)g в директории.
    Резервное копирование файлов будет сделано с именами файлов, такими как «MyPicture.jpg_original».
    Если в файле нет информации о дате/времени EXIF, то ничего не будет сделано." + +#: app/examples/Image/Lighttable/.src/FTime.form:44 +msgid "Set the original time of all pictures to" +msgstr "Установить оригинальное время всех изображений на" + +#: app/examples/Image/Lighttable/.src/FTime.form:48 +msgid "day(s)" +msgstr "дней" + +#: app/examples/Image/Lighttable/.src/FTime.form:52 +msgid "hour(s)" +msgstr "часов" + +#: app/examples/Image/Lighttable/.src/FTime.form:56 +msgid "minute(s)" +msgstr "минут" + +#: app/examples/Image/Lighttable/.src/MMain.module:12 +msgid "To run this program, exiftool must be installed." +msgstr "Для запуска этой программы необходимо установить exiftool." + +#: app/examples/Image/Lighttable/.src/MMain.module:18 +msgid "To run this program, convert must be installed." +msgstr "Для запуска этой программы необходимо установить convert." + diff --git a/app/examples/Image/Lighttable/.project b/app/examples/Image/Lighttable/.project new file mode 100644 index 00000000..c5bf14f3 --- /dev/null +++ b/app/examples/Image/Lighttable/.project @@ -0,0 +1,25 @@ +# Gambas Project File 3.0 +Title=Lighttable +Startup=MMain +Icon=lighttable.png +Version=3.6.2 +Component=gb.image +Component=gb.gui.qt +Component=gb.form +Component=gb.form.dialog +Component=gb.settings +Component=gb.gui.qt.webkit +Description="A tool to sort photographs" +Authors="Matti, with tips and some changes from Benoît" +TabSize=2 +Translate=1 +Language=en +SourcePath=/home/mathias/Basic +Maintainer=mathias +Address=mathias@mattitux +License=General Public Licence +Packager=1 +Systems=suse +Menus=suse:"Graphics/Photograph" +Categories=suse:"Graphics" +Groups=suse:"Productivity/Graphics/Viewers" diff --git a/app/examples/Image/Lighttable/.src/FHelp.class b/app/examples/Image/Lighttable/.src/FHelp.class new file mode 100644 index 00000000..38257efb --- /dev/null +++ b/app/examples/Image/Lighttable/.src/FHelp.class @@ -0,0 +1,28 @@ +' Gambas class file + +Public Sub _new() + + Dim sLanguage As String + Dim sPath As String + Dim sDest As String + + sLanguage = Left$(System.Language, 2) + sPath = "Help_" & sLanguage & ".html" + sDest = File.SetExt(Temp$("help"), "html") + Try Copy sPath To sDest + + If Error Then + sPath = "Help_en.html" + sDest = File.SetExt(Temp$("help"), "html") + Try Copy sPath To sDest + Endif + + WebViewHelp.Url = "file://" & sDest + +End + +Public Sub btnClose_Click() + + Me.Close + +End diff --git a/app/examples/Image/Lighttable/.src/FHelp.form b/app/examples/Image/Lighttable/.src/FHelp.form new file mode 100644 index 00000000..588decc0 --- /dev/null +++ b/app/examples/Image/Lighttable/.src/FHelp.form @@ -0,0 +1,26 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,84,73) + Text = ("Help") + Arrangement = Arrange.Vertical + { WebViewHelp WebView + MoveScaled(2,1,80,64) + Expand = True + } + { Panel1 HBox + MoveScaled(2,66,80,6) + Background = Color.TextBackground + Margin = True + { Panel2 Panel + MoveScaled(0,1,16,2) + Expand = True + } + { btnClose Button + MoveScaled(64,1,15,4) + Text = ("&Close") + Default = True + Cancel = True + } + } +} diff --git a/app/examples/Image/Lighttable/.src/FInfo.class b/app/examples/Image/Lighttable/.src/FInfo.class new file mode 100644 index 00000000..7d6c1424 --- /dev/null +++ b/app/examples/Image/Lighttable/.src/FInfo.class @@ -0,0 +1,37 @@ +' Gambas class file + +sCommon As String = "" +sDetail As String = "" + +Public Sub Form_Open() + + sCommon = FMain.GetExifInfoCommon(Me.Tag) + If sCommon = "" Then + Message.Info(("There are no Exif informations in this file.")) + Me.Close + Endif + txlExif.Text = sCommon + +End + +Public Sub btnClose_Click() + + Me.Close + +End + +Public Sub btnDetails_Click() + + If btnDetails.Text = ("&More") Then + If sDetail = "" Then sDetail = FMain.GetExifInfoAll(Me.Tag) + txlExif.Text = sDetail + txlExif.Adjust + btnDetails.Text = ("&Less") + Else + txlExif.Text = sCommon + txlExif.Width = 567 + txlExif.Height = 259 + btnDetails.Text = ("&More") + Endif + +End diff --git a/app/examples/Image/Lighttable/.src/FInfo.form b/app/examples/Image/Lighttable/.src/FInfo.form new file mode 100644 index 00000000..8cda99a1 --- /dev/null +++ b/app/examples/Image/Lighttable/.src/FInfo.form @@ -0,0 +1,25 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,84,50) + Text = ("Picture Informations") + Resizable = False + Utility = True + { btnClose Button + MoveScaled(66,44,15,4) + Text = ("&Close") + Default = True + Cancel = True + } + { btnDetails Button + MoveScaled(50,44,15,4) + Text = ("&More") + } + { ScrollView1 ScrollView + MoveScaled(1,2,82,41) + { txlExif TextLabel + MoveScaled(0,0,81,37) + Background = &HFFFCCC& + } + } +} diff --git a/app/examples/Image/Lighttable/.src/FMain.class b/app/examples/Image/Lighttable/.src/FMain.class new file mode 100644 index 00000000..a832e8c2 --- /dev/null +++ b/app/examples/Image/Lighttable/.src/FMain.class @@ -0,0 +1,903 @@ +' Gambas class file + +Private aFiles As String[] +Private aPFiles As New String[] +Private aThumbs As New String[] +Private aTime As New String[] +Private aSort As New String[] +Private aFrame As New Object[] +Private aPicture As New Object[] +Private aOri As New String[] +Private alblFile As New Object[] +Private alblTime As New Object[] +Private bStop As Boolean = False +Private hCurClose As Cursor +Private hCurHand As Cursor +Private hCurZoom As Cursor +Private iDelay As Integer +Private iPicCount As Integer +Private iPicRow As Integer +Private iRow As Integer +Private iOffset As Integer +Private iMark As Integer +Private iNr As Integer +Private sPath As String + +Public Sub Form_Open() + + sPath = Me.Tag + aFiles = MMain.GetFiles() + iPicCount = aFiles.Count + + Me.Caption = ("Lighttable - ") & sPath + Me.Move(Desktop.X, Desktop.Y, Desktop.Width, Desktop.Height) + + mnuSortA.Enabled = False + mnuSortT.Enabled = False + mnuDelete.Enabled = False + mnuTimecorr.Enabled = False + mnuSlide.Enabled = False + mnuOpen.Enabled = False + hCurClose = New Cursor(Picture.Load("close.png")) + hCurHand = New Cursor(Picture.Load("hand1.png")) + hCurZoom = New Cursor(Picture.Load("zoom-in.png")) + PicBox.Mouse = -2 + PicBox.Cursor = hCurZoom + Me.Tooltip = ("Right-click for Main Menu") + lblCount.Text = iPicCount & (" pictures") + lblSort.Text = ("sorted alphabetically") + aPFiles.Resize(iPicCount) + aThumbs.Resize(iPicCount) + aOri.Resize(iPicCount) + aTime.Resize(iPicCount) + aFrame.Resize(iPicCount + 1) + alblFile.Resize(iPicCount) + alblTime.Resize(iPicCount) + aPicture.Resize(iPicCount) + + Timer1.Trigger ' Finish this sub, so the user can do something + +End + +Public Sub Timer1_Timer() ' Load the pictures in the background + + Dim PicInfo As String + Dim i As Integer + Dim hImg As Image + + If iPicRow = 0 Then +' Print Me.Width + iPicRow = Int((Me.Width) / 200) + iOffset = (Me.Width + 30 - iPicRow * 200) / 2 + Endif + + lblStatus.Text = ("Right-click on the background or on a frame for menus.") + For i = 0 To iPicCount - 1 + aPFiles[i] = sPath & "/" & aFiles[i] + aThumbs[i] = Thumb(aFiles[i]) + Shell "exiftool -b -orientation -createdate '" & aPFiles[i] & "'" To PicInfo ' Get orientation and create time of the picture + aOri[i] = Left$(PicInfo, 1) + aTime[i] = Right$(PicInfo, 19) + + aFrame[i] = New Panel(ScrollView1) As "Framegroup" ' Make frame + With aFrame[i] + .Width = 140 + .Height = 175 + .Border = 3 + .Background = &CFCFCF& + .Tag = i + .Mouse = -2 + .Cursor = hCurHand + iRow = Int((i) / iPicRow) + .X = (i - (iPicRow * iRow)) * 200 + iOffset + .Y = iRow * 210 + 30 + .Tooltip = ("Right-click for Picture Menu") + End With + + alblFile[i] = New Label(aFrame[i]) As "Framegroup" ' Label filename + With alblFile[i] + .Width = 130 + .Height = 16 + .X = 5 + .Y = 140 + .Font.Grade = -1 + .Alignment = 3 + .Tag = i + .Text = aFiles[i] + If Len(.Text) > 22 Then + .Alignment = 1 + .ToolTip = .Text + Endif + End With + + alblTime[i] = New Label(aFrame[i]) As "Framegroup" ' Label Timestamp + With alblTime[i] + .Width = 130 + .Height = 16 + .X = 5 + .Y = 155 + .Font.Grade = -1 + .Alignment = 3 + .Tag = i + .Text = aTime[i] + End With + If i = 0 Then + iNr = 0 + Mark_Frame(iNr) + Endif + + aPicture[i] = New PictureBox(aFrame[i]) As "Thumbnail" ' Thumbnail + With aPicture[i] + .Mouse = -2 + .Cursor = hCurZoom + .Tag = i + .Alignment = 3 + .X = 5 + .Y = 5 + .Width = 128 + .Height = 128 + + Try hImg = Image.Load(aThumbs[i]) ' Image, because it might have to be rotated + If Error Then ' If thumbnail doesn't exist, it has to be created + Shell "convert -define jpeg:size=150x150 '" & aPFiles[i] & "' -auto-orient -thumbnail 128x128 '" & aThumbs[i] & "'" Wait + hImg = Image.Load(aThumbs[i]) + Endif + + If aOri[i] > "1" And hImg.Width > hImg.Height Then ' If a system's thumbnail isn't rotated correctly + If aOri[i] = 6 Then + hImg = hImg.Rotate(Rad(-90)) + Else If aOri[i] = 8 Then + hImg = hImg.Rotate(Rad(90)) + Endif + Endif + .Picture = hImg.Picture + End With + + ProgressBar1.Value = (i + 1) / iPicCount + If bStop = True Then 'if loading is stopped + iPicCount = i + 1 + lblCount.Text = iPicCount & (" pictures") + Break + Endif + Wait 0.01 + Next + + iRow = Int(iPicCount / iPicRow) + 1 + panEmpty.Y = iRow * 210 ' Insert an empty panel to get some space at the bottom + ProgressBar1.Visible = False + lblStatus.Text = "" + mnuSortA.Enabled = False + mnuSortT.Enabled = True + mnuDelete.Enabled = True + mnuTimecorr.Enabled = True + mnu_StopLoad_RenameAll.Caption = ("&Rename all files...") + mnu_StopLoad_RenameAll.Picture = Stock["16/save-as"] + mnu_StopLoad_RenameAll.Shortcut = "Ctrl+N" + mnuSlide.Enabled = True + mnuOpen.Enabled = True + bStop = True + Me.Tag = "alpha" + Me.Tooltip = "" + For i = 0 To iPicCount - 1 + aFrame[i].Tooltip = "" + Next + +End + +Public Sub Framegroup_MouseDown() ' a frame is clicked + + iNr = Last.Tag + Mark_Frame(iNr) + If PicBox.Visible = True And PicBox.Tag <> aFiles[iNr] Then + If PicBox.Cursor = hCurClose Then + mnuFullscreen_Click + Else + mnuView_Click + Endif + Endif + +End + +Public Sub Framegroup_MouseMove() ' Move a frame + + iNr = Last.Tag + PicBox.Visible = False + FInfo.Close + aFrame[iNr].X += Mouse.X - Mouse.StartX + aFrame[iNr].Y += Mouse.Y - Mouse.StartY + If aFrame[iNr].Y < ScrollView1.ScrollY Then + ScrollView1.Scroll(ScrollView1.ScrollX, ScrollView1.ScrollY - 10) + Endif + If aFrame[iNr].Y > Me.Height + ScrollView1.ScrollY - 175 Then + ScrollView1.Scroll(ScrollView1.ScrollX, ScrollView1.ScrollY + 10) + Endif + Mark_Frame(iNr) + +End + +Public Sub Framegroup_Menu() ' Context menu of the frames + + iNr = Last.Tag + FInfo.Close + mnuDrag.Enabled = True + mnuView.Enabled = True + mnuESC.Enabled = False + mnuFramegroup.Popup + +End + +Public Sub Thumbnail_MouseDown() ' a thumbnail is clicked + + iNr = Last.Tag + FInfo.Close + Framegroup_MouseDown + If Mouse.Left Then ' view picture + If PicBox.Visible = False Then mnuView_Click + Else ' Show menu + mnuFramegroup.Popup + Endif + +End + +Public Sub mnuView_Click() ' Show picture + + Dim iFormat As Single + + Load_Picture + iFormat = aPicture[iNr].Picture.Width / aPicture[iNr].Picture.Height + If iFormat > 1 Then ' Landscape + PicBox.Width = 800 + PicBox.Height = 800 / iFormat + Else ' Portrait + PicBox.Height = 800 + PicBox.Width = 800 * iFormat + Endif + PicBox.X = (Me.Width - PicBox.Width) / 2 ' center picture + PicBox.Y = (Me.Height - PicBox.Height) / 2 + mnuView.Enabled = False + mnuESC.Enabled = True + PicBox.Visible = True + PicBox.SetFocus + +End + +Public Sub Load_Picture() + + Dim hImg As Image + + lblStatus.Text = ("Loading picture...") + Wait + hImg = Image.Load(aPFiles[iNr]) ' Image, because it might have to be rotated + If aOri[iNr] = 6 Then + hImg = hImg.Rotate(Rad(-90)) + Else If aOri[iNr] = 8 Then + hImg = hImg.Rotate(Rad(90)) + Endif + PicBox.Picture = hImg.Picture + PicBox.Tag = aFiles[iNr] + lblStatus.Text = "" + Wait + +End + +Public Sub Form_Menu() ' Main context menu + + PicBox.Visible = False + FInfo.Close + mnuMain.Popup + +End + +Public Sub mnuSortA_Click() ' Sort pictures alphabetically by file names + + Dim i, pos As Integer + Dim n As String + + PicBox.Visible = False + FInfo.Close + aSort.Resize(iPicCount) + For i = 0 To iPicCount - 1 + aSort[i] = aFiles[i] & "/" & i ' Workaround. A 2-dim array would be correct, but I can't sort it... + Next + aSort.Sort(1) + + For i = 0 To iPicCount - 1 + pos = InStr(aSort[i], "/") + n = Right$(aSort[i], Len(aSort[i]) - pos) + iRow = Int((i) / iPicRow) + aFrame[n].X = (i - (iPicRow * iRow)) * 200 + iOffset + aFrame[n].Y = iRow * 210 + 30 + Next + mnuSortT.Checked = False + mnuSortT.Enabled = True + mnuSortA.Checked = True + mnuSortA.Enabled = False + lblSort.Text = ("sorted alphabetically") + Me.Tag = "alpha" + Show_marked_frame + +End + +Public Sub mnuSortT_Click() ' Sort pictures chronologically by timestamp + + Dim i, pos As Integer + Dim n As String + + aSort.Resize(iPicCount) + For i = 0 To iPicCount - 1 + aSort[i] = aTime[i] & "/" & i ' Workaround. A 2-dim array would be correct, but I can't sort it... + Next + aSort.Sort() + + For i = 0 To iPicCount - 1 + pos = InStr(aSort[i], "/") + n = Right$(aSort[i], Len(aSort[i]) - pos) + iRow = Int((i) / iPicRow) + aFrame[n].X = (i - (iPicRow * iRow)) * 200 + iOffset + aFrame[n].Y = iRow * 210 + 30 + Next + mnuSortA.Checked = False + mnuSortA.Enabled = True + mnuSortT.Checked = True + mnuSortT.Enabled = False + lblSort.Text = ("sorted chronologically") + Me.Tag = "chron" + Show_marked_frame + +End + +Public Sub Show_marked_frame() + + If iMark > -1 Then ' Only if a picture is selected + If ScrollView1.ScrollY > (aFrame[iMark].Y - 30) Then ' If necessary, scroll up + ScrollView1.Scroll(0, (aFrame[iMark].Y - 30)) + Return + Endif + If ScrollView1.ScrollY + Me.Height < aFrame[iMark].Y + 210 Then ' If necessary, scroll down + ScrollView1.Scroll(0, aFrame[iMark].Y + 230 - Me.Height) + Endif + Endif + +End + +Public Sub mnuRename_Click() ' Show the form FRename (the renaming itself is done in the function FileRename) + + If iMark = -1 Then Return ' Only if a picture is selected + PicBox.Visible = False + FInfo.Close + mnuESC.Enabled = False + mnuView.Enabled = True + mnuFullscreen.Enabled = True + PicBox.Cursor = hCurZoom + FRename.Tag = aFiles[iNr] + FRename.ShowModal + +End + +Public Function TestRenameOne(sOldname As String, sNewname As String) As Boolean + + Dim n As Integer + + For n = 0 To iPicCount - 1 ' Check if new name already exists + If aFiles[n] = sNewname Then + Message.Error(Subst(("The file &1 already exists in the current directory!"), sNewname)) + Return False ' Give error back to FRename + Endif + Next + Return True + +End + +Public Function FileRename(sOldname As String, sNewname As String) As Boolean ' Rename a file + + Dim sThumbname As String + + Try Move sPath & "/" & sOldname To sPath & "/" & sNewname ' Rename file + If Error Then Return False + aFiles[iNr] = sNewname ' Rename all entries in arrays and labels + alblFile[iNr].Text = sNewname + alblFile[iNr].ToolTip = "" + alblFile[iNr].Alignment = 3 + If Len(sNewname) > 20 Then + alblFile[iNr].Alignment = 1 + alblFile[iNr].ToolTip = sNewname + Endif + Wait + aPFiles[iNr] = sPath & "/" & sNewname + sThumbname = Thumb(aFiles[iNr]) ' Rename thumbnail + Try Move aThumbs[iNr] To sThumbname + If Error Then + Kill sThumbname + Wait + Move aThumbs[iNr] To sThumbname + Endif + aThumbs[iNr] = sThumbname + Return True ' give ok back + +End + +Public Sub mnuDelete_Click() ' Delete a picture + + Dim i, x, y As Integer + Dim sPicState As String + + If iMark = -1 Then Return ' Only if a picture is selected + FInfo.Close + If PicBox.Visible = True Then ' Remember the state of PictureBox + If PicBox.Cursor = hCurZoom Then + sPicState = "on" + Else + sPicState = "full" + Endif + Else + sPicState = "off" + Endif + If Message.Warning(Subst(("The file &1 will be deleted."), aFiles[iNr]), ("&OK"), ("&Cancel")) = 2 Then Return ' If user aborts, cancel + + Try Shell "kioclient move '" & aPFiles[iNr] & "' trash:/" ' Move file to trash - kioclient preferred, because it writes the restore infos + If Error Then ' Otherwise move directly to trash + Move aPFiles[iNr] To "trash:/" + Endif + Try Shell "kioclient move '" & aThumbs[iNr] & "' trash:/" ' Move Thumbnail to trash + If Error Then + Move aThumbs[iNr] To "trash:/" + Endif + + x = aFrame[iNr].X ' Remember position of deleted frame + y = aFrame[iNr].Y + iPicCount = iPicCount - 1 + lblCount.Text = iPicCount & (" pictures") + + aFrame[iNr].Delete ' Remove picture + aFiles.Remove(iNr) ' Delete all array-elements, arrays are 1 smaller + aPFiles.Remove(iNr) + aThumbs.Remove(iNr) + aTime.Remove(iNr) + aFrame.Remove(iNr) + aPicture.Remove(iNr) + alblFile.Remove(iNr) + alblTime.Remove(iNr) + aOri.Remove(iNr) + + For i = iNr To iPicCount - 1 ' Set the tags of all next frames in the arrays -1 + aFrame[i].Tag = i + aPicture[i].Tag = i + alblFile[i].Tag = i + alblTime[i].Tag = i + Next + + If FindNextFrame(x, y) = False Then + iMark = -1 + PicBox.Visible = False + mnuFullscreen.Enabled = True + Return + Endif + mnuView.Enabled = True + mnuFullscreen.Enabled = True + Mark_Frame(iNr) + Show_marked_frame + Select Case sPicState ' Show PictureBox again with next picture + Case "on" + mnuView_Click + Case "full" + mnuFullscreen_Click + End Select +End + +Public Sub mnuInfo_Click() ' Show picture infos + + Dim posx, posy As Integer + + If iMark = -1 Then Return + posx = aFrame[iNr].X + posy = aFrame[iNr].Y - ScrollView1.ScrollY + If posx < Me.Width - 740 Then ' Calculate position for FInfo + FInfo.X = posx + 145 + Else + FInfo.X = posx - 595 + Endif + If posy < Me.Height - 350 Then + FInfo.Y = posy + 24 + Else + FInfo.Y = posy - 180 + Endif + FInfo.Tag = iNr + FInfo.Show + +End + +Public Sub GetExifInfoCommon(iNumber As Integer) As String + + Dim sExif As String + + Shell "exiftool -common -h '" & aPFiles[iNumber] & "'" To sExif + Return sExif + +End + +Public Sub GetExifInfoAll(iNumber As Integer) As String + + Dim sExif As String + + Shell "exiftool -a -h '" & aPFiles[iNumber] & "'" To sExif + Return sExif + +End + +Public Sub mnuHelp_Click() ' Show help + + FHelp.X = (Me.Width - FHelp.Width) / 2 + FHelp.Show + +End + +Public Sub PicBox_MouseDown() ' Click on PictureBox + + If Mouse.Left = True Then + If PicBox.Cursor = hCurZoom Then ' if smaller picture + mnuFullscreen_Click + Else ' if full screen + BackToSmallView + Endif + Else ' right-klick + mnuDrag.Enabled = False + mnuFramegroup.Popup + Endif + +End + +Public Sub mnuFullscreen_Click() ' Full screen view (we ignore that a picture might be smaller) + + Dim iFormat As Single + + If PicBox.Visible = False Or PicBox.Tag <> aFiles[iNr] Then + Load_Picture + Endif + iFormat = aPicture[iNr].Picture.Width / aPicture[iNr].Picture.Height + PicBox.Y = 0 + PicBox.Height = Me.Height + PicBox.Width = Me.Height * iFormat + If PicBox.Width > Me.Width Then ' If picture format is 16:9 or wider + PicBox.Width = Me.Width + PicBox.Height = Me.Width / iFormat + Endif + PicBox.X = (Me.Width - PicBox.Width) / 2 + PicBox.Visible = True + mnuFullscreen.Enabled = False + mnuView.Enabled = False + mnuESC.Enabled = True + PicBox.Cursor = hCurClose + PicBox.SetFocus + +End + +Public Sub BackToSmallView() ' Close FullScreen view + + Dim w, h As Integer + + w = PicBox.Width + h = PicBox.Height + If w / h > 1 Then + PicBox.Width = 800 + PicBox.Height = 800 / w * h + Else + PicBox.Width = 800 * w / h + PicBox.Height = 800 + Endif + PicBox.X = (Me.Width - PicBox.Width) / 2 ' centered + PicBox.y = (Me.Height - PicBox.Height) / 2 + PicBox.Cursor = hCurZoom + mnuView.Enabled = False + mnuFullscreen.Enabled = True + mnuESC.Enabled = True + +End + +Public Sub mnuESC_Click() ' ESC is pressed + + If PicBox.Visible = True Then + If PicBox.Cursor = hCurClose Then ' we have full screen + BackToSmallView + Else ' Close small view + PicBox.Visible = False + mnuView.Enabled = True + mnuFullscreen.Enabled = True + mnuESC.Enabled = False + aFrame[iNr].SetFocus + Endif + Endif + +End + +Public Sub mnuNext_Click() ' Move to next picture + + If iMark = -1 Then Return ' Only if a picture is selected + If FindNextFrame(aFrame[iNr].X, aFrame[iNr].Y) = False Then Return ' if no next picture is found, exit + Mark_Frame(iNr) + Show_marked_frame + If PicBox.Visible = True Then + If PicBox.Cursor = hCurClose Then ' if fullscreen + mnuFullscreen_Click + Else + mnuView_Click + Endif + Endif + +End + +Public Function FindNextFrame(x As Integer, y As Integer) As Boolean + + Dim i As Integer + + Do + x = x + 70 + If x > (ScrollView1.ScrollWidth - 150) Then ' if we are at the end of a line, go to next line + x = 0 + y = y + 210 + Endif + If y > panEmpty.Y + 200 Then Break ' if we are in last line, end + For i = 0 To iPicCount - 1 + If aFrame[i].X > x And aFrame[i].X < x + 140 And aFrame[i].Y > y - 100 And aFrame[i].Y < y + 100 Then + iNr = i + Return True ' found + Endif + Next + Loop + Return False 'none found + +End + +Public Sub mnuPrevious_Click() ' Move to previous picture + + Dim x, y, i As Integer + + If iMark = -1 Then Return ' Only if a picture is selected + x = aFrame[iNr].X + y = aFrame[iNr].Y + Do + x = x - 70 + If x < 70 Then ' if we are at the beginning of a line, go to end of previous line + x = Me.Width + y = y - 210 + Endif + If y < 0 Then Break ' if we are at top, end + For i = 0 To iPicCount - 1 + If aFrame[i].X < x And aFrame[i].X > x - 140 And aFrame[i].Y > y - 100 And aFrame[i].Y < y + 100 Then + iNr = i + Mark_Frame(iNr) + Show_marked_frame + If PicBox.Visible = True Then + If PicBox.Cursor = hCurClose Then 'fullscreen + mnuFullscreen_Click + Else + mnuView_Click + Endif + Endif + Goto found + Endif + Next + Loop + found: + +End + +Public Sub Mark_Frame(iNumber As Integer) 'Mark selected frame + + If iMark > -1 Then + aFrame[iMark].Background = &CFCFCF& + alblFile[iMark].Foreground = &000000& + alblTime[iMark].Foreground = &000000& + Endif + aFrame[iNumber].Background = &0000FF& + alblFile[iNumber].Foreground = &FFFFFF& + alblTime[iNumber].Foreground = &FFFFFF& + aFrame[iNumber].Raise + iMark = iNumber + If FInfo.Visible = True Then + FInfo.Close + mnuInfo_Click + Endif + +End + +Public Function Thumb(sFilename As String) As String ' Get the file name for thumbnail using md5sum + + Dim sThumb As String + Dim i As Integer + + sFilename = sPath & "/" & sFilename + sFilename = Replace$(sFilename, " ", "%20") ' we have to replace spaces and special characters + For i = 123 To 255 + sFilename = Replace$(sFilename, Chr(i), "%" & Hex$(i)) + Next + sFilename = "file://" & sFilename + Shell "echo -n '" & sFilename & "' | md5sum" To sThumb + sThumb = Left$(sThumb, 32) + sThumb = User.Home & "/.thumbnails/normal/" & sThumb & ".png" + Return sThumb + +End + +Public Sub mnu_StopLoad_RenameAll_Click() 'Abort Loading or Rename all + + PicBox.Visible = False + FInfo.Close + + If bStop = False Then ' abort + lblStatus.Text = ("Loading of pictures is being aborted...") + Wait + bStop = True + Return + Endif + FRenameAll.ShowModal ' rename + +End + +Public Function TestRenameAll(sPref As String, sFmt As String, iStart As Integer, bKeep As Boolean) As String ' Check if target filenames already exist + + Dim x, y, i, n As Integer + Dim sResult As String = "" + Dim aOldname As New String[iPicCount] + Dim aNewname As New String[iPicCount] + + x = -60 + y = 100 + i = iStart + n = 0 + Do While FindNextFrame(x, y) + aOldname[n] = aFiles[iNr] + aNewname[n] = sPref & Format(i, sFmt) + If bKeep = True Then ' keep old filename + aNewname[n] = aNewname[n] & "_" & aOldname[n] + Else ' just number + aNewname[n] = aNewname[n] & ".jpg" + Endif + x = aFrame[iNr].X + y = aFrame[iNr].Y + n = n + 1 + i = i + 1 + Loop + Mark_Frame(iNr) + Show_marked_frame + For i = 0 To iPicCount - 1 ' Check if there would be a conflict with existing filenames + For n = i + 1 To iPicCount - 1 + If aNewname[i] = aOldname[n] Then + sResult = sResult & aOldname[i] & " --> " & aOldname[n] & "\n" + Endif + Next + Next + Return sResult + +End + +Public Function RenameAll(sPref As String, sFmt As String, iStart As Integer, bKeep As Boolean) As Boolean ' Rename all files + + Dim x, y, n, i As Integer + Dim oldname, newname As String + + lblStatus.Text = ("Files are being renamed...") + Wait + x = -60 + y = 100 + n = 0 + i = iStart + + Do While FindNextFrame(x, y) + oldname = aFiles[iNr] + newname = sPref & Format(i, sFmt) + If bKeep = True Then ' keep old filename + newname = newname & "_" & oldname + Else ' just number + newname = newname & ".jpg" + Endif + If FileRename(oldname, newname) = False Then + n = n - 1 + Endif + x = aFrame[iNr].X + y = aFrame[iNr].Y + n = n + 1 + i = i + 1 + Wait + Loop + + Mark_Frame(iNr) + Show_marked_frame + lblStatus.Text = "" + Dec Application.Busy + Message.Info(Subst(("&1 files renamed"), n)) + +End + +Public Sub mnuTimecorr_Click() ' Time correction + + FTime.Tag = sPath + FTime.ShowModal + +End + +Public Sub TimeCorrection(idays As Integer, ihours As Integer, iminutes As Integer, PlusMinus As String) + + Dim i As Integer + Dim Hrs As Single + + lblStatus.Text = ("Setting time informations in all files...") + Wait + If PlusMinus = "0" Then + PlusMinus = "-" + Else + PlusMinus = "+" + Endif + Hrs = idays * 24 + ihours + iminutes / 60 + + Shell "exiftool -alldates" & PlusMinus & "=" & Hrs & " '" & sPath & "'" Wait + For i = 0 To iPicCount - 1 + Shell "exiftool -b -createdate '" & aPFiles[i] & "'" To alblTime[i].Text + Next + lblStatus.Text = "" + +End + +Public Sub mnuSlide_Click() ' Slide Show + + Dim i, iLast As Integer + + iLast = iNr + FSlideshow.Show + + Do + FSlideshow.PictureLoad(aPFiles[iNr], aOri[iNr]) + FSlideshow.Title = aFiles[iNr] + i = 1 + Do + If i > iDelay Then Break + If FSlideshow.Visible = False Or FSlideshow.Minimized = True Then Break + Wait 1 + Inc i + Loop + + If FSlideshow.Visible = False Or FSlideshow.Minimized = True Then Break + mnuNext_Click + If iNr = iLast Then Break + iLast = iNr + Loop + + FSlideshow.Close + Settings["SlideShow/Delay"] = iDelay + +End + +Public Function GetDelay(iSec As Integer) As Boolean + + iDelay = iSec + +End + +Public Sub mnuOpen_Click() ' Open another folder + + MMain.Main + Me.Close + +End + +Public Sub mnuQuit_Click() ' Quit + + Me.Close + +End + +Public Sub Form_Close() + + If bStop = False Then ' if loading of pictures is still in progress + bStop = True + Stop Event + Wait + Timer2.Enabled = True + Endif + +End + +Public Sub Timer2_Timer() + + Me.Close + +End diff --git a/app/examples/Image/Lighttable/.src/FMain.form b/app/examples/Image/Lighttable/.src/FMain.form new file mode 100644 index 00000000..41224a39 --- /dev/null +++ b/app/examples/Image/Lighttable/.src/FMain.form @@ -0,0 +1,162 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,116,65) + Background = Color.Background + Icon = Picture["LTicon.png"] + Arrangement = Arrange.Vertical + { mnuMain Menu + Text = ("Main menu") + Visible = False + { mnuSortA Menu + Text = ("Sorted &alphabetically") + Picture = Picture["icon:/16/sort-ascent"] + Checked = True + Shortcut = "Ctrl+A" + } + { mnuSortT Menu + Text = ("Sorted &chronologically") + Picture = Picture["icon:/16/clock"] + Shortcut = "Ctrl+C" + } + { mnuSlide Menu + Text = ("&Slideshow") + Picture = Picture["icon:/16/video"] + Shortcut = "Ctrl+S" + } + { mnu_StopLoad_RenameAll Menu + Text = ("Abort &Loading") + Picture = Picture["icon:/16/cancel"] + Shortcut = "End" + } + { mnuTimecorr Menu + Text = ("&Time correction...") + Picture = Picture["icon:/16/camera"] + Shortcut = "Ctrl+T" + } + { mnuOpen Menu + Text = ("&Open folder...") + Picture = Picture["icon:/16/open"] + Shortcut = "Ctrl+O" + } + { mnuHelp Menu + Text = ("&Help") + Picture = Picture["help-contents.png"] + Shortcut = "F1" + } + { mnuQuit Menu + Text = ("&Quit") + Picture = Picture["icon:/16/quit"] + Shortcut = "Ctrl+End" + } + } + { mnuFramegroup Menu + Text = ("Picture menu") + Visible = False + { mnuDrag Menu + Text = ("(Move picture: drag frame with mouse)") + Picture = Picture["move.png"] + } + { mnuView Menu + Text = ("&View picture (click on picture)") + Picture = Picture["icon:/16/zoom-in"] + Shortcut = "Enter" + } + { mnuFullscreen Menu + Text = ("&Full Screen View") + Picture = Picture["icon:/16/fullscreen"] + Shortcut = "Alt+Enter" + } + { mnuESC Menu + Text = ("&Close view") + Picture = Picture["icon:/16/close"] + Shortcut = "Esc" + } + { mnuNext Menu + Text = ("&Next picture") + Picture = Picture["icon:/16/next"] + Shortcut = "Right" + } + { mnuPrevious Menu + Text = ("&Previous picture") + Picture = Picture["icon:/16/previous"] + Shortcut = "Left" + } + { mnuInfo Menu + Text = ("Picture &informations") + Picture = Picture["icon:/16/info"] + Shortcut = "I" + } + { mnuRename Menu + Text = ("&Rename picture") + Picture = Picture["icon:/16/save-as"] + Shortcut = "N" + } + { mnuDelete Menu + Text = ("&Delete picture") + Picture = Picture["icon:/16/delete"] + Shortcut = "Del" + } + } + { ScrollView1 ScrollView + MoveScaled(27,13,41,32) + Background = Color.TextBackground + Expand = True + Border = False + { panEmpty Panel + MoveScaled(4,10,16,16) + } + } + { Timer1 #Timer + #MoveScaled(105,22) + Delay = 10 + } + { Timer2 #Timer + #MoveScaled(105,30) + Delay = 100 + } + { Separator1 Separator + MoveScaled(27,56,14,0) + } + { StatusBar Panel + MoveScaled(2,60,99,4) + Arrangement = Arrange.Horizontal + { lblCount Label + MoveScaled(1,0.5714,13,3) + Font = Font["-1"] + Alignment = Align.Center + Border = Border.Sunken + } + { lblSort Label + MoveScaled(15,0.5714,29,3) + Font = Font["-1"] + Alignment = Align.Center + Border = Border.Sunken + } + { Panel1 Panel + MoveScaled(45,0,1,4) + } + { lblStatus Label + MoveScaled(47,0,27,4) + Font = Font["-1"] + Expand = True + Alignment = Align.Center + } + { Panel2 Panel + MoveScaled(75,0,22,4) + Arrangement = Arrange.Fill + Margin = True + Padding = 4 + { ProgressBar1 ProgressBar + MoveScaled(0,0,20,3) + } + } + } + { PicBox PictureBox + MoveScaled(7,37,9,9) + Visible = False + Ignore = True + Stretch = True + Border = Border.Etched + } +} diff --git a/app/examples/Image/Lighttable/.src/FRename.class b/app/examples/Image/Lighttable/.src/FRename.class new file mode 100644 index 00000000..05d57c47 --- /dev/null +++ b/app/examples/Image/Lighttable/.src/FRename.class @@ -0,0 +1,58 @@ +' Gambas class file + +Private sOldName As String + +Public Sub Form_Open() + + txtRename.Text = Me.Tag + sOldName = Me.Tag + MarkFilename + +End + +Public Sub MarkFilename() + + Dim lentext, posp As Integer + Dim right3 As String + + right3 = Right$(txtRename.Text, 3) + lentext = Len(txtRename.Text) + If right3 = "jpg" Or right3 = "JPG" Then + posp = lentext - 4 + Else + posp = lentext - 5 + Endif + Me.SetFocus + txtRename.SetFocus + txtRename.Select(0, posp) + +End + +Public Sub btnCancel_Click() + + Me.Close + +End + +Public Sub btnOK_Click() + + Dim sNewName As String + + sNewName = txtRename.Text + If sOldName = sNewName Then + Message.Error(("Old and new filename are identical.")) + MarkFilename + Return + Endif + If FMain.TestRenameOne(sOldName, sNewName) = False Then ' if name already exists, cancel + txtRename.Text = sOldName + MarkFilename + Return + Endif + FMain.FileRename(sOldName, sNewName) + If FMain.Tag = "alpha" Then ' if sorted alphabetically, sort anew + FMain.mnuSortA_Click + Endif + Me.Close + +End diff --git a/app/examples/Image/Lighttable/.src/FRename.form b/app/examples/Image/Lighttable/.src/FRename.form new file mode 100644 index 00000000..58fa4574 --- /dev/null +++ b/app/examples/Image/Lighttable/.src/FRename.form @@ -0,0 +1,25 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,51,15) + Text = ("Rename") + Resizable = False + SkipTaskbar = True + { lblRename Label + MoveScaled(2,1,23,3) + Text = ("New filename:") + } + { txtRename TextBox + MoveScaled(1,4,48,4) + } + { btnOK Button + MoveScaled(34,10,15,4) + Text = ("&OK") + Default = True + } + { btnCancel Button + MoveScaled(18,10,15,4) + Text = ("&Cancel") + Cancel = True + } +} diff --git a/app/examples/Image/Lighttable/.src/FRenameAll.class b/app/examples/Image/Lighttable/.src/FRenameAll.class new file mode 100644 index 00000000..b6a78ecf --- /dev/null +++ b/app/examples/Image/Lighttable/.src/FRenameAll.class @@ -0,0 +1,101 @@ +' Gambas class file + +Private sExpl As String +Private sDigits As String = "000" +Private sOldStart As String = "1" +Private iStartVal As Integer = 1 + +Public Sub Form_Open() + + FMain.Enabled = False + sExpl = ("MyPicture.JPG") + SpinBox1.Value = 3 + RenewExample + +End + +Public Sub txtPre_Change() + + RenewExample + +End + +Public Sub SpinBox1_Change() + + If SpinBox1.Value < Len(txtStart.Text) Then + SpinBox1.Value = Len(txtStart.Text) + Return + Endif + sDigits = String$(SpinBox1.Value, "0") + RenewExample + +End + +Public Sub CheckFile_Click() + + RenewExample + +End + +Public Sub txtStart_Change() + + Dim sNewStart As String + Dim iLenStart As Integer + + sNewStart = txtStart.Text + If Not IsDigit(sNewStart) Then + txtStart.Text = sOldStart + Return + Endif + + iLenStart = Len(sNewStart) + iStartVal = Val(sNewStart) + If iLenStart > SpinBox1.Value Then SpinBox1.Value = iLenStart + sOldStart = sNewStart + RenewExample + +End + +Public Sub RenewExample() + + lblExample.Text = txtPre.Text & Format$(iStartVal, sDigits) + If CheckFile.Value = True Then + lblExample.Text = lblExample.Text & "_" & sExpl + Else + lblExample.Text = lblExample.Text & ".jpg" + Endif + +End + +Public Sub btnCancel_Click() + + Me.Close + +End + +Public Sub btnOK_Click() + + Dim sProblems As String + Dim iContinue As Integer + + sProblems = FMain.TestRenameAll(txtPre.Text, sDigits, iStartVal, CheckFile.Value) + If sProblems <> "" Then + FRenameAllWarning.Tag = sProblems + iContinue = FRenameAllWarning.ShowModal() + Else + iContinue = 1 + Endif + + If iContinue = 0 Then Return + + Inc Application.Busy + FMain.RenameAll(txtPre.Text, sDigits, iStartVal, CheckFile.Value) + Me.Close + +End + +Public Sub form_Close() + + FMain.Enabled = True + +End diff --git a/app/examples/Image/Lighttable/.src/FRenameAll.form b/app/examples/Image/Lighttable/.src/FRenameAll.form new file mode 100644 index 00000000..aee280c1 --- /dev/null +++ b/app/examples/Image/Lighttable/.src/FRenameAll.form @@ -0,0 +1,77 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,64,59) + Text = ("Rename all pictures") + Resizable = False + { Panel1 Panel + MoveScaled(2,21,60,22) + Border = Border.Sunken + { txtPre TextBox + MoveScaled(24,2,35,4) + } + { SpinBox1 SpinBox + MoveScaled(24,7,6,4) + MinValue = 1 + MaxValue = 5 + } + { txtStart TextBox + MoveScaled(24,12,10,4) + Text = ("1") + MaxLength = 5 + } + { CheckFile CheckBox + MoveScaled(2,17,55,3) + Text = ("Keep original filename as suffix") + Value = CheckBox.True + } + { Label2 Label + MoveScaled(2,7,22,4) + Text = ("Number format") + } + { Label3 Label + MoveScaled(31,7,13,4) + Text = ("digits") + } + { Label5 Label + MoveScaled(2,2,22,4) + Text = ("Prefix") + } + { Label6 Label + MoveScaled(2,12,22,4) + Text = ("Start value") + } + } + { btnOK Button + MoveScaled(46,53,16,4) + Text = ("&OK") + Default = True + } + { btnCancel Button + MoveScaled(28,53,16,4) + Text = ("&Cancel") + Cancel = True + } + { TextLabel1 TextLabel + MoveScaled(2,2,60,14) + Background = &HFFFCCC& + Padding = 7 + Text = ("This function will rename all .jp(e)g files in the directory and add serial numbers to the filenames.
    The pictures will be handled in the order they are shown right now, in rows from left to right, rows from top to bottom.") + Border = Border.Etched + } + { Label1 Label + MoveScaled(2,18,19,3) + Text = ("Options") + } + { Label4 Label + MoveScaled(2,46,11,4) + Text = ("Example:") + } + { lblExample Label + MoveScaled(13,46,49,4) + Font = Font["Bold"] + Background = Color.TextBackground + Alignment = Align.Center + Border = Border.Etched + } +} diff --git a/app/examples/Image/Lighttable/.src/FRenameAllWarning.class b/app/examples/Image/Lighttable/.src/FRenameAllWarning.class new file mode 100644 index 00000000..8c4626e7 --- /dev/null +++ b/app/examples/Image/Lighttable/.src/FRenameAllWarning.class @@ -0,0 +1,19 @@ +' Gambas class file + +Public Sub Form_Open() + + txaList.Text = Me.Tag + +End + +Public Sub btnCancel_Click() + + Me.Close(0) + +End + +Public Sub btnContinue_Click() + + Me.Close(1) + +End diff --git a/app/examples/Image/Lighttable/.src/FRenameAllWarning.form b/app/examples/Image/Lighttable/.src/FRenameAllWarning.form new file mode 100644 index 00000000..e5ae683a --- /dev/null +++ b/app/examples/Image/Lighttable/.src/FRenameAllWarning.form @@ -0,0 +1,29 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,68,54) + Text = ("File Conflicts") + Resizable = False + { btnCancel Button + MoveScaled(51,48,15,4) + Text = ("&Cancel") + Default = True + Cancel = True + } + { btnContinue Button + MoveScaled(28,48,21,4) + Text = ("Continue &anyway") + } + { TextLabel1 TextLabel + MoveScaled(11,2,54,14) + Text = ("The following files can't be renamed, because the target filenames already exist in the directory.
    If you continue, only the files without conflicts will be renamed.
    If you cancel, you can choose new filename options.") + } + { txaList TextArea + MoveScaled(2,18,64,28) + ReadOnly = True + } + { PictureBox1 PictureBox + MoveScaled(2,3,7,7) + Picture = Picture["icon:/48/warning"] + } +} diff --git a/app/examples/Image/Lighttable/.src/FSlideshow.class b/app/examples/Image/Lighttable/.src/FSlideshow.class new file mode 100644 index 00000000..73752d11 --- /dev/null +++ b/app/examples/Image/Lighttable/.src/FSlideshow.class @@ -0,0 +1,56 @@ +' Gambas class file + +Public Sub Form_Open() + + Dim sDelay As String + + Me.Width = Desktop.Width + Me.Height = Desktop.Height + panControl.Y = Me.Height - 55 + panControl.Width = Me.Width + sDelay = Settings["SlideShow/Delay"] + If sDelay = "" Then sDelay = "5" + spinDelay.Value = sDelay + FMain.GetDelay(sDelay) + btnStop.SetFocus + +End + +Public Function PictureLoad(sPath As String, iOri As String) As Boolean + + Dim hPic As Image + Dim iFormat As Single + + hPic = Image.Load(sPath) + If iOri = 6 Then + hPic = hPic.Rotate(Rad(-90)) + Else If iOri = 8 Then + hPic = hPic.Rotate(Rad(90)) + Endif + PicBox1.Picture = hPic.Picture + Wait + + iFormat = PicBox1.Picture.Width / PicBox1.Picture.Height + PicBox1.Y = 0 + PicBox1.Height = Me.Height - 35 + PicBox1.Width = Me.Height * iFormat + If PicBox1.Width > Me.Width Then + PicBox1.Width = Me.Width + PicBox1.Height = Me.Width / iFormat + Endif + PicBox1.X = (Me.Width - PicBox1.Width) / 2 + PicBox1.Visible = True + +End + +Public Sub spinDelay_Change() + + FMain.GetDelay(spinDelay.Value) + +End + +Public Sub btnStop_Click() + + Me.Close + +End diff --git a/app/examples/Image/Lighttable/.src/FSlideshow.form b/app/examples/Image/Lighttable/.src/FSlideshow.form new file mode 100644 index 00000000..337e6046 --- /dev/null +++ b/app/examples/Image/Lighttable/.src/FSlideshow.form @@ -0,0 +1,46 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,81,37) + Background = Color.Background + Resizable = False + SkipTaskbar = True + { PicBox1 PictureBox + MoveScaled(22,12,10,9) + Visible = False + Stretch = True + } + { panControl Panel + MoveScaled(0,31,79,4) + Background = Color.Background + Arrangement = Arrange.Horizontal + Border = Border.Raised + { Panel1 Panel + MoveScaled(0,1,7,2) + Expand = True + } + { Label1 Label + MoveScaled(8,0,25,4) + Text = ("Pause between pictures:") + Alignment = Align.Right + } + { spinDelay SpinBox + MoveScaled(34,0,7,4) + MaxValue = 60 + } + { Label2 Label + MoveScaled(42,0,10,4) + Text = ("sec") + } + { btnStop Button + MoveScaled(59,0,15,4) + Text = ("Stop") + Picture = Picture["icon:/16/stop"] + Default = True + Cancel = True + } + { Panel2 Panel + MoveScaled(75,0,4,3) + } + } +} diff --git a/app/examples/Image/Lighttable/.src/FStart.class b/app/examples/Image/Lighttable/.src/FStart.class new file mode 100644 index 00000000..c93266a5 --- /dev/null +++ b/app/examples/Image/Lighttable/.src/FStart.class @@ -0,0 +1,135 @@ +' Gambas class file + +Private iNr As Integer +Private aRecentDirs As New String[] +Private atxLabel As New TextLabel[] + +Public Sub Form_Open() + + Dim i, j, pos, lastpos As Integer + Dim sShort, sPath As String + + aRecentDirs.Resize(10) + atxLabel.Resize(10) + + i = 0 + For j = 0 To 9 + aRecentDirs[i] = Settings["Recent/" & j] + If aRecentDirs[i] = "" Then Break + If Not Exist(aRecentDirs[i]) Then + i -= 1 + Goto directory_does_not_exist + Endif + pos = -1 + Do While pos <> 0 + lastpos = pos + pos = InStr(aRecentDirs[i], "/", pos + 1) + Loop + sShort = Right$(aRecentDirs[i], Len(aRecentDirs[i]) - lastpos) + sPath = Left$(aRecentDirs[i], Len(aRecentDirs[i]) - Len(sShort)) + + atxLabel[i] = New TextLabel(svwLast) As "lblRecent" + With atxLabel[i] + .Border = Border.Raised + .Font.Grade = -1 + .Padding = 1 + .Tag = i + .Text = "" & sShort & "
    " & sPath + .AutoResize = True + End With + directory_does_not_exist: + i += 1 + Next + Me.Center + +End + +Public Sub btnOK_Click() + + Dim i, j As Integer + Dim sDir As String + + sDir = DirChooser1.SelectedPath + If MMain.ReadDir(sDir) = False Then + Message.Error(Subst(("The folder &1 doesn't contain any jp(e)g files."), sDir)) + Return + Endif + + For i = 0 To 8 ' write recent selections into settings + If aRecentDirs[i] = sDir Then + For j = i To 8 + aRecentDirs[j] = aRecentDirs[j + 1] + Next + Break + Endif + Next + For i = 9 To 1 Step -1 + aRecentDirs[i] = aRecentDirs[i - 1] + Next + aRecentDirs[0] = sDir + For i = 0 To 9 + Settings["Recent/" & i] = aRecentDirs[i] + Next + + MMain.GoAhead(True) + +End + +Public Sub btnCancel_Click() + + MMain.GoAhead(False) + +End + +Public Sub lblRecent_Enter() + + iNr = Last.Tag + If atxLabel[iNr].Background = -1 Then + atxLabel[iNr].Background = Color.LightBackground + Endif + +End + +Public Sub lblRecent_Leave() + + If atxLabel[iNr].Background = Color.LightBackground Then + atxLabel[iNr].Background = -1 + Endif +End + +Public Sub lblRecent_MouseDown() + + DirChooser1.SelectedPath = aRecentDirs[iNr] + +End + +Public Sub lblRecent_DblClick() + + lblRecent_MouseDown + btnOK_Click + +End + +Public Sub DirChooser1_Change() + + Dim i As Integer + + For i = 0 To 9 + If Not Exist(aRecentDirs[i]) Then Break + If aRecentDirs[i] = "" Then Break + If aRecentDirs[i] = DirChooser1.SelectedPath Then + atxLabel[i].Background = Color.SelectedBackground + atxLabel[i].Foreground = Color.SelectedForeground + Else + atxLabel[i].Background = -1 + atxLabel[i].Foreground = -1 + Endif + Next + +End + +Public Sub DirChooser1_Activate() + + btnOK_Click + +End diff --git a/app/examples/Image/Lighttable/.src/FStart.form b/app/examples/Image/Lighttable/.src/FStart.form new file mode 100644 index 00000000..357c0d8b --- /dev/null +++ b/app/examples/Image/Lighttable/.src/FStart.form @@ -0,0 +1,42 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,101,65) + Text = ("Lighttable - Select picture folder") + Resizable = False + { btnOK Button + MoveScaled(69,60,15,4) + Text = ("&OK") + Default = True + } + { btnCancel Button + MoveScaled(85,60,15,4) + Text = ("&Cancel") + Cancel = True + } + { DirChooser1 DirChooser + MoveScaled(2,6,51,51) + } + { Separator1 Separator + MoveScaled(0,58,102,1) + } + { Label1 Label + MoveScaled(2,2,27,3) + Font = Font["Bold,+1"] + Text = ("New selection") + } + { Separator2 Separator + MoveScaled(54,0,2,58) + } + { Label2 Label + MoveScaled(58,2,23,3) + Font = Font["Bold,+1"] + Text = ("Last selections") + } + { svwLast ScrollView + MoveScaled(58,7,41,49) + Arrangement = Arrange.Vertical + Border = False + ScrollBar = Scroll.Vertical + } +} diff --git a/app/examples/Image/Lighttable/.src/FTime.class b/app/examples/Image/Lighttable/.src/FTime.class new file mode 100644 index 00000000..d807f8f8 --- /dev/null +++ b/app/examples/Image/Lighttable/.src/FTime.class @@ -0,0 +1,27 @@ +' Gambas class file + +Public Sub Form_Open() + + Me.Center + +End + +Public Sub btnCancel_Click() + + Me.Close + +End + +Public Sub btnOK_Click() + + If SpinDay.Value + SpinHrs.Value + SpinMins.Value = 0 Then + Message.Info(("There is no time correction selected.")) + Return + Endif + + Inc Application.Busy + FMain.TimeCorrection(SpinDay.Value, SpinHrs.Value, SpinMins.Value, cmbPlusMinus.Index) + Dec Application.Busy + Me.Close + +End diff --git a/app/examples/Image/Lighttable/.src/FTime.form b/app/examples/Image/Lighttable/.src/FTime.form new file mode 100644 index 00000000..90070ebc --- /dev/null +++ b/app/examples/Image/Lighttable/.src/FTime.form @@ -0,0 +1,58 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,71,40) + Text = ("Time correction") + Resizable = False + { SpinDay SpinBox + MoveScaled(2,25,8,4) + MaxValue = 365 + } + { SpinHrs SpinBox + MoveScaled(19,25,7,4) + MaxValue = 23 + } + { SpinMins SpinBox + MoveScaled(36,25,7,4) + MaxValue = 59 + } + { cmbPlusMinus ComboBox + MoveScaled(54,25,15,4) + ReadOnly = True + List = [("earlier"), ("later")] + Text = ("later") + } + { btnOK Button + MoveScaled(54,34,15,4) + Text = ("&OK") + Default = True + } + { btnCancel Button + MoveScaled(37,34,15,4) + Text = ("&Cancel") + Cancel = True + } + { TextLabel1 TextLabel + MoveScaled(2,3,67,16) + Background = &HFFFCCC& + Padding = 7 + Text = ("This function will correct all date/time informations in the EXIF section of all .jp(e)g files in the folder.
    A backup of the files will be made with file names like 'MyPicture.jpg_original'.
    If there are no EXIF date/time informations in a file, nothing will be done.") + Border = Border.Etched + } + { Label1 Label + MoveScaled(2,21,60,4) + Text = ("Set the original time of all pictures to") + } + { Label2 Label + MoveScaled(10,25,9,4) + Text = ("day(s)") + } + { Label3 Label + MoveScaled(26,25,10,4) + Text = ("hour(s)") + } + { Label4 Label + MoveScaled(43,25,11,4) + Text = ("minute(s)") + } +} diff --git a/app/examples/Image/Lighttable/.src/MMain.module b/app/examples/Image/Lighttable/.src/MMain.module new file mode 100644 index 00000000..22771979 --- /dev/null +++ b/app/examples/Image/Lighttable/.src/MMain.module @@ -0,0 +1,53 @@ +' Gambas module file + +Private sPath As String +Private aFiles As String[] + +Public Sub Main() + + Dim sTest As String + + Try Shell "exiftool -ver" To sTest + If Error Or sTest = "" Then + Message.Error(("To run this program, exiftool must be installed.")) + Return + Endif + + Try Shell "convert -version" To sTest + If Error Or sTest = "" Then + Message.Error(("To run this program, convert must be installed.")) + Return + Endif + + FStart.Show + +End + +Public Sub ReadDir(sDir As String) As Boolean + + Dim iCount As Integer + + aFiles = Dir(sDir, "*.{jpg,jpeg}").Sort(1) ' Sorted by file names, 1 = case insensitive + iCount = aFiles.Count + If iCount > 0 Then + sPath = sDir + Return True + Endif + +End + +Public Sub GoAhead(bOk As Boolean) + + FStart.Close + If bOk = False Then Return + FMain.Tag = sPath + FMain.Show + +End + +Public Function GetFiles() As String[] + + Return aFiles + aFiles.Delete + +End diff --git a/app/examples/Image/Lighttable/CHANGELOG b/app/examples/Image/Lighttable/CHANGELOG new file mode 100644 index 00000000..5cb10caf --- /dev/null +++ b/app/examples/Image/Lighttable/CHANGELOG @@ -0,0 +1,3 @@ +* Sun Feb 28 2010 mathias 0.1 +- Initial release + diff --git a/app/examples/Image/Lighttable/FStart.class b/app/examples/Image/Lighttable/FStart.class new file mode 100644 index 00000000..c3a9c61f --- /dev/null +++ b/app/examples/Image/Lighttable/FStart.class @@ -0,0 +1,92 @@ +' Gambas class file + +aRecentDirs As New String[] +iNr As Integer +iLast As Integer +atxLabel As New Object[] + + +Public Sub Form_Open() + Dim i, pos, lastpos As Integer + Dim sShort, sPath As String + + aRecentDirs.Resize(10) + atxLabel.Resize(10) + + For i = 0 To 9 + aRecentDirs[i] = Settings["Recent/" & i] + If aRecentDirs[i] = "" Then Break + pos = -1 + Do While pos <> 0 + lastpos = pos + pos = InStr(aRecentDirs[i], "/", pos + 1) + Loop + sShort = Right$(aRecentDirs[i], Len(aRecentDirs[i]) - lastpos) + sPath = Left$(aRecentDirs[i], Len(aRecentDirs[i]) - Len(sShort)) + + atxLabel[i] = New TextLabel(Me) As "lblRecent" + With atxLabel[i] + .X = 406 + .Y = 49 + (i * 35) + .Width = 287 + .Height = 35 + .Border = 4 + .Font.Grade = -1 + .Padding = 1 + .Tag = i + .Text = "" & sShort & "
    " & sPath + End With + Next + Me.Center +End + + +Public Sub btnOK_Click() + Dim i, j As Integer + + For i = 0 To 8 + If aRecentDirs[i] = DirChooser1.SelectedPath Then + For j = i To 8 + aRecentDirs[j] = aRecentDirs[j + 1] + Next + Break + Endif + Next + For i = 9 To 1 Step -1 + aRecentDirs[i] = aRecentDirs[i - 1] + Next + aRecentDirs[0] = DirChooser1.SelectedPath + For i = 0 To 9 + Settings["Recent/" & i] = aRecentDirs[i] + Next + Message.Info(aRecentDirs[0] & " wird geöffnet.") + Me.Close +End + +Public Sub btnCancel_Click() + Me.Close +End + +Public Sub lblRecent_Enter() + iNr = Last.Tag + If atxLabel[iNr].Background = -1 Then + atxLabel[iNr].Background = Color.LightBackground + Endif +End + +Public Sub lblRecent_Leave() + If atxLabel[iNr].Background = Color.LightBackground Then + atxLabel[iNr].Background = -1 + Endif +End + +Public Sub lblRecent_MouseDown() + atxLabel[iLast].Background = -1 + atxLabel[iLast].Foreground = -1 + atxLabel[iNr].Background = Color.SelectedBackground + atxLabel[iNr].Foreground = Color.SelectedForeground + iLast = iNr + DirChooser1.SelectedPath = aRecentDirs[iNr] +End + + diff --git a/app/examples/Image/Lighttable/FStart.form b/app/examples/Image/Lighttable/FStart.form new file mode 100644 index 00000000..b1309cd7 --- /dev/null +++ b/app/examples/Image/Lighttable/FStart.form @@ -0,0 +1,35 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,101,66) + Text = ("Lighttable - Choose picture folder") + { btnOK Button + MoveScaled(84,60,15,4) + Text = ("&OK") + Default = True + } + { btnCancel Button + MoveScaled(67,60,15,4) + Text = ("&Cancel") + Cancel = True + } + { DirChooser1 DirChooser + MoveScaled(2,6,51,51) + } + { Separator1 Separator + MoveScaled(2,58,97,1) + } + { Label1 Label + MoveScaled(3,2,27,3) + Font = Font["Bold,+1"] + Text = ("New selection") + } + { Separator2 Separator + MoveScaled(54,0,2,58) + } + { Label2 Label + MoveScaled(58,2,23,3) + Font = Font["Bold,+1"] + Text = ("Last selections") + } +} diff --git a/app/examples/Image/Lighttable/Help_ca.html b/app/examples/Image/Lighttable/Help_ca.html new file mode 100644 index 00000000..8bf512d5 --- /dev/null +++ b/app/examples/Image/Lighttable/Help_ca.html @@ -0,0 +1,60 @@ + + + + + + + + + + + +AjudaCàrrega de les imatges
    Les imatges es carregen en segon pla.
    Mentre es van carregant, ja podeu treballar amb les imatges que es mostren.
    Excepció: algunes de les funcions, con ordenar cronològicament, no estan disponibles fins que s'han carregat totes les imatges.
    +La càrrega es pot cancel·lar via el menú del programa (Fi).
     
    +Ús
    Totes les funcions es poden cridar des dels menús de context:
    Clic amb el botó secundari al fons del lighttable: Menú de programa
    Clic amb el botó secundari en un marc o a sobre d'una imatge: Menú de la imatge

    +Dreceres de teclat
    Hi ha dreceres per a totes les tasques, tal com es mostra als menús de context:
    +Ctrl+A Ordena les imatges alfabèticament
    +Ctrl+C Ordena les imatges cronològicament
    +Ctrl+S Projecció amb diapositives, començant per la imatge marcada
    +Ctrl+N Reanomena totes les imatges
    +Ctrl+T Correcció de l'hora
    + +F1 Ajuda
    + +Ctrl+End Surt del programa
    Arrossega un marc amb el ratolí: podeu moure el marc a qualsevol posició dins del lighttable
    Enter o fer clic sobre una imatge: Amplia la imatge
    +Alt+Enter o fer clic sobre una imatge ampliada: Vista a pantalla completa
    +Dreta Mou a la imatge següent
    + + +Esquerra Mou a la imatge anterior
    I Informacions de la imatge
    + +N Reanomena la imatge
    +Del Suprimeix la imatge
    + +ESC ho cancel·la i ho tanca tot
    +
    Visualitza i compara imatges
    +Quan estigui oberta la vista ampliada o la pantalla completa, mou-te amb les tecles per les fotografies (els fitxers grans triguen un moment a carregar-se).
    + +O salta a una altra imatge: Feu clic en una altra imatge de «sota». També podeu desplaçar-vos per la «taula».
    +
    +Ordena les imatges
    Si teniu imatges de més d'una càmera, és útil primer ordenar-les cronològicament (Menú de programa). Aquesta funció llegeix la Exif-metadata de les fotografies.
    Per ordenar-les manualment, només heu de moure els marcs al voltant de la taula. Llavors el podeu reanomenar manualment com per exemple «005 la meva millor imatge».

    +Reanomena totes les imatges (Ctrl+N)
    +Una bona alternativa a reanomenar-les manualment. Si he mogut totes les fotografies als llocs desitjats, els fitxers poden ser numerats i reanomenats en aquest ordre exactament. Podeu triar entre afegir o esborrar els noms de fitxer antics.
    +
    +Correcció de l'hora (Ctrl+T)
    +Quan etiqueteu geogràficament les fotografies o quan compareu fotos de dues càmeres, observeu que una càmera té una hora incorrecte? Cap problema. Amb aquesta funció podeu corregir la Exif-metadata de la data i la hora de totes les fotografies a dins la carpeta.

    +Nota: Manipulació de imatges i miniatures
    +Quan s'editen les fotografies amb un programa d'edició d'imatges (p.e. GIMP), les imatges en miniatura de les fotos no es modifiquen. O sigui que el Lighttable seguirà mostrant les miniatures de les imatges abans dels canvis. +Solució:
    +a) aneu a previsualitza al Gwenview, Dolphin, Konqueror o qualsevol programa similar, així les miniatures queden actualitzades,
    +b) elimina totes les miniatures (de la carpeta /home/usurai/.thumbnails/normal), així les miniatures es crearan posteriorment.
    +
    +
    + diff --git a/app/examples/Image/Lighttable/Help_de.html b/app/examples/Image/Lighttable/Help_de.html new file mode 100644 index 00000000..5c7ef22d --- /dev/null +++ b/app/examples/Image/Lighttable/Help_de.html @@ -0,0 +1,74 @@ + + + + + + + + + + + + + HilfeLaden der Bilder
    Das Laden der Bilder läuft im Hintergrund.
    +Währenddessen kann man schon mit den bereits angezeigten Bildern arbeiten.
    Allerdings sind einige Funktionen wie chronologisches Sortieren erst verfügbar, wenn alle Bilder geladen sind.
    +Das Laden der Bilder lässt sich im Programm-Menü abbrechen (Ende).
     
    Bedienung
    Alle Funktionen lassen sich über Kontextmenüs aufrufen:
    Rechtsklick auf den Hintergrund des Leuchttischs: Programm-Menü
    +Rechtsklick auf einen Rahmen oder ein Bild: Bild-Menü

    +Kurzbefehle
    Für alle Funktionen gibt es Kurzbefehle, wie in den Kontextmenüs angegeben:
    +Strg+A Bilder alphabetisch sortieren
    + +Strg+C Bilder chronologisch sortieren
    +Strg+S Diashow ab dem markierten Bild
    + +Strg+N Alle Bilder umbenennen
    +Strg+T Zeitkorrektur
    + +F1: Hilfe
    + +Strg+Ende Programm beenden
    Ziehen eines Rahmens mit der Maus: Bild lässt sich beliebig verschieben
    +Enter oder Mausklick auf ein Bild: vergrößerte Ansicht
    +Alt+Enter oder auf das Großbild klicken: Vollbildansicht
    Rechts gehe zum nächsten Bild
    +Links    gehe zum vorherigen Bild
    I Bildinformationen
    +N Bild umbenennen
    +Entf: Bild löschen
    + +ESC schließt alle Ansichten und bricht alle Vorgänge ab

    +Bilder ansehen und vergleichen
    +Bei geöffneter Großbild- oder Vollbildansicht einfach mit den Tasten die Bilder durchgehen (bei großen Bilddateien dauert das Laden etwas).
    +Oder zu einem anderen Bild springen: "unten" ein anderes Bild anklicken. Man kann den "Tisch" auch scrollen.

    +Bilder sortieren
    Hat +man Bilder von mehreren Kameras im Verzeichnis, ist es nützlich, die +Bilder zunächst einmal chronologisch zu sortieren (Programm-Menü). Diese Funktion wertet die Exif-Metadaten der Fotos aus.
    Manuell lassen sich die Bilder zum Sortieren beliebig +auf dem Tisch herumschieben. Dann kann man sie einzeln umbenennen, zB +"005 mein liebstes Foto".

    +Alle Bilder umbenennen (Strg+N)
    +Eine gute Alternative zum manuellen Umbenennen. Hat man alle Fotos in +die gewünschte Reihenfolge verschoben, lassen sich die Dateien in genau +dieser Reihenfolge mit Nummern versehen und umbenennen. Die alten +Dateinamen werden hierbei nach Wunsch entweder angehängt oder +überschrieben.
    +
    +Zeitkorrektur (Strg+T)
    +Beim Geokodieren von Fotos oder beim Vergleich von Fotos zweier Kameras +stellt sich heraus, dass die Zeit bei einer Kamera falsch eingestellt +war? Kein Problem. Mit dieser Funktion lassen sich die Exif-Metadaten +zu Datum und Zeit von allen Bildern im Verzeichnis korrigieren.
    +
    +Anmerkung: Bildbearbeitung und Vorschaubilder
    +Wenn man Fotos mit einem Bildbearbeitungsprogramm (z.B. GIMP) +bearbeitet, werden die zugehörigen Vorschaubilder nicht aktualisiert. +Leuchttisch zeigt daher weiterhin die alten Miniaturansichten an. +Abhilfe:
    +a) in Gwenview, Dolphin, Konqueror o.ä. die Vorschauansicht wählen und die Thumbnails aktualisieren lassen,
    +b) die Thumbnails (im Verzeichnis /home/user/.thumbnails/normal) löschen, so dass sie danach neu erstellt werden.
    +
    +
    + \ No newline at end of file diff --git a/app/examples/Image/Lighttable/Help_en.html b/app/examples/Image/Lighttable/Help_en.html new file mode 100644 index 00000000..4148cf8b --- /dev/null +++ b/app/examples/Image/Lighttable/Help_en.html @@ -0,0 +1,71 @@ + + + + + + + + + + + +HelpLoading the pictures
    The pictures are loaded in the background.
    While loading goes on, +you can already work with the pictures that are displayed.
    Exception: some of the functions like sorting chronologically are not available before all pictures are loaded.
    +The loading can be aborted via the program menu (End).
     
    +Usage
    All functions can be called by context menus:
    Right-click on the background of the lighttable: Program menu
    Right-click on a frame or on a picture: Picture menu

    +Shortcuts
    For all tasks there are shortcuts as shown in the context menus:
    +Ctrl+A Sort pictures alphabetically
    +Ctrl+C Sort pictures chronologically
    +Ctrl+S Sildeshow, beginning with the marked picture
    +Ctrl+N Rename all pictures
    +Ctrl+T Time correction
    + +F1 Help
    + +Ctrl+End Quit program
    Drag a frame with the mouse: you can move the frame to any position on the lighttable
    Enter or click on a picture: Enlarge picture
    +Alt+Enter or click on an enlarged picture: Fullscreen view
    +Right Move to next picture
    + + +Left   Move to previous picture
    I Picture informations
    + +N Rename picture
    +Del Delete picture
    + +ESC will close and cancel everything
    +
    View and compare pictures
    +When view or fullscreen view is open, just move with the keys through the photos (big files take a moment to load).
    + +Or jump to another picture: click "down" on another picture. You can also scroll the "table".
    +
    +Sort pictures
    If +you have pictures of more than one camera, it is useful to first sort +them chronologically (Program menu). This function reads the Exif-metadata of the photographs.
    To sort manually, just  move the frames around on the table. Then you can rename them manually like "005 my best picture".

    +Rename all pictures (Ctrl+N)
    +A good alternative to renaming manually. If you have moved all +photographs to the desired places, the files can be numbered and renamed +exactly in this order. As you like, the old filenames are either +attatched or overwritten.
    +
    +Time correction (Ctrl+T)
    +When geotagging your photographs or when comparing photos of two +cameras, you notice that a camera had a wrong time? +No problem. With this function you can correct the Exif-metadata of +date and time of all the photographs in the folder.

    +Note: Image manipulation and thumbnails
    +When editing photographs with an image manipulation program (i.e. +GIMP), the thumbnail pictures of the photos are not changed. So, +Lighttable will still show the old miniature pictures before the +changes. Solution:
    +a) go to preview in Gwenview, Dolphin, Konqueror or any similar program, so the thumbnails are updated,
    +b) delete all the thumbnails (in the folder /home/user/.thumbnails/normal), so they will be newly created afterwards.
    +
    +
    + \ No newline at end of file diff --git a/app/examples/Image/Lighttable/Help_ru.html b/app/examples/Image/Lighttable/Help_ru.html new file mode 100644 index 00000000..d119cea7 --- /dev/null +++ b/app/examples/Image/Lighttable/Help_ru.html @@ -0,0 +1,29 @@ + + + + +Справка + + + + +Загрузка изображений
    Изображения загружаются в фоновом режиме.
    Пока идёт загрузка, +вы уже можете работать с изображениями, которые отображаются.
    Исключение: некоторые функции, такие как сортировка в хронологическом порядке, недоступны до загрузки всех изображений.
    +Загрузка может быть прервана через меню программы (Конец).

    Использование
    Все функции могут быть вызваны через контекстные меню:
    Щелчок правой кнопкой мыши на фоне программы: Меню программы
    Щелчок правой кнопкой мыши на кадре или на изображении: Меню изображения

    Горячие клавиши
    Для всех задач есть горячие клавиши, как показано в контекстных меню:
    Ctrl+A Сортировка изображений по алфавиту
    Ctrl+C Сортировка изображений хронологически
    Ctrl+S Слайд-шоу, начиная с отмеченного изображения
    Ctrl+N Переименовать все изображения
    Ctrl+T Коррекция времени
    F1 Справка
    Ctrl+End Выйти из программы
    Перетащить кадр мышью: вы можете переместить кадр в любую позицию светового планшета
    Enter или щелчок на изображении: увеличить изображение
    Alt+Enter или щелчок на увеличенном изображении: Полный экран
    Вправо Перейти к следующему изображению
    Влево Перейти к предыдущему изображению
    I Информация об изображении
    N Переименовать изображение
    Del Удалить изображение
    ESC Закрыть и отменить всё

    Просмотр и сравнение изображения
    +Когда открыт просмотр или полноэкранный режим, просто перемещайтесь с помощью клавиш через фотографии (для загрузки больших файлов требуется время).
    + +Или перейдите к другому изображению: нажмите «вниз» на другом изображении. Вы также можете прокрутить «стол».

    Сортировка изображений
    Если у вас есть изображения с более чем с одной камеры, полезно сначала отсортировать их в хронологическом порядке (меню программы). Эта функция читает Exif-метаданные фотографий.
    Чтобы отсортировать вручную, просто переместите кадры на столе. Затем вы можете переименовать их вручную как «005 моя лучшая фотография».

    Переименовать все изображения (Ctrl+N)
    +Хорошая альтернатива переименованию вручную. Если вы переместили все фотографии в нужные места, файлы могут быть пронумерованы и переименованы именно в этом порядке. Как вам нравится, старые имена файлов либо привязаны, либо перезаписаны.

    Коррекция времени (Ctrl+T)
    +При геотегировании ваших фотографий или при сравнении фотографий с двух камер вы замечаете, что у камеры было неправильное время? Нет проблем. С помощью этой функции вы можете исправить Exif-метаданные даты и времени всех фотографий в папке.

    Примечание: манипуляции с изображениями и миниатюры
    +При редактировании фотографий с помощью программы для работы с изображениями (например, GIMP) уменьшенные изображения фотографий не изменяются. Итак, программа покажет старые изображения миниатюр до изменений. Решение:
    +a) перейдите к предварительному просмотру в Gwenview, Dolphin, Konqueror или любой другой подобной программе, чтобы миниатюры обновлялись,
    +b) удалите все миниатюры (в папке /home/user/.thumbnails/normal), чтобы впоследствии они были созданы заново.


    + + diff --git a/app/examples/Image/Lighttable/LTicon.png b/app/examples/Image/Lighttable/LTicon.png new file mode 100644 index 0000000000000000000000000000000000000000..3faf640ba74b45e8899eee605064ef163a5ee6f8 GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvtpJ}8R|bav_V)Jw|NjRHI3NGN zfB$|4AP2~+X8;oa8-N(d1cLf^h88A3dZ(w0V~EE2xX{p0 zAU7%|B0ec5Au$e!`X+YAC&k4l#56S5#U;chB*k|2w)IcyO-zadvfDaaTG|`q6Jr`0 z8WIwtdna`EPwI(JiUo>v_Ox|$wZ_HA#3jb|P3W37bIQ~ile&64fJOmDrq7-_b>^fv z5Ibhll>Uj6`+zEeMopPEamv&QO|5k?anV4PO)a%uJ#Fy`QLzcpZJo^xP1P}p(LiU^ zHdM8DHpeDJ#l%Oqv^CZ>Rs(GWip0f7H@7v!#zzC)21Id*(GCs{KoTepmdLvBSsq9X)yQ@bUfo5AWW4aObYQTX*i+vSs`Fja$})zd6kT z3=Y4NAirRSu9wT08TY=P@aprrRi9tY`V6E#eV)y<_VefU>pp#1x8cj@&tEoe{`zI> z$}eA6fBN?A)9U4)zU($#)Mhy_1_4m#}+JZB6G# aErzuT!ofv?v$%oIWbkzLb6Mw<&;$SrEfq2V literal 0 HcmV?d00001 diff --git a/app/examples/Image/Lighttable/hand1.png b/app/examples/Image/Lighttable/hand1.png new file mode 100644 index 0000000000000000000000000000000000000000..ab56c037b5d150241f983b5b94a24abef1f33c57 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#=`Bp4pvH+~MJm`Z~Df*FpnOj)%T$jkI}aSV~T z+&b|z?*Ri2XWuC+Z^W;8Di`#TGvsMYoKA9+#ImT1tK9ZC3o%6;b@%K@6;?g{dslm) zd(98FE9_TQS{M`@j=%POAlB#mOqYFM!A_MsPi?o)c&zsRRgZJsz7NiC(^tIvRDC*z Xe~-9$n@f1N8OSM~u6{1-oD!M<4sk;u literal 0 HcmV?d00001 diff --git a/app/examples/Image/Lighttable/help-contents.png b/app/examples/Image/Lighttable/help-contents.png new file mode 100644 index 0000000000000000000000000000000000000000..917ef83e7f1ca4ff020a5bd33b979e698cc1b0e7 GIT binary patch literal 742 zcmV0u zcgvZ(<>v1BHhIhr8!IM8Zk4&_|NsAlt>HR-&^dh2Nru$^{{MTZ-whfnDoAijh}Nmb z>{pN3PKwt+fz*t%<^KQwU6k7m8YwMHaz=*PO^Vr5j@#?<`;oWkNQc=E8YwYPbx@Aq zuFCMI#_v&&;1L`vI8=LFm*;4n>B!voUzz7#m*-uV=M^C^NM(#?pzepX@|(f*X`%0F zq3&m(?HVLBQEilQr}d1u_kXbVbg1-lr}c5C^d2ZUQ*4uZuKS0!`+l+ed$0O?uKOV@ zJ4eBfp@I=fwKAD>;A&p{4+X27$Pn(OL9<&*Gh)d zUAoL~Ve&)?raATTJ{KZFM? z5E>Q^1QC(p;ZeL`f#{gn*x0!Egv8h+KCnP?N@{9qT6#uiRw_SOAUh{FH#aXox1g{{ z04z{kQd(MCR$f|KQ7H%(sH(21sjaK8scC2s0t+-YH8;1kwlxERFi=3Gy`!@W3c5uZ Y0CxpDmCMY#o&W#<07*qoM6N<$g1#V7)&Kwi literal 0 HcmV?d00001 diff --git a/app/examples/Image/Lighttable/lighttable.png b/app/examples/Image/Lighttable/lighttable.png new file mode 100644 index 0000000000000000000000000000000000000000..4497010b76ecf7b2e5e8fe76bdbf3efe37aaa9b1 GIT binary patch literal 6536 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 literal 0 HcmV?d00001 diff --git a/app/examples/Image/Lighttable/zoom-in.png b/app/examples/Image/Lighttable/zoom-in.png new file mode 100644 index 0000000000000000000000000000000000000000..660d752a49824dd934984b4579b91b727b68d0f9 GIT binary patch literal 710 zcmV;%0y+JOP)C@hm6V8zg@}uZhl_`XjEjehh=+`ehm4Dei-)ng z!Lqx-h>M4cjEZq{Zyurl1!o`Vekr zi;annk&SS2ZdX}VSzA|CS5sMAS5;S2R#;S4SX9l{-Q?%#&)DG8-Q}de+?l!Bnz`Df zzunK;<+RD)oxR<)&E{N$xLbs{u*&3`y4{$$+`Q4~Ux&H>|NmNqx2wkDk+j;KyV|zR z=3RxjUWT|?g11+Jwx7M;p1azPvesFHw@`hwhOE?yuGCI@vr2ff&)D9l!QFkl(yQIx7$*FwNrkzm$=*7;^^1i;>y_Oq`=>%!r-UF;n?2e+TY{h z=IY1S=)KbBzS8E%*y!Ko>f7Mtm6(>?;Nt1)>$$wPy}!JAdw7S6gtxf1c6f83qMvpi zRo4Ij04{V=PE!C6gU0hn?E6CX4(fly^25e|`}>3H8}=BIg`#6(;~X91?Gh4&ML^by zCMBn&dU>U#Ca1HAfgL8Ek(rg9lbe@cAR#FQ7Lk@IEGjCLm6IOhX;xHfAqy}lYU}6%01S317%7GyO8@`>07*qoM6N<$f`^TGzyJUM literal 0 HcmV?d00001 diff --git a/app/examples/Image/PhotoTouch/.directory b/app/examples/Image/PhotoTouch/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Image/PhotoTouch/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Image/PhotoTouch/.hidden/screenshots/phototouch.jpg b/app/examples/Image/PhotoTouch/.hidden/screenshots/phototouch.jpg new file mode 100644 index 0000000000000000000000000000000000000000..477d6bafb546b62f41548761b9e297c9e4412666 GIT binary patch literal 150309 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%0AWaO?PkFjX*LXB1j2(n$c-E@-_^!N1m;n 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 O0000\n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Simple Photo Editor" +msgstr "Editeur de photographie simplifié" + +#: .project:2 +msgid "This is a simple photo editor I made for my father. It is too complex for him, but it is still a good Gambas example!" +msgstr "" + +#: FBrightness.form:40 FMain.class:200 +msgid "Balance" +msgstr "Balance" + +#: FMain.class:107 +msgid "No image in directory" +msgstr "Aucune image dans ce répertoire" + +#: FMain.class:109 +msgid "Unable to load image" +msgstr "Impossible de charger l'image" + +#: FMain.class:200 +msgid "Automatic correction" +msgstr "Correction automatique" + +#: FMain.class:200 +msgid "Blur" +msgstr "Flou" + +#: FMain.class:200 +msgid "Browse photos" +msgstr "Parcourir les photos" + +#: FMain.class:200 +msgid "Crop image" +msgstr "Découper l'image" + +#: FMain.class:200 +msgid "Fit to window" +msgstr "Zoom à la taille de l'écran" + +#: FMain.class:200 +msgid "Flip horizontally" +msgstr "Retourner horizontalement" + +#: FMain.class:200 +msgid "Flip vertically" +msgstr "Retourner verticalement" + +#: FMain.class:200 +msgid "Invert" +msgstr "Inverser" + +#: FMain.class:200 +msgid "Normalize" +msgstr "Normaliser" + +#: FMain.class:200 +msgid "Oil painting effect" +msgstr "Effet de peinture à l'huile" + +#: FMain.class:200 +msgid "Quit" +msgstr "Quitter" + +#: FMain.class:200 +msgid "Remove speckles" +msgstr "Enlever les tâches" + +#: FMain.class:200 FResize.form:42 +msgid "Resize" +msgstr "Redimensionner" + +#: FMain.class:200 +msgid "Rotate left" +msgstr "Rotation vers la gauche" + +#: FMain.class:200 +msgid "Rotate right" +msgstr "Rotation vers la droite" + +#: FMain.class:200 +msgid "Save" +msgstr "Enregistrer" + +#: FMain.class:200 +msgid "Save all" +msgstr "Tout enregistrer" + +#: FMain.class:200 +msgid "Select photo directory" +msgstr "Choisir le répertoire des photographies" + +#: FMain.class:200 +msgid "Sharpen" +msgstr "Netteté" + +#: FMain.class:200 +msgid "Show photo" +msgstr "Afficher la photographie" + +#: FMain.class:200 +msgid "Undo all changes" +msgstr "Annuler tous les changements" + +#: FMain.class:200 +msgid "Zoom 100%" +msgstr "Zoom 100%" + +#: FMain.class:200 +msgid "Zoom in" +msgstr "Zoom avant" + +#: FMain.class:200 +msgid "Zoom out" +msgstr "Zoom arrière" + +#: FMain.class:222 +msgid "*" +msgstr "*" + +#: FMain.class:222 +msgid "/" +msgstr "/" + +#: FMain.class:222 +msgid "B" +msgstr "F" + +#: FMain.class:222 +msgid "D" +msgstr "T" + +#: FMain.class:222 +msgid "E" +msgstr "E" + +#: FMain.class:222 +msgid "H" +msgstr "H" + +#: FMain.class:222 +msgid "I" +msgstr "I" + +#: FMain.class:222 +msgid "M" +msgstr "M" + +#: FMain.class:222 +msgid "N" +msgstr "N" + +#: FMain.class:222 +msgid "O" +msgstr "P" + +#: FMain.class:222 +msgid "R" +msgstr "R" + +#: FMain.class:222 +msgid "S" +msgstr "S" + +#: FMain.class:222 +msgid "V" +msgstr "V" + +#: FScissors.form:24 +msgid "Cut" +msgstr "Découper" diff --git a/app/examples/Image/PhotoTouch/.lang/nl.po b/app/examples/Image/PhotoTouch/.lang/nl.po new file mode 100644 index 00000000..0676709e --- /dev/null +++ b/app/examples/Image/PhotoTouch/.lang/nl.po @@ -0,0 +1,183 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PhotoTouch 3.5.90\n" +"POT-Creation-Date: 2014-09-27 00:14 UTC\n" +"PO-Revision-Date: 2014-09-25 21:54 UTC\n" +"Last-Translator: Willy Raets \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Simple Photo Editor" +msgstr "Eenvoudige Foto Editor" + +#: .project:2 +msgid "This is a simple photo editor I made for my father. It is too complex for him, but it is still a good Gambas example!" +msgstr "Dit is een eenvoudige foto editor die ik voor mijn vader maakte. Het is te complex voor hem, maar nog steeds een goed Gambas voorbeeld!" + +#: FBrightness.form:40 FMain.class:200 +msgid "Balance" +msgstr "Balans" + +#: FMain.class:107 +msgid "No image in directory" +msgstr "Geen afbeeldingsmap" + +#: FMain.class:109 +msgid "Unable to load image" +msgstr "Onmogelijk om afbeelding te laden" + +#: FMain.class:200 +msgid "Automatic correction" +msgstr "Automatische correctie" + +#: FMain.class:200 +msgid "Blur" +msgstr "Vervagen" + +#: FMain.class:200 +msgid "Browse photos" +msgstr "Browse foto's" + +#: FMain.class:200 +msgid "Crop image" +msgstr "Afbeelding snijden" + +#: FMain.class:200 +msgid "Fit to window" +msgstr "Aanpassen aan venster" + +#: FMain.class:200 +msgid "Flip horizontally" +msgstr "Horizontaal spiegelen" + +#: FMain.class:200 +msgid "Flip vertically" +msgstr "Verticaal spiegelen" + +#: FMain.class:200 +msgid "Invert" +msgstr "Omkeren" + +#: FMain.class:200 +msgid "Normalize" +msgstr "Normaliseren" + +#: FMain.class:200 +msgid "Oil painting effect" +msgstr "Olieverf effect" + +#: FMain.class:200 +msgid "Quit" +msgstr "Afsluiten" + +#: FMain.class:200 +msgid "Remove speckles" +msgstr "Verwijder spikkels" + +#: FMain.class:200 FResize.form:42 +msgid "Resize" +msgstr "Formaat wijzigen" + +#: FMain.class:200 +msgid "Rotate left" +msgstr "Links roteren" + +#: FMain.class:200 +msgid "Rotate right" +msgstr "Rechts roteren" + +#: FMain.class:200 +msgid "Save" +msgstr "Opslaan" + +#: FMain.class:200 +msgid "Save all" +msgstr "Alles opslaan" + +#: FMain.class:200 +msgid "Select photo directory" +msgstr "Selecteer foto map" + +#: FMain.class:200 +msgid "Sharpen" +msgstr "Verscherpen" + +#: FMain.class:200 +msgid "Show photo" +msgstr "Foto weergeven" + +#: FMain.class:200 +msgid "Undo all changes" +msgstr "Alle wijzigingen ongedaan maken" + +#: FMain.class:200 +msgid "Zoom 100%" +msgstr "Zoom 100%" + +#: FMain.class:200 +msgid "Zoom in" +msgstr "Zoom in" + +#: FMain.class:200 +msgid "Zoom out" +msgstr "Zoom uit" + +#: FMain.class:222 +msgid "*" +msgstr "-" + +#: FMain.class:222 +msgid "/" +msgstr "-" + +#: FMain.class:222 +msgid "B" +msgstr "-" + +#: FMain.class:222 +msgid "D" +msgstr "-" + +#: FMain.class:222 +msgid "E" +msgstr "-" + +#: FMain.class:222 +msgid "H" +msgstr "-" + +#: FMain.class:222 +msgid "I" +msgstr "-" + +#: FMain.class:222 +msgid "M" +msgstr "-" + +#: FMain.class:222 +msgid "N" +msgstr "-" + +#: FMain.class:222 +msgid "O" +msgstr "-" + +#: FMain.class:222 +msgid "R" +msgstr "-" + +#: FMain.class:222 +msgid "S" +msgstr "-" + +#: FMain.class:222 +msgid "V" +msgstr "-" + +#: FScissors.form:24 +msgid "Cut" +msgstr "Knippen" diff --git a/app/examples/Image/PhotoTouch/.lang/ru.po b/app/examples/Image/PhotoTouch/.lang/ru.po new file mode 100644 index 00000000..453cec3a --- /dev/null +++ b/app/examples/Image/PhotoTouch/.lang/ru.po @@ -0,0 +1,212 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Image/PhotoTouch/.project:25 +msgid "Simple Photo Editor" +msgstr "Простой редактор фотографий" + +#: app/examples/Image/PhotoTouch/.project:26 +msgid "" +"Photo editor example.\n" +"\n" +"This is a simple photo editor I made for my father. It has an overlay GUI with transparent buttons and state transitions. It is too complex for him, but it is still a good Gambas example!" +msgstr "" +"Пример редактора фотографий.\n" +"\n" +"Это простой редактор фотографий, который я сделал для своего отца. Он имеет оверлейный графический интерфейс с прозрачными кнопками и переходами между состояниями. Это слишком сложно для него, но это всё ещё хороший пример Gambas!" + +#: app/examples/Image/PhotoTouch/.src/FBrightness.form:29 app/examples/Image/PhotoTouch/.src/FMain.class:195 +msgid "Balance" +msgstr "Баланс" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:107 app/examples/Image/PhotoTouch/.src/FMain.class:1050 +msgid "No image in directory" +msgstr "Нет изображения в директории" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:109 +msgid "Unable to load image" +msgstr "Невозможно загрузить изображение" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:176 +msgid "Browse photos" +msgstr "Просмотр фотографий" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:177 +msgid "Show photo" +msgstr "Показать фотографию" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:178 app/examples/Image/PhotoTouch/.src/FMain.class:450 +msgid "Select photo directory" +msgstr "Выбрать директорию фотографий" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:179 +msgid "Zoom in" +msgstr "Увеличить" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:180 +msgid "Zoom out" +msgstr "Уменьшить" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:181 +msgid "Zoom 100%" +msgstr "Масштаб 100%" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:182 +msgid "Fit to window" +msgstr "Уместить в окне" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:183 +msgid "Flip horizontally" +msgstr "Отразить по горизонтали" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:184 +msgid "Flip vertically" +msgstr "Отразить по вертикали" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:185 +msgid "Rotate left" +msgstr "Поворот влево" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:186 +msgid "Rotate right" +msgstr "Поворот вправо" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:187 +msgid "Automatic correction" +msgstr "Автоматическая коррекция" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:188 +msgid "Invert" +msgstr "Инвертировать" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:189 +msgid "Blur" +msgstr "Размытие" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:190 +msgid "Sharpen" +msgstr "Повысить резкость" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:191 +msgid "Normalize" +msgstr "Нормализовать" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:192 +msgid "Remove speckles" +msgstr "Удаление пятен" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:193 +msgid "Oil painting effect" +msgstr "Эффект масляной живописи" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:194 +msgid "Crop image" +msgstr "Обрезать изображение" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:196 app/examples/Image/PhotoTouch/.src/FResize.form:31 +msgid "Resize" +msgstr "Изменение размера" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:197 +msgid "Save" +msgstr "Сохранить" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:198 +msgid "Save all" +msgstr "Сохранить все" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:199 +msgid "Undo all changes" +msgstr "Откатить все изменения" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:200 +msgid "Quit" +msgstr "Выход" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:208 +msgid "H" +msgstr "H" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:209 +msgid "V" +msgstr "V" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:212 +msgid "M" +msgstr "M" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:213 +msgid "I" +msgstr "I" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:214 +msgid "B" +msgstr "B" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:215 +msgid "N" +msgstr "N" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:216 +msgid "E" +msgstr "E" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:217 +msgid "D" +msgstr "D" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:218 +msgid "O" +msgstr "O" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:219 +msgid "/" +msgstr "/" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:220 +msgid "R" +msgstr "R" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:221 +msgid "*" +msgstr "*" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:222 +msgid "S" +msgstr "S" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:922 +msgid "image" +msgstr "изображение" + +#: app/examples/Image/PhotoTouch/.src/FMain.class:923 +msgid "image2" +msgstr "изображение2" + +#: app/examples/Image/PhotoTouch/.src/FScissors.form:16 +msgid "Cut" +msgstr "Вырезать" + diff --git a/app/examples/Image/PhotoTouch/.project b/app/examples/Image/PhotoTouch/.project new file mode 100644 index 00000000..aa188e8f --- /dev/null +++ b/app/examples/Image/PhotoTouch/.project @@ -0,0 +1,24 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.6.90 +Title=Simple Photo Editor +Startup=FMain +Icon=icon.png +Version=1.0.0 +Component=gb.image +Component=gb.gui +Component=gb.form +Component=gb.desktop.x11 +Component=gb.desktop +Component=gb.form.dialog +Component=gb.settings +Component=gb.image.effect +Description="Photo editor example.\n\nThis is a simple photo editor I made for my father. It has an overlay GUI with transparent buttons and state transitions. It is too complex for him, but it is still a good Gambas example!" +Authors="Benoît Minisini" +TabSize=2 +Translate=1 +Language=fr +Vendor=Example +Packager=1 +Tags=Example,2DGraphics,ImageProcessing,Graphics +Screenshot=.hidden/screenshots/phototouch.jpg +CreateMenu=1 diff --git a/app/examples/Image/PhotoTouch/.src/CAnimation.class b/app/examples/Image/PhotoTouch/.src/CAnimation.class new file mode 100644 index 00000000..6884983b --- /dev/null +++ b/app/examples/Image/PhotoTouch/.src/CAnimation.class @@ -0,0 +1,97 @@ +' Gambas class file + +Static Private All As New CAnimation[] + +Property Read Object As Object + +Private $hObject As Object +Private $sProperty As String +Private $fTarget As Float +Private $fTime As Float +Private $hTimer As Timer + +Static Public Sub Start(hObject As Control, sProperty As String, fTarget As Float, iTime As Integer) + + Dim hAnim As CAnimation + Dim aStop As New CAnimation[] + + For Each hAnim In All + If hAnim.Object = hObject Then aStop.Add(hAnim) + Next + + For Each hAnim In aStop + hAnim.Stop + Next + + hAnim = New CAnimation(hObject, sProperty, fTarget, iTime) + All.Add(hAnim) + +End + +Static Public Sub Exit() + + While All.Count + All[0].Stop + Wend + +End + + + +Public Sub _new(hObject As Control, sProperty As String, fTarget As Float, iTime As Integer) + + 'Debug hObject.Tag;; sProperty;; fTarget + + $hObject = hObject + $sProperty = sProperty + $fTarget = fTarget + $fTime = Timer + iTime / 1000 + + $hTimer = New Timer As "Timer" + $hTimer.Delay = 50 + $hTimer.Start + +End + +Public Sub Timer_Timer() + + Dim fValue As Float + Dim iSign As Integer + + fValue = Object.GetProperty($hObject, $sProperty) + + If Abs(fValue - $fTarget) < 1E-6 Then + Object.SetProperty($hObject, $sProperty, $fTarget) + {Stop} + Else + iSign = Sgn($fTarget - fValue) + fValue += ($fTarget - fValue) / (1000 * ($fTime - Timer) / $hTimer.Delay) + If Sgn($fTarget - fValue) <> iSign Then + Object.SetProperty($hObject, $sProperty, $fTarget) + {Stop} + Else + Object.SetProperty($hObject, $sProperty, fValue) + Endif + Endif + +Catch + + {Stop} + +End + +Public Sub Stop() + + $hTimer.Stop + $hTimer = Null + $hObject = Null + + All.Remove(All.Find(Me)) + +End + +Private Function Object_Read() As Object + + Return $hObject + +End diff --git a/app/examples/Image/PhotoTouch/.src/CButton.class b/app/examples/Image/PhotoTouch/.src/CButton.class new file mode 100644 index 00000000..d4313720 --- /dev/null +++ b/app/examples/Image/PhotoTouch/.src/CButton.class @@ -0,0 +1,189 @@ +' Gambas class file + +Export + +Inherits DrawingArea + +Event Click + +Property Image As Image +Property Opacity As Float +Property Highlight As Boolean +Property Shortcut As String + +Public Const MIN_OPACITY As Float = 0.3 +Public Const MAX_OPACITY As Float = 0.8 + +Private $hObs As Observer +Private $hImage As Image +Private $hDraw As Image +'Private $bInside As Boolean +'Private $hTimer As Timer +Private $fOpacity As Float = MIN_OPACITY +Private $bHighlight As Boolean +Private $hTimer As Timer +Private $sShortcut As String + +Public Sub _new() + + $hObs = New Observer(Me) As "DrawingArea" + '$hTimer = New Timer As "Timer" + '$hTimer.Delay = 50 + Me.Mouse = Mouse.Pointing + $hTimer = New Timer As "Timer" + +End + +Public Sub DrawingArea_Enter() + + 'Debug + + If Not Me.Enabled Then Return + CAnimation.Start(Me, "Opacity", MAX_OPACITY, 250) + +End + +Public Sub DrawingArea_Leave() + + 'Debug + + If Not Me.Enabled Then Return + CAnimation.Start(Me, "Opacity", MIN_OPACITY, 250) + +End + +Public Sub DrawingArea_MouseUp() + + If Not Me.Enabled Then Return + Raise Click + Stop Event + +End + +'Public Sub DrawingArea_DblClick() +' +' Raise Click +' Stop Event +' +'End + + +' Public Sub Timer_Timer() +' +' If $bInside Then +' $fOpacity = Min(MAX_OPACITY, $fOpacity + 0.1) +' If $fOpacity >= MAX_OPACITY Then +' $hTimer.Stop +' Endif +' Else +' $fOpacity = Max(MIN_OPACITY, $fOpacity - 0.1) +' If $fOpacity <= MIN_OPACITY Then +' $hTimer.Stop +' Endif +' Endif +' +' SetOpacity +' +' End + + +Public Sub DrawingArea_Draw() + + If $hDraw Then Draw.Image($hDraw, 2, 2) + + If $bHighlight Then + Paint.Begin(Me) + Paint.Brush = Paint.Color(Color.SetAlpha(Color.White, 192)) + Paint.Rectangle(0, 0, Me.W, Me.H) + Paint.Fill + Paint.End + Endif + +End + +Private Function Image_Read() As Image + + Return $hImage + +End + +Private Sub Image_Write(Value As Image) + + $hImage = Value.Stretch(Me.W - 4, Me.H - 4) + SetOpacity + +End + +Private Sub SetOpacity() + + Dim X, Y As Integer + + $hDraw = $hImage.Copy() + If $sShortcut Then + + Paint.Begin($hDraw) + + Paint.Font = Font["Bold,+3"] + + Paint.Brush = Paint.Color(Color.SetAlpha(Color.White, 64)) + 'For X = -2 To 2 + ' For Y = -2 To 2 + ' Paint.DrawText($sShortcut, $hDraw.W - 16 + X, $hDraw.H - 16 + Y, 16, 16, Align.Center) + ' Next + 'Next + Paint.Arc($hDraw.W - 12, $hDraw.H - 12, 12) + Paint.Fill + + Paint.Brush = Paint.Color(Color.SetAlpha(Color.Black, 64)) + Paint.DrawText($sShortcut, $hDraw.W - 24, $hDraw.H - 24, 24, 24, Align.Center) + + Paint.End + + Endif + + $hDraw.Opacity($fOpacity) + Me.Refresh + +End + +Private Function Opacity_Read() As Float + + Return $fOpacity + +End + +Private Sub Opacity_Write(Value As Float) + + 'Debug Value + $fOpacity = Max(0, Min(1, Value)) + SetOpacity + +End + +Private Function Highlight_Read() As Boolean + + Return $bHighlight + +End + +Private Sub Highlight_Write(Value As Boolean) + + $bHighlight = Value + Me.Refresh + +End + + +Private Function Shortcut_Read() As String + + Return $sShortcut + +End + +Private Sub Shortcut_Write(Value As String) + + $sShortcut = Value + SetOpacity + Me.Refresh + +End diff --git a/app/examples/Image/PhotoTouch/.src/FBrightness.class b/app/examples/Image/PhotoTouch/.src/FBrightness.class new file mode 100644 index 00000000..8a9bc6df --- /dev/null +++ b/app/examples/Image/PhotoTouch/.src/FBrightness.class @@ -0,0 +1,146 @@ +' Gambas class file + +Private $bNoChange As Boolean + +Private $MX As Integer +Private $MY As Integer +Private $hRect As Rect +Private $bBegin As Boolean + +Private btnUndo As CButton +Private btnApply As CButton +Private btnBrightness As CButton +Private btnContrast As CButton +Private btnGamma As CButton + +Public Sub _new() + + btnUndo = New CButton(Me) As "btnUndo" + btnUndo.Move(Me.W - 96 - Desktop.Scale * 4, Desktop.Scale * 3, 48, 48) + btnUndo.Image = Image.Load("undo.png") + + btnApply = New CButton(Me) As "btnApply" + btnApply.Move(btnUndo.X + btnUndo.W + Desktop.Scale, btnUndo.Y, 48, 48) + btnApply.Image = Image.Load("ok.png") + + btnBrightness = New CButton(Me) + btnBrightness.Enabled = False + btnBrightness.Move(Desktop.Scale * 3, Desktop.Scale * 10, 48, 48) + btnBrightness.Image = Image.Load("brightness.png") + btnBrightness.Shortcut = "B" + sldBrightness.Move(btnBrightness.X + 64, btnBrightness.Y + 4) + sldBrightness.Tag = btnBrightness + + btnContrast = New CButton(Me) + btnContrast.Enabled = False + btnContrast.Move(btnBrightness.X, btnBrightness.Y + 64, 48, 48) + btnContrast.Image = Image.Load("contrast.png") + btnContrast.Shortcut = "C" + sldContrast.Move(btnContrast.X + 64, btnContrast.Y + 4) + sldContrast.Tag = btnContrast + + btnGamma = New CButton(Me) + btnGamma.Enabled = False + btnGamma.Move(btnBrightness.X, btnContrast.Y + 64, 48, 48) + btnGamma.Image = Image.Load("gamma.png") + btnGamma.Shortcut = "G" + sldGamma.Move(btnGamma.X + 64, btnGamma.Y + 4) + sldGamma.Tag = btnGamma + +End + + +Public Sub Form_Open() + + Me.Center + +End + +Public Sub btnUndo_Click() + + $bNoChange = True + sldBrightness.Value = 50 + sldContrast.Value = 50 + sldGamma.Value = 50 + $bNoChange = False + Balance_Change + +End + +Public Sub btnApply_Click() + + If $bBegin Then FMain.Apply + +End + +Public Sub Balance_Change() + + If $bNoChange Then Return + If Not $bBegin Then + FMain.Begin + $bBegin = True + Endif + FMain.Balance(sldBrightness.Value, sldContrast.Value, sldGamma.Value) + +End + +Public Sub panBrightness_MouseDown() + + $MX = Mouse.ScreenX + $MY = Mouse.ScreenY + $hRect = Rect(Me.X, Me.Y, Me.W, Me.H) + +End + +Public Sub panBrightness_MouseMove() + + Dim X, Y As Integer + + X = Min(Max($hRect.X + Mouse.ScreenX - $MX, 0), FMain.W - $hRect.W) + Y = Min(Max($hRect.Y + Mouse.ScreenY - $MY, 0), FMain.H - $hRect.H) + Me.Move(X, Y) + +End + +Public Sub Form_KeyPress() + + If Key.Code = Key.Backspace Then + btnUndo_Click + Stop Event + Return + Endif + + If Key.Code = Key.Return Or If Key.Code = Key.Enter Then + btnApply_Click + Stop Event + Return + Endif + + Select Case UCase(Key.Text) + Case "B" + sldBrightness.SetFocus + Case "C" + sldContrast.SetFocus + Case "G" + sldGamma.SetFocus + Case Else + FMain.Form_KeyPress + Return + End Select + + Stop Event + +End + +Public Sub Balance_GotFocus() + + CAnimation.Start(Last.Tag, "Opacity", CButton.MAX_OPACITY, 250) + +End + +Public Sub Balance_LostFocus() + + CAnimation.Start(Last.Tag, "Opacity", CButton.MIN_OPACITY, 250) + +End + diff --git a/app/examples/Image/PhotoTouch/.src/FBrightness.form b/app/examples/Image/PhotoTouch/.src/FBrightness.form new file mode 100644 index 00000000..37326354 --- /dev/null +++ b/app/examples/Image/PhotoTouch/.src/FBrightness.form @@ -0,0 +1,37 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,74,40) + Background = &HFFFFFF& + Border = False + Utility = True + Stacking = Window.Above + SkipTaskbar = True + Opacity = 50 + { panBrightness Panel + MoveScaled(1,1,72,38) + Background = &H000000& + { sldBrightness Slider Balance + Name = "sldBrightness" + MoveScaled(13,13,56,3) + Value = 50 + } + { sldContrast Slider Balance + Name = "sldContrast" + MoveScaled(13,22,56,3) + Value = 50 + } + { Label1 Label + MoveScaled(2,2,52,6) + Font = Font["Bold,+5"] + Foreground = Color.TextBackground + AutoResize = True + Text = ("Balance") + } + { sldGamma Slider Balance + Name = "sldGamma" + MoveScaled(13,31,56,3) + Value = 50 + } + } +} diff --git a/app/examples/Image/PhotoTouch/.src/FMain.class b/app/examples/Image/PhotoTouch/.src/FMain.class new file mode 100644 index 00000000..f0c33a07 --- /dev/null +++ b/app/examples/Image/PhotoTouch/.src/FMain.class @@ -0,0 +1,1117 @@ +' Gambas class file + +Private CACHE_ROOT As String = "~/.cache/PhotoTouch" +Private CACHE_DIR As String + +Private $aPath As String[] +Private $sPath As String +Private $sDir As String +Private $iIndex As Integer +Private $hImage As Image +Private $hZoom As Image +Private $hTemp As Image +Private $fZoom As Float = 1 +'Private $sInfo As String +Private $sMode As String +Private $bModify As Boolean +Private $cButton As New Collection +Private $bFilm As Boolean = True +Private $bReloadFilm As Boolean +Private $cShortcut As New Collection +Private $hSave As Image +Private $hUndoStack As Image[] + +Private $MX As Integer +Private $MY As Integer + +Private btnPrev As CButton +Private btnNext As CButton +Private dwgPath As DrawingArea + +Private Sub UpdateSaveIcon() + + $cButton["save"].Visible = Exist(CACHE_DIR &/ File.Name($sPath)) Or $bModify + +End + +Private Sub UpdateFilmMode() + + Dim sTag As String + Dim hCtrl As Control + + If $bFilm Then + 'ivwImage.IconSize = 128 + svwImage.Hide + panToolbar.Hide + panBrowser.Show + panToolbarBrowser.Show + ivwImage.SetFocus + Else + svwImage.Show + panToolbar.Show + panBrowser.Hide + panToolbarBrowser.Hide + $cButton["film"].Opacity = CButton.MAX_OPACITY + svwImage.SetFocus + Endif + + btnPrev.Visible = Not $bFilm + btnNext.Visible = Not $bFilm + + If $bFilm Then + $hImage = Null + FillImageBrowser + Else + Try $iIndex = CInt(ivwImage.Key) + LoadImage + Endif + +End + +Private Sub GetImage(Optional bReset As Boolean) As Boolean + + Dim hImage As Image + + If Not bReset Then + Try $sPath = CACHE_DIR &/ $aPath[$iIndex] + If Exist($sPath) Then Try hImage = Image.Load($sPath) + Endif + + If Not hImage Then + Try $sPath = $sDir &/ $aPath[$iIndex] + If $sPath Then Try hImage = Image.Load($sPath) + Endif + + $hImage = hImage + +End + + +Private Sub LoadImage(Optional bReset As Boolean) As Boolean + + Inc Application.Busy + + Me.End + SaveImage + + GetImage(bReset) + + If $hImage Then + svwImage.ResizeContents($hImage.W, $hImage.H) + svwImage.Show + lblError.Hide + Else + svwImage.Hide + lblError.Show + If $aPath.Count = 0 Then + lblError.Text = ("No image in directory") + Else + lblError.Text = ("Unable to load image") + Endif + Endif + + $bModify = False + $hUndoStack = New Image[] + SetZoom(0) + UpdateSaveIcon + dwgInfo.Raise + dwgInfo.Refresh + Me.Refresh + + Dec Application.Busy + +End + +Private Sub CreateButtons(aButton As String[], cTooltip As Collection, hParent As Container) + + Dim sKey As String + Dim sImg As String + Dim hPanel As Panel + Dim hButton As CButton + Dim iPos As Integer + + For Each sKey In aButton + + If sKey = "<->" Then + hPanel = New Panel(hParent) + hPanel.Expand = True + hPanel.Resize(8, 48) + Else If sKey = "-" Then + hPanel = New Panel(hParent) + hPanel.Resize(8, 48) + Else + + sImg = sKey + iPos = InStr(sImg, "#") + If iPos Then sImg = Left(sImg, iPos - 1) + + hButton = New CButton(hParent) As "Button" + hButton.Resize(48, 48) + hButton.Image = Image.Load(sImg & ".png") + hButton.Tag = sKey + hButton.Tooltip = cTooltip[sImg] + hButton.Shortcut = $cShortcut[sImg] + $cButton[hButton.Tag] = hButton + Endif + Next + +End + + +Public Sub _new() + + Dim hCtrl As Control + Dim sImg As String + Dim hButton As CButton + Dim cTooltip As Collection + Dim aButton As String[] + + Application.MainWindow = Me + + Try Mkdir File.Dir(File.Dir(CACHE_ROOT)) + Try Mkdir File.Dir(CACHE_ROOT) + Try Mkdir CACHE_ROOT + + cTooltip = [ + "film": ("Browse photos"), + "photo": ("Show photo"), + "usb": ("Select photo directory"), + "zoom-in": ("Zoom in"), + "zoom-out": ("Zoom out"), + "zoom-original": ("Zoom 100%"), + "zoom-fit": ("Fit to window"), + "hflip": ("Flip horizontally"), + "vflip": ("Flip vertically"), + "rotate-left": ("Rotate left"), + "rotate-right": ("Rotate right"), + "magic": ("Automatic correction"), + "invert": ("Invert"), + "blur": ("Blur"), + "sharpen": ("Sharpen"), + "normalize": ("Normalize"), + "despeckle": ("Remove speckles"), + "oil": ("Oil painting effect"), + "scissors": ("Crop image"), + "balance": ("Balance"), + "resize": ("Resize"), + "save": ("Save"), + "save-all": ("Save all"), + "undo": ("Undo all changes"), + "quit": ("Quit")] + + $cShortcut = [ + "usb": "!", + "zoom-in": "+", + "zoom-out": "-", + "zoom-original": "1", + "zoom-fit": "0", + "hflip": ("H"), + "vflip": ("V"), + "rotate-left": "(", + "rotate-right": ")", + "magic": ("M"), + "invert": ("I"), + "blur": ("B"), + "sharpen": ("N"), + "normalize": ("E"), + "despeckle": ("D"), + "oil": ("O"), + "scissors": ("/"), + "resize": ("R"), + "balance": ("*"), + "save": ("S")] + + aButton = ["film", "-", "zoom-in", "zoom-out", "zoom-original", "zoom-fit", "-", "hflip", "vflip", "rotate-left", "rotate-right", "-", + "magic", "invert", "blur", "sharpen", "normalize", "despeckle", "oil", "-", "scissors", "resize", "balance", "<->", "save", "undo", "quit"] + CreateButtons(aButton, cTooltip, panToolbar) + + aButton = ["photo", "usb", "save-all", "-"] + CreateButtons(aButton, cTooltip, panToolbarBrowser) + + dwgPath = New DrawingArea(panToolbarBrowser) As "dwgPath" + dwgPath.Expand = True + dwgPath.Font = Font["Bold,+5"] + + aButton = ["hflip#2", "vflip#2", "rotate-left#2", "rotate-right#2", "-", "save#2", "undo#2", "quit#2"] + CreateButtons(aButton, cTooltip, panToolbarBrowser) + + btnPrev = New CButton(Me) As "Button" + btnPrev.Resize(64, 64) + btnPrev.Ignore = True + btnPrev.Tag = "previous" + btnPrev.Image = Image.Load("previous.png") + + btnNext = New CButton(Me) As "Button" + btnNext.Resize(64, 64) + btnNext.Ignore = True + btnNext.Tag = "next" + btnNext.Image = Image.Load("next.png") + + panToolbar.Raise + panToolbarBrowser.Raise + +End + + +Public Sub svwImage_Draw() + + Dim X As Integer + Dim Y As Integer + Dim XR As Integer + Dim YR As Integer + Dim SX, SX2 As Integer + Dim SY, SY2 As Integer + Dim DX As Integer + Dim DY As Integer + Dim C As Integer + Dim SW, SH As Integer + Dim hZoom As Image + Dim iZoom As Integer + + If Not $hImage Then Return + + If $fZoom > 1 Then + + iZoom = $fZoom + + Draw.LineStyle = Line.None + Draw.FillStyle = Fill.Solid + + DX = Max(0, (Me.W - $hImage.W * iZoom) / 2) + DY = Max(0, (Me.H - $hImage.H * iZoom) / 2) + + SX = (Draw.Clip.X - DX) \ iZoom + SY = (Draw.Clip.Y - DY) \ iZoom + SX2 = (Draw.Clip.X - DX + Draw.Clip.W - 1) \ iZoom + SY2 = (Draw.Clip.Y - DY + Draw.Clip.H - 1) \ iZoom + + SX = Max(0, SX) + SX2 = Min($hImage.Width - 1, SX2) + SW = SX2 - SX + 1 + + SY = Max(0, SY) + SY2 = Min($hImage.Height - 1, SY2) + SH = SY2 - SY + 1 + + 'If $fZoom > 5 Then + ' Draw.LineStyle = Line.Solid + ' Draw.Foreground = &H989898 + 'Else + ' Draw.LineStyle = Line.None + 'Endif + + Draw.Zoom($hImage, iZoom, SX * iZoom + DX, SY * iZoom + DY, SX + svwImage.ScrollX \ iZoom, SY + svwImage.ScrollY \ iZoom, SW, SH) + + Else If $fZoom = 1 Then + + If $hImage.W < Me.W Then + X = (Me.W - $hImage.W) / 2 + Else + X = - svwImage.ScrollX + Endif + + If $hImage.H < Me.H Then + Y = (Me.H - $hImage.H) / 2 + Else + Y = - svwImage.ScrollY + Endif + + Draw.Image($hImage, X, Y) + + Else + + If $hZoom.W < Me.W Then + X = (Me.W - $hZoom.W) / 2 + Else + X = - svwImage.ScrollX + Endif + + If $hZoom.H < Me.H Then + Y = (Me.H - $hZoom.H) / 2 + Else + Y = - svwImage.ScrollY + Endif + + Draw.Image($hZoom, X, Y) + + Endif + +End + +Public Sub Form_Resize() + + panToolbar.Move(0, 0, Me.W, 48 + Desktop.Scale * 2) + panToolbarBrowser.Move(0, 0, Me.W, 48 + Desktop.Scale * 2) + panMargin.H = panToolbar.H + dwgInfo.Move(8, Me.H - dwgInfo.H, Me.W, dwgInfo.H) + btnPrev.Move(8, (Me.H - btnPrev.H) / 2) + btnNext.Move(Me.W - 8 - btnNext.W, (Me.H - btnNext.H) / 2) + +End + +Public Sub Button_Click() + + Action(Last.Tag) + +End + +Private Sub UpdateZoom() + + Dim X, Y As Float + + If Not $hImage Then Return + + If $fZoom < 1 Then + $hZoom = $hImage.Stretch($hImage.W * $fZoom, $hImage.H * $fZoom) + Else + $hZoom = Null + Endif + + X = (svwImage.ScrollX + svwImage.ClientW / 2) / svwImage.ScrollW + Y = (svwImage.ScrollY + svwImage.ClientH / 2) / svwImage.ScrollH + + svwImage.ResizeContents($hImage.W * $fZoom, $hImage.H * $fZoom) + svwImage.Scroll(X * svwImage.ScrollW - svwImage.ClientW / 2, Y * svwImage.ScrollH - svwImage.ClientH / 2) + + dwgInfo.Refresh + Me.Refresh + +End + +Private Sub SetZoom(fZoom As Float) + + If Not $hImage Then Return + + If fZoom = 0 Then + $fZoom = 0 + fZoom = Min(Me.W / $hImage.W, Me.H / $hImage.H) + fZoom = Min(1, fZoom) + Endif + + fZoom = Max(1 / 32, Min(32, fZoom)) + If fZoom = $fZoom Then Return + If fZoom <> 1 Then + If ($hImage.W * fZoom) < 96 Or If ($hImage.H * fZoom) < 96 Then Return + Endif + + $fZoom = fZoom + UpdateZoom + +End + +Public Sub SetMode(sMode As String) + + If $sMode Then + $cButton[$sMode].Highlight = False + Cancel + Select Case $sMode + Case "balance" + FBrightness.Close + Case "scissors" + FScissors.Close + Case "resize" + FResize.Close + End Select + Endif + + If sMode = $sMode Then + $sMode = "" + Return + Endif + + If sMode Then + + $cButton[sMode].Highlight = True + + Select Case sMode + Case "balance" + FBrightness.Show + Case "scissors" + FScissors.Show + Case "resize" + FResize.Show + End Select + + Endif + + $sMode = sMode + +End + + +Private Sub Action(sAction As String) + + Dim iPos As Integer + + Select Case sAction + + Case "usb" + SetMode("") + Dialog.Title = ("Select photo directory") + Dialog.Path = $sDir + If Dialog.SelectDirectory() Then Return + + End Select + + Inc Application.Busy + + iPos = RInStr(sAction, "#") + If iPos Then sAction = Left(sAction, iPos - 1) + + Select Case sAction + + Case "film" + Me.End + SaveImage + $bFilm = True + UpdateFilmMode + + Case "photo" + If $aPath.Count Then + $bFilm = False + UpdateFilmMode + Endif + + Case "previous" + Dec $iIndex + If $iIndex < 0 Then $iIndex = $aPath.Max + LoadImage + + Case "next" + Inc $iIndex + If $iIndex > $aPath.Max Then $iIndex = 0 + LoadImage + + Case "zoom-in" + SetZoom(2 ^ Int(Log2($fZoom)) * 2) + + Case "zoom-out" + SetZoom(2 ^ Int(Log2($fZoom) - 0.001)) + + Case "zoom-original" + SetZoom(1) + + Case "zoom-fit" + SetZoom(0) + + Case "quit" + SetMode("") + SaveImage + Me.Close + + Case "balance", "scissors", "resize" + 'If Not $hImage Then Return + SetMode(sAction) + + Case "usb" + SetDir(Dialog.Path) + + Case "undo" + + If Not $hImage Then + + ivwImage.MoveFirst + While ivwImage.Available + If ivwImage.Item.Selected Then + $iIndex = CInt(ivwImage.Item.Key) + GetImage + RemoveImage + Endif + ivwImage.MoveNext + Wend + + FillImageBrowser(True) + $hImage = Null + + Else + + SetMode("") + If $hUndoStack.Count Then + $hImage = $hUndoStack[$hUndoStack.Max] + $hUndoStack.Remove($hUndoStack.Max) + $bModify = $hUndoStack.Count > 0 + If Not $bModify Then RemoveImage + UpdateZoom + Else + LoadImage(True) + RemoveImage + Endif + + Endif + + Case "save" + + If Not $hImage Then + + $iIndex = CInt(ivwImage.Key) + $sPath = CACHE_DIR &/ File.Name($aPath[$iIndex]) + If Exist($sPath) Then + SaveImageDefinitely + FillImageBrowser(True) + Endif + $hImage = Null + + Else + + SetMode("") + SaveImageDefinitely + + Endif + + Case "save-all" + + ivwImage.MoveFirst + While ivwImage.Available + 'If ivwImage.Item.Selected Then + $iIndex = CInt(ivwImage.Item.Key) + GetImage + SaveImageDefinitely + 'Endif + ivwImage.MoveNext + Wend + + FillImageBrowser(True) + $hImage = Null + + Case Else + + If Not $hImage Then + + ivwImage.MoveFirst + While ivwImage.Available + If ivwImage.Item.Selected Then + $iIndex = CInt(ivwImage.Item.Key) + GetImage + Select Case sAction + Case "hflip" + $hImage.Mirror(True, False) + Case "vflip" + $hImage.Mirror(False, True) + Case "rotate-left" + $hImage = $hImage.Rotate(Pi(0.5)) + Case "rotate-right" + $hImage = $hImage.Rotate(Pi(-0.5)) + End Select + $bModify = True + SaveImage + Endif + ivwImage.MoveNext + Wend + + FillImageBrowser(True) + $hImage = Null + + Else + + SetMode("") + + Select Case sAction + Case "hflip" + PushUndo() + $hImage.Mirror(True, False) + Case "vflip" + PushUndo() + $hImage.Mirror(False, True) + Case "rotate-left" + PushUndo() + $hImage = $hImage.Rotate(Pi(0.5)) + Case "rotate-right" + PushUndo() + $hImage = $hImage.Rotate(Pi(-0.5)) + Case "oil" + PushUndo() + $hImage = ImageMagick("-paint " & CStr(Max(3, Min($hImage.W, $hImage.H) \ 256))) + Case "magic" + PushUndo() + $hImage = ImageMagick("-auto-gamma -auto-level") + Case "invert" + PushUndo() + $hImage.Invert() + 'Case "equalize" + ' $hImage = ImageMagick("-equalize") + Case "despeckle" + PushUndo() + $hImage = ImageMagick("-despeckle") + Case "normalize" + PushUndo() + $hImage = ImageMagick("-normalize") + Case "blur" + PushUndo() + $hImage = ImageMagick("-blur 8") '$hImage.OilPaint() + Case "sharpen" + PushUndo() + $hImage = ImageMagick("-sharpen 8") '$hImage.OilPaint() + + End Select + + $bModify = True + UpdateSaveIcon + UpdateZoom + + Endif + + End Select + + Dec Application.Busy + +End + +Public Sub svwImage_MouseDown() + + $MX = Mouse.X + svwImage.ScrollX + $MY = Mouse.Y + svwImage.ScrollY + 'Debug $MX;; $MY + +End + +Public Sub svwImage_MouseMove() + + If Mouse.Left Then + 'Debug Mouse.X - $MX;; Mouse.Y - $MY + svwImage.Scroll($MX - Mouse.X, $MY - Mouse.Y) + Endif + +End + +Private Sub PaintOutlineText(sText As String, X As Float, Y As Float, W As Float, H As Float) + + ' Dim I, J As Integer + ' + ' Paint.Brush = Paint.Color(Color.SetAlpha(Color.White, 128)) + ' For I = -1 To 1 + ' For J = -1 To 1 + ' Paint.DrawRichText(sText, X + I + 2, Y + J + 2, 4096, H - 4, Align.Left) + ' Next + ' Next + + Paint.Brush = Paint.Color(Color.Black) + Paint.DrawRichTextShadow(sText, X + 2, Y + 2, 4096, H - 4, Align.Left, 4) + Paint.Brush = Paint.Color(Color.White) + Paint.DrawRichText(sText, X + 2, Y + 2, 4096, H - 4, Align.Left) + +End + + +Public Sub dwgInfo_Draw() + + Dim sText As String + Dim sSpace As String + + If Not $hImage Then Return + + With Stat($sPath) + sSpace = String$(6, " ") + sText = "" & Html(File.Name($sPath)) & "" & sSpace & Html(Format(.LastModified, gb.LongDate)) + sText &= sSpace & $hImage.W & " x " & $hImage.H & " (" & Format($fZoom, "0%") & ")" + End With + + PaintOutlineText(sText, 0, 0, dwgInfo.W, dwgInfo.H) + +End + +Public Sub Form_KeyPress() + + Dim sShortcut As String + + Select Case Key.Code + + Case Key.Esc + If $sMode Then + SetMode("") + Else + Action("quit") + Endif + Stop Event + Return + + Case Key.BackSpace + Action("undo") + Stop Event + Return + + End Select + + If Key.Text Then + For Each sShortcut In $cShortcut + If String.UCase(Key.Text) = sShortcut Then + If $cButton[$cShortcut.Key].Parent.Visible Then + Action($cShortcut.Key) + Stop Event + Return + Endif + Endif + Next + Endif + +End + +Public Sub Begin() + + $hTemp = $hImage.Copy() + +End + +Public Sub End() + + $hTemp = Null + UpdateZoom + SetMode("") + 'SaveImage + Me.Refresh + +End + +Public Sub Apply() + + $hTemp = $hImage + {End} + +End + +Public Sub Cancel() + + If Not $hTemp Then Return + $hImage = $hTemp.Copy() + UpdateZoom + Me.Refresh + +End + +Public Sub GetCurrentImage() As Image + + Return $hImage + +End + +Public Sub Balance(iBrightness As Integer, iContrast As Integer, iGamma As Integer) + + $hImage = $hTemp.Copy() + $hImage.Balance((iBrightness - 50) / 50, (iContrast - 50) / 50, (iGamma - 50) / 50) + $bModify = True + UpdateZoom + Me.Refresh + +End + +Public Sub Cut() + + Dim X, Y, W, H As Integer + Dim hRect As Rect + + W = FScissors.W / $fZoom + H = FScissors.H / $fZoom + X = (svwImage.ScrollX + FScissors.X) / $fZoom + Y = (svwImage.ScrollY + FScissors.Y) / $fZoom + + If $hImage.W * $fZoom <= Me.W Then X -= (Me.W / $fZoom - $hImage.W) / 2 + If $hImage.H * $fZoom <= Me.H Then Y -= (Me.H / $fZoom - $hImage.H) / 2 + + hRect = Rect(X, Y, W, H) + hRect = hRect.Intersection(Rect(0, 0, $hImage.W, $hImage.H)) + + If Not hRect Then Return + + $hImage = $hImage.Copy(hRect.X, hRect.Y, hRect.W, hRect.H) + $bModify = True + $hTemp = $hImage + Me.End + SetZoom(0) + +End + +Public Sub Stretch(W As Integer, H As Integer) + + Inc Application.Busy + $hImage = $hImage.Stretch(W, H) + $bModify = True + $hTemp = $hImage + Me.End + SetZoom(0) + Dec Application.Busy + +End + + +Public Sub Form_Activate() + + If $sDir = "" Then SetDir(Settings["Directory", User.Home]) + +End + + +Private Sub SetDir(sDir As String) + + Inc Application.Busy + + 'Shell "cd " & Shell(CACHE_DIR) & "; rm -f *" Wait + + CACHE_DIR = CACHE_ROOT &/ Replace(sDir, "/", ":") + + $sDir = sDir + Settings["Directory"] = $sDir + $aPath = New String[] + Try $aPath = Dir(sDir, "*.{jpg,JPG,jpeg,JPEG,png,PNG,bmp,BMP,gig,GIF}").Sort() + $iIndex = 0 + $bReloadFilm = True + UpdateFilmMode + + Dec Application.Busy + +End + +Private Sub SaveImage() As String + + If Not $hImage Then Return + If Not $bModify Then Return + + Try Mkdir CACHE_DIR + Try Kill CACHE_DIR &/ ".thumb." & File.Name($sPath) + $bReloadFilm = True + $hImage.Save(CACHE_DIR &/ File.Name($sPath), 80) + $bModify = False + UpdateSaveIcon + Return CACHE_DIR &/ File.Name($sPath) + +Catch + + Message.Error(Error.Text) + +End + +Private Sub RemoveImage() + + Try Kill CACHE_DIR &/ File.Name($sPath) + Try Kill CACHE_DIR &/ ".thumb." & File.Name($sPath) + $bReloadFilm = True + If Dir(CACHE_DIR).Count = 0 Then Rmdir CACHE_DIR + UpdateSaveIcon + +Catch + + Message.Error(Error.Text) + +End + +Private Sub SaveImageDefinitely() + + Dim sPath As String + + SaveImage + If Exist(CACHE_DIR &/ File.Name($sPath)) Then + sPath = $sDir &/ File.Name($sPath) + Try Kill sPath & "~" + Move sPath To sPath & "~" + Copy CACHE_DIR &/ File.Name($sPath) To sPath + RemoveImage + Endif + +Catch + + Message.Error(Error.Text) + +End + + +Private Sub ImageMagick(sCommand As String) As Image + + Dim sPath, sPath2 As String + Dim hImage As Image + + Inc Application.Busy + + sPath = File.SetExt(Temp$("image"), File.Ext($sPath)) + sPath2 = File.SetExt(Temp$("image2"), File.Ext($sPath)) + + $hImage.Save(sPath, 100) + + Shell "convert " & Shell(sPath) & " " & sCommand & " " & Shell(sPath2) Wait + hImage = Image.Load(sPath2) + Kill sPath + Kill sPath2 + + Dec Application.Busy + UpdateSaveIcon + + Return hImage + +End + +Private Sub GetThumb(sPath As String) As Image + + Dim sName As String + Dim sThumb As String + Dim hImage As Image + Dim bModified As Boolean + + sName = File.Name(sPath) + + If Exist(CACHE_DIR &/ sName) Then + sPath = CACHE_DIR &/ sName + bModified = True + Endif + + sThumb = CACHE_DIR &/ ".thumb." & sName + If Exist(sThumb) Then + 'If Stat(sThumb).LastModified >= Stat(sPath).LastModified Then + hImage = Image.Load(sThumb) + 'Endif + Endif + + If Not hImage Then + hImage = Image.Load(sPath) + If hImage.W > 256 Or If hImage.H > 256 Then + If hImage.W > hImage.H Then + hImage = hImage.Stretch(256, 256 * hImage.H / hImage.W) + Else + hImage = hImage.Stretch(256 * hImage.W / hImage.H, 256) + Endif + Endif + Paint.Begin(hImage) + Paint.Rectangle(0, 0, hImage.W, hImage.H) + Paint.LineWidth = 0.5 + Paint.Brush = Paint.Color(Color.Black) + Paint.Stroke + If bModified Then + If Not $hSave Then $hSave = Image.Load("save.png").Stretch(24, 24) + Paint.DrawImage($hSave, Paint.W - 24 - 8, 8) + Endif + Paint.End + Try Kill sThumb + hImage.Save(sThumb) + Endif + + Return hImage + +End + +Private Sub GetSize(iSize As Long) As String + + Dim sSize As String + + If iSize < 1024 Then Return iSize & " b" + Return Format(iSize \ 1024, "#,##0") & " K" + +End + + +Private Sub FillImageBrowser(Optional bNoWait As Boolean) + + Dim I As Integer + Dim hImage As Image + Dim sText As String + Dim fLastTime As Float + Dim sKey As String + + If $bReloadFilm Then + + Inc Application.Busy + + fLastTime = Timer + + Try Mkdir CACHE_DIR + + sKey = ivwImage.Key + + ivwImage.Clear + ivwImage.GridSize = 280 \ Desktop.Scale + + For I = 0 To $aPath.Max + + Try hImage = GetThumb($sDir &/ $aPath[i]) + If Error Then + Error Error.Where; ": "; Error.Text + hImage = Picture["icon:/256/image"].Image + Endif + With Stat($sDir &/ $aPath[I]) + sText = "" & Html(File.Name($aPath[I])) & "
    " & Format(.LastModified, gb.LongDate) & "
    " & GetSize(.Size) + End With + ivwImage.Add(I, "", hImage.Picture).RichText = sText + If (Timer - fLastTime) > 1 Then + fLastTime = Timer + Wait + Endif + Next + + Try ivwImage.Key = sKey + + Dec Application.Busy + $bReloadFilm = False + + Endif + + If ivwImage.Count Then + ivwImage.Key = $iIndex + ivwImage[$iIndex].EnsureVisible + panBrowser.Show + '$cButton["photo"].Show + Else + '$cButton["photo"].Hide + panBrowser.Hide + lblError.Text = ("No image in directory") + lblError.Show + Endif + +End + +Public Sub ivwImage_KeyPress() + + If Key.Code = Key.Enter Or If Key.Code = Key.Return Then ivwImage_Activate + +End + + +Public Sub ivwImage_Activate() + + $bFilm = False + $iIndex = CInt(ivwImage.Key) + UpdateFilmMode + +End + +Public Sub Form_Close() + + CAnimation.Exit + +End + +Public Sub svwImage_KeyPress() + + Select Case Key.Code + + Case Key.Up + svwImage.Scroll(svwImage.ScrollX, svwImage.ScrollY - 64) + + Case Key.Down + svwImage.Scroll(svwImage.ScrollX, svwImage.ScrollY + 64) + + Case Key.Left + svwImage.Scroll(svwImage.ScrollX - 64, svwImage.ScrollY) + + Case Key.Right + svwImage.Scroll(svwImage.ScrollX + 64, svwImage.ScrollY) + + Case Key.PageUp + Action("previous") + + Case Key.PageDown + Action("next") + + Case Key.Enter, Key.Return + Action("film") + + End Select + +End + +Public Sub PushUndo() + + $hUndoStack.Add($hImage.Copy()) + +End + +Public Sub dwgPath_Draw() + + 'Debug Paint.Font.ToString() + PaintOutlineText($sDir, 0, 0, Paint.W, Paint.H) + +End diff --git a/app/examples/Image/PhotoTouch/.src/FMain.form b/app/examples/Image/PhotoTouch/.src/FMain.form new file mode 100644 index 00000000..cc67ddd8 --- /dev/null +++ b/app/examples/Image/PhotoTouch/.src/FMain.form @@ -0,0 +1,65 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,82,72) + Icon = Picture["icon.png"] + Border = False + Maximized = True + Arrangement = Arrange.Fill + { svwImage ScrollArea + MoveScaled(6,25,24,24) + Visible = False + Background = Color.Background + Mouse = Mouse.SizeAll + Border = False + ScrollBar = Scroll.None + } + { panToolbar HBox + MoveScaled(1,1,75,5) + Ignore = True + AutoResize = True + Spacing = True + Margin = True + } + { lblError Label + MoveScaled(15,52,46,9) + Visible = False + Font = Font["Bold,+5"] + Background = Color.Background + Foreground = Color.LightForeground + Alignment = Align.Center + } + { panBrowser Panel + MoveScaled(48,17,24,30) + Background = Color.Background + Arrangement = Arrange.Vertical + Margin = True + { panMargin Panel + MoveScaled(4,1,12,4) + } + { ivwImage IconView + MoveScaled(3,11,16,16) + Font = Font["+2"] + Background = Color.Background + Foreground = Color.LightForeground + Expand = True + Mode = Select.Multiple + IconLines = 3 + Border = False + } + } + { panToolbarBrowser HBox + MoveScaled(1,7,75,5) + Visible = False + Ignore = True + AutoResize = True + Spacing = True + Margin = True + } + { dwgInfo DrawingArea + MoveScaled(5,64,20,6) + Font = Font["+5"] + Foreground = Color.LightForeground + Ignore = True + } +} diff --git a/app/examples/Image/PhotoTouch/.src/FResize.class b/app/examples/Image/PhotoTouch/.src/FResize.class new file mode 100644 index 00000000..7ee42411 --- /dev/null +++ b/app/examples/Image/PhotoTouch/.src/FResize.class @@ -0,0 +1,57 @@ +' Gambas class file + +Private $aSize As Float[] = [1 / 4, 1 / 3, 1 / 2, 2 / 3, 3 / 4, 1] +Private btnApply As CButton + +Public Sub sldResize_Change() + + Dim W, H As Integer + + With FMain.GetCurrentImage() + W = .W * $aSize[sldResize.Value] + H = .H * $aSize[sldResize.Value] + End With + lblSize.Text = Format($aSize[sldResize.Value], "0%") & " - " & W & " x " & H + +End + +Public Sub _new() + + btnApply = New CButton(Me) As "btnApply" + btnApply.Move(Me.W - 48 - Desktop.Scale * 2, Desktop.Scale * 2, 48, 48) + btnApply.Image = Image.Load("ok.png") + +End + +Public Sub Form_Open() + + Me.Center + sldResize.SetFocus + sldResize_Change + +End + +Public Sub btnApply_Click() + + Dim W, H As Integer + + With FMain.GetCurrentImage() + W = .W * $aSize[sldResize.Value] + H = .H * $aSize[sldResize.Value] + End With + + FMain.Stretch(W, H) + +End + +Public Sub Form_KeyPress() + + If Key.Code = Key.Enter Or If Key.Code = Key.Return Then + btnApply_Click + Stop Event + Return + Endif + + FMain.Form_KeyPress + +End diff --git a/app/examples/Image/PhotoTouch/.src/FResize.form b/app/examples/Image/PhotoTouch/.src/FResize.form new file mode 100644 index 00000000..931fdfa3 --- /dev/null +++ b/app/examples/Image/PhotoTouch/.src/FResize.form @@ -0,0 +1,40 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,55,24) + Background = &HFFFFFF& + Border = False + Utility = True + Stacking = Window.Above + SkipTaskbar = True + Opacity = 50 + { panBrightness Panel + MoveScaled(1,1,53,22) + Background = &H000000& + { PictureBox1 PictureBox + MoveScaled(2,11,8,8) + Picture = Picture["resize.png"] + Stretch = True + Alignment = Align.Center + } + { sldResize Slider + MoveScaled(13,11,36,3) + MaxValue = 5 + PageStep = 1 + Value = 5 + } + { lblTitle Label + MoveScaled(2,2,52,6) + Font = Font["Bold,+5"] + Foreground = Color.TextBackground + AutoResize = True + Text = ("Resize") + } + { lblSize Label + MoveScaled(14,14,34,5) + Font = Font["Bold,+5"] + Foreground = Color.TextBackground + AutoResize = True + } + } +} diff --git a/app/examples/Image/PhotoTouch/.src/FScissors.class b/app/examples/Image/PhotoTouch/.src/FScissors.class new file mode 100644 index 00000000..a2a11522 --- /dev/null +++ b/app/examples/Image/PhotoTouch/.src/FScissors.class @@ -0,0 +1,260 @@ +' Gambas class file + +Private $aScissors As Panel[] + +Private Enum S_N, S_S, S_W, S_E, S_NW, S_NE, S_SW, S_SE +Private HANDLE_SIZE As Integer + +Private $aMouse As Integer[] +Private $aOpacity As Integer[] + +Private $MX As Integer +Private $MY As Integer +Private $hRect As Rect +Private $bResize As Boolean + +Private btnCut As CButton + +Public Sub Form_Resize() + + $aScissors[S_NW].Move(0, 0, HANDLE_SIZE, HANDLE_SIZE) + $aScissors[S_NE].Move(Me.W - HANDLE_SIZE, 0, HANDLE_SIZE, HANDLE_SIZE) + $aScissors[S_SW].Move(0, Me.H - HANDLE_SIZE, HANDLE_SIZE, HANDLE_SIZE) + $aScissors[S_SE].Move(Me.W - HANDLE_SIZE, Me.H - HANDLE_SIZE, HANDLE_SIZE, HANDLE_SIZE) + $aScissors[S_N].Move(HANDLE_SIZE, 0, Me.W - HANDLE_SIZE * 2, HANDLE_SIZE) + $aScissors[S_S].Move(HANDLE_SIZE, Me.H - HANDLE_SIZE, Me.W - HANDLE_SIZE * 2, HANDLE_SIZE) + $aScissors[S_W].Move(0, HANDLE_SIZE, HANDLE_SIZE, Me.H - HANDLE_SIZE * 2) + $aScissors[S_E].Move(Me.W - HANDLE_SIZE, HANDLE_SIZE, HANDLE_SIZE, Me.H - HANDLE_SIZE * 2) + + btnCut.Move(Me.W - btnCut.W - Desktop.Scale * 3, Desktop.Scale * 3) + + dwgNW.Move(HANDLE_SIZE, HANDLE_SIZE) + dwgNE.Move(Me.W - HANDLE_SIZE - dwgNE.W, dwgNW.Y) + dwgSE.Move(dwgNE.X, Me.H - HANDLE_SIZE - dwgSE.H) + dwgSW.Move(dwgNW.X, dwgSE.Y) + +End + + +Public Sub Form_Open() + + Dim I As Integer + + $aMouse = [Mouse.SizeN, Mouse.SizeS, Mouse.SizeW, Mouse.SizeE, Mouse.SizeNW, Mouse.SizeNE, Mouse.SizeSW, Mouse.SizeSE] + HANDLE_SIZE = Desktop.Scale + + $aScissors = New Panel[8] + + For I = 0 To 7 + $aScissors[I] = New Panel(Me) As "Panel" + With $aScissors[I] + .Mouse = $aMouse[I] + .Background = Color.White 'IIf(I >= S_NW, Color.RGB(192, 192, 192), Color.White) + .Tag = I + End With + Next + + btnCut = New CButton(Me) As "btnCut" + btnCut.Resize(48, 48) + btnCut.Image = Image.Load("scissors.png") + + Me.Move(FMain.ClientW \ 4, FMain.ClientH \ 4, FMain.ClientW \ 2, FMain.ClientH \ 2) + 'Form_Resize + +End + +Public Sub Panel_MouseDown() + + $MX = Mouse.ScreenX + $MY = Mouse.ScreenY + $hRect = Rect(Me.X, Me.Y, Me.W, Me.H) + +End + +Public Sub Panel_MouseMove() + + Dim X, Y As Integer + Dim iTag As Integer = Last.Tag + Dim MIN_HEIGHT As Integer = btnCut.W + Desktop.Scale * 6 + Dim MIN_WIDTH As Integer = btnCut.H + Desktop.Scale * 6 + + Select Case Last.Tag + + Case S_N + Y = $hRect.Y + Mouse.ScreenY - $MY + Y = Min($hRect.Bottom - MIN_HEIGHT, Max(0, Y)) + Me.Move(Me.X, Y, Me.W, $hRect.H + $hRect.Y - Y) + + Case S_S + Y = $hRect.H + Mouse.ScreenY - $MY + Y = Min(FMain.H - $hRect.Y, Max(MIN_HEIGHT, Y)) + Me.Move(Me.X, Me.Y, Me.W, Y) + + Case S_W + X = $hRect.X + Mouse.ScreenX - $MX + X = Min($hRect.Right - MIN_WIDTH, Max(0, X)) + Me.Move(X, Me.Y, $hRect.W + $hRect.X - X, Me.H) + + Case S_E + X = $hRect.W + Mouse.ScreenX - $MX + X = Min(FMain.W - $hRect.X, Max(MIN_WIDTH, X)) + Me.Move(Me.X, Me.Y, X, Me.H) + + Case S_NW + Y = $hRect.Y + Mouse.ScreenY - $MY + Y = Min($hRect.Bottom - MIN_HEIGHT, Max(0, Y)) + X = $hRect.X + Mouse.ScreenX - $MX + X = Min($hRect.Right - MIN_WIDTH, Max(0, X)) + Me.Move(X, Y, $hRect.W + $hRect.X - X, $hRect.H + $hRect.Y - Y) + + Case S_NE + Y = $hRect.Y + Mouse.ScreenY - $MY + Y = Min($hRect.Bottom - MIN_HEIGHT, Max(0, Y)) + X = $hRect.W + Mouse.ScreenX - $MX + X = Min(FMain.W - $hRect.X, Max(MIN_WIDTH, X)) + Me.Move(Me.X, Y, X, $hRect.H + $hRect.Y - Y) + + Case S_SW + Y = $hRect.H + Mouse.ScreenY - $MY + Y = Min(FMain.H - $hRect.Y, Max(MIN_HEIGHT, Y)) + X = $hRect.X + Mouse.ScreenX - $MX + X = Min($hRect.Right - MIN_WIDTH, Max(0, X)) + Me.Move(X, Me.Y, $hRect.W + $hRect.X - X, Y) + + Case S_SE + Y = $hRect.H + Mouse.ScreenY - $MY + Y = Min(FMain.H - $hRect.Y, Max(MIN_HEIGHT, Y)) + X = $hRect.W + Mouse.ScreenX - $MX + X = Min(FMain.W - $hRect.X, Max(MIN_WIDTH, X)) + Me.Move(Me.X, Me.Y, X, Y) + + End Select + + 'Form_Resize + +End + + +Public Sub Form_MouseDown() + + $MX = Mouse.ScreenX + $MY = Mouse.ScreenY + $hRect = Rect(Me.X, Me.Y, Me.W, Me.H) + +End + +Public Sub Form_MouseMove() + + Dim X, Y As Integer + + X = Min(Max($hRect.X + Mouse.ScreenX - $MX, 0), FMain.W - $hRect.W) + Y = Min(Max($hRect.Y + Mouse.ScreenY - $MY, 0), FMain.H - $hRect.H) + Me.Move(X, Y) + +End + +Public Sub btnCut_Click() + + FMain.Cut + +End + +Public Sub dwgCorner_Draw() + + Dim hCtrl As DrawingArea = Last + + Paint.Brush = Paint.Color(Color.SetAlpha(Color.White, 192)) + + Select Case Last.Tag + + Case "NW" + + If Not $bResize Then Paint.Brush = Paint.Color(Color.White) + + Paint.MoveTo(2, 2) + Paint.LineTo(hCtrl.W - 2, 2) + Paint.LineTo(2, hCtrl.H - 2) + + Case "NE" + + Paint.MoveTo(hCtrl.W - 2, 2) + Paint.LineTo(hCtrl.W - 2, hCtrl.H - 2) + Paint.LineTo(2, 2) + + Case "SW" + + Paint.MoveTo(2, hCtrl.H - 2) + Paint.LineTo(2, 2) + Paint.LineTo(hCtrl.W - 2, hCtrl.H - 2) + + Case "SE" + + If $bResize Then Paint.Brush = Paint.Color(Color.White) + + Paint.MoveTo(hCtrl.W - 2, hCtrl.H - 2) + Paint.LineTo(2, hCtrl.H - 2) + Paint.LineTo(hCtrl.W - 2, 2) + + End Select + + Paint.Fill + +End + +Public Sub Form_KeyPress() + + Dim MIN_HEIGHT As Integer = btnCut.W + Desktop.Scale * 6 + Dim MIN_WIDTH As Integer = btnCut.H + Desktop.Scale * 6 + Dim X, Y, W, H As Integer + + X = Me.X + Y = Me.Y + W = Me.W + H = Me.H + + Select Case Key.Code + Case Key.Up + If $bResize Then + H = Max(MIN_HEIGHT, H - 16) + Else + Y = Max(0, Y - 16) + Endif + Case Key.Down + If $bResize Then + H = Min(FMain.H - Me.Y, H + 16) + Else + Y = Min(FMain.H - Me.H, Y + 16) + Endif + Case Key.Left + If $bResize Then + W = Max(MIN_WIDTH, W - 16) + Else + X = Max(0, X - 16) + Endif + Case Key.Right + If $bResize Then + W = Min(FMain.W - Me.X, W + 16) + Else + X = Min(FMain.W - Me.W, X + 16) + Endif + Case Key.Space + $bResize = Not $bResize + dwgNW.Refresh + dwgSE.Refresh + Stop Event + Return + Case Key.Return, Key.Enter + btnCut_Click + Stop Event + Return + End Select + + If X <> Me.X Or If Y <> Me.Y Or If W <> Me.W Or If H <> Me.H Then + Me.Move(X, Y, W, H) + Stop Event + Return + Endif + + FMain.Form_KeyPress + +End diff --git a/app/examples/Image/PhotoTouch/.src/FScissors.form b/app/examples/Image/PhotoTouch/.src/FScissors.form new file mode 100644 index 00000000..cfddd6ce --- /dev/null +++ b/app/examples/Image/PhotoTouch/.src/FScissors.form @@ -0,0 +1,38 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,64,64) + Background = &H000000& + Mouse = Mouse.SizeAll + Border = False + Utility = True + Stacking = Window.Above + SkipTaskbar = True + Opacity = 50 + { Label1 Label + MoveScaled(3,3,52,6) + Font = Font["Bold,+5"] + Foreground = Color.TextBackground + Text = ("Cut") + } + { dwgNW DrawingArea dwgCorner + Name = "dwgNW" + MoveScaled(7,31,4,4) + Tag = "NW" + } + { dwgNE DrawingArea dwgCorner + Name = "dwgNE" + MoveScaled(14,31,4,4) + Tag = "NE" + } + { dwgSW DrawingArea dwgCorner + Name = "dwgSW" + MoveScaled(7,38,4,4) + Tag = "SW" + } + { dwgSE DrawingArea dwgCorner + Name = "dwgSE" + MoveScaled(14,38,4,4) + Tag = "SE" + } +} diff --git a/app/examples/Image/PhotoTouch/balance.png b/app/examples/Image/PhotoTouch/balance.png new file mode 100644 index 0000000000000000000000000000000000000000..c66bf62b495459636ab7806b76a3042558eaa662 GIT binary patch literal 1125 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 literal 0 HcmV?d00001 diff --git a/app/examples/Image/PhotoTouch/contrast.png b/app/examples/Image/PhotoTouch/contrast.png new file mode 100644 index 0000000000000000000000000000000000000000..49bda45dcbac7c6144da67e8853dfbbae71e1fa9 GIT binary patch literal 1340 zcmV-C1;hG@P)`%N^A0Rs7H? z;bRu%qrZut+8w_oNB7IPk(;=Q;0g~B4><>;C(l6e4cU5#YqGj5<`%xiL2E(G=ZCfY z$u8kFFZ#!2%YG)aoZ7`vhgb6tMUwq?$o5?HwY;WVony?_O&Pm+!!arS2>@d}CxPRv zcB40VR=4?)6}B!m^LM(NzYj9WOA^%QvO2O=*H5xufDOLxwzvcm0Isu7%bia83XW;l zZWX{HzDqCjKP?}Xun{Kh0y=fw2?0`kj|@owcv1rQN%}Iq?oYBxKn^gU1rbmsf34$; zYXL9n@)rbPTaK}xFHnGuh-}vaQf66Ntoh41lH;ul7Z8^|xM0%XEe1w3?#}D}-~t?j zx^Y3kVKYC+)mFnA&PF2OPPwb?S`aW`=D!dP-}FTvTmaas!RG<6QV;2KR-;?8w?m-` zXxHF5Rw%USePN&VSw4s|AA5(wtXC%$S`?bi+$gRH0nyn2#&xDyp;1@RDsPEU05PC5 zjSBTs|-H8`#2391>P2SS#|hRazM-Jusz{2?gs2`KMJH z&Z#oDX(p5^@#Xz5rnDUWcg#dgn$XEE|@3qQ5)1OA@ zcArkpqhA@L+6UXLnpvEROu$y1yl9NWz9p-+whg!OdL$c?8o8zI0u+EAQ;@<_mbgD~ zG?Mpkm2okXS)Ux!;!GUp)zCcsjhX57v?T`dKAz>p-I7UYXD5kkq z01fW(h|&9{Z(v5kc4mDZ_7KgWBSdrm5<@gA?Xj{x*8sLXNcCmjAeDasF@7Z>?m;R5 z;AXi@4RDpCqr$>;tM%cNB-L#wo#-ojGvKNytIm=7IkRAO81UV zgz}-~S7jVS?3U8MgfZ0000XUS?;PXwoJvwqXek>|h5CToR;< zxQ-3{#5df=x%BWnYA{<3`N;enwv6;2TuFzYK@;Kj0yEzHX?$h*8`Nq2+X4I3ns3VH(rIWEGp{E_lra=CPMVArT(98haXMslf2-$hicj?Ax!b6d3*k zW__2UF(@$nI~f|MsNzDERv{&Rpzz36 zkX`W!gbE*gFFxlrDAJtyb(i+V@_*^K{lhQX)%L%FS7sMFivAPW{2#fXbK%QjyljHb zNC9Q6r^TmGK-peZCB-LH$PynYbTtb0T~m6zQUL|5m`Ta4X{HLeGY-5{;ie0JVO;n? zA@qD1i$6vxl&LMccs1)*3L0~7^;u%oRJMR6wr)+Gi5ZUiwwuqG~%r4nN>Q8r0q)TU6B zCf=H9dY=Pu`-dtLzf ze<{J$?kUrxyVOXXRLC~D@E;(+dO9$h9WS1(0r9a1Fpwj7(`J%l z3m~2Igr_Y8VhLcC)7u$NQR9X%FLnSjxTO4i#yA8aksN-~0n{-#Rsh~nUY0pVI>osz zOGtzkkN6jMX*#435 zqV<96j1W6>Odo~i?LP%yS+?uxW0c9(<8w2&wl{#gmG!M2QcLwQI6+E#0tgV0qmpS& z$Sir!FilBPBEwX(P#(A6hst!xlz0(olrLnX)V1a`%u%0rk$y&?BWTb^VG2Tk8SHn( z%Su*rt=}mSgpZYt?H*zO72Q!8cd*yv+^A%ve*oPnQx@hJCF9vclvKtbzW{`3O23-^ zM%m2JBg%_TaHU@W!beK~JCA92*63|7>)A-9v$McIfHcl1{kcZz0NWg1nkll^Trvxs z5bp5{K)7FN*D%m1-&_0AgJik5ujv3zlj;|MP^9#C5ogqx4nR4x4E#8D=@8cX2hf$j zlzy&<&IVS|)r03+s9Ami2=^)NI**tVJ};T819-zf0HIJ{-~Kc5fF3UnwFW>ce<}+v z`UW86>D#2Ie*o!xqbywFdSA|ySxlWi3FG_$NFj3Qn?>x0#`bl9rzly2k1#&(bvV?R2%2 zWQ~(Y1lmrT6TnKvn;(_)IA&Afu$ixM?f;sxgWLb-_+UnWl zp>_?MJX{u&#f^L$Y&Au3bJG&=H!T2mCe&a^#X7QxTF-C3iI!#bL$F=O&h0CSJp}I@YD&XT=3cl1#1lSSmZ6p&b9Ip@d z)icx6`5@k>K6L3E=Q_j*K$z^7nyoQ=+rjl0twJ%M2F|mDtBlUau+bb3f25ZsAymcu5!$9~3dXvYXDs_!$L&U? zE10ieDRer>gI>9<*Er_u3pR3DtQ&c*1jVKu;d5gzMkjqF*MxQ6hvnwlNi&=LUQC>O zNLvYycnA%q&{;pTsDT1&r?(b>@T#&`%j6LDcs84JqiUAXI~wPa0K~IfS-s3sJ9=Er z!*&MXqH`>wTeQw20TB8-Z;H+QO{qI#D>}uz$TuN>0EAogKXk&-VP=MjO>F=m+!=b1 zxo96#TmP?GG(y8wNk4?PwY7X7t>7?<^lb^8WCf$z<{W9c7eq^aBwP9kQZ46Xzx>g* ge`+l910W{!FYrp}77^1DY5)KL07*qoM6N<$f_1*u;Q#;t literal 0 HcmV?d00001 diff --git a/app/examples/Image/PhotoTouch/film.png b/app/examples/Image/PhotoTouch/film.png new file mode 100644 index 0000000000000000000000000000000000000000..58ce250007f96276517d235a8080365108fdb568 GIT binary patch literal 756 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, 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: Explorer\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2010-12-17 01:09+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FExplorer.form:35 +msgid "&About..." +msgstr "&Quant a..." + +#: FExplorer.form:14 +msgid "FExplorer" +msgstr "-" + +#: FExplorer.form:19 +msgid "&File" +msgstr "&Fitxer" + +#: .project:1 +msgid "File browser example" +msgstr "Exemple de navegador de fitxers" + +#: FExplorer.class:158 +msgid "' has been renamed to '" +msgstr "' s'ha canviat el nom a '" + +#: FExplorer.class:152 +msgid "IconView example written by\nBenoît Minisini" +msgstr "Exemple de visualitzador d'icones escrit per\nBenoît Minisini" + +#: FExplorer.form:39 +msgid "&Quit" +msgstr "&Surt" + +#: FExplorer.form:26 +msgid "&Refresh" +msgstr "&Actualitza" + +#: FExplorer.form:22 +msgid "&View hidden files" +msgstr "&Mostra els fitxers ocults" + diff --git a/app/examples/Misc/Explorer/.lang/cs.po b/app/examples/Misc/Explorer/.lang/cs.po new file mode 100644 index 00000000..1d68587c --- /dev/null +++ b/app/examples/Misc/Explorer/.lang/cs.po @@ -0,0 +1,52 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "File browser example" +msgstr "Příklad prohlížeče souboru" + +#: FExplorer.class:152 +msgid "" +"IconView example written by\n" +"Benoît Minisini" +msgstr "" +"Příklad IconView od\n" +"Benoît Minisini" + +#: FExplorer.class:158 +msgid "' has been renamed to '" +msgstr "' bylo přejmenováno na '" + +#: FExplorer.form:14 +msgid "FExplorer" +msgstr "-" + +#: FExplorer.form:19 +msgid "&File" +msgstr "&Soubor" + +#: FExplorer.form:22 +msgid "&View hidden files" +msgstr "&Zobrazit skryté soubory" + +#: FExplorer.form:26 +msgid "&Refresh" +msgstr "&Obnovit" + +#: FExplorer.form:35 +msgid "&About..." +msgstr "&O aplikaci..." + +#: FExplorer.form:39 +msgid "&Quit" +msgstr "&Ukončit" diff --git a/app/examples/Misc/Explorer/.lang/de.po b/app/examples/Misc/Explorer/.lang/de.po new file mode 100644 index 00000000..ed66f8d6 --- /dev/null +++ b/app/examples/Misc/Explorer/.lang/de.po @@ -0,0 +1,49 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "File browser example" +msgstr "Beispiel für einen Dateibrowser" + +#: FExplorer.class:152 +msgid "IconView example written by\nBenoît Minisini" +msgstr "IconView Beispiel, geschrieben von\nBenoît Minisini" + +#: FExplorer.class:158 +msgid "' has been renamed to '" +msgstr "' wurde umbenannt zu '" + +#: FExplorer.form:14 +msgid "FExplorer" +msgstr "-" + +#: FExplorer.form:19 +msgid "&File" +msgstr "&Datei" + +#: FExplorer.form:22 +msgid "&View hidden files" +msgstr "&Versteckte Dateien anzeigen" + +#: FExplorer.form:26 +msgid "&Refresh" +msgstr "&Aktualisieren" + +#: FExplorer.form:35 +msgid "&About..." +msgstr "&Über..." + +#: FExplorer.form:39 +msgid "&Quit" +msgstr "&Beenden" + diff --git a/app/examples/Misc/Explorer/.lang/es.po b/app/examples/Misc/Explorer/.lang/es.po new file mode 100644 index 00000000..4d569041 --- /dev/null +++ b/app/examples/Misc/Explorer/.lang/es.po @@ -0,0 +1,35 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FExplorer.class:190 +msgid "FExplorer" +msgstr "FExplorer" + +#: FExplorer.class:195 +msgid "&File" +msgstr "&Archivo" + +#: FExplorer.class:198 +msgid "&View hidden files" +msgstr "&Ver archivos ocultos" + +#: FExplorer.class:202 +msgid "&Refresh" +msgstr "&Refrescar" + +#: FExplorer.class:212 +msgid "&About..." +msgstr "&Acerca de..." + +#: FExplorer.class:216 +msgid "&Quit" +msgstr "&Salir" diff --git a/app/examples/Misc/Explorer/.lang/ru.po b/app/examples/Misc/Explorer/.lang/ru.po new file mode 100644 index 00000000..f4e80484 --- /dev/null +++ b/app/examples/Misc/Explorer/.lang/ru.po @@ -0,0 +1,70 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-28 09:00+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Misc/Explorer/.project:21 +msgid "File browser example" +msgstr "Пример браузера файлов" + +#: app/examples/Misc/Explorer/.project:22 +msgid "IconView example" +msgstr "Пример IconView" + +#: app/examples/Misc/Explorer/.src/FExplorer.class:153 +msgid "" +"IconView example written by\n" +"Benoît Minisini" +msgstr "" +"Пример просмотра значков, написанный\n" +"Бенуа Минисини" + +#: app/examples/Misc/Explorer/.src/FExplorer.class:159 +msgid "' has been renamed to '" +msgstr "' был переименован в '" + +#: app/examples/Misc/Explorer/.src/FExplorer.form:5 +msgid "FExplorer" +msgstr "Обзорщик" + +#: app/examples/Misc/Explorer/.src/FExplorer.form:9 +msgid "File" +msgstr "Файл" + +#: app/examples/Misc/Explorer/.src/FExplorer.form:11 +msgid "View hidden files" +msgstr "Просмотреть скрытые файлы" + +#: app/examples/Misc/Explorer/.src/FExplorer.form:14 +msgid "Refresh" +msgstr "Освежить" + +#: app/examples/Misc/Explorer/.src/FExplorer.form:21 +msgid "About" +msgstr "О программе" + +#: app/examples/Misc/Explorer/.src/FExplorer.form:24 +msgid "Quit" +msgstr "Выход" + diff --git a/app/examples/Misc/Explorer/.project b/app/examples/Misc/Explorer/.project new file mode 100644 index 00000000..a90b74d3 --- /dev/null +++ b/app/examples/Misc/Explorer/.project @@ -0,0 +1,20 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.6.0 +Title=File browser example +Description="IconView example" +Startup=FExplorer +Icon=folder.png +Version=3.6.2 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.form +Environment="GB_GUI=gb.gtk" +TabSize=2 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence +Packager=1 diff --git a/app/examples/Misc/Explorer/.src/FExplorer.class b/app/examples/Misc/Explorer/.src/FExplorer.class new file mode 100644 index 00000000..1ab8c315 --- /dev/null +++ b/app/examples/Misc/Explorer/.src/FExplorer.class @@ -0,0 +1,175 @@ +' Gambas class file + +Private $sPath As String +Private $bHidden As Boolean +Private $bCtrl As Boolean + +Static Public Sub Main() + + Dim hForm As Form + + hForm = New FExplorer(System.User.Home) + Application.MainWindow = hForm + hForm.Show + +End + +Public Sub _new(sPath As String) + + $sPath = sPath + RefreshExplorer + +End + +Private Sub RefreshExplorer() + + Dim sFile As String + Dim hPictDir As Picture + Dim hPictFile As Picture + Dim cDir As New String[] + Dim sName As String + + Inc Application.Busy + + Me.Title = Conv($sPath, System.Charset, Desktop.Charset) + + ivwExplorer.Clear + 'ivwExplorer.Arrangement = IconView.Row + + hPictDir = Picture["icon:/48/directory"] + hPictFile = Picture["icon:/48/file"] + + If $sPath <> "/" Then ivwExplorer.Add("D..", "..", hPictDir) + + For Each sFile In Dir($sPath) + + If Not $bHidden Then + If Stat($sPath &/ sFile).Hidden Then + Continue + Endif + Endif + + If IsDir($sPath &/ sFile) Then + cDir.Add("D" & sFile) + Else + cDir.Add("F" & sFile) + Endif + + Next + + cDir.Sort + + For Each sFile In cDir + + sName = Mid$(sFile, 2) + + If Left$(sFile) = "D" Then + ivwExplorer.Add(sFile, sName, hPictDir) + Else + ivwExplorer.Add(sFile, sName, hPictFile) + Endif + + 'ivwExplorer.Item.Editable = TRUE + + Next + + 'ivwExplorer.Sorted = FALSE + 'ivwExplorer.Ascending = TRUE + 'ivwExplorer.Sorted = TRUE + +Finally + + Dec Application.busy + +Catch + + Message.Error(Error.Text) + +End + + +Public Sub mnuQuit_Click() + + Me.Close + +End + +Public Sub mnuViewRefresh_Click() + + RefreshExplorer + +End + +Public Sub ivwExplorer_Activate() + + Dim sNewPath As String + Dim hForm As Form + + Debug Last.Current.Key + + If Last.Current.Key = "D.." Then + If $sPath = "/" Then Return + sNewPath = File.Dir($sPath) + Else + sNewPath = $sPath &/ Mid$(Last.Current.Key, 2) + Endif + + If IsDir(sNewPath) Then + + If $bCtrl Then + $bCtrl = False + hForm = New FExplorer(sNewPath) + hForm.Move(Me.X + 16, Me.Y + 16, Me.W, Me.H) + hForm.Show + Else + $sPath = sNewPath + RefreshExplorer + Endif + + Endif + +End + + +Private Sub ToggleViewHidden() + + $bHidden = Not mnuViewHidden.Checked + + mnuViewHidden.Checked = $bHidden + + RefreshExplorer + +End + + +Public Sub mnuViewHidden_Click() + + ToggleViewHidden + +End + +Public Sub mnuAbout_Click() + + Message(("IconView example written by\nBenoît Minisini")) + +End + +Public Sub ivwExplorer_Rename() + + Message("'" & Mid$(Last.Item.Key, 2) & ("' has been renamed to '") & Last.Item.Text & "'") + +End + +Public Sub ivwExplorer_KeyPress() + + If Key.Control Then $bCtrl = True + +End + +Public Sub ivwExplorer_KeyRelease() + + If Key.Control Then $bCtrl = False + +End + + diff --git a/app/examples/Misc/Explorer/.src/FExplorer.form b/app/examples/Misc/Explorer/.src/FExplorer.form new file mode 100644 index 00000000..8d50e1c4 --- /dev/null +++ b/app/examples/Misc/Explorer/.src/FExplorer.form @@ -0,0 +1,38 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(27.7143,27.7143,61.5714,46.7143) + Text = ("FExplorer") + Icon = Picture["icon:/16/directory"] + Arrangement = Arrange.Vertical + { mnuFile Menu + Text = Shortcut(("File"), "F") + { mnuViewHidden Menu + Text = Shortcut(("View hidden files"), "V") + } + { mnuViewRefresh Menu + Text = Shortcut(("Refresh"), "R") + Picture = Picture["icon:/16/refresh"] + Shortcut = "F5" + } + { Menu1 Menu + } + { mnuAbout Menu + Text = Shortcut(("About"), "A") & "..." + } + { mnuQuit Menu + Text = Shortcut(("Quit"), "Q") + Picture = Picture["icon:/16/quit"] + } + } + { Separator1 Separator + MoveScaled(27,4,19,0) + } + { ivwExplorer IconView + MoveScaled(2,9,44,30) + Expand = True + Mode = Select.Multiple + Editable = True + Border = False + } +} diff --git a/app/examples/Misc/Explorer/folder.png b/app/examples/Misc/Explorer/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..0e6b21c1ef6a6b34c0f1f598a1d6e1a2ef23a552 GIT binary patch literal 2450 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 iB|H1v|6G09>;D1E^Mnj!=ooqc0000, 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: Notepad\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2010-12-17 01:09+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FNotepad.form:122 +msgid "&?" +msgstr "-" + +#: FNotepad.form:125 +msgid "&About..." +msgstr "&Quant a..." + +#: FAbout.form:10 +msgid "About..." +msgstr "Quant a..." + +#: .project:1 +msgid "A little text editor" +msgstr "Un petit editor de text" + +#: FNotepad.class:118 +msgid "All files" +msgstr "Tots els fitxers" + +#: FNotepad.class:66 +msgid "Cancel" +msgstr "Canceŀla" + +#: FNotepad.class:118 +msgid "C/C++ files" +msgstr "Fitxers C/C++" + +#: FNotepad.form:111 +msgid "Choose &Font..." +msgstr "&Tria el tipus de lletra..." + +#: FNotepad.form:42 +msgid "Close" +msgstr "&Tanca" + +#: FNotepad.form:75 +msgid "&Copy" +msgstr "&Copia" + +#: FNotepad.form:81 +msgid "C&ut" +msgstr "&Retalla" + +#: FNotepad.class:118 +msgid "Desktop files" +msgstr "Fitxers d'escriptori" + +#: FNotepad.form:72 +msgid "&Edit" +msgstr "&Edita" + +#: FNotepad.form:33 +msgid "&File" +msgstr "&Fitxer" + +#: FNotepad.form:28 +msgid "Little notepad" +msgstr "Petit bloc de notes" + +#: FNotepad.class:30 +msgid "(New document)" +msgstr "(Document nou)" + +#: FNotepad.class:66 +msgid "\n\nFile has been modified. Do you want to save it ?" +msgstr "\n\nS'ha modificat el fitxer. El voleu desar?" + +#: FNotepad.class:66 +msgid "No" +msgstr "-" + +#: FNotepad.class:97 +msgid "\nUnable to load file.\n" +msgstr "\nNo es pot carregar el fitxer.\n" + +#: FAbout.form:21 +msgid "OK" +msgstr "D'acord" + +#: FNotepad.form:36 +msgid "&Open..." +msgstr "&Obre..." + +#: FNotepad.form:87 +msgid "&Paste" +msgstr "&Enganxa" + +#: FNotepad.form:65 +msgid "&Quit" +msgstr "&Surt" + +#: FNotepad.form:102 +msgid "&Redo" +msgstr "Re&fés" + +#: FNotepad.form:51 +msgid "&Save" +msgstr "&Desa" + +#: FNotepad.form:57 +msgid "S&ave As..." +msgstr "D&esa com..." + +#: FNotepad.class:118 +msgid "Text files" +msgstr "Fitxers de text" + +#: FAbout.form:28 +msgid "This is a little notepad sample program." +msgstr "Aquest és un petit programa exemple de bloc de notes." + +#: FNotepad.form:133 +msgid "txtNotepad" +msgstr "-" + +#: FNotepad.form:96 +msgid "&Undo" +msgstr "&Desfés" + +#: FNotepad.form:115 +msgid "&Wrap text" +msgstr "&Ajusta el text" + +#: FNotepad.class:66 +msgid "Yes" +msgstr "Sí" + diff --git a/app/examples/Misc/Notepad/.lang/cs.po b/app/examples/Misc/Notepad/.lang/cs.po new file mode 100644 index 00000000..2cb92fb1 --- /dev/null +++ b/app/examples/Misc/Notepad/.lang/cs.po @@ -0,0 +1,150 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "A little text editor" +msgstr "Malý textový editor" + +#: FAbout.form:10 +msgid "About..." +msgstr "O aplikaci..." + +#: FAbout.form:21 +msgid "OK" +msgstr "-" + +#: FAbout.form:28 +msgid "This is a little notepad sample program." +msgstr "Toto je ukázka malého poznámkového bloku." + +#: FNotepad.class:30 +msgid "(New document)" +msgstr "(Nový dokument)" + +#: FNotepad.class:66 +msgid "" +"\n" +"\n" +"File has been modified. Do you want to save it ?" +msgstr "" +"\n" +"\n" +"Soubor byl změněn. Chcete jej uložit ?" + +#: FNotepad.class:66 +msgid "Cancel" +msgstr "Zrušit" + +#: FNotepad.class:66 +msgid "No" +msgstr "Ne" + +#: FNotepad.class:66 +msgid "Yes" +msgstr "Ano" + +#: FNotepad.class:97 +msgid "" +"\n" +"Unable to load file.\n" +msgstr "" +"\n" +"Nelze načíst soubor.\n" + +#: FNotepad.class:118 +msgid "All files" +msgstr "Všechny soubory" + +#: FNotepad.class:118 +msgid "C/C++ files" +msgstr "C/C++ soubory" + +#: FNotepad.class:118 +msgid "Desktop files" +msgstr "Desktop soubory" + +#: FNotepad.class:118 +msgid "Text files" +msgstr "Textové soubory" + +#: FNotepad.form:28 +msgid "Little notepad" +msgstr "Malý poznámkový blok" + +#: FNotepad.form:33 +msgid "&File" +msgstr "&Soubor" + +#: FNotepad.form:36 +msgid "&Open..." +msgstr "&Otevřít..." + +#: FNotepad.form:42 +msgid "Close" +msgstr "Zavřít" + +#: FNotepad.form:51 +msgid "&Save" +msgstr "&Uložit" + +#: FNotepad.form:57 +msgid "S&ave As..." +msgstr "Uložit &jako..." + +#: FNotepad.form:65 +msgid "&Quit" +msgstr "&Zavřít" + +#: FNotepad.form:72 +msgid "&Edit" +msgstr "&Upravit" + +#: FNotepad.form:75 +msgid "&Copy" +msgstr "&Kopírovat" + +#: FNotepad.form:81 +msgid "C&ut" +msgstr "&Vyjmout" + +#: FNotepad.form:87 +msgid "&Paste" +msgstr "&Vložit" + +#: FNotepad.form:96 +msgid "&Undo" +msgstr "&Zpět" + +#: FNotepad.form:102 +msgid "&Redo" +msgstr "&Vrátit" + +#: FNotepad.form:111 +msgid "Choose &Font..." +msgstr "Vyber &Font..." + +#: FNotepad.form:115 +msgid "&Wrap text" +msgstr "&Zalamovat text" + +#: FNotepad.form:122 +msgid "&?" +msgstr "-" + +#: FNotepad.form:125 +msgid "&About..." +msgstr "&O aplikaci..." + +#: FNotepad.form:133 +msgid "txtNotepad" +msgstr "-" diff --git a/app/examples/Misc/Notepad/.lang/de.po b/app/examples/Misc/Notepad/.lang/de.po new file mode 100644 index 00000000..201f2c8c --- /dev/null +++ b/app/examples/Misc/Notepad/.lang/de.po @@ -0,0 +1,141 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "A little text editor" +msgstr "Ein kleiner Texteditor" + +#: FAbout.form:10 +msgid "About..." +msgstr "Über..." + +#: FAbout.form:21 +msgid "OK" +msgstr "-" + +#: FAbout.form:28 +msgid "This is a little notepad sample program." +msgstr "Dies ist ein kleines Notepad-Beispiel." + +#: FNotepad.class:30 +msgid "(New document)" +msgstr "(Unbenannt)" + +#: FNotepad.class:66 +msgid "\n\nFile has been modified. Do you want to save it ?" +msgstr "\n\nDatei wurde geändert. Wollen Sie sie speichern ?" + +#: FNotepad.class:66 +msgid "Cancel" +msgstr "Abbrechen" + +#: FNotepad.class:66 +msgid "No" +msgstr "Nein" + +#: FNotepad.class:66 +msgid "Yes" +msgstr "Ja" + +#: FNotepad.class:97 +msgid "\nUnable to load file.\n" +msgstr "\nDatei kann nicht geladen werden.\n" + +#: FNotepad.class:118 +msgid "All files" +msgstr "Alle Dateien" + +#: FNotepad.class:118 +msgid "C/C++ files" +msgstr "C/C++ Dateien" + +#: FNotepad.class:118 +msgid "Desktop files" +msgstr "Desktop Dateien" + +#: FNotepad.class:118 +msgid "Text files" +msgstr "Textdateien" + +#: FNotepad.form:28 +msgid "Little notepad" +msgstr "Kleines Notepad" + +#: FNotepad.form:33 +msgid "&File" +msgstr "&Datei" + +#: FNotepad.form:36 +msgid "&Open..." +msgstr "&Öffnen..." + +#: FNotepad.form:42 +msgid "Close" +msgstr "Schließen" + +#: FNotepad.form:51 +msgid "&Save" +msgstr "&Speichern" + +#: FNotepad.form:57 +msgid "S&ave As..." +msgstr "Speichern &als..." + +#: FNotepad.form:65 +msgid "&Quit" +msgstr "&Beenden" + +#: FNotepad.form:72 +msgid "&Edit" +msgstr "&Bearbeiten" + +#: FNotepad.form:75 +msgid "&Copy" +msgstr "&Kopieren" + +#: FNotepad.form:81 +msgid "C&ut" +msgstr "&Ausschneiden" + +#: FNotepad.form:87 +msgid "&Paste" +msgstr "&Einfügen" + +#: FNotepad.form:96 +msgid "&Undo" +msgstr "&Rückgängig" + +#: FNotepad.form:102 +msgid "&Redo" +msgstr "&Wiederherstellen" + +#: FNotepad.form:111 +msgid "Choose &Font..." +msgstr "&Schriftart wählen..." + +#: FNotepad.form:115 +msgid "&Wrap text" +msgstr "&Zeilenumbruch" + +#: FNotepad.form:122 +msgid "&?" +msgstr "-" + +#: FNotepad.form:125 +msgid "&About..." +msgstr "&Über..." + +#: FNotepad.form:133 +msgid "txtNotepad" +msgstr "-" + diff --git a/app/examples/Misc/Notepad/.lang/es.po b/app/examples/Misc/Notepad/.lang/es.po new file mode 100644 index 00000000..f7343279 --- /dev/null +++ b/app/examples/Misc/Notepad/.lang/es.po @@ -0,0 +1,95 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FAbout.class:39 +msgid "About..." +msgstr "Acerca de..." + +#: FAbout.class:50 +msgid "OK" +msgstr "OK" + +#: FAbout.class:57 +msgid "This is a little notepad sample program." +msgstr "Este es un pequeño ejemplo del programa bloc de notas." + +#: FNotepad.class:256 +msgid "Little notepad" +msgstr "Pequeño bloc de notas" + +#: FNotepad.class:262 +msgid "&File" +msgstr "&Archivo" + +#: FNotepad.class:265 +msgid "&Open..." +msgstr "&Abrir" + +#: FNotepad.class:271 +msgid "Close" +msgstr "Cerrar" + +#: FNotepad.class:280 +msgid "&Save" +msgstr "&Guardar" + +#: FNotepad.class:285 +msgid "S&ave As..." +msgstr "G&uardar como..." + +#: FNotepad.class:294 +msgid "&Quit" +msgstr "&Salir" + +#: FNotepad.class:300 +msgid "&Edit" +msgstr "&Editar" + +#: FNotepad.class:303 +msgid "&Copy" +msgstr "&Copiar" + +#: FNotepad.class:308 +msgid "C&ut" +msgstr "C&ortar" + +#: FNotepad.class:313 +msgid "&Paste" +msgstr "&Pegar" + +#: FNotepad.class:322 +msgid "&Undo" +msgstr "&Deshacer" + +#: FNotepad.class:327 +msgid "&Redo" +msgstr "&Rehacer" + +#: FNotepad.class:336 +msgid "Choose &Font..." +msgstr "Seleccionar &fuente..." + +#: FNotepad.class:340 +msgid "&Wrap text" +msgstr "&Ajustar texto" + +#: FNotepad.class:346 +msgid "&?" +msgstr "&?" + +#: FNotepad.class:349 +msgid "&About..." +msgstr "&Acerca de..." + +#: FNotepad.class:357 +msgid "txtNotepad" +msgstr "txtNotepad" diff --git a/app/examples/Misc/Notepad/.lang/ru.po b/app/examples/Misc/Notepad/.lang/ru.po new file mode 100644 index 00000000..8120f4d5 --- /dev/null +++ b/app/examples/Misc/Notepad/.lang/ru.po @@ -0,0 +1,164 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-28 09:00+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Misc/Notepad/.project:21 +msgid "A little text editor" +msgstr "Небольшой текстовый редактор" + +#: app/examples/Misc/Notepad/.project:22 app/examples/Misc/Notepad/.src/FAbout.form:20 +msgid "This is a little notepad sample program." +msgstr "Это небольшой пример программы-блокнота." + +#: app/examples/Misc/Notepad/.src/FAbout.form:5 +msgid "About..." +msgstr "О программе..." + +#: app/examples/Misc/Notepad/.src/FAbout.form:14 +msgid "OK" +msgstr "ОК" + +#: app/examples/Misc/Notepad/.src/FNotepad.class:27 +msgid "(New document)" +msgstr "(Новый документ)" + +#: app/examples/Misc/Notepad/.src/FNotepad.class:63 +msgid "" +"\n" +"\n" +"File has been modified. Do you want to save it ?" +msgstr "" +"\n" +"\n" +"Файл был изменён. Вы хотите сохранить его?" + +#: app/examples/Misc/Notepad/.src/FNotepad.class:63 +msgid "Yes" +msgstr "Да" + +#: app/examples/Misc/Notepad/.src/FNotepad.class:63 +msgid "No" +msgstr "Нет" + +#: app/examples/Misc/Notepad/.src/FNotepad.class:63 +msgid "Cancel" +msgstr "Отмена" + +#: app/examples/Misc/Notepad/.src/FNotepad.class:94 +msgid "" +"\n" +"Unable to load file.\n" +msgstr "" +"\n" +"Невозможно загрузить файл.\n" + +#: app/examples/Misc/Notepad/.src/FNotepad.class:115 +msgid "All files" +msgstr "Все файлы" + +#: app/examples/Misc/Notepad/.src/FNotepad.class:115 +msgid "C/C++ files" +msgstr "Файлы C/C++" + +#: app/examples/Misc/Notepad/.src/FNotepad.class:115 +msgid "Text files" +msgstr "Текстовые файлы" + +#: app/examples/Misc/Notepad/.src/FNotepad.class:115 +msgid "Desktop files" +msgstr "Файлы Рабочего стола" + +#: app/examples/Misc/Notepad/.src/FNotepad.form:5 +msgid "Little notepad" +msgstr "Маленький блокнот" + +#: app/examples/Misc/Notepad/.src/FNotepad.form:9 +msgid "File" +msgstr "Файл" + +#: app/examples/Misc/Notepad/.src/FNotepad.form:11 +msgid "Open" +msgstr "Открыть" + +#: app/examples/Misc/Notepad/.src/FNotepad.form:16 +msgid "Close" +msgstr "Закрыть" + +#: app/examples/Misc/Notepad/.src/FNotepad.form:23 +msgid "Save" +msgstr "Сохранить" + +#: app/examples/Misc/Notepad/.src/FNotepad.form:28 +msgid "Save As" +msgstr "Сохранить как" + +#: app/examples/Misc/Notepad/.src/FNotepad.form:34 +msgid "Quit" +msgstr "Выход" + +#: app/examples/Misc/Notepad/.src/FNotepad.form:40 +msgid "Edit" +msgstr "Редактировать" + +#: app/examples/Misc/Notepad/.src/FNotepad.form:42 +msgid "Copy" +msgstr "Копировать" + +#: app/examples/Misc/Notepad/.src/FNotepad.form:47 +msgid "Cut" +msgstr "Вырезать" + +#: app/examples/Misc/Notepad/.src/FNotepad.form:52 +msgid "Paste" +msgstr "Вставить" + +#: app/examples/Misc/Notepad/.src/FNotepad.form:59 +msgid "Undo" +msgstr "Откатить" + +#: app/examples/Misc/Notepad/.src/FNotepad.form:64 +msgid "Redo" +msgstr "Вернуть" + +#: app/examples/Misc/Notepad/.src/FNotepad.form:71 +msgid "Choose Font" +msgstr "Выбор шрифта" + +#: app/examples/Misc/Notepad/.src/FNotepad.form:74 +msgid "Wrap text" +msgstr "Переносить текст" + +#: app/examples/Misc/Notepad/.src/FNotepad.form:80 +msgid "?" +msgstr "?" + +#: app/examples/Misc/Notepad/.src/FNotepad.form:82 +msgid "About" +msgstr "О программе" + +#: app/examples/Misc/Notepad/.src/FNotepad.form:89 +msgid "txtNotepad" +msgstr "Текстовый блокнот" + diff --git a/app/examples/Misc/Notepad/.project b/app/examples/Misc/Notepad/.project new file mode 100644 index 00000000..43fb11d2 --- /dev/null +++ b/app/examples/Misc/Notepad/.project @@ -0,0 +1,20 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.5.90 +Title=A little text editor +Description="This is a little notepad sample program." +Startup=FNotepad +Icon=notepad.png +Version=3.6.2 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.form +Environment="GB_GUI=gb.gtk" +TabSize=2 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence +Packager=1 diff --git a/app/examples/Misc/Notepad/.src/FAbout.class b/app/examples/Misc/Notepad/.src/FAbout.class new file mode 100644 index 00000000..4eb7eefb --- /dev/null +++ b/app/examples/Misc/Notepad/.src/FAbout.class @@ -0,0 +1,25 @@ +' Gambas class file + + +Static Public Sub Run() + + Dim hForm As Form + + hForm = New FAbout + hForm.ShowModal + +End + + +Public Sub _new() + + Me.Center + +End + + +Public Sub btnOK_Click() + + Me.Close + +End diff --git a/app/examples/Misc/Notepad/.src/FAbout.form b/app/examples/Misc/Notepad/.src/FAbout.form new file mode 100644 index 00000000..ccca69c6 --- /dev/null +++ b/app/examples/Misc/Notepad/.src/FAbout.form @@ -0,0 +1,22 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,29,17) + Text = ("About...") + Resizable = False + { Image1 PictureBox + MoveScaled(1,1,4,4) + Picture = Picture["notepad.png"] + Stretch = True + } + { btnOK Button + MoveScaled(7,12,15,4) + Text = ("OK") + Default = True + Cancel = True + } + { TextLabel1 TextLabel + MoveScaled(7,1,21,9) + Text = ("This is a little notepad sample program.") + } +} diff --git a/app/examples/Misc/Notepad/.src/FNotepad.class b/app/examples/Misc/Notepad/.src/FNotepad.class new file mode 100644 index 00000000..26000b5f --- /dev/null +++ b/app/examples/Misc/Notepad/.src/FNotepad.class @@ -0,0 +1,222 @@ +' Gambas class file + +Private $sPath As String +Private $bModify As Boolean + +Static Public Sub Main() + + FNotepad.Show + +End + + +Public Sub _new() + + txtNotepad.Text = "" + $bModify = False + RefreshTitle + txtNotePad.SetFocus + +End + + +Private Function GetName() As String + + If $sPath Then Return $sPath + + Return ("(New document)") + +End + + +Private Sub RefreshTitle() + + Dim sTitle As String + + If $bModify Then sTitle = "*" + sTitle = sTitle & GetName() + + Me.Title = sTitle + +End + + +Private Sub SetPath(sPath As String) + + $sPath = sPath + RefreshTitle + +End + +Private Sub SetModify(bModify As Boolean) + + If $bModify = bModify Then Return + $bModify = bModify + RefreshTitle + +End + + +Private Function CloseDoc() As Boolean + + If $bModify Then + Select Case Message.Question(GetName() & ("\n\nFile has been modified. Do you want to save it ?"), ("Yes"), ("No"), ("Cancel")) + Case 1 + Save + Case 3 + Return True + End Select + Endif + + $sPath = "" + txtNotepad.Text = "" + $bModify = False + RefreshTitle + +End + + + +Public Sub LoadFile(sPath As String) + + Dim sData As String + + If CloseDoc() Then Return + + sData = File.Load(sPath) + Try txtNotepad.Text = Conv(sData, System.Charset, Desktop.Charset) + If Error Then txtNotepad.Text = Conv(sData, "ISO_8859-1", Desktop.Charset) + $bModify = False + SetPath(sPath) + +Catch + + Message.Error(sPath & ("\nUnable to load file.\n") & Error.Text) + +End + + +Public Sub Save(Optional bSaveAs As Boolean) + + If bSaveAs Or Not $sPath Then + If Dialog.SaveFile() Then Return + SetPath(Dialog.Path) + Endif + + File.Save($sPath, txtNotepad.Text) + +End + + +Public Sub mnuOpen_Click() + + Dim sPath As String + + Dialog.Filter = ["*", ("All files"), "*.{c;cpp;h}", ("C/C++ files"), "*.txt", ("Text files"), "*.desktop", ("Desktop files")] + + If Dialog.OpenFile() Then Return + LoadFile(Dialog.Path) + +End + + +Public Sub mnuSave_Click() + + Save + +End + + +Public Sub mnuSaveAs_Click() + + Save(True) + +End + + +Public Sub mnuQuit_Click() + + Me.Close + +End + + +Public Sub txtNotepad_Change() + + SetModify(True) + +End + + +Public Sub mnuClose_Click() + + CloseDoc + +End + + +Public Sub Form_Close() + + If CloseDoc() Then Stop Event + +End + + +Public Sub mnuAbout_Click() + + 'Inc Application.Busy + FAbout.Run + 'Dec Application.Busy + +End + + +Public Sub mnuCopy_Click() + + txtNotepad.Copy + +End + + +Public Sub mnuPaste_Click() + + txtNotepad.Paste + +End + + +Public Sub mnuCut_Click() + + txtNotepad.Cut + +End + + +Public Sub mnuUndo_Click() + + txtNotepad.Undo + +End + + +Public Sub mnuRedo_Click() + + txtNotepad.Redo + +End + + +Public Sub mnuFont_Click() + + Dialog.Font = txtNotepad.Font + If Dialog.SelectFont() Then Return + txtNotepad.Font = Dialog.Font + +End + +Public Sub mnuWrap_Click() + + mnuWrap.Checked = Not mnuWrap.Checked + txtNotePad.Wrap = mnuWrap.Checked + +End diff --git a/app/examples/Misc/Notepad/.src/FNotepad.form b/app/examples/Misc/Notepad/.src/FNotepad.form new file mode 100644 index 00000000..ac8112d0 --- /dev/null +++ b/app/examples/Misc/Notepad/.src/FNotepad.form @@ -0,0 +1,93 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(12.5714,12.5714,50,50) + Text = ("Little notepad") + Icon = Picture["notepad.png"] + Arrangement = Arrange.Fill + { mnuFile Menu + Text = Shortcut(("File"), "F") + { mnuOpen Menu + Text = Shortcut(("Open"), "O") & "..." + Picture = Picture["icon:/16/new"] + Shortcut = "Ctrl+O" + } + { mnuClose Menu + Text = ("Close") + Picture = Picture["icon:/16/close"] + Shortcut = "Ctrl+W" + } + { Menu1 Menu + } + { mnuSave Menu + Text = Shortcut(("Save"), "S") + Picture = Picture["icon:/16/save"] + Shortcut = "Ctrl+S" + } + { mnuSaveAs Menu + Text = Shortcut(("Save As"), "a") & "..." + Shortcut = "Ctrl+Shift+S" + } + { Menu2 Menu + } + { mnuQuit Menu + Text = Shortcut(("Quit"), "Q") + Picture = Picture["icon:/16/quit"] + Shortcut = "Ctrl+Q" + } + } + { mnuEdit Menu + Text = Shortcut(("Edit"), "E") + { mnuCopy Menu + Text = Shortcut(("Copy"), "C") + Picture = Picture["icon:/16/copy"] + Shortcut = "Ctrl+C" + } + { mnuCut Menu + Text = Shortcut(("Cut"), "u") + Picture = Picture["icon:/16/cut"] + Shortcut = "Ctrl+X" + } + { mnuPaste Menu + Text = Shortcut(("Paste"), "P") + Picture = Picture["icon:/16/paste"] + Shortcut = "Ctrl+V" + } + { Menu3 Menu + } + { mnuUndo Menu + Text = Shortcut(("Undo"), "U") + Picture = Picture["icon:/16/undo"] + Shortcut = "Ctrl+Z" + } + { mnuRedo Menu + Text = Shortcut(("Redo"), "R") + Picture = Picture["icon:/16/redo"] + Shortcut = "Ctrl+Y" + } + { Menu4 Menu + } + { mnuFont Menu + Text = Shortcut(("Choose Font"), "F") & "..." + } + { mnuWrap Menu + Text = Shortcut(("Wrap text"), "W") + Picture = Picture["icon:/16/text-fill"] + Checked = True + } + } + { mnuHelp Menu + Text = Shortcut(("?"), "?") + { mnuAbout Menu + Text = Shortcut(("About"), "A") & "..." + } + } + { txtNotepad TextArea + MoveScaled(1,1,35,26) + Font = Font["Liberation Mono,9"] + Expand = True + Text = ("txtNotepad") + Wrap = True + Border = False + } +} diff --git a/app/examples/Misc/Notepad/notepad.png b/app/examples/Misc/Notepad/notepad.png new file mode 100644 index 0000000000000000000000000000000000000000..3be5a715d315f1ae71f5aa52871fef3547f1e4de GIT binary patch literal 4015 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 literal 0 HcmV?d00001 diff --git a/app/examples/Misc/PDFViewer/.directory b/app/examples/Misc/PDFViewer/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Misc/PDFViewer/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Misc/PDFViewer/.icon.png b/app/examples/Misc/PDFViewer/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ea9495756338ebad0b64dc3c63afb034bfde3afd GIT binary patch literal 4253 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, 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: PDFViewer\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2011-03-20 21:38+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: .project:1 +msgid "PdfViewer" +msgstr "VisualitzadorPdf" + +#: .project:2 +msgid "A simple PDF Viewer, used as example of gb.pdf capabilities" +msgstr "Un visualitzador simple de PDF, com a exemple de les capacitats de gb.pdf" + +#: FMain.class:40 +msgid "Pdf documents" +msgstr "Documents pdf" + +#: FMain.class:114 +msgid "From" +msgstr "Des de" + +#: FMain.class:253 +msgid "Simple PDF document viewer" +msgstr "Visualitzador simple de documents PDF" + +#: FMain.class:261 +msgid "Open file..." +msgstr "Obre fitxer..." + +#: FMain.class:268 +msgid "About..." +msgstr "Quant a..." + +#: FMain.class:276 +msgid "Rotate" +msgstr "Rota" + +#: FMain.class:284 +msgid "Zoom out" +msgstr "Allunya" + +#: FMain.class:292 +msgid "Zoom in" +msgstr "Apropa" + +#: FMain.class:300 +msgid "Find text" +msgstr "Cerca el següent" + +#: FMain.class:319 +msgid "Previous page" +msgstr "Pàgina anterior" + +#: FMain.class:327 +msgid "Next page" +msgstr "Pàgina següent" + +#: Fabout.class:61 +msgid "OK" +msgstr "D'acord" + +#: Fabout.class:68 +msgid "Simple PDF document viewer.

    Gambas example by Daniel Campos Fernández " +msgstr "Visualitzador simple de documents PDF.

    Exemple del Gambas per Daniel Campos Fernández " + diff --git a/app/examples/Misc/PDFViewer/.lang/cs.po b/app/examples/Misc/PDFViewer/.lang/cs.po new file mode 100644 index 00000000..6e4fb0fb --- /dev/null +++ b/app/examples/Misc/PDFViewer/.lang/cs.po @@ -0,0 +1,80 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "PdfViewer" +msgstr "-" + +#: .project:2 +msgid "A simple PDF Viewer, used as example of gb.pdf capabilities" +msgstr "Ukázka PDF prohlížeče, příklad užití schopnosti gb.pdf" + +#: FMain.class:52 +msgid "Pdf documents" +msgstr "PDF dokument" + +#: FMain.form:30 +msgid "Simple PDF document viewer" +msgstr "Ukázka prohížeče PDF dokumentů" + +#: FMain.form:38 +msgid "Open file..." +msgstr "Otevřít soubor..." + +#: FMain.form:44 +msgid "About..." +msgstr "O aplikaci..." + +#: FMain.form:51 +msgid "Rotate" +msgstr "Rotace" + +#: FMain.form:58 +msgid "Zoom out" +msgstr "Oddálit" + +#: FMain.form:65 +msgid "Zoom in" +msgstr "Přiblížit" + +#: FMain.form:76 +msgid "Find text" +msgstr "Najdi text" + +#: FMain.form:90 +msgid "Previous page" +msgstr "Předchozí stránka" + +#: FMain.form:99 +msgid "Next Found" +msgstr "Další nalezeno" + +#: FMain.form:119 +msgid "Page" +msgstr "Stránka" + +#: FMain.form:130 +msgid "Go to this page" +msgstr "Jdi na tuto stránku" + +#: FMain.form:143 +msgid "Next page" +msgstr "Další stránka" + +#: Fabout.form:20 +msgid "

    Simple PDF document viewer

    Gambas example by Daniel Campos Fernández and Bernd Brinkmann" +msgstr "

    Jednotuchý prohlížeč PDF dokumentů

    Gambas příklad od Daniel Campos Fernández a Bernd Brinkmann" + +#: Fabout.form:34 +msgid "OK" +msgstr "-" diff --git a/app/examples/Misc/PDFViewer/.lang/de.po b/app/examples/Misc/PDFViewer/.lang/de.po new file mode 100644 index 00000000..cc0d9373 --- /dev/null +++ b/app/examples/Misc/PDFViewer/.lang/de.po @@ -0,0 +1,80 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "PdfViewer" +msgstr "PDF-Betrachter" + +#: .project:2 +msgid "A simple PDF Viewer, used as example of gb.pdf capabilities" +msgstr "Ein einfacher PDF-Betrachter, Beispiel für die Fähigkeiten von gb.pdf" + +#: FMain.class:52 +msgid "Pdf documents" +msgstr "pdf-Dateien" + +#: FMain.form:30 +msgid "Simple PDF document viewer" +msgstr "Einfacher Betrachter für PDF-Dokumente" + +#: FMain.form:38 +msgid "Open file..." +msgstr "Datei öffnen..." + +#: FMain.form:44 +msgid "About..." +msgstr "&Über..." + +#: FMain.form:51 +msgid "Rotate" +msgstr "Drehen" + +#: FMain.form:58 +msgid "Zoom out" +msgstr "Verkleinern" + +#: FMain.form:65 +msgid "Zoom in" +msgstr "Vergrößern" + +#: FMain.form:76 +msgid "Find text" +msgstr "Text finden" + +#: FMain.form:90 +msgid "Previous page" +msgstr "Vorherige Seite" + +#: FMain.form:99 +msgid "Next Found" +msgstr "Nächste Fundstelle" + +#: FMain.form:119 +msgid "Page" +msgstr "Seite" + +#: FMain.form:130 +msgid "Go to this page" +msgstr "Gehe zu Seite" + +#: FMain.form:143 +msgid "Next page" +msgstr "Nächste Seite" + +#: Fabout.form:20 +msgid "

    Simple PDF document viewer

    Gambas example by Daniel Campos Fernández and Bernd Brinkmann" +msgstr "

    Einfacher PDF-Betrachter

    Gambas-Beispiel von Daniel Campos Fernández und Bernd Brinkmann" + +#: Fabout.form:34 +msgid "OK" +msgstr "-" diff --git a/app/examples/Misc/PDFViewer/.lang/es.po b/app/examples/Misc/PDFViewer/.lang/es.po new file mode 100644 index 00000000..73d95061 --- /dev/null +++ b/app/examples/Misc/PDFViewer/.lang/es.po @@ -0,0 +1,64 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:2 +msgid "A simple PDF Viewer, used as example of gb.pdf capabilities" +msgstr "Un simple Visor PDF, usado como ejemplo de las capacidades de gb.pdf" + +#: FMain.class:276 +msgid "Find text" +msgstr "Buscar texto" + +#: FMain.class:110 +msgid "From" +msgstr "de" + +#: FMain.class:321 +msgid "Next page" +msgstr "Página siguiente" + +#: Fabout.class:61 +msgid "OK" +msgstr "Aceptar" + +#: FMain.class:255 +msgid "Open file..." +msgstr "Abrir archivo..." + +#: .project:1 +msgid "PdfViewer" +msgstr "Visor Pdf" + +#: FMain.class:313 +msgid "Previous page" +msgstr "Página anterior" + +#: FMain.class:283 +msgid "Rotate" +msgstr "Rotar" + +#: FMain.class:245 +msgid "Simple PDF document viewer" +msgstr "Visor simple de documentos PDF" + +#: Fabout.class:68 +msgid "Simple PDF document viewer.

    Gambas example by Daniel Campos Fernández " +msgstr "Visor simple de documentos PDF.

    Ejemplo para Gambas por Daniel Campos Fernández." + +#: FMain.class:299 +msgid "Zoom in" +msgstr "Aumentar" + +#: FMain.class:291 +msgid "Zoom out" +msgstr "Disminuir" + diff --git a/app/examples/Misc/PDFViewer/.lang/ru.po b/app/examples/Misc/PDFViewer/.lang/ru.po new file mode 100644 index 00000000..ed649400 --- /dev/null +++ b/app/examples/Misc/PDFViewer/.lang/ru.po @@ -0,0 +1,112 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Misc/PDFViewer/.project:23 +msgid "PdfViewer" +msgstr "Просмотрщик PDF" + +#: app/examples/Misc/PDFViewer/.project:24 +msgid "A simple PDF Viewer, used as example of gb.pdf capabilities" +msgstr "Простой просмотрщик PDF, используемый как пример возможностей gb.pdf" + +#: app/examples/Misc/PDFViewer/.src/FMain.class:47 +msgid "Pdf documents" +msgstr "Документы PDF" + +#: app/examples/Misc/PDFViewer/.src/FMain.class:131 +msgid "Can't set zoom to " +msgstr "Невозможно установить масштаб на " + +#: app/examples/Misc/PDFViewer/.src/FMain.class:131 app/examples/Misc/PDFViewer/.src/Fabout.form:23 +msgid "OK" +msgstr "ОК" + +#: app/examples/Misc/PDFViewer/.src/FMain.class:134 +msgid "of" +msgstr "из" + +#: app/examples/Misc/PDFViewer/.src/FMain.class:159 app/examples/Misc/PDFViewer/.src/FMain.class:384 app/examples/Misc/PDFViewer/.src/FMain.class:433 +msgid "" +"An error occurred while trying to view the document.\n" +"\n" +"If this persists please report this problem." +msgstr "" +"Произошла ошибка при попытке просмотра документа.\n" +"\n" +"Если это повторяется, то сообщите об этой проблеме." + +#: app/examples/Misc/PDFViewer/.src/FMain.form:5 +msgid "Simple PDF document viewer" +msgstr "Простой просмотрщик PDF документов" + +#: app/examples/Misc/PDFViewer/.src/FMain.form:11 +msgid "Open file..." +msgstr "Открыть файл..." + +#: app/examples/Misc/PDFViewer/.src/FMain.form:16 +msgid "About..." +msgstr "О программе..." + +#: app/examples/Misc/PDFViewer/.src/FMain.form:22 +msgid "Rotate" +msgstr "Вращение" + +#: app/examples/Misc/PDFViewer/.src/FMain.form:28 +msgid "Zoom out" +msgstr "Уменьшить" + +#: app/examples/Misc/PDFViewer/.src/FMain.form:34 +msgid "Zoom in" +msgstr "Увеличить" + +#: app/examples/Misc/PDFViewer/.src/FMain.form:43 +msgid "Find text" +msgstr "Найти текст" + +#: app/examples/Misc/PDFViewer/.src/FMain.form:55 app/examples/Misc/PDFViewer/.src/FMain.form:74 +msgid "Previous page" +msgstr "Предыдущая страница" + +#: app/examples/Misc/PDFViewer/.src/FMain.form:63 +msgid "Next Found" +msgstr "Следующий найденный" + +#: app/examples/Misc/PDFViewer/.src/FMain.form:80 +msgid "Page" +msgstr "Страница" + +#: app/examples/Misc/PDFViewer/.src/FMain.form:89 +msgid "Go to this page" +msgstr "Перейти на эту страницу" + +#: app/examples/Misc/PDFViewer/.src/FMain.form:100 +msgid "Next page" +msgstr "Следующая страница" + +#: app/examples/Misc/PDFViewer/.src/Fabout.form:12 +msgid "

    Simple PDF document viewer

    Gambas example by Daniel Campos Fernández and Bernd Brinkmann" +msgstr "

    Простой просмотрщик PDF документов

    Пример Gambas Даниэля Кампоса Фернандеса и Бернда Бринкмана" + diff --git a/app/examples/Misc/PDFViewer/.project b/app/examples/Misc/PDFViewer/.project new file mode 100644 index 00000000..6f8d363c --- /dev/null +++ b/app/examples/Misc/PDFViewer/.project @@ -0,0 +1,21 @@ +# Gambas Project File 3.0 +Title=PdfViewer +Startup=FMain +Icon=pdf.png +Version=3.13.90 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.form +Component=gb.pdf +Description="A simple PDF Viewer, used as example of gb.pdf capabilities" +Authors="Daniel Campos Fernández " +Environment="GB_GUI=gb.qt5" +TabSize=2 +Translate=1 +Language=en +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence +Packager=1 diff --git a/app/examples/Misc/PDFViewer/.src/FMain.class b/app/examples/Misc/PDFViewer/.src/FMain.class new file mode 100644 index 00000000..3cd2794b --- /dev/null +++ b/app/examples/Misc/PDFViewer/.src/FMain.class @@ -0,0 +1,472 @@ +' Gambas class file + +'*************************************************************************** +' +' FMain.class +' +' PdfViewer gb.pdf component example +' +' (C) 2007 Daniel Campos Fernández +' 2012 Bernd Brinkmann (modifications on the search and zoom function) +' +' This program is free software; you can redistribute it and/or modify +' it under the terms of the GNU General Public License as published by +' the Free Software Foundation; either version 1, or (at your option) +' any later version. +' +' This program is free software; you can redistribute it and/or modify +' it under the terms of the GNU General Public License as published by +' the Free Software Foundation; either version 1, or (at your option) +' any later version. +' +' This program is distributed in the hope that it will be useful, +' but WITHOUT ANY WARRANTY; without even the implied warranty of +' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +' GNU General Public License for more details. +' +' You should have received a copy of the GNU General Public License +' along with this program; if not, write to the Free Software +' Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +' +'*************************************************************************** + +Public hPdf As New PdfDocument +Public cIndex As Integer +Public CurrentPage As Integer +Public CurrentZoom As Float = 1.0 +Private bExit As Boolean +Private currentSearchResult As Short = 0 'Contains the information which of the search results on this page is marked +Private NumberOfSearchResults As Integer +Private currentSearchResultSynonyms As Short = 0 +Private ScrollXPositionBeforeZoom As Float +Private ScrollYPositionBeforeZoom As Float + + +Public Sub BtOpen_Click() + + Dialog.Filter = ["*.pdf", ("Pdf documents")] + If Dialog.OpenFile(False) Then Return + + hPdf.Close() + Try hPdf.Open(Dialog.Path) + If Error Then + Message.Error(Error.Text) + Return + End If + + CurrentZoom = 1 + CurrentPage = 1 + RenderPage() + BtPrev.Enabled = False + If hPdf.Count > 1 Then + BtNext.Enabled = True + Else + BtNext.Enabled = False + End If + txtGotoPage.Enabled = True + btZoomIn.Enabled = True + btZoomOut.Enabled = True + btRotate.Enabled = True + pBox.Visible = True + txtFind.Enabled = True + + tvIndex.Clear() + If hPdf.HasIndex Then + tvIndex.Visible = True + AddIndex(0, "") + splIndex.Layout = [1, 3] + Else + tvIndex.Visible = False + End If + +End + +Public Function AddIndex(nItem As Integer, pItem As String) As Integer + + Dim pR As String + Dim iPage As Integer + + Do + iPage = 1 + Try iPage = hPdf.Index.Data.Page + If Error Then Print Error.Text + pR = nItem & "-" & iPage + tvIndex.Add(nItem & "-" & iPage, hPdf.Index.Title, Null, pItem) + Inc nItem + If hPdf.Index.HasChildren Then + hPdf.Index.MoveChild() + nItem = AddIndex(nItem + 1, pR) + hPdf.Index.MoveParent() + End If + Loop Until hPdf.Index.MoveNext() + + Return nItem + +End + +Public Sub tvIndex_Click() + + CurrentPage = Mid(tvIndex.Current.Key, InStr(tvIndex.Current.Key, "-") + 1) + BtPrev.Enabled = True + BtNext.Enabled = True + If CurrentPage = 1 Then BtPrev.Enabled = False + If CurrentPage = hPdf.Count Then BtNext.Enabled = False + RenderPage() + +End + +Public Sub RenderPage(Optional FoundText As String, Optional Casesensetivity As Boolean) + '--------------------------------------------------------------------------- + 'This function is called everytime something changed for example a new search result has to be displayed or the page + 'has canged the parameters FoundText and Casesensetivity are only of interrest if the funktion is called from a search frunction + '-------------------------------------------------------------------------- + Dim hPic As Picture + + ScrollXPositionBeforeZoom = ViewPort.ScrollX / ViewPort.ScrollWidth + ScrollYPositionBeforeZoom = ViewPort.ScrollY / ViewPort.ScrollHeight + + If CurrentZoom > 0.0 Then + hPdf.Zoom = CurrentZoom + Else + Message.Error(("Can't set zoom to ") & CurrentZoom, ("OK")) + Endif + + lblInfo.Text = " " & ("of") & " " & hPdf.Count + If txtGotoPage.text <> CurrentPage Then txtGotoPage.text = CurrentPage 'if the parameter currentPage is different from the current page the current page gets changed + If currentSearchResult = 0 Then 'if a search result is highlighted the focus will not be changed to the top + ViewPort.Scroll(0, 0) + Endif + + hPic = hPdf[CurrentPage].Image.Picture + + 'the search result gets highlighted here and the focus is set to the right position again if something has changed for example the zoomfactor + If currentSearchResult > 0 And FoundText <> "" Then ' resets the mark on the current search result + hPdf[CurrentPage].Find(FoundText, Casesensetivity) + Paint.Begin(hPic) + Paint.Brush = Paint.Color(Color.RGB(0, 0, 255, 192)) + Paint.Rectangle(hPdf[CurrentPage].Result[currentSearchResult - 1].Left, hPdf[CurrentPage].Result[currentSearchResult - 1].Top, hPdf[CurrentPage].Result[currentSearchResult - 1].Width, hPdf[CurrentPage].Result[currentSearchResult - 1].Height) + ViewPort.ScrollY = ViewPort.ScrollHeight * (hPdf[CurrentPage].Result[currentSearchResult - 1].Top / Paint.Height) + Paint.Fill + Paint.End + PBox.Picture = hPic + Endif + + PBox.Picture = hPic + PBox.Resize(hPdf[CurrentPage].Width, hPdf[CurrentPage].Height) + Form_Resize() + +Catch + Message.Info(("An error occurred while trying to view the document.\n\nIf this persists please report this problem.")) + +End + + +Public Sub Form_Resize() + + If CurrentPage = 0 Then Return + ViewPort.ScrollX = ScrollXPositionBeforeZoom * ViewPort.ScrollWidth + ViewPort.Scrolly = ScrollYPositionBeforeZoom * ViewPort.ScrollHeight + +End + + +Public Sub splIndex_Resize() + + Form_Resize() + +End + +Public Sub BtNext_Click() + + Inc CurrentPage + currentSearchResult = 0 + currentSearchResultSynonyms = 0 + If CurrentPage = hPdf.Count Then + BtNext.Enabled = False + End If + BtPrev.Enabled = True + BtPrev.SetFocus + txtGotoPage.text = CurrentPage 'this automatically calls the function txtGotoPage_Change and changes the page to the new "currentPage" + +End + +Public Sub BtPrev_Click() + + Dec CurrentPage + currentSearchResult = 0 + currentSearchResultSynonyms = 0 + If CurrentPage = 1 Then + BtPrev.Enabled = False + End If + BtNext.Enabled = True + BtNext.SetFocus + txtGotoPage.text = CurrentPage 'this automatically calls the function txtGotoPage_Change and changes the page to the new "currentPage" + +End +Public Sub btZoomIn_Click() + + If CurrentZoom < 3 Then CurrentZoom += 0.1 + If CurrentZoom = 3 Then btZoomIn.Enabled = False + btZoomOut.Enabled = True + RenderPage() + +End + +Public Sub btZoomOut_Click() + + If CurrentZoom > 0.5 Then CurrentZoom -= 0.1 + If CurrentZoom = 0.5 Then btZoomOut.Enabled = False + btZoomIn.Enabled = True + RenderPage() + +End + +Public Sub Form_Close() + + hPdf.Close() + +End + +Public Sub Button1_Click() + + Fabout.ShowDialog() + +End + +Public Sub btRotate_Click() + + Select Case hPdf.Orientation + Case PdfDocument.Normal + hPdf.Orientation = PdfDocument.Sideways + Case PdfDocument.Sideways + hPdf.Orientation = PdfDocument.Inverted + Case PdfDocument.Inverted + hPdf.Orientation = PdfDocument.SidewaysInverted + Case PdfDocument.SidewaysInverted + hPdf.Orientation = PdfDocument.Normal + End Select + + RenderPage() + +End + +Public Sub txtGotoPage_Change() + + '--------------------------------------------------------------------------- + 'This function changes the page to the page number written in the textbox "txtGotoPage" + 'the text in this textbox can be changed by the user for example by klicking on the next button or other funktions such as + 'a search funktion + '-------------------------------------------------------------------------- + ' + If Bexit Or Last.text = "" Then Return + 'the last search results get removed by the next four lines + BtSearchNext.Enabled = False + BtSearchPrev.Enabled = False + currentSearchResult = 0 + If Val(Last.text) > hPdf.Count Or Val(Last.text) = hPdf.Count Then 'hPdf.count contains the length of the pdf document + bExit = True + txtGotoPage.text = hPdf.Count + BtNext.Enabled = False 'because the last page is now displayed the next page button gets disabled + BtPrev.Enabled = True + bExit = False + Else + BtNext.Enabled = True + If Val(Last.text) = 1 Or Val(Last.text) < 1 Then + bExit = True + txtGotoPage.text = 1 + bExit = False + BtPrev.Enabled = False + Else + BtPrev.Enabled = True + End If + End If + currentPage = Val(Last.text) + Bexit = False + RenderPage() + +End + +Public Sub txtGotoPage_KeyPress() + + ' If modUtil.AllowKeys(const.AllowKeys_NumbersOnly, Key.code) = False Then + ' Stop Event + ' Return + ' End If + +End + +Public Sub txtFind_Activate() + + '--------------------------------------------------------------------------- + 'This function is called if the user wants fo find the string inside the textbox "TxtFind" by hitting the enter key + '-------------------------------------------------------------------------- + + If Bexit Then Return + If txtFind.Text <> "" Then + If currentSearchResult > 0 Then + If currentSearchResult = NumberOfSearchResults Then + If currentpage = hPdf.Count Then + CurrentPage = 1 + Else + CurrentPage = CurrentPage + 1 + Endif + FindNext() + Else + currentSearchResult = currentSearchResult + 1 + RenderPage(txtFind.Text) + Endif + Else + FindNext() + Endif + End If + +End + +Public Sub txtFind_Click() + + txtFind_Activate + +End + + +Private Sub FindNext() + '--------------------------------------------------------------------------- + ' This function finds the next string in the pdf matching the search string located after the current search result + '--------------------------------------------------------------------------- + Dim hPic As Picture + Dim currentSearchPage As Short = CurrentPage ' contains the information on which page the search funktion searched the last time + Dim LastPageToSearch As Short ' contains the information which page is the last page for the find function + + If CurrentPage = 1 Then + LastPageToSearch = 1 + Else + LastPageToSearch = CurrentPage + + Endif + currentSearchResultSynonyms = 0 + currentSearchResult = 0 + BtSearchNext.Enabled = False + BtSearchPrev.Enabled = False + Repeat + hPic = hPdf[currentSearchPage].Image.Picture + hPdf[currentSearchPage].Find(txtFind.Text, False) + + If hPdf[currentSearchPage].Result.Count > 0 Then + CurrentPage = currentsearchPage + currentSearchResult = 1 + Else + If currentSearchPage = hPdf.Count Then + currentSearchPage = 1 + Else + currentSearchPage = currentSearchPage + 1 + Endif + Endif + Until currentSearchResult <> 0 Or currentSearchPage = LastPageToSearch + If hPdf[currentSearchPage].Result.Count > 0 Then + CurrentPage = currentSearchPage + + txtGotoPage.text = CurrentPage + currentSearchResult = 1 + NumberOfSearchResults = hPdf[currentSearchPage].Result.Count + BtSearchNext.Enabled = True + BtSearchPrev.Enabled = True + + + RenderPage(txtFind.Text) + + Else + txtFind.Background = Color.Lighter(16711680) '16711680 = Red + RenderPage() + + Endif + +Catch + Message.Info(("An error occurred while trying to view the document.\n\nIf this persists please report this problem.") & "\n\n" & Error.Where & ": " & Error.Text) + +End + +Private Sub FindPrevious() + '--------------------------------------------------------------------------- + ' This function finds the next string in the pdf matching the search string located before the current search result + '--------------------------------------------------------------------------- + Dim hPic As Picture + Dim currentSearchPage As Short = CurrentPage ' contains the information on which page the search funktion searched the last time + Dim LastPageToSearch As Short ' contains the information which page is the last page for the find function + + If CurrentPage = hPdf.Count Then + LastPageToSearch = 0 + Else + LastPageToSearch = CurrentPage + Endif + currentSearchResultSynonyms = 0 + currentSearchResult = 0 + BtSearchNext.Enabled = False + BtSearchPrev.Enabled = False + + Repeat + hPic = hPdf[currentSearchPage].Image.Picture + hPdf[currentSearchPage].Find(txtFind.Text, False) + If hPdf[currentSearchPage].Result.Count > 0 Then + CurrentPage = currentsearchPage + currentSearchResult = 1 + Else + If currentSearchPage = 1 Then + currentSearchPage = hPdf.Count + Else + currentSearchPage = currentSearchPage - 1 + Endif + Endif + Until currentSearchResult <> 0 Or currentSearchPage = LastPageToSearch + + If hPdf[currentSearchPage].Result.Count > 0 Then + CurrentPage = currentSearchPage + + txtGotoPage.text = CurrentPage + currentSearchResult = hPdf[currentSearchPage].Result.Count + NumberOfSearchResults = hPdf[currentSearchPage].Result.Count + BtSearchNext.Enabled = True + BtSearchPrev.Enabled = True + RenderPage(txtFind.Text) + Endif + +Catch + Message.Info(("An error occurred while trying to view the document.\n\nIf this persists please report this problem.")) + +End + +Public Sub BtSearchNext_Click() + '--------------------------------------------------------------------------- + 'This funktion is highlighting the next seach string located after the current search string + '--------------------------------------------------------------------------- + If currentSearchResult = NumberOfSearchResults Then + If currentpage = hPdf.Count Then + CurrentPage = 1 + Else + CurrentPage = CurrentPage + 1 + Endif + FindNext() + Else + currentSearchResult = currentSearchResult + 1 + RenderPage(txtFind.Text) + Endif + +End + +Public Sub BtSearchPrev_Click() + '--------------------------------------------------------------------------- + 'This funktion is highlighting the next seach string located before the current search string + '--------------------------------------------------------------------------- + If currentSearchResult > 0 Then + If currentpage = 1 Then + currentpage = hPdf.Count + Else + CurrentPage = CurrentPage - 1 + Endif + FindPrevious() + Else + currentSearchResult = currentSearchResult - 1 + RenderPage(txtFind.Text) + Endif + +End + diff --git a/app/examples/Misc/PDFViewer/.src/FMain.form b/app/examples/Misc/PDFViewer/.src/FMain.form new file mode 100644 index 00000000..fb055f2c --- /dev/null +++ b/app/examples/Misc/PDFViewer/.src/FMain.form @@ -0,0 +1,126 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,106,99) + Text = ("Simple PDF document viewer") + Arrangement = Arrange.Vertical + { HBox1 HBox + MoveScaled(1,2,95,4) + { BtOpen ToolButton + MoveScaled(0,0,4,4) + ToolTip = ("Open file...") + Picture = Picture["icon:/small/open"] + } + { Button1 ToolButton + MoveScaled(4,0,4,4) + ToolTip = ("About...") + Picture = Picture["icon:/small/question"] + } + { btRotate ToolButton + MoveScaled(8,0,4,4) + Enabled = False + ToolTip = ("Rotate") + Picture = Picture["icon:/small/rotate-right"] + } + { btZoomOut ToolButton + MoveScaled(12,0,4,4) + Enabled = False + ToolTip = ("Zoom out") + Picture = Picture["icon:/small/zoom-out"] + } + { btZoomIn ToolButton + MoveScaled(16,0,4,4) + Enabled = False + ToolTip = ("Zoom in") + Picture = Picture["icon:/small/zoom-in"] + } + { Separator3 Separator + MoveScaled(22,0,0,4) + } + { txtFind ButtonBox + MoveScaled(24,0,15,4) + Enabled = False + ToolTip = ("Find text") + Expand = True + Picture = Picture["icon:/small/find"] + Border = False + } + { Panel1 Panel + MoveScaled(40,0,8,4) + Visible = False + Background = Color.TextBackground + { BtSearchPrev Button + MoveScaled(0,0,4,4) + Enabled = False + ToolTip = ("Previous page") + Picture = Picture["icon:/small/left"] + Border = False + } + { BtSearchNext Button + MoveScaled(4,0,4,4) + Enabled = False + Background = Color.TextBackground + ToolTip = ("Next Found") + Picture = Picture["icon:/small/right"] + Border = False + } + } + { Separator1 Separator + MoveScaled(51,0,0,4) + } + { BtPrev ToolButton + MoveScaled(54,0,4,4) + Enabled = False + ToolTip = ("Previous page") + Picture = Picture["icon:/small/left"] + } + { Page Label + MoveScaled(59,0,4,4) + AutoResize = True + Text = ("Page") + Alignment = Align.Right + } + { Panel2 Panel + MoveScaled(64,0,1,4) + } + { txtGotoPage TextBox + MoveScaled(66,0,9,4) + Enabled = False + ToolTip = ("Go to this page") + Alignment = Align.Center + Border = False + } + { lblInfo Label + MoveScaled(75,0,7,4) + AutoResize = True + } + { BtNext ToolButton + MoveScaled(84,0,4,4) + Enabled = False + ToolTip = ("Next page") + Picture = Picture["icon:/small/right"] + } + } + { Separator2 Separator + MoveScaled(36,8,27,0) + } + { splIndex HSplit + MoveScaled(9,11,81,60) + Expand = True + { tvIndex TreeView + MoveScaled(0,0,19,25) + Visible = False + Border = False + } + { ViewPort ScrollView + MoveScaled(36,5,30,32) + Background = Color.TextBackground + Expand = True + Border = False + { PBox PictureBox + MoveScaled(3,3,24,21) + Visible = False + } + } + } +} diff --git a/app/examples/Misc/PDFViewer/.src/Fabout.class b/app/examples/Misc/PDFViewer/.src/Fabout.class new file mode 100644 index 00000000..10033197 --- /dev/null +++ b/app/examples/Misc/PDFViewer/.src/Fabout.class @@ -0,0 +1,43 @@ +' Gambas class file + +'*************************************************************************** +' +' FAbout.class +' +' PdfViewer gb.pdf component example +' +' (C) 2007 Daniel Campos Fernández +' +' +' This program is free software; you can redistribute it and/or modify +' it under the terms of the GNU General Public License as published by +' the Free Software Foundation; either version 1, or (at your option) +' any later version. +' +' This program is free software; you can redistribute it and/or modify +' it under the terms of the GNU General Public License as published by +' the Free Software Foundation; either version 1, or (at your option) +' any later version. +' +' This program is distributed in the hope that it will be useful, +' but WITHOUT ANY WARRANTY; without even the implied warranty of +' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +' GNU General Public License for more details. +' +' You should have received a copy of the GNU General Public License +' along with this program; if not, write to the Free Software +' Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +' +'*************************************************************************** + +Public Sub btOK_Click() + + Me.Close() + +End + +Public Sub Form_Open() + + + +End diff --git a/app/examples/Misc/PDFViewer/.src/Fabout.form b/app/examples/Misc/PDFViewer/.src/Fabout.form new file mode 100644 index 00000000..1b8565a2 --- /dev/null +++ b/app/examples/Misc/PDFViewer/.src/Fabout.form @@ -0,0 +1,32 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,48,22) + Resizable = False + Arrangement = Arrange.Vertical + Spacing = True + Margin = True + { TextLabel1 TextLabel + MoveScaled(2,2,45,13) + Expand = True + Text = ("

    Simple PDF document viewer

    Gambas example by Daniel Campos Fernández and Bernd Brinkmann") + Alignment = Align.Center + } + { Panel1 HBox + MoveScaled(13,16,32,4) + { Panel2 Panel + MoveScaled(4,0,2,4) + Expand = True + } + { btOK Button + MoveScaled(10,0,15,4) + Text = ("OK") + Default = True + Cancel = True + } + { Panel3 Panel + MoveScaled(26,0,2,4) + Expand = True + } + } +} diff --git a/app/examples/Misc/PDFViewer/pdf.png b/app/examples/Misc/PDFViewer/pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..651ded047317f9ff354a60a1ef9fd656a2720939 GIT binary patch literal 4588 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 z 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 iflC>9-Uboi{R7GHb4$42TLtETRC~JmxvX, YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Misc/SystemTray/.project:16 +msgid "SystemTray" +msgstr "Системный трей" + +#: app/examples/Misc/SystemTray/.project:17 +msgid "" +"X11 System tray example.\n" +"\n" +"This example shows how to create a system tray with the gb.desktop.x11 component." +msgstr "" +"Пример системного трея X11.\n" +"\n" +"В этом примере показано, как создать системный трей с компонентом gb.desktop.x11." + +#: app/examples/Misc/SystemTray/.src/FMain.form:5 +msgid "System tray" +msgstr "Системный лоток" + diff --git a/app/examples/Misc/SystemTray/.project b/app/examples/Misc/SystemTray/.project new file mode 100644 index 00000000..1553b823 --- /dev/null +++ b/app/examples/Misc/SystemTray/.project @@ -0,0 +1,16 @@ +# Gambas Project File 3.0 +Title=SystemTray +Startup=FMain +Icon=icon.png +Version=1.0.0 +Component=gb.image +Component=gb.gui +Component=gb.form +Component=gb.desktop +Component=gb.desktop.x11 +Description="X11 System tray example.\n\nThis example shows how to create a system tray with the gb.desktop.x11 component." +TabSize=2 +Translate=1 +Language=fr +Vendor=Example +Packager=1 diff --git a/app/examples/Misc/SystemTray/.src/FMain.class b/app/examples/Misc/SystemTray/.src/FMain.class new file mode 100644 index 00000000..2c792ffe --- /dev/null +++ b/app/examples/Misc/SystemTray/.src/FMain.class @@ -0,0 +1,45 @@ +' Gambas class file + +'Private $hImage As Image + +Public Sub _new() + + 'Me.Background = &H007FFF 'Color.SetAlpha(&H007FFF, 192) + +End + +Public Sub Form_Open() + + X11Systray.Show(dwgSystemTray.Handle, dwgSystemTray.Background) + +End + +Static Public Sub X11Systray_Arrange() + + Dim I As Integer + Dim X, Y, H As Integer + + Debug X11Systray.Count + X = 2 + Y = 2 + For I = 0 To X11Systray.Count - 1 + With X11Systray[I] + Debug I;; .IconW;; .IconH + If (X + .IconW) >= (Me.ClientW - 2) Then + X = 2 + Y += H + 2 + H = 0 + Endif + .Move(X, Y, .IconW, .IconH) + H = Max(H, .IconH) + X += .IconW + 2 + End With + Next + +End + +Public Sub dwgSystemTray_Arrange() + + X11Systray.Move(0, 0, dwgSystemTray.Width, dwgSystemTray.Height) + +End diff --git a/app/examples/Misc/SystemTray/.src/FMain.form b/app/examples/Misc/SystemTray/.src/FMain.form new file mode 100644 index 00000000..160008fc --- /dev/null +++ b/app/examples/Misc/SystemTray/.src/FMain.form @@ -0,0 +1,14 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,48,27) + Text = ("System tray") + Arrangement = Arrange.Fill + Margin = True + { dwgSystemTray DrawingArea + MoveScaled(8,2,24,24) + Background = &HFFFF00& + Border = Border.Plain + Cached = True + } +} diff --git a/app/examples/Misc/SystemTray/bg.png b/app/examples/Misc/SystemTray/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..7aa2ddb11f4b1cbde5ba7af09c5fb5b1379f47ae GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^3JeU43>+*#R>g`ve}Pn%r;B4q#jUsJ4stRm@US?F za&J$zp0H<)g21O4zwaA;o;UHzCz2f|g6G~Y?TNylE L{an^LB{Ts5O#vu< literal 0 HcmV?d00001 diff --git a/app/examples/Misc/SystemTray/icon.png b/app/examples/Misc/SystemTray/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7b22ad890590a54e372bb70ab931baf3249b907b GIT binary patch literal 4363 zcmV+m5%lhfP)iUkr~%ceZA9ut5Qhn%e9{A~>Ojg`? z^<-1MeYrG!T`9V=DOUC6=r+* zQjJ2nJ~h~#di1mJzwBT8a_Mnk3aCUx#MYpH9R$SS9cE0u_s{Oye&d1h^3A>3)Zjo* zmXX06>sR)%vM-C0lEWu!LaGnheZ&3LiKYhzO! z&sUf%)hU$glV`2S-SZEB^p*z`7Ew)D!=hYbu>>SdJ`42x^|yZb_8t39{zWd6UN_K_ zVcn_$eskk0j1e3fuP{+^@q?wgnWY4S-6_@%XHnAdi@js)Kb~h|sz$k1f9*}{hQIu| z4_xt7!WtSZGC(edfLY+*^M(KX#8lP0ZJ@VHoO{LqZ@X|ULMV0}nxf$?+8XDTjH9?< zZ7-UDXI?(a-q8sridEB_Qg=V_$=|)hw(UZK1fK=E!$JuV3GkVh_njEJ?dw0d6Ra&m zeOcaj^{{Jvw9EA9=CS|X%l4i7sn_c-e(?iWT>sv8TzHZh zSD15>od}SCdi2rfyFT*3|J)-j=iTS8Tg6S+T+Azni%U+wda^dxT)2|8!(9Lz8n3YJ zg%cF3-je#0z;9o$f^R;#lV9#Wg7&B*3yz6@uOEsO7=3Sq=?wTiWx#dl9 zf;3Cyd>!8XPZ-+wg4JTYKS0)*JAj#{br2S&VUWT1!PfnJIgmmttfQqT1n z%Gn)Paj4tDb-g8zb8@QANPjnHuI$4%V)IW$0XLM^}eZ~mGb-#5X zM<=QT+ALYMfrBSX9SJyiVk)eTEMu&luTAoYTQ;K&c*1;!^Lu(1MS!^U!#3H>N0H*3 z^=n4RWi$9%6D&i8lH(2NjN-SV((}HA>^{gasy3(;)+dYVUTAtu=1ng(hu7U zCV;Y^M#+x?Tz$zK7%w)$6WnrC8yqLYm;Yl2rK&q?$YRyyA0K)SC!N99%N#2(>^)Xu z%bPa>0+hOqvY&1Tbyh`4h^>mtR=*h`RuA^&NZAhM`kcGSqQpt1IGV5Wv44J=8{fKt zjc4`)@XFyl4?ew{nlI?;%A%LD$F>7!*$nsP7@sVxW??y}Ln>q8>r;1%+;en_EtkE4Z$I%fkk;?B ze&k2AV(=lPM6wEFa2%WE;KvA-QWf(8jb#J^(Tv+HortvMg!dXTLM>>@ z3Y!V&w*_ z58+w!5Fi^4!WsaBved#YKqMaq$Bo2FXK{r9X}~ggUb$mezA*&A%;q3wlVIX&a}yy1 ztnABRTavMSDg2$#1ISd<=G#nwPK79p!S%qhG;=@7p98#!t_fzYNr};6I^27?fY*s7?4>AMYDf+t{v<}FZ>OA?}0gmUZ z&7B$@_fa6zyfrlwPzf|y@?g$!eHY(%<}d&ej&20V5a5jex4s(@{@xhLLUJl!gKq>P z9AJ92l`!;mSq$eKgn&xjqf~3~%F!ZwMhp192fEz@ArTRv0aKtzNvBpAbjTp(o&hI-O;XKXAP?<5A-3phAY;fF7e zQLMTlD5FEr1`skFsvQX?h+SX;tGj6#nh8ktY78eaf+J&-9GPrjDM8AXIJUyE6pn3& zpY0U34N8HsY?PE(mP8;CLL#I zN?|EQU?hPtc)rFj7AY2sXswy67`uPG2EAScPR#^CqnqC(iUG&Q1~XfSh{ysED*Rz+ zrANs(J7RM|WECE+ehOm@)d_IYB>fm6LqCte&TbXHk<@)b#e=Daq3mgDfxs7GKS6Xr zno~p+JEV#<@mWOLLV9x>%`*u?lZa0?f1D@Ti;TL673Qpc4Tz*||u3 zPJo~OJH94bC%?c0jj^PeQ5-gcbgD zn&~!dPp^h*{yS;Hosud@+?RBLdHSDam12gtOb?V!gfT$t$3twL2sm)BOWoa$F$LUe zI0_P|5>Y_BqCb<$=AX-7U)N?t0#>yx+4Jq?B89X zrtd)ONve}!C(3Tl^jgWF4H?r;J^ygCT%c)_FzrFla>>Mb#InP{SD65<^LX6BuMV_5 ziM5@PG249VlLrWb`|v#&-vjBMFct{WL8FNo1EmQljzi%nOdW>>6*L6o55vS^$dAI* zSagzWXYy@S*^urI=j^-S>-#9y4j8koZFy?Wr^7-B$s7N49VxjDE47+6o5AS{eQJ6e zihb2;30x{nUP|Lke&wnKfSy|hKDHftN21I+2(!Ft)uDCjU?$zQ)6kfL!@mUIJ4z#X zE5EvPUpw=k*CvfI8qYt5Z@xm{8IJ7=f!Y~ny8&}=L(7$Uw_y_IFTslDc5D{}zQNO9 z#q*EN1%6%v0NC}l3f0=T@PmhOD{y#6Xa#n+p;1MdNd)f81%6#3=OMo%P@N#~Pvi~Wx-bpTtpEC3HF8L8VqPybe}h1dR#= ze&qix=_>+ig_)zO08q0Dny&0b?=l%PbEJ(+VY%=bVzd88DlKp_F#1av-w%O%oQi(~ zFYbHJnEz^Y#J12kMa9U6x>((RJ+{0X%gNEZ8qU5fEaV4X+yHe0VUzU&tU2p_>D52zM0YdW9ImMm4)D1c$7MEf0aW030(gc zeD4JLBd}*1pu=>zoxisxLZW4-h_lSrYso{jp{zm8Prlg`1}mqYJrrcaPf`Fsa}u>~02-o%qDAFr8Z zhq=PRpF_P2LGTiF_ahu<2jgF>bn^Qp6EJ<#dDo?|&pMAT=gZh?3o0$>9)`7-LbgA2 z31gaxXfpkl?Q*)>6P388%{?C^kg;901QgWoVB2%a+K#wYL&?lF5h`}`>( zAhd>SEH-U8L!{ET;iy}UP=i=$=vxhIF9~z;IG{}jz9?7FjUV-PY{^=Bhx8RA}yYm^TcrgWO<9Mk*Vcb9}bY0r>SW&2Chn zbP`VPgL-M&|1Cws5pK=1GJG)@3L$$Y`Ty{;W*LkP3)H?%X zHn?t(Z3=qCZEOMYo}Z}x1{ympYnG6^wI4jvC^R0XTs=Z|DsNtV$X(t{PZI&tor-HL zHlCZoN_U~GAvTN?9naaE%Q?__{c%f+IWv84v_Mf$(sO zb)H{WGv>3W_J41F-2`+b2RPjzU$+Fj9^@1p*#Cda{{eJ&29gO$F&Usk(()=0V*|Eq$q)G@OV-RewoH}aFv20m(GB;@n9KKW4LzUxhFu81E()_yWzA%)ch z5Y;uLPaR=I<}y~8O)#WTLS41}E5QXGV0pIXlPV#tnJ4CB26VL^U^Fia;X0U(GqlGv zE30n7?5jsAfs=@11tUm#?Zhy%nE70lu#}R?3p~JFod>v1lC#5Y_+l|I2H)m;8R>53 zwmcta%0Gt^ist&Cv3%`TA~{9ZPJmhOccpaF5=z*Xkh3nlvW3v0w|8>3xgO7eyM7}% z(M9OALpZO1=r(H?I~IZPEfIa8}b^yam1_wn4^SkSwh(J@!o&s+rP(O z{PBH!@q0UY^Cv&zTQC1FPI(n77@^PyW5VUbk6y*? zm3QAwHV`Q)qN}%$C;#PX(!ng!u7|eA&`uID5r8}=iRoxzX~E&3l{0(!s6i8k<^=XPNc7C}(>Mx=@F}a$3Mj8%2qh-xq5)yd%wX}xyFcdh+w1tR z6N(|*LkowHFi13Z+C{rAYUKw0?H~Ud-_mkKejvbF) zuq>S~Xg9^Jx$TtYXR&whZt@F0$FRS0>bz1yhzU>E8X=X}Zy6zal|)LJiG9K#rcZ&7 z-`T|@n=5Hd1~_MYjCUL*yLJ=f@gc?>m%MN`mXZh|D86kw&;I8VI0s&#Rag`R6#um8 z_vv&Tmh|_q<^DhW)ZAOAZPrIyDK7|d=+Gfzu^9V%hEa>pUt6Hbp3^84@{o4)Q2 z{xx?6wP)IS=u8X!Jwx;vi^XlH*n0n?Oxm6A<~gI>96CuwQILj)29_;bMq@`3xukC9 zwMtC!v?Rifgn9+QQ*R}^Cu;!O7|Zp%Lf1(#*x$sey5+p|_8vM$5(Ep1u_9514!ldw z>W#$D_480Hz(>g}TKBv~(UylvjK-1g?IPyboIvv6{g1LZR{g1syfZ#bO|Y32rFk4Y zc#z78Hc2BU_0`Mte3qc4#8qivhN+k%T`_Xzi=W1p1&ev7xsUAR39M)?BgYTo3x$c6)e^{E%%7~?j4u$Hf6~cu znj7Aui#uqLLVqu^~o%eg;P&;#ZV~94rMn1;yNa>pk;I zT5FG{y+3E)8$YDA@qGdTA7i6&Hf`F({{8z|vt|wN?K_57elPxD@S-+^nwAWDW|{z& zOin7JJ%pA5=<~VCC=n3cGnoO#xL}sT*$FR+!;usAl8*zoAe0eQWU0LDdyMOZl%VUe#wtX8% zjviq}){OPgv?-uOaMPDLFFw$`g}~*l9UuQbPlktx{g<0d68SwgS0j5 z=Yik+6507nFH3-&kYvO94U`m@;HF&;HXOuFyVTUwkW3~q#*kZ7I;U?LlWPDnJxxxG zH&|d>60A%bJe3wla~4s%w1O9&|1nnM8{`%gpoQSIw|3!W=OZ_4Wy6;3Fx-nV0%Ocn zJ<)F|8aoH@t^PH}2fFynuYZ+>mXB#`IXojJ{bg-w*-F-~T}y3kEoEh8l$Vub+X;ff zAi24@G#)ulc5cC(Yzd5* zYhxOS}Qb#|+XpNXiK!oz)9NELoOH0`3 zhrroxL|SpYX+O?*d`^p-^>;oXRufeqZ4ll?>U4|pi@5Wy9h4qBz)w3m@E4X67lyw69=2`yZCF*q@}_z|IB}Rh z6(qE5B?d!a^+raMSq1eC zdwF~JYlJIm3FI#!9?j*LF`PbghN_c?_>CQp%(>H(IBWYkJD!h>-9bV28gfdjFTbQN zjI<_rDl;txNF@`KTY?Op6rT`M{r&(CZh3%bU*3st^=-KEVG8{L(rE`F1lf!7x$DmR zxTWrPT3U`#-}oWz{k=F^Q=DH&Z1WDpm41F!K19wk@^Y44+5JLDF;M}Zi~$1R_2cGi zqiMblkW8iXTx|kZ_Jm(;SW={d0pB1%)W<*HS1q2l0F3a)ZC7E87Iw;0+DtEy-5?Mk zg-}{bA%rklelrdeQ()xW@M+hd?N6jUnY2?A6YB<40F(=Xa6svibMe!YM+H#ugZJCt z4@C1SJtKWLumC8b)2Y$H(|@=*b|=t3B>=Dkr~<-(AGkiBa6dhGK$^@(sT06|PYM8; zZKNf@N?<9F3xv4DZt~9{G?~, YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Misc/WatchGambasDirectory/.project:15 +msgid "WatchGambasDirectory" +msgstr "Наблюдать за директорией Gambas" + +#: app/examples/Misc/WatchGambasDirectory/.project:16 +msgid "" +"Watch the Gambas temporary directory, /tmp/gambas.UID, to detect starting and ending Gambas processes.\n" +"\n" +"This project shows basic usage of gb.inotify's Watch class without going very far in demonstrating its capabilities/available events." +msgstr "" +"Смотреть временный каталог Gambas, /tmp/gambas.UID, чтобы определить начало и конец процессов Gambas.\n" +"\n" +"Этот проект демонстрирует базовое использование класса Watch из gb.inotify, но не слишком далеко демонстрирует его возможности/доступные события." + +#: app/examples/Misc/WatchGambasDirectory/.src/MMain.module:10 +msgid "I'm watching... You may now start Gambas projects." +msgstr "Я наблюдаю... Теперь вы можете запустить проекты Gambas." + +#: app/examples/Misc/WatchGambasDirectory/.src/MMain.module:11 +msgid "Return toggles Pause/Resume. Enter \"quit\" to quit." +msgstr "Клавиша Enter переключает Пауза/Возобновление. Введите «выйти» для выхода." + +#: app/examples/Misc/WatchGambasDirectory/.src/MMain.module:18 +msgid "quit" +msgstr "выйти" + +#: app/examples/Misc/WatchGambasDirectory/.src/MMain.module:20 +msgid "Currently" +msgstr "В данный момент" + +#: app/examples/Misc/WatchGambasDirectory/.src/MMain.module:20 +msgid "inactive" +msgstr "неактивен" + +#: app/examples/Misc/WatchGambasDirectory/.src/MMain.module:20 +msgid "active" +msgstr "активен" + +#: app/examples/Misc/WatchGambasDirectory/.src/MMain.module:25 +msgid "New Gambas process:" +msgstr "Новый процесс Gambas:" + +#: app/examples/Misc/WatchGambasDirectory/.src/MMain.module:34 app/examples/Misc/WatchGambasDirectory/.src/MMain.module:51 +msgid "(unknown)" +msgstr "(неизвестный)" + +#: app/examples/Misc/WatchGambasDirectory/.src/MMain.module:52 +msgid "terminated (normally)" +msgstr "прервано (нормально)" + diff --git a/app/examples/Misc/WatchGambasDirectory/.project b/app/examples/Misc/WatchGambasDirectory/.project new file mode 100644 index 00000000..67b64484 --- /dev/null +++ b/app/examples/Misc/WatchGambasDirectory/.project @@ -0,0 +1,14 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.5.90 +Title=WatchGambasDirectory +Startup=MMain +Icon=watch.svg +Version=3.6.2 +VersionFile=1 +Component=gb.inotify +Description="Watch the Gambas temporary directory, /tmp/gambas.UID, to detect starting and ending Gambas processes.\n\nThis project shows basic usage of gb.inotify's Watch class without going very far in demonstrating its capabilities/available events." +Authors="(C) 2014 Tobias Boege , GPLv2+." +TabSize=2 +SourcePath=/tmp +Packager=1 +Translate=1 diff --git a/app/examples/Misc/WatchGambasDirectory/.src/MMain.module b/app/examples/Misc/WatchGambasDirectory/.src/MMain.module new file mode 100644 index 00000000..074904a8 --- /dev/null +++ b/app/examples/Misc/WatchGambasDirectory/.src/MMain.module @@ -0,0 +1,54 @@ +' Gambas module file + +Private $hWatch As Watch + +Public Sub Main() + ' The watched events are determined automatically by the event handlers defined + $hWatch = New Watch("/tmp/gambas." & Str$(User.Id), True) As "GambasDirectory" + $hWatch.Tag = New Collection ' Save descendants here + + Print ("I'm watching... You may now start Gambas projects.") + Print ("Return toggles Pause/Resume. Enter \"quit\" to quit.") +End + +Public Sub Application_Read() + Dim sBuf As String + + Line Input sBuf + If sBuf = ("quit") Then Quit + $hWatch.IsPaused = Not $hWatch.IsPaused + Print ("Currently");; IIf($hWatch.IsPaused, ("inactive"), ("active")) +End + +Public Sub GambasDirectory_Create() + If Not Watch.IsDir Then Return ' Skip files + Print ("New Gambas process:");; + ' Watch.Name is the PID of the new Gambas process. Try to get its name + ' from the /proc filesystem. + With Split(File.Load("/proc" &/ Watch.Name &/ "cmdline"), "/") + Last.Tag[Watch.Name] = Left$(.[.Max], -1) + Print Last.Tag[Watch.Name] + End With + + Catch + Print ("(unknown)") + ' Opening the /proc file may fail because the directory may have been + ' deleted already (if the process was relatively short-lived and this + ' event took longer than that to get from the kernel to us). +End + +Public Sub GambasDirectory_Delete() + Dim sName As String + + If Not Watch.IsDir Then Return + sName = Last.Tag[Watch.Name] + ' Sadly, we can only provide a name for dying processes that we watched + ' being created -- the /proc file is already gone at this point. + ' + ' Note that if the interpreter crashes (the process ends abnormally), + ' directories won't be removed so we won't notice that the process is + ' gone. + If Not sName Then sName = ("(unknown)") + Print sName;; ("terminated (normally)") + Last.Tag.Remove(Watch.Name) +End diff --git a/app/examples/Misc/WatchGambasDirectory/watch.svg b/app/examples/Misc/WatchGambasDirectory/watch.svg new file mode 100644 index 00000000..758d0b7a --- /dev/null +++ b/app/examples/Misc/WatchGambasDirectory/watch.svg @@ -0,0 +1,1257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/examples/Multimedia/CDPlayer/.directory b/app/examples/Multimedia/CDPlayer/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Multimedia/CDPlayer/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Multimedia/CDPlayer/.icon.png b/app/examples/Multimedia/CDPlayer/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..66db8113c4362dc5ddc299203d0108488652af6a GIT binary patch literal 4311 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 FV1i$pHsk;R literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/CDPlayer/.lang/ca.po b/app/examples/Multimedia/CDPlayer/.lang/ca.po new file mode 100644 index 00000000..201e1f47 --- /dev/null +++ b/app/examples/Multimedia/CDPlayer/.lang/ca.po @@ -0,0 +1,60 @@ +# Catalan translation of CDPlayer +# Copyright (C) 2000-2010 Benoît Minisini. +# This file is distributed under the same license as the CDPlayer package. +# Jordi Sayol , 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: CDPlayer\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2011-04-07 05:18+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: .project:2 +msgid "A Tiny CDplayer" +msgstr "Un petit reproductor de CD" + +#: .project:1 Fcdplayer.form:16 +msgid "CDplayer" +msgstr "Reproductor de CD" + +#: Fcdplayer.form:33 +msgid "&Eject" +msgstr "&Expulsa" + +#: Fcdplayer.class:22 +msgid "I Could not load cd-rom drive" +msgstr "No es pot carregar el cd-rom" + +#: Fcdplayer.form:28 +msgid "&Play" +msgstr "&Reprodueix" + +#: Fcdplayer.form:48 +msgid "Play &Track" +msgstr "Reprodueix la &pista" + +#: Fcdplayer.form:43 +msgid "&Stop" +msgstr "&Atura" + +#: Fcdplayer.form:22 +msgid "Track" +msgstr "Pista" + +#: Fcdplayer.form:57 +msgid "Volume" +msgstr "Volum" + +#: Fcdplayer.class:26 +msgid "Your PC does not have cd-rom drive" +msgstr "El vostre PC no té unitat de cd-rom." + diff --git a/app/examples/Multimedia/CDPlayer/.lang/cs.po b/app/examples/Multimedia/CDPlayer/.lang/cs.po new file mode 100644 index 00000000..b94759f5 --- /dev/null +++ b/app/examples/Multimedia/CDPlayer/.lang/cs.po @@ -0,0 +1,52 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 Fcdplayer.form:16 +msgid "CDplayer" +msgstr "-" + +#: .project:2 +msgid "A Tiny CDplayer" +msgstr "Lehký CDpřehlávač" + +#: Fcdplayer.class:22 +msgid "I Could not load cd-rom drive" +msgstr "Nemohu načíst CD-ROM" + +#: Fcdplayer.class:26 +msgid "Your PC does not have cd-rom drive" +msgstr "Váš počítač nemá cd-rom mechaniku" + +#: Fcdplayer.form:22 +msgid "Track" +msgstr "Stopa" + +#: Fcdplayer.form:28 +msgid "&Play" +msgstr "-" + +#: Fcdplayer.form:33 +msgid "&Eject" +msgstr "&Vysunout" + +#: Fcdplayer.form:43 +msgid "&Stop" +msgstr "-" + +#: Fcdplayer.form:48 +msgid "Play &Track" +msgstr "&Přehrát stopu" + +#: Fcdplayer.form:57 +msgid "Volume" +msgstr "Hlasitost" diff --git a/app/examples/Multimedia/CDPlayer/.lang/es.po b/app/examples/Multimedia/CDPlayer/.lang/es.po new file mode 100644 index 00000000..bfb15eaa --- /dev/null +++ b/app/examples/Multimedia/CDPlayer/.lang/es.po @@ -0,0 +1,44 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:2 +msgid "A Tiny CDplayer" +msgstr "Un pequeño CDPlayer" + +#: Fcdplayer.class:151 .project:1 +msgid "CDplayer" +msgstr "CDplayer" + +#: Fcdplayer.class:169 +msgid "&Eject" +msgstr "&Expulsar" + +#: Fcdplayer.class:164 +msgid "&Play" +msgstr "&Tocar" + +#: Fcdplayer.class:186 +msgid "Play &Track" +msgstr "Tocar &Canción" + +#: Fcdplayer.class:181 +msgid "&Stop" +msgstr "&Parar" + +#: Fcdplayer.class:157 +msgid "Track" +msgstr "Canción" + +#: Fcdplayer.class:196 +msgid "Volume" +msgstr "Volumen" + diff --git a/app/examples/Multimedia/CDPlayer/.lang/ru.po b/app/examples/Multimedia/CDPlayer/.lang/ru.po new file mode 100644 index 00000000..639e0b82 --- /dev/null +++ b/app/examples/Multimedia/CDPlayer/.lang/ru.po @@ -0,0 +1,90 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Multimedia/CDPlayer/.project:20 app/examples/Multimedia/CDPlayer/.src/Fcdplayer.form:5 +msgid "CDplayer" +msgstr "CD-плеер" + +#: app/examples/Multimedia/CDPlayer/.project:21 +msgid "A Tiny CDplayer" +msgstr "Крошечный CD-плеер" + +#: app/examples/Multimedia/CDPlayer/.src/Fcdplayer.class:22 +msgid "I Could not load cd-rom drive" +msgstr "Не удалось загрузить CD-ROM привод" + +#: app/examples/Multimedia/CDPlayer/.src/Fcdplayer.class:26 +msgid "Your PC does not have cd-rom drive" +msgstr "Ваш компьютер не имеет привода CD-ROM" + +#: app/examples/Multimedia/CDPlayer/.src/Fcdplayer.class:35 app/examples/Multimedia/CDPlayer/.src/Fcdplayer.class:109 app/examples/Multimedia/CDPlayer/.src/Fcdplayer.class:136 app/examples/Multimedia/CDPlayer/.src/Fcdplayer.form:15 +msgid "&Play" +msgstr "Игра" + +#: app/examples/Multimedia/CDPlayer/.src/Fcdplayer.class:58 +msgid "No CD in Drive" +msgstr "В приводе нет CD" + +#: app/examples/Multimedia/CDPlayer/.src/Fcdplayer.class:64 +msgid "Tracks" +msgstr "Треки" + +#: app/examples/Multimedia/CDPlayer/.src/Fcdplayer.class:65 +msgid "Total Length :" +msgstr "Общая длина:" + +#: app/examples/Multimedia/CDPlayer/.src/Fcdplayer.class:72 +msgid "Playing Track" +msgstr "Играющий трек" + +#: app/examples/Multimedia/CDPlayer/.src/Fcdplayer.class:81 app/examples/Multimedia/CDPlayer/.src/Fcdplayer.form:10 +msgid "Track" +msgstr "Трек" + +#: app/examples/Multimedia/CDPlayer/.src/Fcdplayer.class:115 app/examples/Multimedia/CDPlayer/.src/Fcdplayer.class:127 +msgid "&Pause" +msgstr "Пауза" + +#: app/examples/Multimedia/CDPlayer/.src/Fcdplayer.class:121 +msgid "&Resume" +msgstr "Возобновить" + +#: app/examples/Multimedia/CDPlayer/.src/Fcdplayer.form:19 +msgid "&Eject" +msgstr "Извлечь" + +#: app/examples/Multimedia/CDPlayer/.src/Fcdplayer.form:27 +msgid "&Stop" +msgstr "Стоп" + +#: app/examples/Multimedia/CDPlayer/.src/Fcdplayer.form:31 +msgid "Play &Track" +msgstr "Воспроизвести трек" + +#: app/examples/Multimedia/CDPlayer/.src/Fcdplayer.form:39 +msgid "Volume" +msgstr "Громкость" + diff --git a/app/examples/Multimedia/CDPlayer/.project b/app/examples/Multimedia/CDPlayer/.project new file mode 100644 index 00000000..09f960c3 --- /dev/null +++ b/app/examples/Multimedia/CDPlayer/.project @@ -0,0 +1,19 @@ +# Gambas Project File 3.0 +Title=CDplayer +Startup=Fcdplayer +Icon=cdrom.png +Version=3.13.90 +VersionFile=1 +Component=gb.image +Component=gb.qt5 +Component=gb.qt5.ext +Component=gb.sdl.sound +Description="A Tiny CDplayer" +TabSize=2 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence +Packager=1 diff --git a/app/examples/Multimedia/CDPlayer/.src/Fcdplayer.class b/app/examples/Multimedia/CDPlayer/.src/Fcdplayer.class new file mode 100644 index 00000000..33d6508d --- /dev/null +++ b/app/examples/Multimedia/CDPlayer/.src/Fcdplayer.class @@ -0,0 +1,139 @@ +' Gambas class file + +' Simple CDplayer +' Carlier Laurent - (c) 2005 +' Under GNU GPL V2 or Later +' +' Done for Testing the sdl component +' CDROM part + +Static mycd As CDRom +Static HaveCD As Boolean + +Public Sub Form_open() + If CDRoms.Count > 0 Then + Try mycd = New CDRom + If Not IsNull(mycd) Then + Volume.Value = Abs(mycd.Volume - Volume.MaxValue) + TrackPos.Value = 0 + Me.Center + Timer1.Enabled = True + Else + Message.Warning(("I Could not load cd-rom drive")) + Me.Close + Endif + Else + Message.Warning(("Your PC does not have cd-rom drive")) + Me.Close + Endif + +End + +Public Sub SButton_Click() + + mycd.Stop() + PButton.Text = ("&Play") + TrackPos.Value = 0 + +End + +Public Sub PTButton_Click() + + If Not HaveCD Then + Return + Endif + + mycd.Tracks[TrackInfo.Index + 1].Play() + +End + +Public Sub Timer1_Timer() + + Dim trckloop As Integer + Dim string1 As String + Dim string2 As String + + If Not mycd.Ready Then + TrackInfo.Clear() + TextBox1.Text = ("No CD in Drive") + HaveCD = False + Return + Endif + + If mycd.Stopped Then + string1 = mycd.Tracks.Count & " " & ("Tracks") + string2 = ("Total Length :") & " " & ToTime(mycd.Length) + TextBox1.Text = string1 & Space$(41 - (Len(string1) + Len(string2))) & string2 + TrackPos.Value = 0 + Endif + + If mycd.Playing Or mycd.Paused Then + TrackPos.Value = (mycd.Tracks[mycd.Tracks.Current].Position) / mycd.Tracks[mycd.Tracks.Current].length + TextBox1.Text = ("Playing Track") & " " & mycd.Tracks.Current + Endif + + If HaveCD Then + Return + Endif + + TrackInfo.Clear() + For trckloop = 1 To mycd.Tracks.Count + string1 = ("Track") & " " & trckloop + string2 = "<" & ToTime(mycd.Tracks[trckloop].Length) & ">" + TrackInfo.Add(string1 & Space$(49 - (Len(string1) + Len(string2))) & string2) + Next + + Volume.Value = Abs(mycd.Volume - 255) + HaveCD = True + +End + +Public Function ToTime(length As Integer) As String + + Dim myString As String + + mystring = Format$(length \ 60, "00") & ":" & Format$((length Mod 60), "00") + Return myString + +End + +Public Sub Volume_Change() + + mycd.Volume = Abs(Volume.Value - Volume.MaxValue) + +End + +Public Sub PButton_Click() + + If Not HaveCD Then + PButton.Text = ("&Play") + Return + Endif + + If mycd.Stopped Then + mycd.Play() + PButton.Text = ("&Pause") + Return + Endif + + If mycd.Playing Then + mycd.Pause() + PButton.Text = ("&Resume") + Return + Endif + + If mycd.Paused Then + mycd.Resume() + PButton.Text = ("&Pause") + Endif + +End + +Public Sub EButton_Click() + + Try mycd.Eject + HaveCD = False + PButton.Text = ("&Play") + TrackPos.Value = 0 + +End diff --git a/app/examples/Multimedia/CDPlayer/.src/Fcdplayer.form b/app/examples/Multimedia/CDPlayer/.src/Fcdplayer.form new file mode 100644 index 00000000..e52dc819 --- /dev/null +++ b/app/examples/Multimedia/CDPlayer/.src/Fcdplayer.form @@ -0,0 +1,47 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(69.7143,114.7143,50,26) + Text = ("CDplayer") + Icon = Picture["cd.png"] + Resizable = False + { TrackInfo ComboBox + MoveScaled(1,1,48,4) + ToolTip = ("Track") + ReadOnly = True + } + { PButton Button + MoveScaled(1,11,21,4) + Text = ("&Play") + } + { EButton Button + MoveScaled(1,16,21,4) + Text = ("&Eject") + } + { TextBox1 TextBox + MoveScaled(1,6,43,4) + ReadOnly = True + } + { SButton Button + MoveScaled(23,11,21,4) + Text = ("&Stop") + } + { PTButton Button + MoveScaled(23,16,21,4) + Text = ("Play &Track") + } + { Timer1 #Timer + #MoveScaled(36,1) + } + { Volume Slider + MoveScaled(46,6,3,17) + Mouse = Mouse.SizeS + ToolTip = ("Volume") + MaxValue = 255 + PageStep = 30 + Mark = True + } + { TrackPos ProgressBar + MoveScaled(1,21,43,4) + } +} diff --git a/app/examples/Multimedia/CDPlayer/cdrom.png b/app/examples/Multimedia/CDPlayer/cdrom.png new file mode 100644 index 0000000000000000000000000000000000000000..fa1dbc8b79bbe3c7bfd5cba80cca665c66f7266f GIT binary patch literal 3987 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 literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/MediaPlayer/.directory b/app/examples/Multimedia/MediaPlayer/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Multimedia/MediaPlayer/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Multimedia/MediaPlayer/.hidden/screenshots/MediaPlayer.jpg b/app/examples/Multimedia/MediaPlayer/.hidden/screenshots/MediaPlayer.jpg new file mode 100644 index 0000000000000000000000000000000000000000..65929eb055a6e80d4aa6e5a7a5cdf909b56cfc1a GIT binary patch literal 144138 zcmeEu2T)Vp_U}odcL*9VKqvwUMM^-bgc1lHLN6*Ef+9_%h|&=Q(m{xbp@d#U0l^AN zM>;5?C<210sE7p-;T`n*?)~ol&zt{!ciww5@6E+I!*I?%d#|=xL#NluvQtH}jN?P*DIHlc5AS^5_>}>2v4i2P}C`wf6fB9#p1K?qX z?_r9CLBs$k4+O>o+35mA006=OQoBp=A3qQ%49>vF#LU9V1`cT92A~ia3<`%aFu>v9 z=riDR0M5g}E2^l=$Y<@&Bo>TNipwft7T0U)AuK>>V7PoISm~eSH1M{-GzsPK8HAMkORBC7(+z}`T{kHLabC)j&0Q=3>-#GgxzIZ^spl~=0&a}%H1R4%rFdjIAs3Ie;t~HZ;FrS!G z95X^MtE8!uMO>Nmk>4X^jCGF$?&bcqUDkea_OCG(|8H^jH^%PKovR&9%V~IIHlgghrsgyZ@M<-U4%i0Eyx%hsJJ>yA`rYb5N%M5dAJ^4+NAJH~hh zg!TU)7ytbuM|J>@jmOqgvjxr s7Cpu(={4bpR)!Rc!_wK(@%P5jZ8qy9XRJqk&g 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

    F;%X(yiUoBjvLC;R35KMLJn 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 literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/MediaPlayer/.lang/fr.po b/app/examples/Multimedia/MediaPlayer/.lang/fr.po new file mode 100644 index 00000000..d930dc66 --- /dev/null +++ b/app/examples/Multimedia/MediaPlayer/.lang/fr.po @@ -0,0 +1,64 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Media player based on GStreamer" +msgstr "" + +#: .project:2 +msgid "This example is a demonstration of how to use GStreamer with Gambas to play any sound or video file." +msgstr "" + +#: FControl.form:39 +msgid "MediaPlayer, a media player example based on GStreamer made by Benoît Minisini" +msgstr "MediaPlayer, un exemple de lecteur multimedia basé sur GStreamer programmé par Benoît Minisini" + +#: FMain.class:176 +msgid "Select a media file" +msgstr "Choisissez un fichier son ou vidéo" + +#: FMain.class:197 FTags.form:109 +msgid "Video device" +msgstr "Périphérique video" + +#: FMain.class:223 +msgid "Select a subtitle file" +msgstr "Choisissez un fichier de sous-titres" + +#: FTags.class:12 +msgid "Hue" +msgstr "Teinte" + +#: FTags.class:14 +msgid "Saturation" +msgstr "Saturation" + +#: FTags.class:16 +msgid "Contrast" +msgstr "Contraste" + +#: FTags.class:18 +msgid "Brightness" +msgstr "Luminosité" + +#: FTags.class:109 +msgid "No video device" +msgstr "Aucun périphérique video" + +#: FTags.form:45 +msgid "Information" +msgstr "Information" + +#: FTags.form:78 +msgid "Balance" +msgstr "Balance" diff --git a/app/examples/Multimedia/MediaPlayer/.lang/ru.po b/app/examples/Multimedia/MediaPlayer/.lang/ru.po new file mode 100644 index 00000000..347b2881 --- /dev/null +++ b/app/examples/Multimedia/MediaPlayer/.lang/ru.po @@ -0,0 +1,92 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Multimedia/MediaPlayer/.project:56 +msgid "Media player based on GStreamer" +msgstr "Медиапроигрыватель на основе GStreamer" + +#: app/examples/Multimedia/MediaPlayer/.project:57 +msgid "" +"Media player example.\n" +"\n" +"This example is a demonstration of how to use GStreamer with Gambas to play any sound or video file." +msgstr "" +"Пример медиаплеера.\n" +"\n" +"Этот пример демонстрирует, как использовать GStreamer с Gambas для воспроизведения любого звукового или видеофайла." + +#: app/examples/Multimedia/MediaPlayer/.src/FControl.form:26 +msgid "MediaPlayer, a media player example based on GStreamer made by Benoît Minisini" +msgstr "Медиапроигрыватель от Бенуа Минисини, пример медиаплеера на основе GStreamer" + +#: app/examples/Multimedia/MediaPlayer/.src/FMain.class:206 +msgid "Select a media file" +msgstr "Выбрать медиа файл" + +#: app/examples/Multimedia/MediaPlayer/.src/FMain.class:227 app/examples/Multimedia/MediaPlayer/.src/FTags.form:80 +msgid "Video device" +msgstr "Видеоустройство" + +#: app/examples/Multimedia/MediaPlayer/.src/FMain.class:253 +msgid "Select a subtitle file" +msgstr "Выбрать файл субтитров" + +#: app/examples/Multimedia/MediaPlayer/.src/FTags.class:12 +msgid "Hue" +msgstr "Тон" + +#: app/examples/Multimedia/MediaPlayer/.src/FTags.class:14 +msgid "Saturation" +msgstr "Насыщенность" + +#: app/examples/Multimedia/MediaPlayer/.src/FTags.class:16 +msgid "Contrast" +msgstr "Контраст" + +#: app/examples/Multimedia/MediaPlayer/.src/FTags.class:18 +msgid "Brightness" +msgstr "Яркость" + +#: app/examples/Multimedia/MediaPlayer/.src/FTags.class:109 +msgid "No video device" +msgstr "Нет видеоустройства" + +#: app/examples/Multimedia/MediaPlayer/.src/FTags.form:26 +msgid "Information" +msgstr "Информация" + +#: app/examples/Multimedia/MediaPlayer/.src/FTags.form:54 +msgid "Balance" +msgstr "Баланс" + +#: app/examples/Multimedia/MediaPlayer/.src/MTest.module:30 +msgid "I will take a screenshot in 5 seconds..." +msgstr "Я сделаю скриншот через 5 секунд..." + +#: app/examples/Multimedia/MediaPlayer/.src/MTest.module:40 +msgid "Screenshot saved to '~/screenshot.png'!" +msgstr "Скриншот сохранён в ~/screenshot.png!" + diff --git a/app/examples/Multimedia/MediaPlayer/.project b/app/examples/Multimedia/MediaPlayer/.project new file mode 100644 index 00000000..1d2c495a --- /dev/null +++ b/app/examples/Multimedia/MediaPlayer/.project @@ -0,0 +1,55 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.8.90 +Title=Media player based on GStreamer +Startup=FMain +Icon=icon.png +Version=1.0.0 +Component=gb.image +Component=gb.gui +Component=gb.form +Component=gb.desktop.x11 +Component=gb.desktop +Component=gb.form.dialog +Component=gb.settings +Component=gb.media +Description="Media player example.\n\nThis example is a demonstration of how to use GStreamer with Gambas to play any sound or video file." +Environment="GB_GUI=gb.qt5" +TabSize=2 +Translate=1 +Language=en +Maintainer=benoit +Vendor=Example +Address=benoit@black-tower +Url=www.endoftheinternet.com +License=General Public License +PackageName=mediaplayer-3.5.0 +PackageVersion=2 +CreateEachDirectory=1 +Packager=1 +Systems=slackware +Menus=archlinux:"Applications/Video" +Categories=archlinux:"Video" +Groups=archlinux:"video" +Menus=debian:"Applications/Video" +Categories=debian:"Video" +Groups=debian:"video" +Menus=fedora:"Audio Video/Video/Player" +Categories=fedora:"AudioVideo;Player;Video" +Groups=fedora:"Applications/Multimedia" +Menus=mageia:"Multimedia/Video" +Categories=mageia:"AudioVideo;Video" +Groups=mageia:"Video" +Menus=mandriva:"Multimedia/Video" +Categories=mandriva:"AudioVideo;Video" +Groups=mandriva:"Video" +Menus=slackware:"Audio Video/Video/Player" +Categories=slackware:"AudioVideo;Player;Video" +Groups=slackware:"Applications/Multimedia" +Menus=suse:"Audio Video/Video/Player" +Categories=suse:"AudioVideo;Player;Video" +Groups=suse:"Productivity/Multimedia/Video/Players" +Menus=ubuntu:"Applications/Video" +Categories=ubuntu:"Video" +Groups=ubuntu:"video" +Tags=Audio,AudioVideo,Video,Multimedia +CreateMenu=1 diff --git a/app/examples/Multimedia/MediaPlayer/.src/CAnimation.class b/app/examples/Multimedia/MediaPlayer/.src/CAnimation.class new file mode 100644 index 00000000..a756ab55 --- /dev/null +++ b/app/examples/Multimedia/MediaPlayer/.src/CAnimation.class @@ -0,0 +1,101 @@ +' Gambas class file + +Static Private All As New CAnimation[] + +Event Stop + +Property Read Object As Object + +Private $hObject As Object +Private $sProperty As String +Private $fTarget As Float +Private $fTime As Float +Private $hTimer As Timer + +Static Public Sub Start(hObject As Control, sProperty As String, fTarget As Float, iTime As Integer, Optional hParent As Object) + + Dim hAnim As CAnimation + Dim aStop As New CAnimation[] + + For Each hAnim In All + If hAnim.Object = hObject Then aStop.Add(hAnim) + Next + + For Each hAnim In aStop + hAnim.Stop + Next + + hAnim = New CAnimation(hObject, sProperty, fTarget, iTime) + All.Add(hAnim) + + If hParent Then Object.Attach(hAnim, hParent, "Animation") + +End + +Static Public Sub Exit() + + While All.Count + All[0].Stop + Wend + +End + + + +Public Sub _new(hObject As Control, sProperty As String, fTarget As Float, iTime As Integer) + + 'Debug hObject.Tag;; sProperty;; fTarget + + $hObject = hObject + $sProperty = sProperty + $fTarget = fTarget + $fTime = Timer + iTime / 1000 + + $hTimer = New Timer As "Timer" + $hTimer.Delay = 50 + $hTimer.Start + +End + +Public Sub Timer_Timer() + + Dim fValue As Float + Dim iSign As Integer + Dim fDiff As Float + + fValue = Object.GetProperty($hObject, $sProperty) + + iSign = Sgn($fTarget - fValue) + fDiff = $fTime - Timer + fValue += ($fTarget - fValue) / (1000 * fDiff / $hTimer.Delay) + + If fDiff <= 0 Or If iSign = 0 Or If iSign > 0 And fValue >= $fTarget Or If iSign < 0 And fValue <= $fTarget Then + Object.SetProperty($hObject, $sProperty, $fTarget) + {Stop} + Else + Object.SetProperty($hObject, $sProperty, fValue) + Endif + +Catch + + {Stop} + +End + +Public Sub Stop() + + $hTimer.Stop + $hTimer = Null + $hObject = Null + + All.Remove(All.Find(Me)) + + Raise Stop + +End + +Private Function Object_Read() As Object + + Return $hObject + +End diff --git a/app/examples/Multimedia/MediaPlayer/.src/CButton.class b/app/examples/Multimedia/MediaPlayer/.src/CButton.class new file mode 100644 index 00000000..37c68705 --- /dev/null +++ b/app/examples/Multimedia/MediaPlayer/.src/CButton.class @@ -0,0 +1,215 @@ +' Gambas class file + +Export + +Inherits DrawingArea + +Event Click + +Property Image As Image +Property Opacity As Float +Property Highlight As Boolean +Property Shortcut As String +Property Text As String +Property Font As Font + +Public Const MIN_OPACITY As Float = 0.2 +Public Const MAX_OPACITY As Float = 0.8 + +Private $hObs As Observer +Private $hImage As Image +Private $hDraw As Image +'Private $bInside As Boolean +'Private $hTimer As Timer +Private $fOpacity As Float = MIN_OPACITY +Private $bHighlight As Boolean +'Private $hTimer As Timer +Private $sShortcut As String +Private $sText As String +Private $hFont As Font + +Public Sub _new() + + $hObs = New Observer(Me) As "DrawingArea" + '$hTimer = New Timer As "Timer" + '$hTimer.Delay = 50 + Me.Mouse = Mouse.Pointing + '$hTimer = New Timer As "Timer" + +End + +Public Sub DrawingArea_Enter() + + If Not Me.Enabled Then Return + CAnimation.Start(Me, "Opacity", MAX_OPACITY, 250) + +End + +Public Sub DrawingArea_Leave() + + If Not Me.Enabled Then Return + CAnimation.Start(Me, "Opacity", MIN_OPACITY, 250) + +End + +Public Sub DrawingArea_MouseUp() + + If Not Me.Enabled Then Return + Raise Click + Stop Event + +End + +Public Sub DrawingArea_Draw() + + If $hDraw Then + Draw.Image($hDraw, 2, 2) + Endif + + If $bHighlight Then + Paint.Begin(Me) + Paint.Brush = Paint.Color(Color.SetAlpha(Color.White, 192)) + Paint.Rectangle(0, 0, Me.W, Me.H) + Paint.Fill + Paint.End + Endif + +End + +Private Function Image_Read() As Image + + Return $hImage + +End + +Private Sub Image_Write(Value As Image) + + $hImage = Value '.Stretch(Me.W - 4, Me.H - 4) + SetOpacity + +End + +Private Sub SetOpacity() + + Dim W, H As Integer + Dim hFont As Font + + If Not $hImage Then Return + + $hDraw = $hImage.Stretch(Me.W - 4, Me.H - 4) + Paint.Begin($hDraw) + + If $sShortcut Then + + Paint.Font = Font["Bold,+2"] + + Paint.Brush = Paint.Color(Color.SetAlpha(Color.White, 64)) + 'For X = -2 To 2 + ' For Y = -2 To 2 + ' Paint.DrawText($sShortcut, $hDraw.W - 16 + X, $hDraw.H - 16 + Y, 16, 16, Align.Center) + ' Next + 'Next + Paint.Arc($hDraw.W - 12, $hDraw.H - 12, 12) + Paint.Fill + + Paint.Brush = Paint.Color(Color.SetAlpha(Color.Black, 64)) + Paint.DrawText($sShortcut, $hDraw.W - 24, $hDraw.H - 24, 24, 24, Align.Center) + + Endif + + If $sText Then + Paint.Brush = Paint.Color(Color.SetAlpha(Color.White, 64)) + If $hFont Then + hFont = $hFont + Else + hFont = Font["Bold,+1"] + Endif + Paint.Font = hFont + W = hFont.TextWidth($sText) + 4 + H = hFont.TextHeight($sText) + 2 + Paint.Rectangle(($hDraw.W - W) / 2, $hDraw.H - H, W, H) + Paint.Fill + Paint.Brush = Paint.Color(Color.SetAlpha(Color.Black, 64)) + Paint.DrawText($sText, ($hDraw.W - W) / 2, $hDraw.H - H, W, H, Align.Center) + Endif + + Paint.End + + $hDraw.Opacity($fOpacity) + Me.Refresh + +End + +Private Function Opacity_Read() As Float + + Return $fOpacity + +End + +Private Sub Opacity_Write(Value As Float) + + $fOpacity = Max(0, Min(1, Value)) + SetOpacity + +End + +Private Function Highlight_Read() As Boolean + + Return $bHighlight + +End + +Private Sub Highlight_Write(Value As Boolean) + + $bHighlight = Value + Me.Refresh + +End + + +Private Function Shortcut_Read() As String + + Return $sShortcut + +End + +Private Sub Shortcut_Write(Value As String) + + $sShortcut = Value + SetOpacity + Me.Refresh + +End + +Private Function Text_Read() As String + + Return $sText + +End + +Private Sub Text_Write(Value As String) + + $sText = Value + SetOpacity + Me.Refresh + +End + +Private Function Font_Read() As Font + + Return $hFont + +End + +Private Sub Font_Write(Value As Font) + + $hFont = Value.Copy() + +End + +Public Sub DrawingArea_Arrange() + + SetOpacity + +End + diff --git a/app/examples/Multimedia/MediaPlayer/.src/FControl.class b/app/examples/Multimedia/MediaPlayer/.src/FControl.class new file mode 100644 index 00000000..2e0f4c0f --- /dev/null +++ b/app/examples/Multimedia/MediaPlayer/.src/FControl.class @@ -0,0 +1,133 @@ +' Gambas class file + +Private sldTime As DrawingArea +Private lblTime As DrawingArea + +Private $sInfo As String +Private $iMinOpacity As Integer = 70 +Private $sTitle As String + +Public Sub SetMinOpacity(iOpacity As Integer) + + $iMinOpacity = iOpacity + If Me.Opacity < $iMinOpacity Then + CAnimation.Start(Me, "Opacity", $iMinOpacity, 250) + Endif + +End + + +Public Sub _new() + + panToolbar.H = 48 + Desktop.Scale * 2 + + FMain.CreateButtons(["eject", "video", "config", "play", "pause", "stop", "screenshot", "fullscreen", "subtitle", "visualisation", "-"], panToolbar) + + sldTime = New DrawingArea(panToolbar) As "sldTime" + sldTime.Resize(8, 8) + sldTime.Expand = True + sldTime.Tracking = True + sldTime.Mouse = Mouse.Pointing + + lblTime = New DrawingArea(panToolbar) As "lblTime" + lblTime.Resize(8, 8) + lblTime.Font = Font["Bold,+5"] + lblTime.W = lblTime.Font.TextWidth("99:99:99 / 99:99:99") + 16 + + FMain.CreateButtons(["-", "volume", "quit"], panToolbar) + + Me.H = 48 + Desktop.Scale * 6 + lblTitle.Font.Height + Me.Arrangement = Arrange.Vertical + panToolbar.Arrangement = Arrange.Horizontal + + FMain.GetButton("visualisation").Font = Font["-2"] + +End + +Public Sub lblTime_Draw() + + Paint.Brush = Paint.Color(Color.SetAlpha(Color.White, 128)) + Paint.Font = lblTime.Font + Paint.DrawText($sInfo, 0, 0, Paint.W, Paint.H, Align.Center) + +End + +Public Sub sldTime_Draw() + + Dim fLength As Float = FMain.GetLength() + If fLength = 0 Then Return + + Paint.Brush = Paint.Color(Color.SetAlpha(Color.White, 192)) + Paint.Rectangle(0, (Paint.H - 16) / 2, Paint.W, 16) + Paint.Fill + Paint.Brush = Paint.Color(Color.SetAlpha(Color.White, 128)) + Paint.Rectangle(0, (Paint.H - 16) / 2, Paint.W * FMain.GetPos() / fLength, 16) + Paint.Fill + +End + +Public Sub sldTime_MouseDown() + + If Mouse.Left Then FMain.SetPos(Mouse.X / sldTime.W) + +End + +Public Sub sldTime_MouseMove() + + If Mouse.Left Then FMain.SetPos(Mouse.X / sldTime.W) + +End + +Public Sub SetInfo(sInfo As String) + + $sInfo = sInfo + lblTime.Refresh + sldTime.Refresh + +End + +Public Sub Form_KeyPress() + + FMain.Form_KeyPress + +End + +Public Sub SetTitle(sTitle As String) + + $sTitle = sTitle + lblTitle.Text = sTitle + lblTitle.Foreground = &HBFBFBF& + +End + +Public Sub SetError(sError As String) + + If lblTitle.Foreground = Color.Red Then + sError = Trim(lblTitle.Text & " " & sError) + Endif + + lblTitle.Text = sError + lblTitle.Foreground = Color.Red + timError.Start + +End + +Public Sub timError_Timer() + + SetTitle($sTitle) + timError.Stop + +End + + +' Public Sub Form_Move() +' +' Debug Me.X;; Me.Y;; Me.W;; Me.H;; "->";; Me.Y + Me.H +' +' End +' +' Public Sub Form_Resize() +' +' Debug Me.X;; Me.Y;; Me.W;; Me.H;; "->";; Me.Y + Me.H +' +' End diff --git a/app/examples/Multimedia/MediaPlayer/.src/FControl.form b/app/examples/Multimedia/MediaPlayer/.src/FControl.form new file mode 100644 index 00000000..b32b80ee --- /dev/null +++ b/app/examples/Multimedia/MediaPlayer/.src/FControl.form @@ -0,0 +1,37 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,64,23) + Background = &H000000& + Resizable = False + Border = False + Utility = True + Opacity = 70 + Spacing = True + { Panel3 Panel + MoveScaled(25,0,12,1) + Background = &H3F3F3F& + } + { Panel1 HBox + MoveScaled(1,3,61,6) + AutoResize = True + { Panel2 Panel + MoveScaled(2,0,2,4) + } + { lblTitle Label + MoveScaled(13,1,43,2) + Font = Font["Bold,+5"] + Foreground = &HBFBFBF& + Expand = True + Text = ("MediaPlayer, a media player example based on GStreamer made by Benoît Minisini") + } + } + { panToolbar Panel + MoveScaled(1,10,57,9) + Margin = True + } + { timError #Timer + #MoveScaled(54,13) + Delay = 5000 + } +} diff --git a/app/examples/Multimedia/MediaPlayer/.src/FMain.class b/app/examples/Multimedia/MediaPlayer/.src/FMain.class new file mode 100644 index 00000000..581ca152 --- /dev/null +++ b/app/examples/Multimedia/MediaPlayer/.src/FMain.class @@ -0,0 +1,616 @@ +' Gambas class file + +'Property TagsX As Integer + +Private $hPlayer As MediaPlayer +Private $hImage As MediaControl +Private $hFilter As MediaFilter +Private $hOutput As MediaContainer +Private $aVisualisation As MediaControl[] + +Private $fPos As Float +Private $fLength As Float +Private $iVisualisation As Integer +Private $fVolume As Float +Private $bSuspend As Boolean +Private $bShowTags As Boolean +'Private $iTagsX As Integer + +Public Sub _new() + + Application.MainWindow = Me + '$iTagsX = - FTags.W + +End + +Private Sub AddVisualisation(sType As String, sTitle As String) + + Dim hVisualisation As MediaControl + + If sType Then + hVisualisation = New MediaControl($hPlayer, sType) + hVisualisation.Tag = sTitle + Endif + + $aVisualisation.Add(hVisualisation) + +Catch + + Error sType; ": "; Error.Text + +End + +Private Sub MakeMediaPlayer() + + $hPlayer = New MediaPlayer As "MediaPlayer" + + '$hOutput = New MediaContainer($hPlayer) + '$hOutput.Name = "MyOutput" + + $hFilter = New MediaFilter($hPlayer) + $hImage = New MediaControl($hPlayer, "ximagesink") + '$hFilter.LinkTo($hImage) + + '$hOutput.AddInput($hImage) + + $hPlayer.Video.Output = $hImage + + $aVisualisation = New MediaControl[] + AddVisualisation("", "") + AddVisualisation("goom", "Goom") + AddVisualisation("goom2k1", "Goom2") + AddVisualisation("libvisual_bumpscope", "Bump") + AddVisualisation("libvisual_corona", "Corona") + AddVisualisation("libvisual_infinite", "Infinite") + AddVisualisation("libvisual_jakdaw", "Jakdaw") + AddVisualisation("libvisual_jess", "Jess") + AddVisualisation("monoscope", "Mono") + AddVisualisation("libvisual_oinksie", "Oinksie") + AddVisualisation("libvisual_lv_analyzer", "Analyzer") + AddVisualisation("libvisual_lv_scope", "Scope") + AddVisualisation("spacescope", "Space") + AddVisualisation("spectrascope", "Spectra") + AddVisualisation("synaescope", "Synae") + AddVisualisation("wavescope", "Wave") + + $iVisualisation = 0 + UpdateVisualisation + +End + +Public Sub GetButton(sKey As String) As CButton + + Return FControl.Controls["#" & sKey] + +End + + +Public Sub CreateButtons(aButton As String[], hParent As Container) + + Dim sKey As String + Dim sImg As String + Dim hPanel As Panel + Dim hButton As CButton + Dim iPos As Integer + + For Each sKey In aButton + + If sKey = "<->" Then + hPanel = New Panel(hParent) + hPanel.Expand = True + hPanel.Resize(8, 48) + Else If sKey = "-" Then + hPanel = New Panel(hParent) + hPanel.Resize(8, 48) + Else + + sImg = sKey + iPos = InStr(sImg, "#") + If iPos Then sImg = Left(sImg, iPos - 1) + + hButton = New CButton(hParent) As "Button" + hButton.Resize(48, 48) + hButton.Image = Image.Load(sImg & ".png") + hButton.Tag = sKey + hButton.Name = "#" & sKey + 'If cTooltip Then hButton.Tooltip = cTooltip[sImg] + 'If $cShortcut Then hButton.Shortcut = $cShortcut[sImg] + '$cButton[hButton.Tag] = hButton + Endif + Next + +End + + +Public Sub Form_Open() + + MakeMediaPlayer + + FControl.Show + FControl.Raise + + RefreshVolume + +End + +Public Sub Form_KeyPress() + + If Key.Code = Key.Escape Then Action("quit") + +End + +Private Sub GetDevice(sName As String) As String + + Try Return Scan(sName, "* (*)")[1] + +End + +' Private Sub FindChildFromType(hCont As MediaContainer, sType As String) As MediaControl +' +' Dim hCtrl As MediaControl +' +' For I = 0 To hCont.Children.Count - 1 +' hCtrl = hCont.Children[I] +' If hCtrl.Type = sType Then Return hCtrl +' Next +' +' End + +Private Sub Dump(hCont As MediaContainer, Optional iIndent As Integer) + + Dim I As Integer + Dim hCtrl As MediaControl + Dim sOutput As String + + If iIndent = 0 Then + Print "Source: "; $hPlayer.Input.Name + Print "[-------------------------------------------" + Endif + For I = 0 To hCont.Children.Count - 1 + hCtrl = hCont.Children[I] + Print Space$(iIndent * 2); hCtrl;; hCtrl.Name;; "["; hCtrl.Type; "]";; "=>";; hCtrl.Parent.Name + + For Each sOutput In hCtrl.Inputs + With hCtrl.GetLink(sOutput) + If Not .Peer Then Continue + Print Space$(iIndent * 2); "| "; sOutput; " <--- "; .Peer.Name; "."; .Output + End With + Next + + For Each sOutput In hCtrl.Outputs + With hCtrl.GetLink(sOutput) + If Not .Peer Then Continue + Print Space$(iIndent * 2); "| "; sOutput; " ---> "; .Peer.Name; "."; .Input + End With + Next + + If hCtrl Is MediaContainer Then + Dump(hCtrl, iIndent + 1) + Endif + Next + If iIndent = 0 Then Print "-------------------------------------------]" + +End + +Private Sub Action(sAction As String) + + Dim fPos As Float + Dim iState As Integer + Dim sName As String + Dim iName As Integer + Dim sVideo As String + + Select sAction + + Case "eject" + Dialog.Title = ("Select a media file") + If Not Dialog.OpenFile() Then + FControl.SetTitle(File.Name(Dialog.Path)) + Action("stop") + $hPlayer.URL = Media.URL(Dialog.Path) + $hPlayer.Subtitles.Enabled = False + If Exist(File.SetExt(Dialog.Path, "srt")) Then + $hPlayer.Subtitles.URL = Media.URL(File.SetExt(Dialog.Path, "srt")) + $hPlayer.Subtitles.Enabled = True + Endif + UpdateSubtitle + FTags.Clear($hPlayer) + + Action("play") + + Endif + + Case "video" + + sVideo = FTags.GetVideoDevice() + If sVideo Then + FControl.SetTitle(("Video device") & " " & sVideo) + Action("stop") + $hPlayer.Subtitles.Enabled = False + $hPlayer.URL = "v4l2://" & GetDevice(sVideo) + UpdateSubtitle + FTags.Clear($hPlayer) + Action("play") + Endif + + Case "info", "config" + If $bShowTags Then + CAnimation.Start(FTags, "Opacity", 0, 250, Me) + 'CAnimation.Start(Me, "TagsX", - FTags.W, 250) + Else + FTags.X = - FTags.W + FTags.Show + CAnimation.Start(FTags, "Opacity", 70, 250) + 'CAnimation.Start(Me, "TagsX", 0, 250) + Endif + $bShowTags = Not $bShowTags + + Case "subtitle" + 'If $hPlayer.State = Media.Playing Or If $hPlayer.State = Media.Paused Then + ' $hPlayer.Subtitles.Enabled = Not $hPlayer.Subtitles.Enabled + ' UpdateSubtitle + 'Else + Dialog.Title = ("Select a subtitle file") + If Not Dialog.OpenFile() Then + $hPlayer.Subtitles.URL = Media.URL(Dialog.Path) + $hPlayer.Subtitles.Enabled = True + UpdateSubtitle + Endif + 'Endif + + Case "play" + SuspendScreenSaver + $hImage.SetWindow(dwgVideo) ', panLeft.X + panLeft.W + 8, panLeft.Y + 8, Me.W - panLeft.X - panLeft.W - 16, Me.H - panLeft.Y - 16) + EnableVideoFilter + Sleep 0.1 + Try $hPlayer.Play + If Not Error Then + dwgVideo.Mouse = Mouse.Blank + timTime.Start + Dump($hPlayer) + Else + ResumeScreenSaver + Try $hPlayer.Stop + $fLength = 0 + Endif + + Case "stop" + ResumeScreenSaver + Try $hPlayer.Stop + $fLength = 0 + timTime.Stop + dwgVideo.Mouse = Mouse.Default + + Case "pause" + ResumeScreenSaver + $hPlayer.Pause + dwgVideo.Mouse = Mouse.Default + timTime.Stop + + Case "fullscreen" + Me.FullScreen = Not Me.FullScreen + Me.Maximized = Not Me.FullScreen + Form_Resize + + Case "volume" + $hPlayer.Audio.Mute = Not $hPlayer.Audio.Mute + RefreshVolume + + 'Case "balance" + 'FBalance.Visible = Not FBalance.Visible + + Case "visualisation" + + iState = $hPlayer.State + If iState <> Media.Null And If iState <> Media.Ready Then + fPos = $hPlayer.Position + $hPlayer.Stop + $hPlayer.Close + timTime.Stop + 'FadeOut + Endif + + Inc $iVisualisation + If $iVisualisation >= $aVisualisation.Count Then $iVisualisation = 0 + UpdateVisualisation + + If iState <> Media.Null And If iState <> Media.Ready Then + $hPlayer.Pause + $hPlayer.Position = fPos + $hPlayer.State = iState + If iState = Media.Playing Then timTime.Start + 'FadeIn + Endif + + Case "quit" + Me.Close + + Case "screenshot" + + Do + Inc iName + sName = "~/MediaPlayerScreenshot" + If iName > 1 Then sName &= "-" & CStr(iName) + sName &= ".jpg" + If Not Exist(sName) Then Break + Loop + Try $hPlayer.Video.Image.Save(sName) + If Error Then FControl.SetError(Error.Text) + + Case "seek-forward" + FControl.Y = Screen.H - FControl.H + + Case "seek-backward" + FControl.Y = 600 + + End Select + +End + +Public Sub Button_Click() + + Action(Last.Tag) + +End + +' Public Sub Form_Arrange() +' +' panToolbar.Move(0, Me.H - panToolbar.H, Me.W, panToolbar.H) +' +' End + +Public Sub timTime_Timer() + + $fPos = $hPlayer.Position + If $fLength = 0 Then $fLength = $hPlayer.Duration + FControl.SetInfo(Format(CDate(($fPos + 0.5) / 86400), "hh:nn:ss") & " / " & Format(CDate($fLength / 86400), "hh:nn:ss")) + +End + +Public Sub GetLength() As Float + + Return $fLength + +End + +Public Sub GetPos() As Float + + Return $fPos + +End + +Public Sub SetPos(fPos As Float) + + If $hPlayer.State = Media.Paused Or If $hPlayer.State = Media.Playing Then + If $fLength Then + $fPos = fPos * $fLength + '$hPlayer.Pause + 'FadeOut + $hPlayer.Position = $fPos + '$hPlayer.Play + 'FadeIn + Endif + Endif + +End + +Public Sub Form_Resize() + + 'Debug Me.X;; Me.Y;; Me.W;; Me.H;; FControl.H;; Me.Y + Me.H - FControl.H + 'Debug "FControl.Move:";; Me.X;; Me.Y + Me.H - FControl.H;; Me.W;; FControl.H + FControl.Move(dwgVideo.ScreenX, dwgVideo.ScreenY + dwgVideo.H - FControl.H, dwgVideo.W, FControl.H) + FTags.Move(dwgVideo.ScreenX, dwgVideo.ScreenY, FTags.W, dwgVideo.H - FControl.H) + +End + +Public Sub Form_Close() + + ResumeScreenSaver + CAnimation.Exit + +End + +Public Sub Button_MouseWheel() + + $hPlayer.Audio.Mute = False + + If Mouse.Delta > 0 Then + $hPlayer.Audio.Volume = Min(1, (Sqr($hPlayer.Audio.Volume) + 0.05) ^ 2) + Else + $hPlayer.Audio.Volume = Max(0, (Sqr($hPlayer.Audio.Volume) - 0.05) ^ 2) + Endif + + RefreshVolume + +End + +Private Sub RefreshVolume() + + Dim sImage As String + Dim fVolume As Float + + With GetButton("volume") + + If $hPlayer.Audio.Mute Then + sImage = "mute" + .Text = "" + Else + fVolume = Sqr($hPlayer.Audio.Volume) + .Text = Format(fVolume, "0%") + sImage = "volume-" & Min(3, CInt(fVolume * 4)) + Endif + + .Image = Image.Load(sImage & ".png") + + End With + +End + +Private Sub UpdateSubtitle() + + GetButton("subtitle").Text = If($hPlayer.Subtitles.Enabled, "ON", "") + +End + +Private Sub UpdateVisualisation() + + Dim hVis As MediaControl = $aVisualisation[$iVisualisation] + + $hPlayer.Video.Visualisation = hVis + If hVis Then + GetButton("visualisation").Text = hVis.Tag + $hImage.SetWindow(dwgVideo) + $hPlayer.Position = $hPlayer.Position + Else + GetButton("visualisation").Text = "" + $hImage.SetWindow(Null) + Endif + +End + +Public Sub dwgVideo_Draw() + + If $hPlayer.State = Media.Null Then + Draw.Font = Font["+16"] + Draw.Foreground = Color.Gray + Draw.RichText("Gambas Almost Means Basic!", 0, 0, dwgVideo.Width, dwgVideo.Height, Align.Center) + Endif + +End + +Public Sub MediaPlayer_End() + + Action("stop") + +End + +Public Sub MediaPlayer_Message((Source) As MediaControl, Type As Integer, Message As String) + + Select Case Type + Case Media.Info + Print "(i)"; + Case Media.Warning + Print "/!\\"; + Case Media.Error + Print "[*]"; + End Select + Print " "; Message + + If Type = Media.Error Then + FControl.SetError(Message) + Action("stop") + Endif + +End + + +Public Sub MediaPlayer_Tag(TagList As MediaTagList) + + Dim sTag As String + Dim vTag As Variant + Dim I As Integer + + For Each sTag In TagList.Tags + vTag = TagList[sTag] + If TypeOf(vTag) = gb.Object And If vTag Is Array Then + For I = 0 To vTag.Max + FTags.AddTag(sTag & "[" & CStr(I) & "]", Str(vTag[I])) + Next + Else + FTags.AddTag(sTag, Str(vTag)) + Endif + Next + +End + + +Private Sub FadeOut() + + $fVolume = $hPlayer.Audio.Volume + + Do + Debug $hPlayer.Audio.Volume + $hPlayer.Audio.Volume = Max(0, $hPlayer.Audio.Volume - 0.05) + If $hPlayer.Audio.Volume = 0 Then Break + Sleep 0.01 + Loop + +End + +Private Sub FadeIn() + + Do + Debug $hPlayer.Audio.Volume + $hPlayer.Audio.Volume = Min($fVolume, $hPlayer.Audio.Volume + 0.05) + If $hPlayer.Audio.Volume >= $fVolume Then Break + Sleep 0.01 + Loop + +End + +Private Sub SuspendScreenSaver() + + If $bSuspend Then Return + Desktop.ScreenSaver.Suspend(Me) + +End + +Private Sub ResumeScreenSaver() + + If Not $bSuspend Then Return + Desktop.ScreenSaver.Resume(Me) + +End + +Public Sub Form_Enter() + + If $hPlayer.State = Media.Playing Then + CAnimation.Start(FControl, "Opacity", 0, 400) + CAnimation.Start(FTags, "Opacity", 0, 400) + Endif + +End + +Public Sub Form_Leave() + + If $hPlayer.State = Media.Playing Then + CAnimation.Start(FControl, "Opacity", 70, 250) + If $bShowTags Then CAnimation.Start(FTags, "Opacity", 70, 250) + Endif + +End + +Public Sub Animation_Stop() + + FTags.Hide + +End + +' Private Function TagsX_Read() As Integer +' +' Return $iTagsX +' +' End +' +' Private Sub TagsX_Write(Value As Integer) +' +' $iTagsX = Value +' FTags.X = Me.X + $iTagsX +' +' End + +Public Sub SetBalance(iIndex As Integer, iValue As Integer) + + $hPlayer.Balance[iIndex].Value = iValue + +End + +Private Sub EnableVideoFilter() + + 'If $hPlayer.URL Begins "v4l2://" Then + ' $hFilter.Filter = "video/x-raw,width=640,height=480,framerate=30/1" + 'Else + ' $hFilter.Filter = "video/x-raw" + 'Endif + +End diff --git a/app/examples/Multimedia/MediaPlayer/.src/FMain.form b/app/examples/Multimedia/MediaPlayer/.src/FMain.form new file mode 100644 index 00000000..673e70e3 --- /dev/null +++ b/app/examples/Multimedia/MediaPlayer/.src/FMain.form @@ -0,0 +1,18 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,110,85) + Icon = Picture["icon.png"] + Border = False + FullScreen = True + Arrangement = Arrange.Vertical + { dwgVideo DrawingArea + MoveScaled(12,27,24,24) + Background = &H000000& + Expand = True + } + { timTime #Timer + #MoveScaled(85,47) + Delay = 200 + } +} diff --git a/app/examples/Multimedia/MediaPlayer/.src/FTags.class b/app/examples/Multimedia/MediaPlayer/.src/FTags.class new file mode 100644 index 00000000..130275cc --- /dev/null +++ b/app/examples/Multimedia/MediaPlayer/.src/FTags.class @@ -0,0 +1,147 @@ +' Gambas class file + +Private $cTags As New Collection +Private $aTags As New String[] + +Private btnResetBalance As CButton + +Private Sub GetBalanceName(sName As String) As String + + Select Case LCase(sName) + Case "hue" + Return ("Hue") + Case "saturation" + Return ("Saturation") + Case "contrast" + Return ("Contrast") + Case "brightness" + Return ("Brightness") + Case Else + Return sName + End Select + +End + +Public Sub Clear(hPlayer As MediaPlayer) + + Dim I As Integer + Dim hLabel As Label + Dim hSlider As Slider + Dim H As Integer + + $cTags.Clear + $aTags.Clear + gvwTags.Rows.Count = 0 + + panBalance.Children.Clear + + For I = 0 To hPlayer.Balance.Count - 1 + + With hPlayer.Balance[I] + + hLabel = New Label(panBalance) + hLabel.Text = GetBalanceName(.Name) + hLabel.Foreground = lblBalance.Foreground + hLabel.ResizeScaled(16, 4) + + hSlider = New Slider(panBalance) As "sldBalance" + hSlider.ResizeScaled(4, 4) + hSlider.Expand = True + hSlider.MinValue = .Min + hSlider.MaxValue = .Max + hSlider.Value = .Value + hSlider.Tag = I + + H += Desktop.Scale * 5 + + End With + + Next + + panBalance.Parent.H = H + lblBalance.H + Desktop.Scale * 4 + panBalance.Parent.Show + +End + +Public Sub AddTag(sTag As String, sValue As String) + + $cTags[sTag] = sValue + + If Not $aTags.Exist(sTag) Then + $aTags.Add(sTag) + $aTags.Sort + gvwTags.Rows.Count = $aTags.Count + gvwTags.Columns[0].Width = -1 + Endif + + gvwTags.Refresh + +End + + +Public Sub gvwTags_Data(Row As Integer, Column As Integer) + + If Column = 0 Then + gvwTags.Data.Text = $aTags[Row] + Else + gvwTags.Data.Text = $cTags[$aTags[Row]] + gvwTags.Data.WordWrap = True + Endif + +End + +Public Sub _new() + + Dim sFile As String + + gvwTags.Columns.Count = 2 + + btnResetBalance = New CButton(panLabel) As "btnResetBalance" + btnResetBalance.Resize(panLabel.H, panLabel.H) + btnResetBalance.Image = Image.Load("undo.png") + + cmbVideoDevice.Clear + If Exist("/sys/class/video4linux") Then + For Each sFile In Dir("/sys/class/video4linux") + cmbVideoDevice.Add(Trim(File.Load("/sys/class/video4linux" &/ sFile &/ "name")) & " (/dev/" & sFile & ")") + Next + Else + cmbVideoDevice.Add(("No video device")) + cmbVideoDevice.Enabled = False + Endif + +End + +Public Sub Form_Resize() + + panTags.Move(0, 0, Me.W - Desktop.Scale, Me.H) + +End + +Public Sub sldBalance_Change() + + FMain.SetBalance(Last.Tag, Last.Value) + +End + + +Public Sub btnResetBalance_Click() + + Dim hCtrl As Control + Dim hSlider As Slider + + For Each hCtrl In panBalance.Children + If hCtrl Is Slider Then + hSlider = hCtrl + CAnimation.Start(hSlider, "Value", 0, 250) + Endif + Next + +End + +Public Sub GetVideoDevice() As String + + If cmbVideoDevice.Enabled Then Return cmbVideoDevice.Text + +End + diff --git a/app/examples/Multimedia/MediaPlayer/.src/FTags.form b/app/examples/Multimedia/MediaPlayer/.src/FTags.form new file mode 100644 index 00000000..4c47b166 --- /dev/null +++ b/app/examples/Multimedia/MediaPlayer/.src/FTags.form @@ -0,0 +1,91 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,82,82) + Background = &H3F3F3F& + Resizable = False + Border = False + Utility = True + SkipTaskbar = True + Opacity = 0 + Spacing = True + Margin = True + { panTags Panel + MoveScaled(2,3,75,78) + Background = &H000000& + Arrangement = Arrange.Vertical + { Panel2 VBox + MoveScaled(1,1,59,29) + Expand = True + Spacing = True + Margin = True + { Label1 Label + MoveScaled(0,0,47,5) + Font = Font["Bold,+5"] + Foreground = &HBFBFBF& + Text = ("Information") + } + { gvwTags GridView + MoveScaled(2,7,56,21) + Font = Font["+2"] + Background = &H000000& + Foreground = &HBFBFBF& + NoTabFocus = True + Expand = True + Border = False + Grid = False + } + } + { Panel1 Panel + MoveScaled(2,31,18,1) + Background = &H3F3F3F& + } + { VBox1 VBox + MoveScaled(3,33,59,7) + Spacing = True + Margin = True + { panLabel HBox + MoveScaled(0,0,57,5) + { lblBalance Label + MoveScaled(1,0,47,5) + Font = Font["Bold,+5"] + Foreground = &HBFBFBF& + Expand = True + Text = ("Balance") + } + } + { panBalance HPanel + MoveScaled(0,5,57,4) + Font = Font["+2"] + Expand = True + Spacing = True + Indent = True + } + } + { panVideo VBox + MoveScaled(3,59,68,8) + { Panel3 Panel + MoveScaled(0,0,18,1) + Background = &H3F3F3F& + } + { VBox3 HBox + MoveScaled(1,1,66,7) + Spacing = True + Margin = True + { lblBalance2 Label + MoveScaled(0,0,24,5) + Font = Font["Bold,+5"] + Foreground = &HBFBFBF& + AutoResize = True + Text = ("Video device") + } + { cmbVideoDevice ComboBox + MoveScaled(35,0,24,5) + Font = Font["+2"] + Expand = True + ReadOnly = True + } + } + } + } +} diff --git a/app/examples/Multimedia/MediaPlayer/.src/MTest.module b/app/examples/Multimedia/MediaPlayer/.src/MTest.module new file mode 100644 index 00000000..3cf3c627 --- /dev/null +++ b/app/examples/Multimedia/MediaPlayer/.src/MTest.module @@ -0,0 +1,67 @@ +' Gambas module file + +Private $hPlayer As MediaPipeline +Private $bStop As Boolean + +Public Sub Main() + + Dim hSrc As MediaControl + Dim hFilter As MediaFilter + Dim hSink As MediaControl + Dim I As Integer + + $hPlayer = New MediaPipeline As "MediaPlayer" + + hSrc = New MediaControl($hPlayer, "v4l2src") + 'hSrc["norm"] = "SECAM" + Print hSrc["norm"] + + hFilter = New MediaFilter($hPlayer) + + hSink = New MediaControl($hPlayer, "xvimagesink") + + hSrc.LinkTo(hFilter) + hFilter.LinkTo(hSink) + + hFilter.Filter = "video/x-raw,width=640,height=480,framerate=30/1" + + $hPlayer.Play + + Print ("I will take a screenshot in 5 seconds...") + Repeat + Wait 1 + Inc I + If I <= 5 Then + Print "..."; I; + Flush + If I = 5 Then + Print + hSink.GetLastImage().Save("~/screenshot.png") + Print ("Screenshot saved to '~/screenshot.png'!") + Endif + Endif + Until $bStop + +End + +Public Sub MediaPlayer_Message((Source) As MediaControl, Type As Integer, Message As String) + + Select Case Type + Case Media.Info + Print "(i)"; + Case Media.Warning + Print "/!\\"; + Case Media.Error + Print "[*]"; + $bStop = True + End Select + Print " "; Message + +End + +Public Sub MediaPlayer_State() + + Debug Last.State + +End + diff --git a/app/examples/Multimedia/MediaPlayer/brightness.png b/app/examples/Multimedia/MediaPlayer/brightness.png new file mode 100644 index 0000000000000000000000000000000000000000..f3621e244a2516609358815cefb1aed6d0f8d7af GIT binary patch literal 1534 zcmVTp$#z;vE7PZjKt1i`lc|6Y z^R9+B&T>|8LJ%0?6Azz2oxm$22$suzP#>?ofDKG43Xz8ZZle|F1NZd&5V{eXOt)br z#sMUv1xqxA2yz0$x^@uxSb>?Cz$N?~xbL-%i7ex7sZ|kv$08;I0N)ka+lkm$Ecd}X z0Kg<}WdkEpejh(zf*1G%{%ASDx_Oujc~SfAWr|K9$bW=hJM&o1>y|doc%Z=j^dv`g zco3}gR*5WigHL9!7dxZOHW0|>s5b(AOg18_U9uT-wB${+;I0kPAJA|3@5gBy%~7=A zmiW!a^BxD_7PANjS;((>$JCHDhW3NtDw9r>UvV>o1ZT*Rd!I9bk2Sqk$#@n^_;)P7 zhn0NN1P_9kW_Y25OAIa+@N$zwe zP#`q7xynWKJeu#ZL}Y*JBg%@HocNgC3kkvxDwyA{oJ-a27Ud zRPQOSrhPfAW0z^lb+VT8E%oPeOsJiLo5=n3p2^q@);M_l2&qkg(t}Y78txjl7k-L0WJ`Gj4IvG z8V-AcC&?kM*6ZyN*%J)AgNL|}mqeXyF*7rH*)u#zcJR?y&BYv-v-k25d+<4|Gpyje zriY!Aalw;hz1|0n#)1fInQaEoVvRZEm&Hshw1tAD71ZflJwHW#a#Z;yOK&T882lE|Eru={#m$ zjI`arJVxV&AJTV}MdrdND=n^bIGdkxNY=ZdpA9PFCU8g}fHNwyI*a94C!uUeUXK|G zS&xyeTwtc%h9m?xVV;PU)p|Q}%`??j`lQ2~v?rcmt|#x6FMU=^j`XbOP3bdIt*7Lo zGB5B+;&$V_62lkpf-8J8bCgia=t9|_dJk;iD5bSa4`8^)4gM1%+Jy6F`06M zil;1COhdnRI6Z|o9EfU%Q=lK0(d2kIZ4k%PA!Lh7Kdbf^2(pDXt9kt2OLA8!$8+_L zXqlE6#cxW{MjXeRrnOQv_W}-JgOd9zq((1uG~j+kbDQ4jzAlZ8DRAo#FH({&w-b(siE-C|KsCD9}C6e%#p3lr4!GbY_U$gn=kIKXth{TcEq(atarsi&=&oc4BKp2$+eKt$NULi2U~ z4xNC-b$ueYu+gx)xW)Ze@OBRtDJa4s=Ld`HSd0+>>FB^bO(BB$fvB!6KUnzA0f6Z& k;W-X*n7?y7Q~lcc52WTH)a{vGU07*qoM6N<$f-MH;`Tzg` literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/MediaPlayer/config.png b/app/examples/Multimedia/MediaPlayer/config.png new file mode 100644 index 0000000000000000000000000000000000000000..b4248ceb8dc1bb60b208bca3d79c15d328de2f9b GIT binary patch literal 831 zcmV-F1Hk-=P)8RH)C42qCIXM6?OYh;&gwL9~iCZKQ=1VpOTl_p+N~^ zq^n@Ae$Gv56Yk~&J7Gm`GRK+K=$#D91nuN6s9<$ z^@9eog^!f@>>eP*VJ(~n+_t(OqKO_RJ@A)9IhWXFDuUEdi{#6Uu`u(}C;`F4D?=X2 zyqO6R$wh9O<2p~B8&`uh8E+u%hTJddz7Pn=kV&9Tr_@-IX6Ag!y(rD*phPFnkiYxl z9w20j1v;6AJnI{Qh$&|2sm)vB%h#gxcxUzs1iZxtfi(9YS@mB=Ae{>GNe7^q?J?~X zKLMCyoX<&qbFL6L#B+ivYZO7~DkC;8qGxXunGyBw~0L!eaIa=$kO z)YHh$a@9Y>4FcAOT_Sn5}>hq6Y%hJY?_l|tGfx(ftslJE*A zl|p}t%RIBuA7y7u8sUA)r`QlUuDtpuYzf@rLQHz0P@dT&VP?un2C|eb9TD&s8wA!O zfxpU=)h!(n=uw{B?G1sa3@c3?HeR zE+QmZQg5cCr`%N^A0Rs7H? z;bRu%qrZut+8w_oNB7IPk(;=Q;0g~B4><>;C(l6e4cU5#YqGj5<`%xiL2E(G=ZCfY z$u8kFFZ#!2%YG)aoZ7`vhgb6tMUwq?$o5?HwY;WVony?_O&Pm+!!arS2>@d}CxPRv zcB40VR=4?)6}B!m^LM(NzYj9WOA^%QvO2O=*H5xufDOLxwzvcm0Isu7%bia83XW;l zZWX{HzDqCjKP?}Xun{Kh0y=fw2?0`kj|@owcv1rQN%}Iq?oYBxKn^gU1rbmsf34$; zYXL9n@)rbPTaK}xFHnGuh-}vaQf66Ntoh41lH;ul7Z8^|xM0%XEe1w3?#}D}-~t?j zx^Y3kVKYC+)mFnA&PF2OPPwb?S`aW`=D!dP-}FTvTmaas!RG<6QV;2KR-;?8w?m-` zXxHF5Rw%USePN&VSw4s|AA5(wtXC%$S`?bi+$gRH0nyn2#&xDyp;1@RDsPEU05PC5 zjSBTs|-H8`#2391>P2SS#|hRazM-Jusz{2?gs2`KMJH z&Z#oDX(p5^@#Xz5rnDUWcg#dgn$XEE|@3qQ5)1OA@ zcArkpqhA@L+6UXLnpvEROu$y1yl9NWz9p-+whg!OdL$c?8o8zI0u+EAQ;@<_mbgD~ zG?Mpkm2okXS)Ux!;!GUp)zCcsjhX57v?T`dKAz>p-I7UYXD5kkq z01fW(h|&9{Z(v5kc4mDZ_7KgWBSdrm5<@gA?Xj{x*8sLXNcCmjAeDasF@7Z>?m;R5 z;AXi@4RDpCqr$>;tM%cNB-L#wo#-ojGvKNytIm=7IkRAO81UV zgz}-~S7jVS?3U8MgfZ0000N7)M%hhqo_GlL0e)ANlyV0EG38pJs1lTJs63Ig1vbVFV%w- z^&mZYFzKbGRG})gJ@^MyB;X;@h^dmKYyN07*^h_K?tI^-K>3*)_3qiv@&U0NYGv={0X~to73WjXg20108Zo&k8sAU zag3&E@j^5)W?MK-Bp-Z~i)L+cw#Y0n0PNe@c&8>N>HU@Iu76VO!|oliBd=d1{vUmC~H? zLX`5GZQ&{FXToo?)9odS^TG>J%q82xAe*Mcr=;6+6y=QTb&mc7?9Vk{UPI}!(O)) z(_&9XPBl(j8cQtW4F5WZ5Ah?_p||(+vd)N@uLd<}sg^mSJ<)*v&{c0dT?Z7=5kdz5 z^mFK){Sr&K8VcOk?<_X)#as&&5AY}Rq^Ws8M^qpB=-Z-0Q-hG09&4e0e@r(Ncf>5y zmnsdyxK?<>lGqWnODBt*CgT{LW;Zk^yI`YlX+S%j=0Yj1of-_njY$I)e*9M`>w&+6 zpfYKo$d6w-$4k;^@GWK%(?gv6R1tg}OB#6O$6siz zbNo6P=Mz1WB)&G+3N3k@3C(tuvCDqpQlHF*5#3j9ZvQ7Q-BX>Hh)7;S?dJY4B%y;| zB8YwneMNLU)zCg(h6W#{HC>ym;wOfj!-qJ_%7B_O_b^X2s#3OR+nH)akJRl=gg)N> a*Ln*hs%v809a`i70000_}6?;+-5iRkg zL`nhyp;SD0@Zza>G1>+jYoCYBFL!scGrP&AYQBN6%gny-H}l?nGqVE&hShl^7Fi}Z zOsr3Abv{wyg(aS?a!8gW3cQsAUi4$~Arg8Kk!6WDc}H3bu5&E1#Ghi$Enqq_`ajrO zMJPWQwXe#2?i1@llFiF?E8%FAU(E#Ngg$+8?JB6dQ!pUxP&LeQg)Q##5`fcOW!xZa zl?9eP;&g#C1sftF@=*|Ezf_H9+E>}@ier?5SjTsgG2@{fC*_Lc1+5wg=FFp7y_5ph z0ayz}Z4yUWggG(@`OpIV;wS|aD1;{0i8F8?Pzso(z# z5Fgy;D3IZy=?M7EUtQP{)KhZ%*1$jG19N1tcx^7AS3Xdp)U|#4*1#0^xYJ%j1x8>W zcuE||a3Z9Dz&>Cv-0hWPu(|LZ=#dW;d2dX=LQ$)qG6i*FfW2~BC&h%is|PlzP-{F3 zfqdWw7Z4sb?$&r?JO(!We4vHlzQBnovTX5~a!3NdIGR3?;GE&cWT{bpetx19(CGtl zO2&q?LXw&zju*6QU^0Loo@7$1pHe`*<2#`h%8A{sI9|~7f#C3qqZBaDd}wl=I71)k z`+C4Hj@Ei040_@N{e+eegu&1U{$3wQa~>g2B_u(LX-3HN%2dEJ_5hbdze0b&abTwL z*W`vW1@;3bix6-0#0P>+#tp4rN&%Yy`~;xPH)Hy0V^>`F5u>buTcm;K0IZTGXSgwW z!WRH;GJ~b_rs==k7Yypire?*R0^V^Z!XI9-&e|946f8tY@5Ls&q#W77Wl?r|h#Jh% mt=Hl8zCI59YL~<7!QeODA$j&oiky%D0000c^-+qOMoWW66vOH$nce$T9 z0mpJBVV$NaPlDwbJpyOFj}L5V82LFr=yH=%_cYkU?;uJ9&@BsK0W3hK_0+dqZQE{% z>GS}-^t27I8G2%T3XB8zQ*eVp`siwE>F*rC1)ec(asL@8KP|u=W)uJ{r3X-}_xwCj|JG@MRaO%+3@yT&W&vEL z{BTF}6x`!h=vgH5lE|ZO0rAlO?6t%w}6*-V>)I}1KlbUvbiRhaw1j%bgD2WpffaIho kYf@KkU6pw$#NXxp1%f`{@Ox$XPXGV_07*qoM6N<$f|Xbe#sB~S literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/MediaPlayer/gamma.png b/app/examples/Multimedia/MediaPlayer/gamma.png new file mode 100644 index 0000000000000000000000000000000000000000..3a2cefd4a4fea964560dca5c37b1f9b28fd591aa GIT binary patch literal 693 zcmV;m0!safP)6INX4#5Pc|g6Y5|)oj-7<5~jb6I(h|<>W5lU&;0~m@? z=jP)QKP;twp{BXu4K~ME<;Ej{*aHlCVItwhGe)uOvS9n1&&3=V1f`bNa?b)lBlk

    }2e9Ov(6AVbpkamGdlF7kjJedK(sov;DWN-NMqmoe8#CrJSE zJmoQuYy!+{n-OQYVvHJr%N%0{_~83`W#0uUBi^~>Y!|%%ytW7MI~Z5Z90amV1_4l7 z=STpr!UI^(o-zQ+EJsZyqMFGKsqLeH0O0pt~=W6?V^io++c#ZrFUMSnhp+|HPGUK`mOXQ z{Ahp%2egR+)`VdHl?G=x2F@sLOa*SAr`;JYj#RI~KzpVyw0#kf934=frmS0k*Ijj} bScg9WsNVZDMo|oq00000NkvXXu0mjfq5LxQ literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/MediaPlayer/icon.png b/app/examples/Multimedia/MediaPlayer/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d321ebccd32db289220ce9d45efcac9476a02086 GIT binary patch literal 2509 zcmV;;2{QJHP)nv46CsojO{#Y2B(b z&UE@m?X-51GHMo!6|$)Rx$ow|>cR#kE&EwW7{g zYnDTWS#8|R9HwaslRlp36a%c_yP(Hv_~;T6s0>f36Ls2hvC1wAIdfIHoI;eaQOW{L zdNEPF%3%Q7(I~S!YcC0bZ?0Rnx6~%6Zypr=4HW@B8lb{`WAz z9PQj1o|`;@fY6F7tt$OCswmXKB*BC1VGw{4YW<&dvEQ$Euue3uLc{r*1pJI%W0h&D z*tt>`QbM6Voh2mb$Hd_X@A>{WA^rNlP+m>LU^#Yl>4F2FO^|?_(b^3sR?GYXdo|1D ze1^pVIYEK87`rW@B_}#66`VPWWQbiS&tiT3TQO*!tJDWPS+Nie{DLKnrtS=Dt z%#Z>Llb`V}JpfGQTRyzS4*%EHTn&IEL_go542=Q4F12&IU7L2w@tLWGbg_Hlw%E?8g6hzNIBAJM3q4;&8&l#2izZNkC9;(fNT5r_Hw5sMg5 zNev26DBhredCcWXD!2>j3w<>0y%LIDfW$xn8$qsiC87XOUhJ-Rmd3Vactvg6>r=YbL89=JP==dzX$ zt5#KAg}Z_}%-{+%kAH|0Sb&L+q=X9cym57Nj1b@;fEy_A>@oS%Th$g`N+AGx%~o+6 zD=`@%pRas-gtZLNz|E9;7Dc@WBYhn!J*=bDYf*G^jM0>lZ1wylHGEi|mII*l z2o?&HsnoO0w=c%vB0ap#8GmWp&9feipp0f3eeXSNLqj0YxRIy0=(pst1%ZY{7oLDH zRskHx8{dThJp6}dG}dF2=iA<*8NB@go~6KV+084ST~W@{fqovR!?O#aeB6Kn!U4f7 z4$zk&b-zS%3vc+>Pw{v1Jw;~mAkX?OzoMQp+}-0I{>?j{{VRULb_AdyGAf`P;4x;i zpBDeqP7giwAbFTaxypAw%kMnB6pDLT?zar_guizvUhp#qcJUV!3N3&e%mK$iFppoe z)9c(VFHqvwU*u^N5JIPeE~;@eTks-J2B!C6YP_+Q@e057?JeBFYzR#MAc5XCrHSdl zJs3jgXuSjv~HvaHu|01 z?pjp9$MqPs2ue6Y*Pb&gGlT%_9_5tdkO&Y+?tHS}!CsOrT59v>po}n^n86hoe8r3`BQIdigl9!s4yZts7H}`K(1BZ6#30vkidV6S zPzb~WyJIqdPLynA0tDPY0UYHKB)7APBMei)R2K0ZFpnPqiwN@xtrUMjQDEN;AMK4C4M4u7CssS(QjrU@QfrUMj^< zR8WM)Heh;EH+g9tE1-a3&(AG`9sz|&O7e^Z#zZ>n+s@F)=UGKghM&R~%6T|LXfjX3 zY@0S?X{dOd?J3dw26rSaR%1X#+(;1%c>;IG4KqI}qf(dRGzDz;+?r%FldcpCd5TWn zqKZwNq!EoDQp8b?(?~Z^$kRxQ*~|58;N`&b?&QjW+|vo54?!`C2bjw;Hgk$Drn8Dp z1j7sw#RMvNh&Oq19Qm^<;FkF*H+{jfpC+zh4?9?b&0Z3G04S<}A)@qg7)c9ZmH-L- zBVd{a8MkBCrI&D40`8-_eJI+~G)n-jfv2X5SimD^4vcj){-Yk1v95qODd8VjDQ%gz z_>Akos8gnQ8ERaMTW`oXJx9M)t`JQ85SDvQNVa6wAV|P)LI~yW1+#MkC+K0kU}XI- z2{YoR!zckkm^>98O%eqd}IezstYLqk%4h5$^L zK!^}|M3mtwF!A$lb}HFv02*Nw4mOrcK%%3gD~V8q150OW2dRmaS`&d=Ohh1DJ1;Qm@yPv)fX6^jsrU~mm+0r%m zhfzcv;e{aLeZqR7%tt5i6z5VEVI#0H6TQTV6C*~9_^1ML1mIv! z7A7Mkh!ZCsTyHhPga~0Ek%+*1w@XzVFY`^0!U&`;_!=Q}BpTu}D4?)$--=i+IKck^ X_fr*v`{lr800000NkvXXu0mjfMIWNp literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/MediaPlayer/info.png b/app/examples/Multimedia/MediaPlayer/info.png new file mode 100644 index 0000000000000000000000000000000000000000..71e6db8e1c73b506b1e80f25d59cbc7aa9b280e5 GIT binary patch literal 2413 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 literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/MediaPlayer/pause.png b/app/examples/Multimedia/MediaPlayer/pause.png new file mode 100644 index 0000000000000000000000000000000000000000..db2961a31799fb220a5fe10112df2924cff448ba GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7`%AFa~(KIEG~0dppzDkI7M>b#=PB z*B%Du&JDrB{*D$co!qf61Hb6Fm3Thk%Sd1q`pV+={ru66tDh&A1p5>`tlqq6()VAl zU!?`>e!Bm(i&e%e`clK|*tolEZ(mgL_?O|O2WNK28m=?{VHNlMgUa#1=oS9<{9>z} zci#N;N$L8|_-F2`t2eK&$i8@>;O&g)Hxad>wvJ8QI*Xj2S^TfvVe-=`)c)=})^qQ@ f@7>uVC;yfA=*xeb;RGS;GoR*@VW0wkGo@N|O@8l(Z-pawBg1x!YW;)ovsy7b6lSi6taU zv3u$&OwrxN^^{ayZ9n5ky*XexdNPJ?E1zg7xDFEuMrMK59ly?Dcbqu zMKnhnUuu%Nn2M0#FhiQq#)RkqOHEE4^84D#cTKp>l&ApPOiJM&fUt^>n$XGgXaL(y zhN!E87n<;j1x^9NY@TYu2bMbp2$Q+42`M%>1qel))`TJUIt2(Zn!KA+vr~W|9A!i! zS}1S|5Vm-ChAT{R3J})tSrZ=QWM}XX5Ejv^3Ej+b3J_-TL=)by#3?{1Awg6!_gPPDr+$lh)r(Y9pS+p%-075Nq zHQ{F9<}DmxjJBo4F+iBXqtSptDzate>i^4ANm(s7%rY+f9RoyC(jeVtS?e4il9qF3 zF+UFgkzpS>5dspj%PhLHeJV0Qx!jd1vwR%r%i$lxdAuC`7^a!&^bS-@hg6P!;bg4O z;T>4d*L-fpI~maN=P3?+3+(|--j3invB2@RfC5@|_%H`7e?&HbiCot4gEU&k+W<-gu)4HX{@u+lp>y3e$b@j(C${Lt~&Cx2R1eOO&%GR(L>qt&=z(Q5bvl$b}nlQPCUu&`@2d=v6}WFx`~vR9Z^BLE@4 n$9Ci3;L_F6?RY-Cc2mCqDrG93~DH&)Bw&~?s175mg;NO7LbqSnDmQTX_ra`x{_3dbQlJ=B`q5@ z2*@mX5evL6jROf-f;A9+6t|gfm)khSBLh>Qlp1Q>N;g&3{Xr}sdu^gU@`YG}u`4C7 zTpOGjWC&!KJhrvA8w9tn)h>ZPnGiYzQqCQKmz450#Gu6_NKitO@gylBL4qWs+02m~ zLvf#3b|Gc`;t~k%1C#CBT@QXL^GT8*K`9BwQ^MGg*MFLmz)hFHq)c0ofKz|tHMBDU zQ_`(K9hR$;Ie4|?BoMd!PvCta(5GlS%TlU28j(Peo?0D0_!lqmGj#y`%2U3H-vXU1 z;>CcLX0P;pBnxQIfd`~W`|6pks$2IJ(Fnj5*86HJywYcp2>9lJjHRAhyIjss3gyF; zvCS!O;4v-qvVwh)2zbY_ER?QrH>T1#QY|?Ws?(D5KyGnWn= zU>QEs>~@(|^v6L!Urw;2umoT)2MbF8n)s)%1hm&~JOsXCPh|KA1X3I@0G~I31svyt zI0%f>>NJg$j5GqD*$JILu_orxqfq;jhdz?627gyv0=HNIP|QN5+Gwxz5$Bj`3_ddi zyZKX(?~hc4Jo`He0qZF#onXj8mV`XHm*>9dxn$OL`Gk6Es0QfbtkeFvPkASe%9o_s z$$onCA`py_EVF&43!WR5amm(%#O;2QIhrw&L0q!jQp=%0I18YUUCgtCDtU_LpHU^> zDK?(pY2aD}aM0cfTe6Owe!it5GQ740g7T0C+9HDw!2*5}nwe_|J`W3Y(8vWt;CWc! z5amYUhh%{+*3oJdT+0F-&ixEkF~DmOSVuQ6X`q(BVt~&c0w);sq1SMpsTAuSl{v+8 zVtg(~kU*z>o6QI>TKvS=*Lnwer>`+^7!|qMlKsZR^&8xys8^Cc^sIzMvm4akWHe#1 zQeG<)7TGDA67JwIY~z&jXMN~nznH~tC0EJ@WRax*yQGymZMR(hjRia{Uk8vv6PIPu zY8<{@Dzb30=Ya3wY^s@VD4hL>i>lPE6h3)v6*_(Y4s_;d&yA|7)&Kwi07*qoM6N<$ Eg7$gZqW}N^ literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/MediaPlayer/screenshot.png b/app/examples/Multimedia/MediaPlayer/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..8ef46d2a63a7ab20664728c05e9d81c4e38ce9d1 GIT binary patch literal 1090 zcmV-I1ikx-P)7+`B+r&Zf+WF!&tv`aT)7oSfv&f9{mvY2bP8tyC zaS7PGD;=KUK65K%WOFjzM)OV1U8uD$7y-m znSP4&huaUyWMcwla?6CmHJLhm40kdud}sGEV6gwgxM7s6RIm$>Ihy$2D2Ds~sR`j2|1NANz+CQqQ%tylnD;cccfkx5J; z%P-nkifzUOkU=LOvjKTKL+)z%zF$hU@wBvgPQ;P`Z_Bh(U=)E>TJzY&8g6Oh_h_PB zyRs(PEqGOtbFAlX0h?y+k=+n*taSoLb)ZI(J3Tw@V1UmQt&+!+i@;+{P_(1Ic1JX= z%GWM(9jMT>tG;&nh<~FQIRb;4R_1G07I4>?2>eY>(dPTw)o9vZ$q~qLQPCQBw4jwu zqoVywUvdQCOGPf{oq{&6Ge^-n1A2oP1omrM3$Kl`Sj;X>|02MfUW%_cMR8+5@wDWW zR%r9`u}mKsEtjpHQr#yL0-G8ahCQLs!ZAg+c!Mlw=q1OKEaDN5eQRKIroEj@pTng& zq>=i_^mR)PODfRQ^U)th02?@j34UUgc5H)lAOe9LYxyR0`W{{>*rX&t0IpNd_Q2JB z&I?-2NSFZJV-q!eU2yCii)r-q3E>1{ycu;Q|Alxk*TbD4{Dae!{a`@IAry%#w6 zjW*gM*!vTRxCO~T?+0QZJ^l0sf~C?Bk) zLOw0(^gm1O@XX4Ql&7fWxtM>?m}7`@oaIOB&O_Svag4)@`;buGAuSC!LI3~&07*qo IM6N<$g4h!bDF6Tf literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/MediaPlayer/seek-backward.png b/app/examples/Multimedia/MediaPlayer/seek-backward.png new file mode 100644 index 0000000000000000000000000000000000000000..d108a3f171ac516949c28353ec4d4ec35ff0d624 GIT binary patch literal 1316 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 literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/MediaPlayer/skip-backward.png b/app/examples/Multimedia/MediaPlayer/skip-backward.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d4f073317572bb781964bee8066acd6506692a GIT binary patch literal 1093 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 DM)e0F literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/MediaPlayer/stop.png b/app/examples/Multimedia/MediaPlayer/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..9ac59d99b338bb0ee4ee9317190fd38c7ee453b0 GIT binary patch literal 495 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7`%AFmCg7aSX}0_jcxaFQ!0=qvuz2 zFHpI>vE$xCd+G46Os=^~N*U`LyYDTT>gX>pRZL>b%8o2i*WA~PPR^GPbcr3zG`)9m zby{J*V{N+G^VvJ^eBNzbZg!v5<$tW->e+9O$}F4M(7mFuhwIdi1B{=}Ws5JCOzCpH z70~F(X4ftMXyw!b|KmO7UHu==W!ZS%GrFc{ccl3BN0rKB6TH4gE-_r$B~`S;<>Udm z9_7Z$FDs>kJ(L!&w?E^~y7Qz&;)kN0&+FM$zrA8O{jcJ9h7AYXj>qm1ml$82*Y1(% zXFtdoCVF7n^ws}P8=lX3eDc8b>!Ge;qKmB#Y)H>rbHx0t%_8P2+cU39IYi#v!1uvh zh=EZ68wy}JKhN;u{5;+8o3r==KAhQM+Q6CmzO*6xypGbfr!DcZ|C_X4WpXLJpUH7e zH>a1u?85p}d(0MW44u6=dyA*!^Ss$%Yu_JfSsf7^${QK;aP7j`e`WVBUcNJucgb9z z?u9&`Ubx@-+Rn3WVd@umJ{_yS&t;x;Uj3oG>xB;6&O_|l4_%jinSTG>jXW{qWBqTx h%@t?f-1%>g9Yfofu;uq+4n7A(q^GN&%Q~loCID#<-xdG> literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/MediaPlayer/subtitle.png b/app/examples/Multimedia/MediaPlayer/subtitle.png new file mode 100644 index 0000000000000000000000000000000000000000..a124f785039b1c809ace5af38ab01c77ad675730 GIT binary patch literal 1174 zcmV;H1Zn$;P)(X@-G^x zmP&0K75sl{!L-Fj`~ztrM2&)4(Ik8Nu-^IZPG;}lZl1gY%iY=Ue&3mM?%X|d2YB6E z4K<;B1>nL6a|(DD)Q%9`R+9t5unfIBoS z_$CP!;BD1C;tgLL(SrG54D3^v@RE(*3^Z~`IQS-{d^HD>71g^uShRuca7<1ktEv<5i#!xfXi96GA1FlrL!9}09~qmX16?!%9jOM<|OMb_*9-2 z%y+=Y+GnYzWr*;Jn*fOk`O`STYF{lh&pF;0_m|O}jAB4HAzenGi!crVFb<21aaxuP zb23_j4G9z+b`ZcWLYF>|Ho)BUX=^hfy$Q3|ERmWyxyRTHV6nt*H70G+Ojn*w#@KE8 zYLL<^jpsAf8A7*30P$H7J~GB0!*E6gHCDg=8uVjgq2GgL#-#0N)4tunAI9h&nJ0s2 zie8oyV5Km%G5Ak7>)51=u%h$~DBFaTI-JZ2>-a>)bXBxG2p$yxPgpBe^+~t}iE9Zr zA*Gs@u^wx(8AwdX16Eg@foeW5n-g~v5_)8t6Oo`3RT*@RjR;lf9L+$o6Y>w^F<~I) zzrsO!=Y&&bW!*a_K5MzCz^QtU+(O&5Fi5)1>B3wgr#`&9= zXNAxw3wUodTLhRT+ycI()$io!*LbqN%U2?1a*c6Q5GWKL979}@yby3tOx zTMiR3ZBAkU^F>no1e}|xf1$Nvj&;0Np&9QN03-s~Oh}665p2U|e1ToayNgg{PSycn z4F?q`_MMO-0nVsAJg-jOHa`7QDoKx(ybfqj zmnVvT`d)Qf9YoM7O$To&Fuz!y@#^$f2Sc1x#K0tR6BjH}j_0r1(gFU!kajkGRXiJ% z=Op-H(7+|504xd0vk(AJdk@Qe85Qty>!-rNoY+yPb}IXgU>SKlUQ8NaNQUHzWH8#$ oijtek0EThf{z|q|d0wCPKeKj|gU!d-<^TWy07*qoM6N<$f>iq#YXATM literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/MediaPlayer/undo.png b/app/examples/Multimedia/MediaPlayer/undo.png new file mode 100644 index 0000000000000000000000000000000000000000..76e6a8a29d19659b27cebc4115f558933b07e768 GIT binary patch literal 1091 zcmV-J1ibr+P)*R=Z;HR=trhbqc zt5T0IX0uG(%M3mh%_FJC&)^T)%Ke;48kN9A%DsEG7mmbK$rdGA@)rUznH(pIKR16f!7c~ zlJ7V-JbsxIzgUUa6hL-xkBZ{E30aDZ$g*1suz)wB zIzTDF`hrbJBvIL@HZ0+%LV(A(Sq@sQM$f}eF>phGPN#$>78w(;R!UC-U6m>?luLo2 zo7GB<1eE}vl+3CmaLV4I*|>})xa}i$f8xNlqXo@)iAvO)*t5EO!JCxUGgsRK0WsIA z#9GAdR+!K<7zeed85s1f7%F55`k`sI83BM5!*=n8$i`(&FAOmy0I({tRY=hFg8u!d z#(UQ(AuvF9ce;}k;FX}e5N^v7)wWOql3fV5N#E&BAq8l9A+hx8wHO#hfY%E_ap9Bl z>3C879NK;VX6A{GnS4gC9aBca`=UegS8Q$xPZju&?61J*$e*culNR8X;I&sAt(^Y~ zxl>^T0l^ZgIMnB*RV6w#GBc6@KM9WmK4wSD-~8tz;sJoA{4T@aa~(4Rl94L8^Fjjx z01guOC^hUGm z!K+BDW*pDqPWCN~#VF^a&zNi(Nf^5X6b45GkF~Pc82q1v<00_xnQs^mFpDQO@i(ZS zr-c-;fiD8lovdZ4-_bL2B55HH`Iv+p&!3v{0ynL9DVnK!SohAGL5TOg#hi2RyXX7vIrm=XJ_r$Fnc?Jb zR-8EX)GXDX!3-n3;lA^+sG1a4pKS0;Nv$g$eL{0q^l1!hV{zyY>30G2k~E~s;Pe$5 zEs$Q4t`x$Vwa9dmg&^}h=Npe1MtKDm+F zjpz|tp)pUuIeX4Xmbcn9hK&QvGUPdxK?QtvjRO`T<~*}3sDNJAILrl1&zAY6qS-?A z>NVYQUwy0Ksn?v+4OM5NIciatCUS;Os7uYc~iU>-I+7t6Ywav`?5y<8RE2`ey{BTJn0kgz;39QsTe>MR7TRjd}c}gbG^*??4NuC zDr~pF8XD+^D6p9=ZtEZkUNCDF=_mj(_LF48qQ1LaTh!9&nbmFqj=Ncz)+XZV!Z literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/MediaPlayer/visualisation.png b/app/examples/Multimedia/MediaPlayer/visualisation.png new file mode 100644 index 0000000000000000000000000000000000000000..a97ee5fa15543f2d885e2c359697c9314f4cf9c0 GIT binary patch literal 1093 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 P00000NkvXXu0mjfY;kTe literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/MediaPlayer/volume-2.png b/app/examples/Multimedia/MediaPlayer/volume-2.png new file mode 100644 index 0000000000000000000000000000000000000000..3fd2482db747bd838eaf51d23c7b59c19dc35d64 GIT binary patch literal 1052 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 literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/MoviePlayer/.directory b/app/examples/Multimedia/MoviePlayer/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Multimedia/MoviePlayer/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Multimedia/MoviePlayer/.icon.png b/app/examples/Multimedia/MoviePlayer/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c308b41be2fb91db340ecbfb89035b67961777d4 GIT binary patch literal 4342 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 z, 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: MoviePlayer\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2010-12-17 01:12+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FMoviePlayer.form:20 +msgid "

    Gambas Movie Player

    \n\n

    This example is based on the MPlayer movie player and was made by Benoît Minisini

    " +msgstr "

    Reproductor de peŀlícules del Gambas

    \n\n

    Aquest exemple està basat en el reproductor de peŀlícules MPlayer i ha estat fer per en Benoît Minisini

    " + +#: FMoviePlayer.form:15 +msgid "Movie player" +msgstr "Reproductor de peŀlícules" + +#: .project:1 +msgid "Movie player example" +msgstr "Exemple de reproductor de peŀlícules" + diff --git a/app/examples/Multimedia/MoviePlayer/.lang/cs.po b/app/examples/Multimedia/MoviePlayer/.lang/cs.po new file mode 100644 index 00000000..f7cb6247 --- /dev/null +++ b/app/examples/Multimedia/MoviePlayer/.lang/cs.po @@ -0,0 +1,30 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Movie player example" +msgstr "Příklad přehravače videa" + +#: FMoviePlayer.form:15 +msgid "Movie player" +msgstr "Přehravač videa" + +#: FMoviePlayer.form:20 +msgid "" +"

    Gambas Movie Player

    \n" +"\n" +"

    This example is based on the MPlayer movie player and was made by Benoît Minisini

    " +msgstr "" +"

    Gambas přehravač filmů

    \n" +"\n" +"

    Tento příklad je založený na přehravači filmů MPlayer a byl vyvtořen Benoît Minisini

    " diff --git a/app/examples/Multimedia/MoviePlayer/.lang/es.po b/app/examples/Multimedia/MoviePlayer/.lang/es.po new file mode 100644 index 00000000..a156ddfc --- /dev/null +++ b/app/examples/Multimedia/MoviePlayer/.lang/es.po @@ -0,0 +1,27 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FMoviePlayer.class:172 +msgid "Movie player" +msgstr "Movie player" + +#: FMoviePlayer.class:177 +msgid "" +"

    Gambas Movie Player

    \n" +"\n" +"

    This example is based on the MPlayer movie player and was made by Benoît " +"Minisini

    " +msgstr "" +"

    Gambas Movie Player

    \n" +"\n" +"

    Este ejemplo está basado en el MPlayer movie player y fue echo por Benoît " +"Minisini

    " diff --git a/app/examples/Multimedia/MoviePlayer/.lang/ru.po b/app/examples/Multimedia/MoviePlayer/.lang/ru.po new file mode 100644 index 00000000..8b455b77 --- /dev/null +++ b/app/examples/Multimedia/MoviePlayer/.lang/ru.po @@ -0,0 +1,52 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-28 09:00+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Multimedia/MoviePlayer/.project:20 +msgid "Movie player example" +msgstr "Пример киноплеера" + +#: app/examples/Multimedia/MoviePlayer/.project:21 +msgid "Movie player based on the MPlayer" +msgstr "Киноплеер, основанный на MPlayer" + +#: app/examples/Multimedia/MoviePlayer/.src/FMoviePlayer.class:54 +msgid "pause\n" +msgstr "пауза\n" + +#: app/examples/Multimedia/MoviePlayer/.src/FMoviePlayer.form:5 +msgid "Movie player" +msgstr "Киноплеер" + +#: app/examples/Multimedia/MoviePlayer/.src/FMoviePlayer.form:9 +msgid "" +"

    Gambas Movie Player

    \n" +"\n" +"

    This example is based on the MPlayer movie player and was made by Benoît Minisini

    " +msgstr "" +"

    Киноплеер Gambas

    \n" +"\n" +"

    Этот пример основан на киноплеере MPlayer и сделан Бенуа Минисини

    " + diff --git a/app/examples/Multimedia/MoviePlayer/.project b/app/examples/Multimedia/MoviePlayer/.project new file mode 100644 index 00000000..a2884b0f --- /dev/null +++ b/app/examples/Multimedia/MoviePlayer/.project @@ -0,0 +1,19 @@ +# Gambas Project File 3.0 +Title=Movie player example +Description="Movie player based on the MPlayer" +Startup=FMoviePlayer +Icon=video.png +Version=3.11.90 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.form +Environment="GB_GUI=gb.gtk3" +TabSize=2 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence +Packager=1 diff --git a/app/examples/Multimedia/MoviePlayer/.src/FMoviePlayer.class b/app/examples/Multimedia/MoviePlayer/.src/FMoviePlayer.class new file mode 100644 index 00000000..582bce0d --- /dev/null +++ b/app/examples/Multimedia/MoviePlayer/.src/FMoviePlayer.class @@ -0,0 +1,136 @@ +' Gambas class file + +Private $hProcess As Process +Private $bQuit As Boolean +Private $sPath As String +Private $bShow As Boolean + +Public Sub Form_Resize() + + embPlayer.Move(8, 8, Me.ClientW - 16, Me.ClientH - panButton.H - 8) + panButton.Move(0, Me.CLientH - panButton.H, Me.CLientW) + txtAbout.Move(16, 16, embPlayer.W - 16, embPlayer.H - 16) + +End + +Public Sub btnPlay_Click() + + If $hProcess Then + Print #$hProcess, " "; + btnPlay.Enabled = False + btnPause.Enabled = True + 'PRINT "CONTINUE" + Return + Endif + + txtAbout.Visible = False + + With embPlayer + Form_Resize + .Show + .Enabled = False + ' '.Mouse = Mouse.Default + ' Form_Resize + ' '.Enabled = FALSE + End With + + $bShow = True + + $hProcess = Exec ["mplayer", "-wid", CStr(embPlayer.Handle), Conv$($sPath, Desktop.Charset, System.Charset)] For Input Output As "Process" + + btnStop.Enabled = True + btnPlay.Enabled = False + btnPause.Enabled = True + + 'embPlayer.Hide + 'timShow.Enabled = True + +End + +Public Sub btnPause_Click() + + If Not $hProcess Then Return + Print #$hProcess, " "; + '$hProcess.Send(" ") '("pause\n") + btnPlay.Enabled = True + btnPause.Enabled = False + 'PRINT "PAUSE" + +End + +Public Sub btnStop_Click() + + If Not $hProcess Then Return + If $bQuit Then + $hProcess.Kill + Else + Print #$hProcess, "q"; + $bQuit = True + Endif + +End + +Public Sub Process_Read() + + Dim sData As String + + sData = Read #Last, -255 + Print sData; + +End + + +Public Sub Process_Kill() + + $hProcess = Null + timShow.Enabled = False + $bQuit = False + $bShow = False + btnPause.Enabled = False + btnPlay.Enabled = True + btnStop.Enabled = False + embPlayer.Hide + txtAbout.Show + 'PRINT "STOP" + +End + + +Private Sub StopMovie() + + If Not $hProcess Then Return + + $hProcess.Kill + 'While $hProcess + ' Wait + 'Wend + +End + +Public Sub Form_Close() + + StopMovie + +End + + +Public Sub btnOpen_Click() + + Dialog.Path = $sPath + If Dialog.OpenFile() Then Return + $sPath = Dialog.Path + + StopMovie + btnPlay.Enabled = True + btnPlay_Click + +End + +Public Sub timShow_Timer() + + embPlayer.Resize(1, 1) + embPlayer.Show + Form_Resize + timShow.Enabled = False + +End diff --git a/app/examples/Multimedia/MoviePlayer/.src/FMoviePlayer.form b/app/examples/Multimedia/MoviePlayer/.src/FMoviePlayer.form new file mode 100644 index 00000000..40f5631d --- /dev/null +++ b/app/examples/Multimedia/MoviePlayer/.src/FMoviePlayer.form @@ -0,0 +1,42 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(33.1429,15,51,45) + Text = ("Movie player") + Icon = Picture["video.png"] + { txtAbout TextLabel + MoveScaled(2,1,46,20) + Text = ("

    Gambas Movie Player

    \n\n

    This example is based on the MPlayer movie player and was made by Benoît Minisini

    ") + } + { panButton Panel + MoveScaled(2,35,46,6) + { btnPlay Button + MoveScaled(1,1,4,4) + Enabled = False + Picture = Picture["icon:/small/play"] + } + { btnPause Button + MoveScaled(6,1,4,4) + Enabled = False + Picture = Picture["icon:/small/pause"] + } + { btnStop Button + MoveScaled(11,1,4,4) + Enabled = False + Picture = Picture["icon:/small/stop"] + } + { btnOpen Button + MoveScaled(16,1,4,4) + Picture = Picture["icon:/small/open"] + } + } + { timShow #Timer + #MoveScaled(32,17) + Delay = 500 + } + { embPlayer Embedder + MoveScaled(7,20,23,13) + Visible = False + Background = &H000000& + } +} diff --git a/app/examples/Multimedia/MoviePlayer/video.png b/app/examples/Multimedia/MoviePlayer/video.png new file mode 100644 index 0000000000000000000000000000000000000000..687755442f5c765a8a93804555ac3c833994c690 GIT binary patch literal 5244 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 literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/MusicPlayer/.icon/32.png b/app/examples/Multimedia/MusicPlayer/.icon/32.png new file mode 100644 index 0000000000000000000000000000000000000000..66d2fcb0726bcd0d1237048f1dcd26019d10980c GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv(Ey(iS0D`n|Nn#V|NjRL9B620 z*t+I*1W=H%B*-tA!Qt7BG$3cCr;B5V#`)Nb2YH(fcvvq~F#C9(*OdzsawOGXgZ_rKn`cYgw~BxF|uuv(h4uNCbF(5D4!7I z#S$vQe%{%akN-yKVX?MVr&lz;l{djBF0xe)K3GxeOXgJ_-;6Ov4MUMy2$^uUp z#}JR>Q>R`mYgXWCn|(`nL(}Z79@}5O`ECESiN*W8rcm*Y4@&cEo;-i?FhKV})%oE6 zh3XAExEVsc6ghTFH%z|A%#ieAI^z<#-BaBpKP>zjxpMP0^#h9=PQ>d=i=0iLDwyhi zK-%H(`9A@S_cj-Ho|`-CLc~QwiHrq*w>JM2 z3twmChca#`*FI3`xFf7}PifpU~>F| zc&!Y3xQyUE8&%O?b+vpVhr7J=*4KT0<(@DnCMGFiMuu;F-!z_xu6uH3D;YjpoZ~St z=5FZB;&7, 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: MusicPlayer\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2010-12-17 01:12+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FSoundPlayer.form:26 +msgid "Choose a music file..." +msgstr "Trieu un fitxer de música..." + +#: .project:1 FSoundPlayer.form:18 +msgid "Gambas Music Player" +msgstr "Reproductor de música del Gambas" + +#: FSoundPlayer.form:59 +msgid "Open..." +msgstr "Obre..." + diff --git a/app/examples/Multimedia/MusicPlayer/.lang/cs.po b/app/examples/Multimedia/MusicPlayer/.lang/cs.po new file mode 100644 index 00000000..c11a030f --- /dev/null +++ b/app/examples/Multimedia/MusicPlayer/.lang/cs.po @@ -0,0 +1,24 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 FSoundPlayer.form:18 +msgid "Gambas Music Player" +msgstr "Hudební přehrávač Gambas" + +#: FSoundPlayer.form:26 +msgid "Choose a music file..." +msgstr "Vyber hudební soubor..." + +#: FSoundPlayer.form:59 +msgid "Open..." +msgstr "Otevřít..." diff --git a/app/examples/Multimedia/MusicPlayer/.lang/es.po b/app/examples/Multimedia/MusicPlayer/.lang/es.po new file mode 100644 index 00000000..5186acbb --- /dev/null +++ b/app/examples/Multimedia/MusicPlayer/.lang/es.po @@ -0,0 +1,24 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 FSoundPlayer.form:18 +msgid "Gambas Music Player" +msgstr "Gambas Music Player" + +#: FSoundPlayer.form:26 +msgid "Choose a music file..." +msgstr "Seleccione un archivo de música..." + +#: FSoundPlayer.form:59 +msgid "Open..." +msgstr "" diff --git a/app/examples/Multimedia/MusicPlayer/.lang/fr.po b/app/examples/Multimedia/MusicPlayer/.lang/fr.po new file mode 100644 index 00000000..bedef664 --- /dev/null +++ b/app/examples/Multimedia/MusicPlayer/.lang/fr.po @@ -0,0 +1,35 @@ +# #-#-#-#-# FSoundPlayer.pot (PACKAGE VERSION) #-#-#-#-# +# /home/benoit/gambas/2.0/src/examples/examples/Sound/MusicPlayer/FSoundPlayer.class +# Generated by Gambas compiler +# FIRST AUTHOR , YEAR. +# +# #-#-#-#-# #project.pot (PACKAGE VERSION) #-#-#-#-# +# /home/benoit/gambas/2.0/link/share/gambas2/examples/Sound/MusicPlayer/.project +# Generated by Gambas compiler +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FSoundPlayer.form:26 +msgid "Choose a music file..." +msgstr "Choisissez un fichier de musique..." + +#: .project:1 FSoundPlayer.form:18 +msgid "Gambas Music Player" +msgstr "Lecteur de musique Gambas" + +#: FSoundPlayer.form:59 +msgid "Open..." +msgstr "Ouvrir..." + diff --git a/app/examples/Multimedia/MusicPlayer/.lang/ru.po b/app/examples/Multimedia/MusicPlayer/.lang/ru.po new file mode 100644 index 00000000..5dc72170 --- /dev/null +++ b/app/examples/Multimedia/MusicPlayer/.lang/ru.po @@ -0,0 +1,38 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Multimedia/MusicPlayer/.project:26 app/examples/Multimedia/MusicPlayer/.src/FSoundPlayer.form:5 +msgid "Gambas Music Player" +msgstr "Музыкальный проигрыватель Gambas" + +#: app/examples/Multimedia/MusicPlayer/.src/FSoundPlayer.form:12 +msgid "Choose a music file..." +msgstr "Выбрать музыкальный файл..." + +#: app/examples/Multimedia/MusicPlayer/.src/FSoundPlayer.form:40 +msgid "Open..." +msgstr "Открыть..." + diff --git a/app/examples/Multimedia/MusicPlayer/.project b/app/examples/Multimedia/MusicPlayer/.project new file mode 100644 index 00000000..430d9819 --- /dev/null +++ b/app/examples/Multimedia/MusicPlayer/.project @@ -0,0 +1,25 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.0.90 +Title=Gambas Music Player +Startup=FSoundPlayer +Icon=sound.png +Version=3.6.2 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.form +Component=gb.sdl.sound +TabSize=2 +Translate=1 +Language=fr +ExecPath=/home/benoit/gambas/gambas.link/share/gambas/examples/Sound/MusicPlayer/MusicPlayer +Maintainer=fabien +Vendor=Princeton +Address=fabien@arcalis +License=General Public Licence +Systems=mandrake +Menus=Multimedia/Sound +Categories= +Groups=Sound +ExtraDependencies= +ExtraFiles= diff --git a/app/examples/Multimedia/MusicPlayer/.src/FSoundPlayer.class b/app/examples/Multimedia/MusicPlayer/.src/FSoundPlayer.class new file mode 100644 index 00000000..642a6be4 --- /dev/null +++ b/app/examples/Multimedia/MusicPlayer/.src/FSoundPlayer.class @@ -0,0 +1,145 @@ +' Gambas class file + +Static Private $bDoNotMove As Boolean +Private $iLength As Integer + +Private Sub GetMusicLength(sPath As String) As Integer + + Dim sOutput As String + Dim aScan As String[] + + Select Case LCase(File.Ext(sPath)) + + Case "mp3" 'mp3info -p "%S\n" + Exec ["mp3info", "-p", "%S", sPath] To sOutput + Return CInt(sOutput) + + Case "ogg", "flac" + Exec ["ogginfo", sPath] To sOutput + For Each sOutput In Split(sOutput, "\n") + sOutput = Trim(sOutput) + aScan = Scan(sOutput, "*: *m:*s") + If aScan.Count = 3 Then + Return CInt(CInt(aScan[1]) * 60 + CFloat(Replace(aScan[2], ",", ".")) + 0.5) + Endif + Next + + End Select + +Catch + +End + +Public Sub btnOpen_Click() + + If Dialog.OpenFile() Then Return + + lblTitle.Text = File.Name(Dialog.Path) + ' Approximation... + $iLength = GetMusicLength(Dialog.Path) + If $iLength = 0 Then $iLength = 600 + sldPos.MaxValue = $iLength + + Music.Load(Dialog.Path) + btnPlay_Click + +Catch + + Message.Error(Error.Text) + +End + +Public Sub btnPlay_Click() + + timMusic.Enabled = True + Music.Play + +End + +Public Sub btnPause_Click() + + Music.Pause + +End + +Public Sub btnStop_Click() + + Music.Stop + timMusic.Enabled = False + lblPos.Text = "" + sldPos.Value = 0 + +End + +Private Sub FormatTime(iPos As Integer) As String + + Dim iInd As Integer + Dim iVal As Integer + Dim sPos As String + + For iInd = 0 To 2 + + iVal = iPos Mod 60 + iPos = iPos \ 60 + If iInd Then + sPos = Format(iVal, "00") & ":" & sPos + Else + sPos = Format(iVal, "00") + Endif + + Next + + Return sPos + +End + + +Public Sub timMusic_Timer() + + Dim iPos As Integer + Dim sPos As String + + iPos = Music.Pos + + If Not $bDoNotMove Then + Object.Lock(sldPos) + If iPos > sldPos.MaxValue Then + sldPos.MaxValue = sldPos.MaxValue * 2 + Endif + sldPos.Value = iPos + Object.Unlock(sldPos) + Endif + + lblPos.Text = FormatTime(iPos) & " / " & FormatTime($iLength) + +End + +Public Sub sldPos_Change() + + Music.Pos = sldPos.Value + +End + +Public Sub sldPos_MouseDown() + + $bDoNotMove = True + +End + +Public Sub sldPos_MouseUp() + + $bDoNotMove = False + +End + +Public Sub sldVolume_Change() + + Music.Volume = sldVolume.Value / sldVolume.MaxValue + +End + +Public Sub Form_Open() + + Dialog.Path = User.Home + +End diff --git a/app/examples/Multimedia/MusicPlayer/.src/FSoundPlayer.form b/app/examples/Multimedia/MusicPlayer/.src/FSoundPlayer.form new file mode 100644 index 00000000..e8d6be34 --- /dev/null +++ b/app/examples/Multimedia/MusicPlayer/.src/FSoundPlayer.form @@ -0,0 +1,62 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(41.5714,35.1429,66,16) + Text = ("Gambas Music Player") + Icon = Picture["sound.png"] + Resizable = False + { lblTitle TextLabel + MoveScaled(1,1,59,5) + Font = Font["+2"] + Padding = 4 + Text = ("Choose a music file...") + Alignment = Align.Normal + Border = Border.Plain + } + { sldPos Slider + MoveScaled(1,7,59,4) + MaxValue = 3600 + Step = 2 + } + { timMusic #Timer + #MoveScaled(33,0) + } + { sldVolume Slider + MoveScaled(61,1,4,10) + MaxValue = 128 + PageStep = 8 + Value = 128 + } + { PictureBox1 PictureBox + MoveScaled(61,11,4,4) + Picture = Picture["icon:/small/volume"] + Alignment = Align.Center + } + { HBox1 HBox + MoveScaled(1,11,59,4) + { btnOpen ToolButton + MoveScaled(0,0,12,4) + AutoResize = True + Text = ("Open...") + Picture = Picture["icon:/16/open"] + } + { btnPlay ToolButton + MoveScaled(13,0,4,4) + Picture = Picture["icon:/16/play"] + } + { btnPause ToolButton + MoveScaled(17,0,4,4) + Picture = Picture["icon:/16/pause"] + } + { btnStop ToolButton + MoveScaled(21,0,4,4) + Picture = Picture["icon:/16/stop"] + } + { lblPos Label + MoveScaled(27,0,27,4) + Font = Font["14,Bold"] + Expand = True + Alignment = Align.Right + } + } +} diff --git a/app/examples/Multimedia/MusicPlayer/sound.png b/app/examples/Multimedia/MusicPlayer/sound.png new file mode 100644 index 0000000000000000000000000000000000000000..034a6cfa1adec8a9d80cec81c4f9f7e2ba7f29e7 GIT binary patch literal 3551 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, 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: MyWebCam\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2010-12-17 01:12+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: .project:1 +msgid "Webcam example" +msgstr "Exemple de càmera web" + +#: Form1.class:40 +msgid "Unable to open video device" +msgstr "No es pot obrir el dispositiu de vídeo" + +#: Form1.class:45 +msgid "Stop" +msgstr "Atura" + +#: Form1.form:59 +msgid "Bright" +msgstr "Lluminositat" + +#: Form1.form:70 +msgid "Contrast" +msgstr "Contrast" + +#: Form1.form:87 +msgid "Whiteness" +msgstr "Blancor" + +#: Form1.form:92 +msgid "Hue" +msgstr "Matís" + +#: Form1.form:103 +msgid "Color" +msgstr "Color" + +#: Form1.form:115 +msgid "160x120" +msgstr "-" + +#: Form1.form:121 +msgid "320x240" +msgstr "-" + +#: Form1.form:128 +msgid "176x144" +msgstr "-" + +#: Form1.form:134 +msgid "352x288" +msgstr "-" + +#: Form1.form:140 +msgid "128x96" +msgstr "-" + +#: Form1.form:146 +msgid "640x480" +msgstr "-" + +#: Form1.form:156 +msgid "Tuner frequency:" +msgstr "Freqüència de sintonització:" + +#: Form1.form:162 +msgid "+" +msgstr "-" + +#: Form1.form:168 +msgid "-" +msgstr "-" + +#: Form1.form:174 +msgid "Device Information" +msgstr "Informació del dispositiu" + +#: Form1.form:180 +msgid "Take a shot" +msgstr "Fes una captura" + +#: Form1.form:190 +msgid "Device:" +msgstr "Dispositiu:" + +#: Form1.form:196 +msgid "/dev/video" +msgstr "-" + +#: Form1.form:201 +msgid "Capture" +msgstr "Captura" diff --git a/app/examples/Multimedia/MyWebCam/.lang/cs.po b/app/examples/Multimedia/MyWebCam/.lang/cs.po new file mode 100644 index 00000000..72aa7ce7 --- /dev/null +++ b/app/examples/Multimedia/MyWebCam/.lang/cs.po @@ -0,0 +1,112 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Webcam example" +msgstr "Příklad webkamery" + +#: Form1.class:36 +msgid "Unable to open video device" +msgstr "Nelze otevřít zařízení videa" + +#: Form1.class:41 +msgid "Stop" +msgstr "-" + +#: Form1.form:54 +msgid "Bright" +msgstr "Světlost" + +#: Form1.form:65 +msgid "Contrast" +msgstr "Kontrast" + +#: Form1.form:82 +msgid "Whiteness" +msgstr "Bělost" + +#: Form1.form:87 +msgid "Hue" +msgstr "Odstín" + +#: Form1.form:98 +msgid "Color" +msgstr "Barva" + +#: Form1.form:110 +msgid "1024x768" +msgstr "-" + +#: Form1.form:110 +msgid "128x96" +msgstr "-" + +#: Form1.form:110 +msgid "160x120" +msgstr "-" + +#: Form1.form:110 +msgid "176x144" +msgstr "-" + +#: Form1.form:110 +msgid "320x240" +msgstr "-" + +#: Form1.form:110 +msgid "352x288" +msgstr "-" + +#: Form1.form:110 +msgid "640x480" +msgstr "-" + +#: Form1.form:111 +msgid "ComboBox1" +msgstr "-" + +#: Form1.form:116 +msgid "Size" +msgstr "Velikost" + +#: Form1.form:126 +msgid "Tuner frequency:" +msgstr "Ladit frekvenci:" + +#: Form1.form:132 +msgid "+" +msgstr "-" + +#: Form1.form:138 +msgid "-" +msgstr "-" + +#: Form1.form:144 +msgid "Device Information" +msgstr "Informace zažízení" + +#: Form1.form:150 +msgid "Take a shot" +msgstr "Udělej snímek" + +#: Form1.form:160 +msgid "Device:" +msgstr "Zařízení:" + +#: Form1.form:166 +msgid "/dev/video" +msgstr "-" + +#: Form1.form:171 +msgid "Capture" +msgstr "Získat" diff --git a/app/examples/Multimedia/MyWebCam/.lang/es.po b/app/examples/Multimedia/MyWebCam/.lang/es.po new file mode 100644 index 00000000..46ab59c7 --- /dev/null +++ b/app/examples/Multimedia/MyWebCam/.lang/es.po @@ -0,0 +1,95 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: Form1.class:14 +msgid "Capture" +msgstr "Captura" + +#: Form1.class:39 +msgid "Unable to open video device" +msgstr "Imposible abrir el dispositivo de video" + +#: Form1.class:44 +msgid "Stop" +msgstr "Detener" + +#: Form1.class:292 +msgid "Bright" +msgstr "Brillante" + +#: Form1.class:303 +msgid "Contrast" +msgstr "Contraste" + +#: Form1.class:320 +msgid "Whiteness" +msgstr "Claridad" + +#: Form1.class:325 +msgid "Hue" +msgstr "Tono" + +#: Form1.class:336 +msgid "Color" +msgstr "Color" + +#: Form1.class:348 +msgid "160x120" +msgstr "160x120" + +#: Form1.class:354 +msgid "320x240" +msgstr "320x240" + +#: Form1.class:361 +msgid "176x144" +msgstr "176x144" + +#: Form1.class:367 +msgid "352x288" +msgstr "352x288" + +#: Form1.class:373 +msgid "128x96" +msgstr "128x96" + +#: Form1.class:379 +msgid "640x480" +msgstr "640x480" + +#: Form1.class:389 +msgid "Tuner frequency:" +msgstr "Afinador de frecuencia:" + +#: Form1.class:395 +msgid "+" +msgstr "+" + +#: Form1.class:401 +msgid "-" +msgstr "-" + +#: Form1.class:407 +msgid "Device Information" +msgstr "Información del dispositivo" + +#: Form1.class:413 +msgid "Take a shot" +msgstr "Tomar una foto" + +#: Form1.class:423 +msgid "Device:" +msgstr "Dispositivo:" + +#: Form1.class:429 +msgid "/dev/video" +msgstr "/dev/video" diff --git a/app/examples/Multimedia/MyWebCam/.lang/ru.po b/app/examples/Multimedia/MyWebCam/.lang/ru.po new file mode 100644 index 00000000..b7467f9e --- /dev/null +++ b/app/examples/Multimedia/MyWebCam/.lang/ru.po @@ -0,0 +1,158 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-30 09:26+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Multimedia/MyWebCam/.project:20 +msgid "Webcam example" +msgstr "Пример веб-камеры" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.class:29 app/examples/Multimedia/MyWebCam/.src/Form1.form:118 +msgid "Capture" +msgstr "Захватить" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.class:36 +msgid "Unable to open video device" +msgstr "Невозможно открыть видеоустройство" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.class:41 +msgid "Stop" +msgstr "Стоп" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.class:62 app/examples/Multimedia/MyWebCam/.src/Form1.class:166 app/examples/Multimedia/MyWebCam/.src/Form1.class:175 app/examples/Multimedia/MyWebCam/.src/Form1.form:81 +msgid "Tuner frequency:" +msgstr "Частота тюнера:" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.class:142 +msgid "fps" +msgstr "кадр/с" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.class:183 +msgid "Device Bus:" +msgstr "Шина устройства:" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.class:184 +msgid "Device Driver:" +msgstr "Драйвер устройства:" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.class:184 +msgid "Version:" +msgstr "Версия:" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.class:185 +msgid "Device Name:" +msgstr "Имя устройства:" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.class:186 +msgid "Max. Resolution:" +msgstr "Макс. разрешение:" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.class:187 +msgid "Min. Resolution:" +msgstr "Мин. разрешение:" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.class:196 +msgid "Image saved as " +msgstr "Изображение сохранено как " + +#: app/examples/Multimedia/MyWebCam/.src/Form1.form:22 +msgid "Bright" +msgstr "Яркость" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.form:31 +msgid "Contrast" +msgstr "Контраст" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.form:45 +msgid "Whiteness" +msgstr "Белизна" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.form:49 +msgid "Hue" +msgstr "Тон" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.form:58 +msgid "Color" +msgstr "Цвет" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.form:68 +msgid "128x96" +msgstr "128x96" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.form:68 +msgid "160x120" +msgstr "160x120" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.form:68 +msgid "176x144" +msgstr "176x144" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.form:68 +msgid "320x240" +msgstr "320x240" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.form:68 +msgid "352x288" +msgstr "352x288" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.form:68 +msgid "640x480" +msgstr "640x480" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.form:68 +msgid "1024x768" +msgstr "1024x768" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.form:69 +msgid "ComboBox1" +msgstr "Комбинированный_список_1" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.form:73 +msgid "Size" +msgstr "Размер" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.form:86 +msgid "+" +msgstr "+" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.form:91 +msgid "-" +msgstr "-" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.form:96 +msgid "Device Information" +msgstr "Информация об устройстве" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.form:101 +msgid "Take a shot" +msgstr "Сделать снимок" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.form:109 +msgid "Device:" +msgstr "Устройство:" + +#: app/examples/Multimedia/MyWebCam/.src/Form1.form:114 +msgid "/dev/video0" +msgstr "/dev/video0" + diff --git a/app/examples/Multimedia/MyWebCam/.project b/app/examples/Multimedia/MyWebCam/.project new file mode 100644 index 00000000..831cb11a --- /dev/null +++ b/app/examples/Multimedia/MyWebCam/.project @@ -0,0 +1,19 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.5.90 +Title=Webcam example +Startup=Form1 +Icon=camera.png +Version=3.6.2 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.v4l +TabSize=2 +Translate=1 +Language=fr +ExecPath=/home/dcampos/MyWebCam/MyWebCam +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence +Packager=1 diff --git a/app/examples/Multimedia/MyWebCam/.src/Form1.class b/app/examples/Multimedia/MyWebCam/.src/Form1.class new file mode 100644 index 00000000..0948ec26 --- /dev/null +++ b/app/examples/Multimedia/MyWebCam/.src/Form1.class @@ -0,0 +1,203 @@ +' Gambas class file + +Private hWebcam As VideoDevice +Private OnSet As Boolean +Private Fps As Date +Private nFps As Integer + +Public Sub Button1_Click() + + + Dim num As Integer + Dim Buf As String + Dim sSize As String + + If hWebCam Then + Bright.Enabled = False + Contrast.Enabled = False + Hue.Enabled = False + Whiteness.Enabled = False + Colour.Enabled = False + cmbSize.Enabled = False + FreqUp.Enabled = False + FreqDown.Enabled = False + TxtDevice.Enabled = True + BtnTakeShot.Enabled = False + Button2.Enabled = False + hWebCam = Null + Tmr.Enabled = False + Button1.Caption = ("Capture") + Return + End If + + + Try hWebCam = New VideoDevice(TxtDevice.Text) + If Error Then + Message.Error(("Unable to open video device")) + Return + End If + hWebCam.Source = hWebCam.TV + hWebCam.PAL + + Button1.Caption = ("Stop") + BtnTakeShot.Enabled = True + Button2.Enabled = True + Bright.Enabled = True + Contrast.Enabled = True + Hue.Enabled = True + Whiteness.Enabled = True + Colour.Enabled = True + cmbSize.Enabled = True + sSize = CStr(hWebCam.Width) & "x" & CStr(hWebCam.Height) + If cmbSize.Find(sSize) < 0 Then cmbSize.Add(sSize) + Try cmbSize.Text = sSize + FreqUp.Enabled = True + FreqDown.Enabled = True + TxtDevice.Enabled = False + OnSet = True + Bright.Value = hWebcam.Bright + Contrast.Value = hWebcam.Contrast + Hue.Value = hWebCam.Hue + Whiteness.Value = hWebCam.Whiteness + Colour.Value = hWebCam.Color + LblFreq.Text = ("Tuner frequency:") & " " & hWebCam.Tuner.Frequency + + Wait 0.001 + OnSet = False + Tmr.Delay = 10 + Tmr.Enabled = True + Me.Caption = hWebCam.Name + Fps = Now() + nFps = 0 + + +End + + + + + +Public Sub Bright_Change() + + If OnSet Then Return + hWebCam.Bright = Bright.Value + +End + +Public Sub Contrast_Change() + + If OnSet Then Return + hWebCam.Contrast = Contrast.Value + +End + +Public Sub Whiteness_Change() + + If OnSet Then Return + hWebCam.Whiteness = Whiteness.Value + +End + +Public Sub Colour_Change() + + If OnSet Then Return + hWebcam.Color = Colour.Value + +End + +Public Sub Hue_Change() + + If OnSet Then Return + hWebCam.Hue = Hue.Value + +End + +Public Sub cmbSize_Click() + + Dim aSize As String[] + + aSize = Split(cmbSize.Text, "*x*") + hWebcam.Resize(CInt(aSize[0]), CInt(aSize[1])) + +End + + +Public Sub Tmr_Timer() + + Dim T1 As Date + Dim sBuf As String + Dim hPict As Picture + + Tmr.Enabled = False + + 'Try PictureBox1.Picture = hWebCam.Picture + Draw.Begin(dwgVideo) + hPict = hWebCam.Image.Picture + Draw.Picture(hPict, (dwgVideo.W - hPict.W) \ 2, (dwgVideo.H - hPict.H) \ 2) + Draw.End + + If Not Error Then + nFps = nFps + 1 + T1 = Now() - Fps + If Second(T1) >= 1 Then + Me.Caption = hWebCam.Name & " (" & nFps & " " & ("fps") & ")" + Fps = Now() + nFps = 0 + End If + End If + Tmr.Enabled = True + +End + + +Public Sub Form_Close() + + Tmr.Enabled = False + hWebCam = Null + +End + + + + + +Public Sub FreqUP_Click() + + hWebCam.Tuner.Frequency = hWebCam.Tuner.Frequency + 5 + LblFreq.Text = ("Tuner frequency:") & " " & hWebCam.Tuner.Frequency + +End + + + +Public Sub FreqDown_Click() + + hWebCam.Tuner.Frequency = hWebCam.Tuner.Frequency - 5 + LblFreq.Text = ("Tuner frequency:") & " " & hWebCam.Tuner.Frequency + +End + +Public Sub Button2_Click() + + Dim sCad As String + + sCad = ("Device Bus:") & " " & hWebCam.Bus & "\n" + sCad = sCad & ("Device Driver:") & " " & hWebCam.Driver & " " & ("Version:") & " " & hWebCam.Version & "\n" + sCad = sCad & ("Device Name:") & " " & hWebCam.Name & "\n" + sCad = sCad & ("Max. Resolution:") & " " & hWebCam.MaxWidth & "x" & hWebCam.MaxHeight & "\n" + sCad = sCad & ("Min. Resolution:") & " " & hWebCam.MinWidth & "x" & hWebCam.MinHeight & "\n" + + Message.Info(sCad) + +End + +Public Sub BtnTakeShot_Click() + + Try hWebCam.Save(User.Home & "/webcam_shot.png") + If Not Error Then Message.Info(("Image saved as ") & User.Home & "/webcam_shot.png") +End + +Public Sub Panel2_MouseDown() + + + +End diff --git a/app/examples/Multimedia/MyWebCam/.src/Form1.form b/app/examples/Multimedia/MyWebCam/.src/Form1.form new file mode 100644 index 00000000..7b6cc9df --- /dev/null +++ b/app/examples/Multimedia/MyWebCam/.src/Form1.form @@ -0,0 +1,122 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(38,2.4286,76,90) + Resizable = False + { dwgVideo DrawingArea + MoveScaled(0,0,75,51) + Background = &H000000& + Cached = True + } + { Tmr #Timer + #MoveScaled(1.1429,20.5714) + Delay = 10 + } + { Panel2 Panel + MoveScaled(0,52,75,37) + { Panel7 Panel + MoveScaled(1,0,74,15) + Border = Border.Raised + { Label1 Label + MoveScaled(2,1,10,3) + Text = ("Bright") + } + { Bright Slider + MoveScaled(13,1,25,3) + Enabled = False + MaxValue = 65535 + } + { Label2 Label + MoveScaled(2,5,9,3) + Text = ("Contrast") + } + { Contrast Slider + MoveScaled(13,5,25,3) + Enabled = False + MaxValue = 65535 + } + { Whiteness Slider + MoveScaled(13,9,25,3) + Enabled = False + MaxValue = 65535 + } + { Label3 Label + MoveScaled(2,9,11,3) + Text = ("Whiteness") + } + { Label5 Label + MoveScaled(38,1,9,4) + Text = ("Hue") + } + { Hue Slider + MoveScaled(47,1,25,3) + Enabled = False + MaxValue = 65535 + } + { Label4 Label + MoveScaled(38,5,8,4) + Text = ("Color") + } + { Colour Slider + MoveScaled(47,5,25,3) + Enabled = False + MaxValue = 65535 + } + { cmbSize ComboBox + MoveScaled(47,9,25,4) + ReadOnly = True + List = [("128x96"), ("160x120"), ("176x144"), ("320x240"), ("352x288"), ("640x480"), ("1024x768")] + Text = ("ComboBox1") + } + { Label7 Label + MoveScaled(38,9,8,4) + Text = ("Size") + } + } + { Panel3 Panel + MoveScaled(1,16,74,13) + Border = Border.Raised + { LblFreq Label + MoveScaled(1.1429,1.1429,36,4) + Text = ("Tuner frequency:") + } + { FreqUP Button + MoveScaled(1.1429,5.1429,6.4286,5.1429) + Enabled = False + Text = ("+") + } + { FreqDown Button + MoveScaled(9.1429,5.1429,6.4286,5.1429) + Enabled = False + Text = ("-") + } + { Button2 Button + MoveScaled(44,7,29.1429,5.1429) + Enabled = False + Text = ("Device Information") + } + { BtnTakeShot Button + MoveScaled(44,1,29.1429,5.1429) + Enabled = False + Text = ("Take a shot") + } + } + { Panel1 Panel + MoveScaled(1,30,74,7) + Border = Border.Raised + { Label6 Label + MoveScaled(1.1429,1.1429,12,4) + Text = ("Device:") + } + { TxtDevice TextBox + MoveScaled(14,1,29,5) + Expand = True + Text = ("/dev/video0") + } + { Button1 Button + MoveScaled(44,1,29,5) + Text = ("Capture") + } + } + } +} diff --git a/app/examples/Multimedia/MyWebCam/camera.png b/app/examples/Multimedia/MyWebCam/camera.png new file mode 100644 index 0000000000000000000000000000000000000000..84b228200af8f4e1cc179f2cb6d2ae75e404cf5c GIT binary patch literal 5363 zcmWldc|6m99LMKKuF6f$nlrgWid0PHm=MZ+tL1F&ney%Y`GK?JSShH*-p*fQ~ z_m!);Z~A@uW7}hUeD{5SzVFZb{dzs$p9B-*+oxCsSs@U}Dg8SzGw^xi-;0?EyyFm0 z#vl-$I(^tp^WfpWTn}I2`xz}!rKE?U?yAKh`uMk{;>lc^uhKcB6*zf4g?(h`sp4O2 z;VXR0@kh*tH|6yjElq81;PB5n6yhq(Lb7Lzz6jwN*-r=3OKC`?iD=Tl@D!)Wx8X&L zLlEw&)qlp$AcIu#u2f^A%zJ7je?-e^dw*$H=JWmjWUSto($&>H&$-9As?SO6!dH%8 zNW}98%km{jR&7PBdox(42x|sbitc_wd481hD1I%Yz}dL8WhTQj7mYHH=7-Ikb-XLb zcj*|%qJf-gWu0g=Ec|=Rlm`x54c7YE-*0APlQgpOO%;wGlFKoA9Uqi#18>BggD?xI@V3-7~tqS0uGO}unMOEtVl9h$%b z{R0C}lPefEcXkMgt-1~FoC~!#4~`pI^6Y3duKL64%T7}Yo~@N z0(8~n{YBXcn&RFjlb$JK;m41ek5mm*1)FD)qb4HkP3O|vUK*5m@+%)h8JEW?QRyfx zHkjVC;bH5=#YNPu;z#J`s6v_V4m!L@qHw00vWm)6H>>A?#V5n}X0vE2?9=xXU!%rp z(tJs2cO;nObRJ~JA<&n@=L}1@dV6~%xL8=@=;h_*18tRjH0Yi?h3mp31lYNfZw-+n zG`YFC-@kvqIuU#3M}L1{@i)mFBb95{;Oe>c%VD{Yty@o{7D}?dWV&5rX+^7f2nYx? ztOQQ)9JI}EfE@VEwV!?6BLg1YEA^oj--187wpRIhe7t^%+043LWQYbeog$z&5MWvD z%gq|s>Z+2BwIUbsIilUGQ8H-kfa;MKS(Y;a4$IAPvT)3rkDIwY6!Ywb2|MQ&CQS~z>~WE{U>biCe7 zIuOBS&z(VWm>%ThJUQBt{UF~&6-F7A`{$ZH_Z=JO{ zdYpTzApuG`EBj=p4%gO*uMCo6S|0vzvDJ2XU%yG|4>uSj=1o>W>)d(2phS%x;J02Ll-3t9g(B%a}+Y5m`|NL1-65Oo#_H!5)bPMgA%S; zWR9y!TYEcuoK6g=#c;}MmQ_P))S*ijDjc%=27wl1ID|e$fp7>9k7BS7 zNTQK;fpm`1YZ+GDRep~EyVCOV1cMSCl^luO4h7aRvOOtKzN4cfPb&nek1=9n-F;+p z);Ax4{*uq&BCMTJTt3EjqsVpY359nf%ZpAk=#P0cg)_|yi_n&Un&#@Iw&;3zTm&~j zF<-iL$;jCFHBJ_Xb53_jityofvVnoJYv=N}d)R?i%ex*W8V$-RMfi%&y?fk*(ZCU# zOvjt&3tU|N8L4@>v&TjB52cK}tu11!E|?o7<%FLYEivb;afNO+i5;6nlN4jdSXGB_ zm|K*9XXvZAKfM*&=Bn}{HC3~4W#}Va*GckA=G+D#0I%94_QJ<6}@X~VvXXweB~LHp;Wiw-rZ|k_DxEG z-}4G_vK9BMvGw&L78W^qc{96f)1X(d2#XMs7hRlAW5V)B@VuRQS9F7dcHD08k16ti z3-j}<@Gm{p!3uuY8B1_E1qSx-9TTGRq_}+j3=N|-y^(%49yx;dz1wz@P;W`)Ias0v zOoD^i_h5y290t0obiEZtMGkRMO<9`{f7@0vyen)PRf_~Ke$N-!V+VITa{EGr@K{V5r|{} zd*tmcg)yGq*vrn(2lmtQ)5|SY?7H#YyImG1YufM;!L>sKIX2ElC3da^#4}Cd*HYbWVBM<8&b6)0N&G+vv#dIuSr5XsL1mlES`de~ z5_O{yXx!UEEW-A4aN5cUp|`KE`L^~tCy(CbRC5xJA4^xkswXF%@+0>VAk8iHJ7b2m4`98j+6O~j>tEOuSAY3+ z*=?KI4Gg_UaEtxjZL#|Bm=}ke+Sn^ImoEz_3+XV}SEK{BnVJsgTZ8DpW zj}ERpnfmG`;;d)N9Nz@w5C5=BRNed69fd5?;)Au|JiqzQqNV*QWk+qgjmD83=$FZ+ z__M;oZ%Rw!PYJ1mm9OoE1G2bv>(;XOlEuRjCH8sD$05Rp4_79FXk#5SGjF(WT+CoC zH)ritHRXw`tGjA$(X0x;b^CS#44TAcuaHIbour@dDyX);ImcZnmjyW(#><@+)oSf2 zzPV{{%Xmw#udYCgd?rr6i14(~-o%iRWE51ca_+ZMxc60jmrn5i}u^2ZJt@9Tno z83k_E0#Xlf{4`v$k+i+IAd8B!awB-)EMDJvVzg-nv)x5HZvyE%4J;>4XA+mtp@Vqz zr~xm>-t;dx5NxMxfqeJJhjct47o#r28}cP`W=I${M$ z1SM@O5>-F76^illhUZpvKkR@M&7CUqKJl=(mCMMls@}p>4n~(H4dKD$Pa~1^dZw9y zF|+#=xTTh;LqC_l#WMu<`udZ-6)pYxxponoO zu_y61;&o>NI2>)WP7Ds9vGrc`>wBNyjg7pmwN;28uxqTwwWFWnScX>eu-SCs$Y3Ax4=*d@xk?y0k+(D-bdn9#$|; zyjWX%(n9a~GVyiy;NTq_8=-)JfKQ{|X5~D$Q-qzIot^dLKrI%Tv|fmYXt^i$eLpwk zcm^$%&D36}!0Y9f(n?a-jG?YH*~xOtcQ~H)W4SxQWtHTXm-yOuqvP_%*bX@h;MMlZ z$nDw(d6fI6ko+oSO!L$H2!(12rC@(Qw2nl=+?1n2bBtaYlw{}Rl*^W^c))u>+F`{# zk}d#RT%Dbt`f9wWS^~`KJJ+5=to$M4G-vSAup>DHfd?}b8mp|K@nA~<-uruT(fMe9 zEANWm^HEaJJ%y}!212wQbbYofeC|>dS(Xlm!w0TdCpJS%?-pRIt5bnl0q*LZv|``X zVFN>r>gCId2pmv0%6KZO#<`glnA=QSdMB$>l)v3SpR!eGnV2Z#z66vAz@iXgJW>-- z(X{mSJ$;MW3sAR-+tBrnu82Q=Ey7=x1stvVUw3fmnP#KWIs*Y<8-TI`s{K*^(cg{& z4JPUOmn^c+A@@LvN+nJ+#r}HIBGSoXlD))fo!LAyBM}=L+xa789utJ5$`e)(#{cGH zG=nVnD5#m}hp?G7#qdeCCbpKh_~?tA6M>|j08F^{UG-eaEGlPeixq%qG*({!hMk>= zef3Ua%=b*Q@~^wQ8j%z+yMbCcwt}wtH{ZcDb+6PIT)uX2^ebX#6ePfJchzZse;>CE zjd_OhIh)4#g%Sca09|HlS4M;D*7%cX=MTI3G z2{kn}P)a5a4qYG{3=9lZZ%@q0`26H6)6tpiLKDHA|lQ68vtrb%n~{~jfaPa!G2GzPBu}8 zHy_As5Ly9BBqt~T3K*~h-c}Q~pfb;^8n7)Dhbu?HCDtZ+`yg$Osj* zKRDn3`BlkzLn7q@*pH~RuSc`-D|C;KQyy)sJ$4q$0xCrrXhhc&Zk1cLh@5LuWC&YS!lv7N%MI;6-EO%|9fXHsC?g)cE7$tX;Z*=Q20ROXsqdn!J&kFBOU zizI0wn~^uIh{GY5-V%Nc4z^yb{`{pY>Ubm0YJ_K1gmdV4cRE$t=U=!(D_H;b)>f?> zl@HkXr{J~My{@0Rg2U2h49w*C+GdfRbB}|9E`urR-&|ZQcGSw``B&@AVLWPicbh=L zP|)kNXRRN-MzqgCDUe@Kore#lZ9aMyRaJFf!Qy#XKpC*Jv&*4p{xgtV-_x2!o(25Z z>CqWm|0MK)QJ~g2=-m3%%*AU(<$q#RB`k!7H zWBh3mWF>I(c}Oe*-AT9LsZJfM55ruF+Gr5tPrDucH)JY7x{6Z09mrDSM$MFuVhcBf zc@uc+m#Rp?yOZ%OjPyLLak9|Q_KGJ@3;U+D@Uor&vdF>QJv7udI4BUdz5EZe+0wJb z8^odO6fg_@+#>upj-ZFA`;1khT1#^-wcWB=8ym9+-(QT=f)?rQ211Uu1~3MS!l${D znl+wGF@n21!K>#Qah`>c6`-WR<-sQrw>7<0={{<0cI&D^*A=1bdWGNYFZ`+B`FEdX zo*Up;Nfy{1uz`jKh$49xD7Cv&4AK~OyaEL2cxT+JfhyII2}U3F#MS}WjMz$)t3PS< z-#CyOxmgS-X`43QMOCC26`A-N9hs#EP*CC13DWtyTclH)bu2Zrlks9?IE*X_-5G(@ z+bfosm9uV^bR|L8lWCDVq-ydAWL%lvGvs$syr>D!tTN| literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/WaveGenerator/.directory b/app/examples/Multimedia/WaveGenerator/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Multimedia/WaveGenerator/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Multimedia/WaveGenerator/.icon.png b/app/examples/Multimedia/WaveGenerator/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a778a55df6f9b359f982fb7cfa071d0720a555bc GIT binary patch literal 4098 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 A-T(jq literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/WaveGenerator/.lang/ru.po b/app/examples/Multimedia/WaveGenerator/.lang/ru.po new file mode 100644 index 00000000..18102b25 --- /dev/null +++ b/app/examples/Multimedia/WaveGenerator/.lang/ru.po @@ -0,0 +1,106 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Multimedia/WaveGenerator/.project:15 +msgid "WaveGenerator" +msgstr "Генератор волн" + +#: app/examples/Multimedia/WaveGenerator/.src/FMain.class:69 +msgid "Hz" +msgstr "Гц" + +#: app/examples/Multimedia/WaveGenerator/.src/FMain.form:5 +msgid "Wave generator" +msgstr "Генератор волн" + +#: app/examples/Multimedia/WaveGenerator/.src/FMain.form:14 +msgid "Frequency" +msgstr "Частота" + +#: app/examples/Multimedia/WaveGenerator/.src/FMain.form:26 +msgid "Volume" +msgstr "Громкость" + +#: app/examples/Multimedia/WaveGenerator/.src/FMain.form:45 +msgid "Sine" +msgstr "Синусусоида" + +#: app/examples/Multimedia/WaveGenerator/.src/FMain.form:45 +msgid "Square" +msgstr "Квадрат" + +#: app/examples/Multimedia/WaveGenerator/.src/FMain.form:45 +msgid "Saw" +msgstr "Пила" + +#: app/examples/Multimedia/WaveGenerator/.src/FMain.form:45 +msgid "Triangle" +msgstr "Треугольник" + +#: app/examples/Multimedia/WaveGenerator/.src/FMain.form:45 +msgid "Silence" +msgstr "Тишина" + +#: app/examples/Multimedia/WaveGenerator/.src/FMain.form:45 +msgid "White uniform noise" +msgstr "Белый однообразный шум" + +#: app/examples/Multimedia/WaveGenerator/.src/FMain.form:45 +msgid "Pink noise" +msgstr "Розовый шум" + +#: app/examples/Multimedia/WaveGenerator/.src/FMain.form:45 +msgid "Sine table" +msgstr "Таблица синусов" + +#: app/examples/Multimedia/WaveGenerator/.src/FMain.form:45 +msgid "Periodic ticks" +msgstr "Периодические тики" + +#: app/examples/Multimedia/WaveGenerator/.src/FMain.form:45 +msgid "White gaussian noise" +msgstr "Белый гауссов шум" + +#: app/examples/Multimedia/WaveGenerator/.src/FMain.form:45 +msgid "Red brownian noise" +msgstr "Красный броуновский шум" + +#: app/examples/Multimedia/WaveGenerator/.src/FMain.form:45 +msgid "Blue noise" +msgstr "Синий шум" + +#: app/examples/Multimedia/WaveGenerator/.src/FMain.form:45 +msgid "Violet noise" +msgstr "Фиолетовый шум" + +#: app/examples/Multimedia/WaveGenerator/.src/FMain.form:53 +msgid "440 Hz" +msgstr "440 Гц" + +#: app/examples/Multimedia/WaveGenerator/.src/FMain.form:58 +msgid "Play / Stop" +msgstr "Играть / Остановить" + diff --git a/app/examples/Multimedia/WaveGenerator/.project b/app/examples/Multimedia/WaveGenerator/.project new file mode 100644 index 00000000..6818e88c --- /dev/null +++ b/app/examples/Multimedia/WaveGenerator/.project @@ -0,0 +1,14 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.8.90 +Title=WaveGenerator +Startup=FMain +Icon=audio-headphones.png +Version=3.8.90 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.form +Component=gb.media +TabSize=2 +Packager=1 +Translate=1 diff --git a/app/examples/Multimedia/WaveGenerator/.src/FMain.class b/app/examples/Multimedia/WaveGenerator/.src/FMain.class new file mode 100644 index 00000000..0336f048 --- /dev/null +++ b/app/examples/Multimedia/WaveGenerator/.src/FMain.class @@ -0,0 +1,102 @@ +' Gambas class file + +Private $bPlay As Boolean +Private $hAudio As MediaControl +Private $hConv As MediaControl +Private $hPlayer As MediaPipeline +Private $hOutput As MediaControl +Private $hFilter As MediaControl +Private $hEncoder As MediaControl + +Public Sub Form_Open() + + ' audiotestsrc is-live=1 ! + ' audio / x - raw, channels = 2, rate = 48000!flacenc!filesink + ' location = generated.flac + + $hPlayer = New MediaPipeline As "Pipeline" + + $hAudio = New MediaControl($hPlayer, "audiotestsrc") + $hAudio["is-live"] = True + + $hFilter = New MediaControl($hPlayer, "audio/x-raw,channels=2,rate=48000") + 'Print $hFilter["caps"] + + '$hEncoder = New MediaControl($hPlayer, "flacenc") + + + $hConv = New MediaControl($hPlayer, "audioconvert") + $hOutput = New MediaControl($hPlayer, "autoaudiosink") + ' + + '$hOutput = New MediaControl($hPlayer, "filesink") + '$hOutput["location"] = User.Home &/ "output.flac" + + '$hAudio.LinkTo($hConv) + '$hConv.LinkTo($hOutput) + + Media.Link($hAudio, $hFilter, $hConv, $hOutput) + + SetFreq(440) + +End + +Public Sub Form_Close() + + $hPlayer.Stop + +End + + +Public Sub btnPlay_Click() + + $bPlay = Not $bPlay + + If $bPlay Then + $hPlayer.Play + Else + $hPlayer.Pause + Endif + +End + +Private Sub SetFreq(fFreq As Float) + + $hAudio["freq"] = fFreq + Object.Lock(sldFrequency) + sldFrequency.Value = (Log(fFreq) - Log(20)) / (Log(20000) - Log(20)) * 1000 + Object.Unlock(sldFrequency) + lblFrequency.Text = Format(fFreq, "0.000") & " " & ("Hz") + +End + +Public Sub sldFrequency_Change() + + SetFreq(Exp(Log(20) + (Log(20000) - Log(20)) * sldFrequency.Value / 1000)) + +End + +Public Sub sldVolume_Change() + + $hAudio["volume"] = sldVolume.Value / 1000 + +End + +Public Sub cmbType_Click() + + $hAudio["wave"] = cmbType.Index + +End + +Public Sub Pipeline_State() + + Debug Last.State + +End + + +Public Sub Pipeline_End() + + Debug + +End diff --git a/app/examples/Multimedia/WaveGenerator/.src/FMain.form b/app/examples/Multimedia/WaveGenerator/.src/FMain.form new file mode 100644 index 00000000..ba04af4a --- /dev/null +++ b/app/examples/Multimedia/WaveGenerator/.src/FMain.form @@ -0,0 +1,61 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,72,20) + Text = ("Wave generator") + Icon = Picture["audio-headphones.png"] + Arrangement = Arrange.Vertical + Spacing = True + Margin = True + { Panel1 HBox + MoveScaled(2,2,68,4) + { Label1 Label + MoveScaled(0,0,11,4) + Text = ("Frequency") + } + { sldFrequency Slider + MoveScaled(14,0,53,4) + Expand = True + MaxValue = 1000 + } + } + { Panel2 HBox + MoveScaled(2,7,68,4) + { Label2 Label + MoveScaled(0,0,11,4) + Text = ("Volume") + } + { sldVolume Slider + MoveScaled(14,0,53,4) + Expand = True + MaxValue = 1000 + Value = 800 + } + } + { Panel5 Panel + MoveScaled(31,12,13,1) + Expand = True + } + { Panel3 HBox + MoveScaled(2,14,68,4) + Spacing = True + { cmbType ComboBox + MoveScaled(0,0,27,4) + ReadOnly = True + List = [("Sine"), ("Square"), ("Saw"), ("Triangle"), ("Silence"), ("White uniform noise"), ("Pink noise"), ("Sine table"), ("Periodic ticks"), ("White gaussian noise"), ("Red brownian noise"), ("Blue noise"), ("Violet noise")] + } + { Panel4 Panel + MoveScaled(28,0,3,4) + Expand = True + } + { lblFrequency Label + MoveScaled(27,0,13,4) + Text = ("440 Hz") + Alignment = Align.Right + } + { btnPlay Button + MoveScaled(41,0,27,4) + Text = ("Play / Stop") + } + } +} diff --git a/app/examples/Multimedia/WaveGenerator/audio-headphones.png b/app/examples/Multimedia/WaveGenerator/audio-headphones.png new file mode 100644 index 0000000000000000000000000000000000000000..7d16771fa0e36a2a2e8b5b5957bf207f8d438d18 GIT binary patch literal 2578 zcmV+t3hniYP)mQn? z`C&-c_ejUN_?-fCl**V>)&V7R<{+4x>(e-|>FnxSe7>cHG=Q;K_9<{g6tky*a|Ema za4MBBzNzlYcDogNt2JnqulA#L+gBPu4A}5ZgHA~YFyJW$Jj=SP1lG?k#hM`A4Y99w z06Ks$00|%$z<2yXIBjx-T@s`(mlV3Pe$tUPK4TvTl z5~)1w2Gd_$y~zgvOdih4mTJXL4L%06BoyO=Z{6|I68}j6iUAh@WT*3vDgnkh0BXsS z;(uSsJlB;vdT8CcU30Fx{+^2$FCGd6gM|Qix|5G-`;_1CGgvhwY8XFHJ2oH=v2v9XaB78Tz7@WX3UYTNbRf%nX+swzF*Ne&_R z*|TS5Rn@!0+E*CvX;a&^>$TmvGF{&LGd7B4QQvLF3$z>SkZ z7r}~(ij7%WS%3Ka^Uu-H&@ic~si`B~$z6%&%$YNF-n@Bj1qB7rb^ZRAUV3Th>z9=) zR{{Wb?%a8}y1JS+Y}jxTfYXOGq&l_!pWc0GW4 z0FR|R*_gHgSXf?O-h9ig^Sy0tZJS+M*2Uc1+|b&!Yw5Y?o_qW5Wy{J8)B4n3;vf9Z zweidu`s~zh~&5zea z_w0R(w!iW+H8(d?X=&+<($Z1@KvQF5!>NW-lsGZzSwJe)DukE-05vr=SigS#rxPbm zM3yVd0n=bvrb-xoN4m2IaA)kBMIsT$>+!;I9GRV+jn%7HAFZjW0RW7jFky^kT77Qb zk^*pSCul^Cd;nTeQPCd@3JNB%*q$yC!4~!y^laKStS5;TlTt!T z2_d*9rNe}BE5hM0EX#rr0#U<&<2aB~QZnb60KkYwi3<+Sc~9XYkq9{FV2nZ6bpYtuDY*UuYi}b>)6mh;0V0BBSqKCI;M^i9CD8Z!A+rD&2Drr`I490IEXzV95`mO5o(lme zj*q`=5xj8WLQz{=8zUm*<>i5h5Q#)!Sr(b53DpfCE1C0506;`8(=@veS<52MISYrw z@&6$d3NZjn;^Qyt0HxHdU@!8}>QX&SU=hU5S5!9C7TMA9nuz71aqR}V}!+>R3&~+U`*gys!0svT7C=5k}Xfz7W zIa-=qux!&+6}XyRo_aNw_o@q>_CmChLGcG>HhDbLhGb!!U+)o)G{H6Q*IH zv$GRI2vGNnR+l9|5P+us0E7@dYXO1!kIy&&rfI-5<7-wgfCQZz48T9pd!y3>z%UG0 zrUkm3K*j;EZJW5o$uNv$00_Xp1_SUB5?1**0M0ptBZ!oWy{MJ30F>i6j0+ASL^1#j z-9;V{z@PfyiUANpKspk!J40sx=a~S&5yI{+SaJXW@Y-Mi0N~z40C8i|k?~96jP8K$ zn;^TVbNc~!F!7Ip0K6B2AY&asoO3wRfszX7eyuH20Z7NTVaKX3grEcf4+Gde8~||$ zS)B97ZQEu-2uP{mNT)x5On6${69Z#R*|q~=+a!d5ZQIN+jAzk(?C!0DrOZ-F!ke9)jow#)pB~D_2*iM$N>u7ClE%f{S-^_YRNeKX8 z=Bycum)==&(B~Ul0bn~a>q+r60NZ^&-%|?;Z#k4ZA-5O+mMvSBIuAv+rQ=PwtJ9*Q o@5E~iqZ-wyMm4HYjVg`$FEg;6C=gT&f&c&j07*qoM6N<$f>E&KaR2}S literal 0 HcmV?d00001 diff --git a/app/examples/Multimedia/WebCam/.directory b/app/examples/Multimedia/WebCam/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Multimedia/WebCam/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Multimedia/WebCam/.icon.png b/app/examples/Multimedia/WebCam/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..97c27e7ffd7533ed15bbc52401313fe66e6169e2 GIT binary patch literal 4272 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 SuD5Cc0000, YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-31 05:33+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Multimedia/WebCam/.project:17 +msgid "V4L2 Compatible Webcam" +msgstr "V4L2-совместимая веб-камера" + +#: app/examples/Multimedia/WebCam/.project:18 app/examples/Multimedia/WebCam/.src/FMain.form:46 +msgid "Encryptec WebCam Viewer" +msgstr "Просмотрщик веб-камеры Encryptec" + +#: app/examples/Multimedia/WebCam/.src/FDevice.form:28 +msgid "devName" +msgstr "Имя_устройства" + +#: app/examples/Multimedia/WebCam/.src/FDevice.form:36 +msgid "currentTime" +msgstr "текущее время" + +#: app/examples/Multimedia/WebCam/.src/FDevice.form:56 +msgid "Picture Size" +msgstr "Разрешение" + +#: app/examples/Multimedia/WebCam/.src/FDevice.form:61 +msgid "160 x 120" +msgstr "160 x 120" + +#: app/examples/Multimedia/WebCam/.src/FDevice.form:61 app/examples/Multimedia/WebCam/.src/FDevice.form:62 +msgid "320 x 240" +msgstr "320 x 240" + +#: app/examples/Multimedia/WebCam/.src/FDevice.form:61 +msgid "640 x 480" +msgstr "640 x 480" + +#: app/examples/Multimedia/WebCam/.src/FDevice.form:69 +msgid "Brightness" +msgstr "Яркость" + +#: app/examples/Multimedia/WebCam/.src/FDevice.form:76 +msgid "Contrast" +msgstr "Контраст" + +#: app/examples/Multimedia/WebCam/.src/FDevice.form:83 +msgid "Colour" +msgstr "Цвет" + +#: app/examples/Multimedia/WebCam/.src/FDevice.form:90 +msgid "Hue" +msgstr "Тон" + +#: app/examples/Multimedia/WebCam/.src/FDevice.form:97 +msgid "Whiteness" +msgstr "Белизна" + +#: app/examples/Multimedia/WebCam/.src/FDevice.form:101 +msgid "&Hide" +msgstr "Скрыть" + +#: app/examples/Multimedia/WebCam/.src/FDevice.form:106 +msgid "&Close" +msgstr "Закрыть" + +#: app/examples/Multimedia/WebCam/.src/FDevice.form:111 +msgid "Refresh Rate" +msgstr "Част. обновл." + +#: app/examples/Multimedia/WebCam/.src/FDevice.form:121 +msgid "&Pause" +msgstr "Пауза" + +#: app/examples/Multimedia/WebCam/.src/FDevice.form:127 +msgid "&Play" +msgstr "Игра" + +#: app/examples/Multimedia/WebCam/.src/FDevice.form:132 +msgid "&Snap" +msgstr "Скрин" + +#: app/examples/Multimedia/WebCam/.src/FDevice.form:139 +msgid "0.00 fps" +msgstr "0.00 кадр/с" + +#: app/examples/Multimedia/WebCam/.src/FDevice.form:143 +msgid "&Reset" +msgstr "Сброс" + +#: app/examples/Multimedia/WebCam/.src/FMain.class:26 +msgid "Searching:" +msgstr "Поиск:" + +#: app/examples/Multimedia/WebCam/.src/FMain.class:46 +msgid "Found" +msgstr "Найдено" + +#: app/examples/Multimedia/WebCam/.src/FMain.class:46 +msgid "devices" +msgstr "устройств" + +#: app/examples/Multimedia/WebCam/.src/FMain.class:112 +msgid "Settings Saved!" +msgstr "Настройки сохранены!" + +#: app/examples/Multimedia/WebCam/.src/FMain.form:14 +msgid "WebCam Options" +msgstr "Параметры веб-камеры" + +#: app/examples/Multimedia/WebCam/.src/FMain.form:19 +msgid "&Scan for Devices" +msgstr "Сканирование устройств" + +#: app/examples/Multimedia/WebCam/.src/FMain.form:24 +msgid "Save Settings" +msgstr "Сохранить настройки" + +#: app/examples/Multimedia/WebCam/.src/FMain.form:29 +msgid "&Quit" +msgstr "Выход" + +#: app/examples/Multimedia/WebCam/.src/FMain.form:51 +msgid "(c) Encryptec Limited 2009" +msgstr "(c) Encryptec Limited 2009" + +#: app/examples/Multimedia/WebCam/.src/FMain.form:58 +msgid "Scanning for Devices " +msgstr "Сканирование устройств " + +#: app/examples/Multimedia/WebCam/.src/FDevice.class:14 app/examples/Multimedia/WebCam/.src/FDevice.class:106 app/examples/Multimedia/WebCam/.src/FDevice.class:118 +msgid "Camera_&1" +msgstr "Камера_&1" + +#: app/examples/Multimedia/WebCam/.src/FDevice.class:154 +msgid "fps" +msgstr "кадр/с" + +#: app/examples/Multimedia/WebCam/.src/FDevice.class:162 +msgid "Can't recover picture from Camera!" +msgstr "Не удаётся восстановить изображение с камеры!" + +#: app/examples/Multimedia/WebCam/.src/FDevice.class:248 +msgid "** Paused **" +msgstr "** Приостановлено **" + +#: app/examples/Multimedia/WebCam/.src/FDevice.class:264 +msgid "Saved as" +msgstr "Сохранено как" + +#: app/examples/Multimedia/WebCam/.src/FDevice.class:264 +msgid "Snapshot was not saved" +msgstr "Скриншот не был сохранён" + diff --git a/app/examples/Multimedia/WebCam/.project b/app/examples/Multimedia/WebCam/.project new file mode 100644 index 00000000..a08bddfa --- /dev/null +++ b/app/examples/Multimedia/WebCam/.project @@ -0,0 +1,17 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.8.90 +Title=V4L2 Compatible Webcam +Description="Encryptec WebCam Viewer" +Startup=FMain +Icon=camera.png +Version=3.8.90 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.form +Component=gb.settings +Component=gb.v4l +Environment="GB_GUI=gb.gtk" +TabSize=2 +Packager=1 +Translate=1 diff --git a/app/examples/Multimedia/WebCam/.src/FDevice.class b/app/examples/Multimedia/WebCam/.src/FDevice.class new file mode 100644 index 00000000..4b56a94f --- /dev/null +++ b/app/examples/Multimedia/WebCam/.src/FDevice.class @@ -0,0 +1,304 @@ +' Gambas class file + +' +' This form / class is created for each webcam found on the system. +' +Private $device As VideoDevice +Private $date_format As String +Private $index As Integer +Private $fps As Integer +Private $fps_now As Date + +Public Sub Save() + + Dim key As String = Subst(("Camera_&1"), $index) + + Settings[key & "/top"] = Me.Top + Settings[key & "/left"] = Me.Left + Settings[key & "/refrate"] = refrate.Value + Settings[key & "/size"] = picture_size.Index + 1 + Settings[key & "/brightness"] = slider_bright.Value + Settings[key & "/contrast"] = slider_contrast.Value + Settings[key & "/color"] = slider_colour.Value + Settings[key & "/hue"] = slider_hue.Value + Settings[key & "/whiteness"] = slider_whiteness.Value + +End + +Public Sub _new(dev As VideoDevice, i As Integer) + + $index = i + $device = dev + $date_format = "ddd, d mmm hh:nn:ss" + $fps_now = Now() + $fps = 0 + + slider_bright.MinValue = $device.BrightMin + slider_bright.MaxValue = $device.BrightMax + slider_contrast.MinValue = $device.ContrastMin + slider_contrast.MaxValue = $device.ContrastMax + slider_colour.MinValue = $device.ColorMin + slider_colour.MaxValue = $device.ColorMax + slider_hue.MinValue = $device.HueMin + slider_hue.MaxValue = $device.HueMax + slider_whiteness.MinValue = $device.WhitenessMin + slider_whiteness.MaxValue = $device.WhitenessMax + +End + +Public Sub ResizeDevice() + + Dim $spacing As Integer + + $spacing = 2 + + pic.Width = $device.Width + pic.Height = $device.Height + + If pic.Width < 220 Then pic.Width = 220 + If pic.Height < 140 Then pic.Height = 140 + + title.Left = $spacing + title.top = $spacing + title.Width = pic.Width + + devName.Width = pic.Width - buttonSettings.Width - buttonSettings.Left - $spacing * 6 + currentTime.Width = devName.Width + + container.top = $spacing * 2 + container.left = $spacing * 2 + container.width = pic.Width + 4 + container.Height = pic.Height + $spacing * 3 + title.Height + + pic.Left = 2 + pic.Top = title.top + title.Height + $spacing + + devName.Text = $device.Card + currentTime.Text = Format(Now(), $date_format) + + outer.Left = 0 + outer.Top = 0 + outer.Width = container.Width + $spacing * 4 + outer.Height = container.Height + $spacing * 4 + + If tools.Visible Then + outer.Height = outer.Height + tools.Height + 2 + tools.Width = container.Width + tools.Left = $spacing * 2 + tools.Top = $spacing * 4 + pic.Top + pic.Height + picture_size.Width = tools.Width - picture_size.Left - $spacing * 4 + slider_bright.Width = tools.Width - slider_bright.Left - $spacing * 6 + slider_contrast.Width = tools.Width - slider_contrast.Left - $spacing * 6 + slider_colour.Width = tools.Width - slider_colour.Left - $spacing * 6 + slider_hue.Width = tools.Width - slider_hue.Left - $spacing * 6 + slider_whiteness.Width = tools.Width - slider_whiteness.left - $spacing * 6 + refrate.Width = tools.Width - refrate.Left - $spacing * 6 + + Endif + + Me.Width = outer.Width + Me.Height = outer.Height + +End + +Public Sub Form_Show() + + Dim key As String = Subst(("Camera_&1"), $index) + + Me.Left = Settings[key & "/left", $index * 100] + Me.Top = settings[key & "/top", 0] + + Refresh.Delay = refrate.Value + Refresh.Start + +End + +Public Sub Form_Open() + + Dim key As String = Subst(("Camera_&1"), $index) + + Me.Left = Settings[key & "/left", $index * 100] + Me.Top = settings[key & "/top", 0] + + picture_size.Index = Settings[key & "/size", 1] - 1 + picture_size_Click() + ResizeDevice() + Wait 0.1 + + slider_bright.Value = Settings[key & "/brightness", $device.Bright] + slider_contrast.Value = Settings[key & "/contrast", $device.Contrast] + slider_colour.Value = Settings[key & "/color", $device.Color] + slider_hue.Value = Settings[key & "/hue", $device.Hue] + slider_whiteness.Value = Settings[key & "/whiteness", $device.Whiteness] + refrate.Value = Settings[key & "/refrate", 100] + + $device.Bright = slider_bright.Value + $device.Contrast = slider_contrast.Value + $device.Color = slider_colour.Value + $device.Hue = slider_hue.Value + $device.Whiteness = slider_whiteness.Value + +End + +Public Sub Refresh_Timer() + + Dim when As Date + Dim at As Date + + at = Now() + Refresh.Stop + + $fps += 1 + when = at - $fps_now + If Second(when) >= 3 Then + frame_rate.Text = Format($fps / 3, "#.00 " & ("fps")) + $fps = 0 + $fps_now = at + Endif + + currentTime.Text = Format(at, $date_format) + Try pic.Picture = $device.Image.Picture + If Error Then + Message(("Can't recover picture from Camera!")) + Else + Wait + Try Refresh.Delay = refrate.Value + Try Refresh.Start + Endif + +End + +Public Sub picture_size_Click() + + Select picture_size.Index + Case 0 + $device.Resize(160, 120) + Case 1 + $device.Resize(320, 240) + Case 2 + $device.Resize(640, 480) + + End Select + ResizeDevice() + +End + +Public Sub slider_bright_Change() + + $device.Bright = slider_bright.Value + +End + +Public Sub slider_contrast_Change() + + $device.Contrast = slider_contrast.Value + +End + +Public Sub slider_colour_Change() + + $device.Color = slider_colour.Value + +End + +Public Sub hue_Change() + + $device.Hue = slider_hue.Value + +End + +Public Sub whiteness_Change() + + $device.Whiteness = slider_whiteness.Value + +End + +Public Sub refrate_Change() + + Refresh.Stop + Refresh.Delay = refrate.Value + Refresh.Start + +End + +Public Sub button_hide_Click() + + tools.Hide() + ResizeDevice() + +End + +Public Sub button_close_Click() + + button_hide_Click() + Refresh.Stop + Wait 0.2 + Refresh.Stop + Me.Hide + +End + +Public Sub button_pause_Click() + + button_pause.Hide + button_play.Show + Refresh.Stop + Wait + Refresh.Stop + frame_rate.Text = ("** Paused **") + +End + +Public Sub button_play_Click() + + button_pause.Show + button_play.Hide + Refresh.Start + +End + +Public Sub button_snap_Click() + + If Dialog.SaveFile() Then Return + Try $device.Save(Dialog.Path) + If Not Error Then Message(("Saved as") & " (" & Dialog.Path & ")") Else Message(("Snapshot was not saved")) + +End + +Public Sub buttonSettings_Click() + + If tools.Visible Then + tools.Hide + Else + tools.Show + Endif + ResizeDevice() + + Select $device.Width + Case 160 + picture_size.Index = 0 + Case 320 + picture_size.Index = 1 + Case 640 + picture_size.Index = 2 + End Select + +End + +Public Sub button_reset_Click() + + slider_colour.Value = $device.ColorDefault + slider_bright.Value = $device.BrightDefault + slider_contrast.Value = $device.ContrastDefault + slider_whiteness.Value = $device.WhitenessDefault + slider_hue.Value = $device.HueDefault + +End + +Public Sub Form_Close() + + Refresh.Stop + $device.Close + $device = Null + +End diff --git a/app/examples/Multimedia/WebCam/.src/FDevice.form b/app/examples/Multimedia/WebCam/.src/FDevice.form new file mode 100644 index 00000000..cfb588ec --- /dev/null +++ b/app/examples/Multimedia/WebCam/.src/FDevice.form @@ -0,0 +1,149 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,71,104) + Font = Font["Bitstream Vera Sans"] + Icon = Picture["camera.png"] + Border = False + { outer Panel + MoveScaled(3.4286,1.7143,64,95.1429) + Background = &HBFFFFF& + Foreground = &H000000& + Border = Border.Sunken + { container Panel + MoveScaled(5.1429,2.5714,53.7143,34.2857) + Background = Color.Background + Border = Border.Sunken + { pic PictureBox + MoveScaled(6,10.2857,26.5714,20.5714) + Alignment = Align.Center + } + { title Panel + MoveScaled(1.7143,0.8571,34.2857,4.5714) + Background = Color.ButtonForeground + { devName Label + MoveScaled(6,0,26.5714,2.5714) + Font = Font["Bitstream Vera Sans Mono,-1"] + Foreground = Color.TextBackground + Text = ("devName") + Alignment = Align.Left + } + { currentTime Label + MoveScaled(6,2,24.8571,2) + Font = Font["Bitstream Vera Sans Mono,-2"] + Background = Color.Foreground + Foreground = Color.TextBackground + Text = ("currentTime") + Alignment = Align.Left + } + { buttonSettings Button + MoveScaled(0.5714,0.5714,4.2857,3.4286) + Picture = Picture["settings.png"] + } + } + } + { Refresh #Timer + #MoveScaled(32,25) + } + { tools Panel + MoveScaled(3,40,53.7143,38.5714) + Visible = False + Font = Font["-1"] + Background = Color.Background + Border = Border.Sunken + { Label1 Label + MoveScaled(2,2,13,3) + Text = ("Picture Size") + } + { picture_size ComboBox + MoveScaled(16,1,17,4) + ReadOnly = True + List = [("160 x 120"), ("320 x 240"), ("640 x 480")] + Text = ("320 x 240") + } + { slider_bright Slider + MoveScaled(16,5,16,3.5714) + } + { Label2 Label + MoveScaled(2,5,13,3) + Text = ("Brightness") + } + { slider_contrast Slider + MoveScaled(16,8,16,3.5714) + } + { Label3 Label + MoveScaled(2,8,13,3) + Text = ("Contrast") + } + { slider_colour Slider + MoveScaled(16,11,16,3.5714) + } + { Label4 Label + MoveScaled(2,11,13,3) + Text = ("Colour") + } + { slider_hue Slider + MoveScaled(16,14,16,3.5714) + } + { Label5 Label + MoveScaled(2,14,13,3) + Text = ("Hue") + } + { slider_whiteness Slider + MoveScaled(16,17,16,3.5714) + } + { Label6 Label + MoveScaled(2,17,13,3) + Text = ("Whiteness") + } + { button_hide Button + MoveScaled(0,27,10,4) + Text = ("&Hide") + Picture = Picture["icon:/16/apply"] + } + { button_close Button + MoveScaled(0,32,10,4) + Text = ("&Close") + Picture = Picture["icon:/16/close"] + } + { Label7 Label + MoveScaled(2,20,13,3) + Text = ("Refresh Rate") + } + { refrate Slider + MoveScaled(16,20,16,3.5714) + MinValue = 20 + MaxValue = 1999 + Value = 200 + } + { button_pause Button + MoveScaled(11,27,10,4) + Text = ("&Pause") + Picture = Picture["icon:/16/pause"] + } + { button_play Button + MoveScaled(11,27,10,4) + Visible = False + Text = ("&Play") + Picture = Picture["icon:/16/play"] + } + { button_snap Button + MoveScaled(11,32,10,4) + Text = ("&Snap") + Picture = Picture["icon:/16/camera"] + } + { frame_rate Label + MoveScaled(2,23,30,3) + Font = Font["-1"] + Foreground = Color.SelectedBackground + Text = ("0.00 fps") + } + { button_reset Button + MoveScaled(22,27,10,4) + Text = ("&Reset") + Picture = Picture["icon:/16/apply"] + Default = True + } + } + } +} diff --git a/app/examples/Multimedia/WebCam/.src/FMain.class b/app/examples/Multimedia/WebCam/.src/FMain.class new file mode 100644 index 00000000..746731f5 --- /dev/null +++ b/app/examples/Multimedia/WebCam/.src/FMain.class @@ -0,0 +1,126 @@ +' Gambas class file + +' +' WebCam +' Demo program to show off the Gambas V4L module +' (c) Gareth Bult, Encryptec Ltd 2009 +' +' License: as-is +' +Private $windows As Form[] + +Public Sub ScanDevices() + + Dim i As Integer + Dim dev As VideoDevice + Dim myWin As Form + Dim count As Integer + Dim item As Menu + Dim status As String + Dim sDevice As String + + $windows = New Form[] + count = 0 + Me.Show + + status = ("Searching:") & " " + For i = 0 To 20 + sDevice = "/dev/video" & Str(i) + Print sDevice + Try dev = New VideoDevice(sDevice) + If Not Error Then + status &= "!" + myWin = New FDevice(dev, count) + $windows.Add(myWin) + item = New Menu(tooltray_popup) As "Camera" + item.Text = dev.Card + item.Picture = Picture["icon:/16/camera"] + item.Tag = i + count += 1 + Else + status &= "." + Endif + Wait 0.1 + text_status.Text = status + Next + text_status.Text = ("Found") & " (" & Str($windows.Count) & ") " & ("devices") + Wait 2 + Me.Hide + + For Each myWin In $windows + myWin.Show + Next + +End + +Public Sub menu_scan_Click() + + Dim item As Menu + Dim items As Menu[] + + While $windows.Count > 0 + $windows.Pop().Close + Wend + $windows.Clear + + items = New Menu[] + For Each item In tooltray_popup.Children + If item.Tag <> "X" + items.Add(item) + Endif + Next + + For Each item In items + item.Delete + Next + + ScanDevices() + +End + +Public Sub Camera_Click() + + $windows[Last.Tag].Show + $windows[Last.Tag].SetFocus + +End + +Public Sub tooltray_Menu() + + tooltray_popup.Popup + +End + +Public Sub menu_quit_Click() + + While $windows.Count > 0 + $windows.Pop().Close + Wend + Me.Close + 'tooltray.Hide + +End + +Public Sub menu_save_Click() + + Dim mywin As FDevice + + For Each myWin In $windows + myWin.Save() + Next + Settings.Save + Message(("Settings Saved!")) + +End + +Public Sub Form_Open() + + Me.Center + +End + +Public Sub Form_Activate() + + If Not $windows Then ScanDevices + +End diff --git a/app/examples/Multimedia/WebCam/.src/FMain.form b/app/examples/Multimedia/WebCam/.src/FMain.form new file mode 100644 index 00000000..8d689ecf --- /dev/null +++ b/app/examples/Multimedia/WebCam/.src/FMain.form @@ -0,0 +1,62 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,42,18) + Background = Color.SelectedBackground + Icon = Picture["camera.png"] + Border = False + Arrangement = Arrange.Fill + Margin = True + Padding = 4 + { tooltray_popup Menu + Tag = "X" + { Menu3 Menu + Text = ("WebCam Options") + Enabled = False + Tag = "X" + } + { menu_scan Menu + Text = ("&Scan for Devices") + Picture = Picture["icon:/16/find"] + Tag = "X" + } + { menu_save Menu + Text = ("Save Settings") + Picture = Picture["icon:/16/floppy"] + Tag = "X" + } + { menu_quit Menu + Text = ("&Quit") + Picture = Picture["icon:/16/quit"] + Tag = "X" + } + { Menu1 Menu + Tag = "X" + } + } + { Panel1 Panel + MoveScaled(0.7143,0,40.4286,17) + Background = Color.LightBackground + Arrangement = Arrange.Vertical + Margin = True + Border = Border.Sunken + { TextLabel1 TextLabel + MoveScaled(2,1,36,9) + Font = Font["Impact,+4"] + Text = ("Encryptec WebCam Viewer") + } + { TextLabel2 TextLabel + MoveScaled(2,10,36,3) + Foreground = Color.SelectedBackground + Text = ("(c) Encryptec Limited 2009") + Alignment = Align.Center + } + { text_status TextLabel + MoveScaled(2,12,36,4) + Font = Font["-1"] + Foreground = &H600080& + Text = ("Scanning for Devices ") & "..." + Alignment = Align.Left + } + } +} diff --git a/app/examples/Multimedia/WebCam/camera.png b/app/examples/Multimedia/WebCam/camera.png new file mode 100644 index 0000000000000000000000000000000000000000..c8c343ec895f7bde3361df4cf2f8ebf819fc92e8 GIT binary patch literal 1027 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 Z@qcqIe_a>Ugr5Ka002ovPDHLkV1hp@x1#_6 literal 0 HcmV?d00001 diff --git a/app/examples/Networking/ClientSocket/.lang/ca.po b/app/examples/Networking/ClientSocket/.lang/ca.po new file mode 100644 index 00000000..a58fa3ed --- /dev/null +++ b/app/examples/Networking/ClientSocket/.lang/ca.po @@ -0,0 +1,127 @@ +# Catalan translation of ClientSocket +# Copyright (C) 2000-2010 Benoît Minisini. +# This file is distributed under the same license as the ClientSocket package. +# Jordi Sayol , 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: ClientSocket\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2011-03-20 17:12+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: .project:1 +msgid "Client Socket Example" +msgstr "Exemple de Sòcol Client" + +#: FrmMain.class:26 +msgid "Connected to path " +msgstr "S'ha connectat al camí" + +#: FrmMain.class:28 +msgid "Connected to remote host " +msgstr "S'ha connectat a l'ordinador remot" + +#: FrmMain.class:29 +msgid " - Using local address : " +msgstr "- Fent servir l'adreça local:" + +#: FrmMain.class:42 +msgid "Connection Closed by foreign host." +msgstr "Connexió tancada per un ordinador aliè" + +#: FrmMain.class:54 +msgid "Host Found. Connecting..." +msgstr "Orinador trobat. Connectant..." + +#: FrmMain.class:84 +msgid "The system does not allow to create a socket" +msgstr "El sistema no permet crear un sòcol" + +#: FrmMain.class:86 +msgid "Host not Found" +msgstr "No s'ha trobat l'ordinador" + +#: FrmMain.class:88 +msgid "Unable to Connect. Connection Refused" +msgstr "No s'ha pogut connectar. Connexió rebutjada" + +#: FrmMain.class:90 +msgid "Error Reading Data" +msgstr "S'ha produït un error en llegir les dades" + +#: FrmMain.class:92 +msgid "Error Writing Data" +msgstr "S'ha produït un error en escriure les dades" + +#: FrmMain.class:158 +msgid "Looking up host name..." +msgstr "cercant el nom d'ordinador..." + +#: FrmMain.class:176 +msgid "Timeout trying to stablish connection" +msgstr "Temps d'espera probant d'establir la connexió" + +#: FrmMain.class:189 +msgid "Connection closed by user" +msgstr "Connexió tancada per l'usuari" + +#: FrmMain.form:23 +msgid "Client socket example " +msgstr "Exemple de sòcol client" + +#: FrmMain.form:29 +msgid "Connect" +msgstr "Connecta" + +#: FrmMain.form:40 +msgid "Close" +msgstr "Tanca" + +#: FrmMain.form:45 +msgid "localhost" +msgstr "-" + +#: FrmMain.form:50 +msgid "Host :" +msgstr "Servidor:" + +#: FrmMain.form:55 +msgid "Port :" +msgstr "Port :" + +#: FrmMain.form:60 +msgid "32340" +msgstr "-" + +#: FrmMain.form:71 +msgid "Send Data" +msgstr "Envia dades" + +#: FrmMain.form:76 +msgid "Write here data to send, then press \"Send Data\"" +msgstr "Escriviu aquí les dades per enviar, després premeu \"Envia dades\"" + +#: FrmMain.form:81 +msgid "Select protocol :" +msgstr "Seleccioneu el protocol:" + +#: FrmMain.form:87 +msgid "TCP" +msgstr "-" + +#: FrmMain.form:87 +msgid "UNIX" +msgstr "-" + +#: FrmMain.form:102 +msgid "Data Received :" +msgstr "Dades rebudes :" diff --git a/app/examples/Networking/ClientSocket/.lang/cs.po b/app/examples/Networking/ClientSocket/.lang/cs.po new file mode 100644 index 00000000..40be43ef --- /dev/null +++ b/app/examples/Networking/ClientSocket/.lang/cs.po @@ -0,0 +1,120 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Client Socket Example" +msgstr "Příklad Soket Klienta" + +#: FrmMain.class:26 +msgid "Connected to path " +msgstr "Připojeno na cestu " + +#: FrmMain.class:28 +msgid "Connected to remote host " +msgstr "Připojen ke vzdálenému hostiteli " + +#: FrmMain.class:29 +msgid " - Using local address : " +msgstr " - Použita lokální adresa : " + +#: FrmMain.class:42 +msgid "Connection Closed by foreign host." +msgstr "Připojení ukončeno cizím hostem." + +#: FrmMain.class:54 +msgid "Host Found. Connecting..." +msgstr "Host nalezen. Připojování..." + +#: FrmMain.class:84 +msgid "The system does not allow to create a socket" +msgstr "Tento systém neumožňuje vytvořit socket" + +#: FrmMain.class:86 +msgid "Host not Found" +msgstr "Host nenalezen" + +#: FrmMain.class:88 +msgid "Unable to Connect. Connection Refused" +msgstr "Nelze se připojit. Spojení odmítnuto" + +#: FrmMain.class:90 +msgid "Error Reading Data" +msgstr "Chyba čtení dat" + +#: FrmMain.class:92 +msgid "Error Writing Data" +msgstr "Chyba zápisu dat" + +#: FrmMain.class:158 +msgid "Looking up host name..." +msgstr "Vyhledávám hostitele..." + +#: FrmMain.class:176 +msgid "Timeout trying to stablish connection" +msgstr "Timeout snažím založit připojení" + +#: FrmMain.class:189 +msgid "Connection closed by user" +msgstr "Připojení ukončeno uživatelem" + +#: FrmMain.form:23 +msgid "Client socket example " +msgstr "Příklad coket klienta" + +#: FrmMain.form:29 +msgid "Connect" +msgstr "Připojit" + +#: FrmMain.form:40 +msgid "Close" +msgstr "Zavřít" + +#: FrmMain.form:45 +msgid "localhost" +msgstr "-" + +#: FrmMain.form:50 +msgid "Host :" +msgstr "-" + +#: FrmMain.form:55 +msgid "Port :" +msgstr "-" + +#: FrmMain.form:60 +msgid "32340" +msgstr "-" + +#: FrmMain.form:71 +msgid "Send Data" +msgstr "Pošli data" + +#: FrmMain.form:76 +msgid "Write here data to send, then press \"Send Data\"" +msgstr "Zde zapiš data, pošli zmáčknutím \"Poslat data\"" + +#: FrmMain.form:81 +msgid "Select protocol :" +msgstr "Vyber protokol :" + +#: FrmMain.form:87 +msgid "TCP" +msgstr "-" + +#: FrmMain.form:87 +msgid "UNIX" +msgstr "-" + +#: FrmMain.form:102 +msgid "Data Received :" +msgstr "Příjmané data :" diff --git a/app/examples/Networking/ClientSocket/.lang/de.po b/app/examples/Networking/ClientSocket/.lang/de.po new file mode 100644 index 00000000..2e085c9d --- /dev/null +++ b/app/examples/Networking/ClientSocket/.lang/de.po @@ -0,0 +1,120 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Client Socket Example" +msgstr "Client-Socket-Beispiel" + +#: FrmMain.class:26 +msgid "Connected to path " +msgstr "Zu einem Pfad verbinden" + +#: FrmMain.class:28 +msgid "Connected to remote host " +msgstr "Zu einem Remote Host verbinden" + +#: FrmMain.class:29 +msgid " - Using local address : " +msgstr "Lokale Adresse verwenden:" + +#: FrmMain.class:42 +msgid "Connection Closed by foreign host." +msgstr "Verbindung vom Host getrennt" + +#: FrmMain.class:54 +msgid "Host Found. Connecting..." +msgstr "Host gefunden. Verbinde..." + +#: FrmMain.class:84 +msgid "The system does not allow to create a socket" +msgstr "Das System verhindert, einen Socket zu erstellen" + +#: FrmMain.class:86 +msgid "Host not Found" +msgstr "Host nicht gefunden" + +#: FrmMain.class:88 +msgid "Unable to Connect. Connection Refused" +msgstr "Kann nicht verbinden: Verbindung abgelehnt" + +#: FrmMain.class:90 +msgid "Error Reading Data" +msgstr "Fehler beim Lesen der Daten" + +#: FrmMain.class:92 +msgid "Error Writing Data" +msgstr "Fehler beim Schreiben der Daten" + +#: FrmMain.class:158 +msgid "Looking up host name..." +msgstr "Schlage Hostname nach..." + +#: FrmMain.class:176 +msgid "Timeout trying to stablish connection" +msgstr "Timeout bei der Verbindungsherstellung" + +#: FrmMain.class:189 +msgid "Connection closed by user" +msgstr "Verbindung vom Benutzer getrennt" + +#: FrmMain.form:23 +msgid "Client socket example " +msgstr "Client-Socket-Beispiel" + +#: FrmMain.form:29 +msgid "Connect" +msgstr "Verbinden" + +#: FrmMain.form:40 +msgid "Close" +msgstr "Schließen" + +#: FrmMain.form:45 +msgid "localhost" +msgstr "-" + +#: FrmMain.form:50 +msgid "Host :" +msgstr "-" + +#: FrmMain.form:55 +msgid "Port :" +msgstr "-" + +#: FrmMain.form:60 +msgid "32340" +msgstr "-" + +#: FrmMain.form:71 +msgid "Send Data" +msgstr "Daten senden" + +#: FrmMain.form:76 +msgid "Write here data to send, then press \"Send Data\"" +msgstr "Zu sendende Daten eingeben" + +#: FrmMain.form:81 +msgid "Select protocol :" +msgstr "Protokoll wählen:" + +#: FrmMain.form:87 +msgid "TCP" +msgstr "-" + +#: FrmMain.form:87 +msgid "UNIX" +msgstr "-" + +#: FrmMain.form:102 +msgid "Data Received :" +msgstr "Daten empfangen:" diff --git a/app/examples/Networking/ClientSocket/.lang/es.po b/app/examples/Networking/ClientSocket/.lang/es.po new file mode 100644 index 00000000..4ecb347f --- /dev/null +++ b/app/examples/Networking/ClientSocket/.lang/es.po @@ -0,0 +1,63 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FrmMain.class:245 +msgid "Client socket example " +msgstr "Ejemplo de Cliente de puerto" + +#: FrmMain.class:250 +msgid "Connect" +msgstr "Conectar" + +#: FrmMain.class:266 +msgid "Close" +msgstr "Cerrar" + +#: FrmMain.class:271 +msgid "localhost" +msgstr "localhost" + +#: FrmMain.class:276 +msgid "Host :" +msgstr "Servidor :" + +#: FrmMain.class:281 +msgid "Port :" +msgstr "Puerto :" + +#: FrmMain.class:286 +msgid "7" +msgstr "7" + +#: FrmMain.class:291 +msgid "Data Received :" +msgstr "Datos recibidos :" + +#: FrmMain.class:303 +msgid "Send Data" +msgstr "Enviar datos" + +#: FrmMain.class:308 +msgid "Write here data to send, then press \"Send Data\"" +msgstr "Escriba aquí los datos a enviar, luego presione \"Enviar datos\"" + +#: FrmMain.class:313 +msgid "Select protocol :" +msgstr "Seleccione un protocolo :" + +#: FrmMain.class:320 +msgid "TCP" +msgstr "TCP" + +#: FrmMain.class:320 +msgid "UNIX" +msgstr "UNIX" diff --git a/app/examples/Networking/ClientSocket/.lang/nl.po b/app/examples/Networking/ClientSocket/.lang/nl.po new file mode 100644 index 00000000..7286efe2 --- /dev/null +++ b/app/examples/Networking/ClientSocket/.lang/nl.po @@ -0,0 +1,120 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2014-09-22 00:27+0100\n" +"Last-Translator: Willy Raets \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Client Socket Example" +msgstr "Client Socket Voorbeeld" + +#: FrmMain.form:23 +msgid "Client socket example " +msgstr "Client socket voorbeeld " + +#: FrmMain.form:29 +msgid "Connect" +msgstr "Verbind" + +#: FrmMain.form:40 +msgid "Close" +msgstr "Sluiten" + +#: FrmMain.form:45 +msgid "localhost" +msgstr "-" + +#: FrmMain.form:50 +msgid "Host :" +msgstr "-" + +#: FrmMain.form:55 +msgid "Port :" +msgstr "Poort :" + +#: FrmMain.form:60 +msgid "32340" +msgstr "-" + +#: FrmMain.form:71 +msgid "Send Data" +msgstr "Verzend Data" + +#: FrmMain.form:76 +msgid "Write here data to send, then press \"Send Data\"" +msgstr "Noteer hier data om te verzenden, druk vervolgens \"Verzend Data\"" + +#: FrmMain.form:81 +msgid "Select protocol :" +msgstr "Selecteer protocol :" + +#: FrmMain.form:87 +msgid "TCP" +msgstr "-" + +#: FrmMain.form:87 +msgid "UNIX" +msgstr "-" + +#: FrmMain.form:102 +msgid "Data Received :" +msgstr "Data ontvangen :" + +#: FrmMain.class:26 +msgid "Connected to path " +msgstr "Verbonden met pad" + +#: FrmMain.class:28 +msgid "Connected to remote host " +msgstr "Verbonen met afgelegen host" + +#: FrmMain.class:29 +msgid " - Using local address : " +msgstr " - Using lokaal adres : " + +#: FrmMain.class:42 +msgid "Connection Closed by foreign host." +msgstr "Connectie gesloten door vreemde host." + +#: FrmMain.class:54 +msgid "Host Found. Connecting..." +msgstr "Host gevonden. Verbinding maken..." + +#: FrmMain.class:84 +msgid "The system does not allow to create a socket" +msgstr "Het systeem staat niet toe een socket te creëren" + +#: FrmMain.class:86 +msgid "Host not Found" +msgstr "Host niet gevonden" + +#: FrmMain.class:88 +msgid "Unable to Connect. Connection Refused" +msgstr "Onmogelijk om te verbinden. Verbinding geweigert" + +#: FrmMain.class:90 +msgid "Error Reading Data" +msgstr "Fout bij het lezen van data" + +#: FrmMain.class:92 +msgid "Error Writing Data" +msgstr "Fout bij schrijven van data" + +#: FrmMain.class:158 +msgid "Looking up host name..." +msgstr "Host naam opzoeken..." + +#: FrmMain.class:176 +msgid "Timeout trying to stablish connection" +msgstr "Timeout tijdens het trachten een connectie te maken" + +#: FrmMain.class:189 +msgid "Connection closed by user" +msgstr "Connectie gesloten door gebruiker" + diff --git a/app/examples/Networking/ClientSocket/.lang/ru.po b/app/examples/Networking/ClientSocket/.lang/ru.po new file mode 100644 index 00000000..317b58c7 --- /dev/null +++ b/app/examples/Networking/ClientSocket/.lang/ru.po @@ -0,0 +1,148 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Networking/ClientSocket/.project:21 +msgid "Client Socket Example" +msgstr "Пример сокета клиента" + +#: app/examples/Networking/ClientSocket/.project:22 +msgid "" +"Client socket example.\n" +"\n" +"This example shows how to use a socket to connect to a server. You should use the \"ServerSocket\" example as a testing peer." +msgstr "" +"Пример сокета клиента.\n" +"\n" +"В этом примере показано, как использовать сокет для подключения к серверу. Вы должны использовать пример «Сокет сервера» в качестве тестового партнёра." + +#: app/examples/Networking/ClientSocket/.src/FrmMain.class:26 +msgid "Connected to path " +msgstr "Подключено к пути " + +#: app/examples/Networking/ClientSocket/.src/FrmMain.class:28 +msgid "Connected to remote host " +msgstr "Подключен к удалённому хосту " + +#: app/examples/Networking/ClientSocket/.src/FrmMain.class:29 +msgid " - Using local address : " +msgstr " - Используя локальный адрес: " + +#: app/examples/Networking/ClientSocket/.src/FrmMain.class:42 +msgid "Connection Closed by foreign host." +msgstr "Соединение закрыто сторонним хостом." + +#: app/examples/Networking/ClientSocket/.src/FrmMain.class:54 +msgid "Host Found. Connecting..." +msgstr "Хост найден. Соединение..." + +#: app/examples/Networking/ClientSocket/.src/FrmMain.class:84 +msgid "The system does not allow to create a socket" +msgstr "Система не позволяет создать сокет" + +#: app/examples/Networking/ClientSocket/.src/FrmMain.class:86 +msgid "Host not Found" +msgstr "Хост не найден" + +#: app/examples/Networking/ClientSocket/.src/FrmMain.class:88 +msgid "Unable to Connect. Connection Refused" +msgstr "Невозможно подключиться. В соединении отказано" + +#: app/examples/Networking/ClientSocket/.src/FrmMain.class:90 +msgid "Error Reading Data" +msgstr "Ошибка чтения данных" + +#: app/examples/Networking/ClientSocket/.src/FrmMain.class:92 +msgid "Error Writing Data" +msgstr "Ошибка записи данных" + +#: app/examples/Networking/ClientSocket/.src/FrmMain.class:158 +msgid "Looking up host name..." +msgstr "Поиск имени хоста..." + +#: app/examples/Networking/ClientSocket/.src/FrmMain.class:176 +msgid "Timeout trying to stablish connection" +msgstr "Тайм-аут при попытке укрепить соединение" + +#: app/examples/Networking/ClientSocket/.src/FrmMain.class:189 +msgid "Connection closed by user" +msgstr "Соединение закрыто пользователем" + +#: app/examples/Networking/ClientSocket/.src/FrmMain.class:224 app/examples/Networking/ClientSocket/.src/FrmMain.form:27 +msgid "Host :" +msgstr "Хост:" + +#: app/examples/Networking/ClientSocket/.src/FrmMain.class:228 +msgid "Path :" +msgstr "Путь:" + +#: app/examples/Networking/ClientSocket/.src/FrmMain.form:5 +msgid "Client socket example " +msgstr "Пример сокета клиента " + +#: app/examples/Networking/ClientSocket/.src/FrmMain.form:10 +msgid "Connect" +msgstr "Соединить" + +#: app/examples/Networking/ClientSocket/.src/FrmMain.form:19 +msgid "Close" +msgstr "Закрыть" + +#: app/examples/Networking/ClientSocket/.src/FrmMain.form:23 +msgid "localhost" +msgstr "localhost" + +#: app/examples/Networking/ClientSocket/.src/FrmMain.form:31 +msgid "Port :" +msgstr "Порт:" + +#: app/examples/Networking/ClientSocket/.src/FrmMain.form:35 +msgid "32340" +msgstr "32340" + +#: app/examples/Networking/ClientSocket/.src/FrmMain.form:44 +msgid "Send Data" +msgstr "Отправить данные" + +#: app/examples/Networking/ClientSocket/.src/FrmMain.form:48 +msgid "Write here data to send, then press \"Send Data\"" +msgstr "Напишите здесь данные для отправки, затем нажмите «Отправить данные»" + +#: app/examples/Networking/ClientSocket/.src/FrmMain.form:52 +msgid "Select protocol :" +msgstr "Протокол:" + +#: app/examples/Networking/ClientSocket/.src/FrmMain.form:57 +msgid "TCP" +msgstr "TCP" + +#: app/examples/Networking/ClientSocket/.src/FrmMain.form:57 +msgid "UNIX" +msgstr "UNIX" + +#: app/examples/Networking/ClientSocket/.src/FrmMain.form:70 +msgid "Data Received :" +msgstr "Данные получены:" + diff --git a/app/examples/Networking/ClientSocket/.project b/app/examples/Networking/ClientSocket/.project new file mode 100644 index 00000000..dbf9a2f1 --- /dev/null +++ b/app/examples/Networking/ClientSocket/.project @@ -0,0 +1,20 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.6.90 +Title=Client Socket Example +Startup=FrmMain +Icon=socket.png +Version=1.0.0 +Component=gb.image +Component=gb.gui +Component=gb.net +Description="Client socket example.\n\nThis example shows how to use a socket to connect to a server. You should use the \"ServerSocket\" example as a testing peer." +Authors="Daniel Campos Fernández\nBenoît Minisini" +TabSize=2 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Example +Address=benoit@desnouettes +License=General Public Licence +Packager=1 +Tags=Network diff --git a/app/examples/Networking/ClientSocket/.src/FrmMain.class b/app/examples/Networking/ClientSocket/.src/FrmMain.class new file mode 100644 index 00000000..d8cd1f3f --- /dev/null +++ b/app/examples/Networking/ClientSocket/.src/FrmMain.class @@ -0,0 +1,231 @@ +' Gambas class file + +'******************************************** +' THIS EXAMPLE SHOWS HOW TO USE THE 'Socket' +' CLASS FROM 'gb.net' COMPONENT +' +' (C) 2003-2004 Daniel Campos Fernández +' (danielcampos@netcourrier.com) +'******************************************** +Private CurProtocol As Integer + +Public Sub Form_Open() + + CurProtocol = 0 + +End + +Public Sub MySocket_Ready() + '*********************************** + ' When connection proccess has finished + ' successfully, "Connected" event will raise + '*********************************** + + timTimeout.Enabled = False + If CurProtocol = 1 Then + lblMessage.Text = ("Connected to path ") & MySocket.Path + Else + lblMessage.Text = ("Connected to remote host ") & MySocket.Path + lblMessage.Text = lblMessage.Text & (" - Using local address : ") & MySocket.LocalHost & ":" & MySocket.LocalPort + End If + Me.Enabled = True + Set_Interface(True) + +End + +Public Sub MySocket_Closed() + '******************************************** + ' this event will raise when foreing host + ' closes the socket by any reason + '******************************************** + + lblMessage.Caption = ("Connection Closed by foreign host.") + Me.Enabled = True + Set_Interface(False) + +End + +Public Sub MySocket_Found() + '******************************************** + ' this event will raise when foreing host + ' name has been translated to IP + '******************************************** + + lblMessage.Caption = ("Host Found. Connecting...") + +End + +Public Sub MySocket_Read() + '**************************************** + ' When some data arrives from the remote + ' part of the socket, "DataAvailable" event + ' is raised + '**************************************** + + Dim S As String + + If MySocket.Status = Net.Connected Then + Read #MySocket, S, Lof(MySocket) + txtReceive.Pos = txtReceive.Length + txtReceive.Insert(S) + End If + +End + +Public Sub MySocket_Error() + '********************************** + ' this is the function to + ' handle Errors when trying + ' to read or write to the socket + '********************************** + + Select Case MySocket.Status + Case Net.CannotCreateSocket + lblMessage.Text = ("The system does not allow to create a socket") + Case Net.HostNotFound + lblMessage.Text = ("Host not Found") + Case Net.ConnectionRefused + lblMessage.Text = ("Unable to Connect. Connection Refused") + Case Net.CannotRead + lblMessage.Text = ("Error Reading Data") + Case Net.CannotWrite + lblMessage.Text = ("Error Writing Data") + End Select + Set_Interface(False) + +End + +Private Sub Set_Interface(bState As Boolean) + '**************************************** + ' An auxiliar method to enable/disable + ' controls in the formulary , when + ' connection is stablished or closed + '**************************************** + + btnConnect.Enabled = Not bState + txtHost.Enabled = Not bState + txtPort.Enabled = Not bState + cmbProtocol.Enabled = Not bState + Label5.Enabled = Not bState + btnClose.Enabled = bState + timTimeout.Enabled = bState + 'TextArea1.Enabled=bState + btnSend.Enabled = bState + txtSend.Enabled = bState + + If bState Then + txtReceive.Text = "" + txtReceive.SetFocus + Endif + +End + +Public Sub btnConnect_Click() + + '****************************************** + ' To connect to remote host we call to + ' connectsocket method, passing Host Name + ' and port as arguments + '****************************************** + Dim RetVal As Integer + + btnConnect.Enabled = False + Select Case CurProtocol + Case 0 + ' Stablishing a TCP connection. + ' Here we use Host and + ' Port properties, we could also + ' do directly MySock.Connect(TextBox1.Text,VAL(TextBox2.Text)) + MySocket.Host = txtHost.Text + MySocket.Port = Val(txtPort.Text) + MySocket.Connect() + Case 1 + ' Stablishing a Local connection. + ' Here we use Path and + ' Port properties, we could also + ' do directly MySock.Connect(TextBox1.Text,0) + MySocket.Path = txtHost.Text + MySocket.Port = Net.Local + MySocket.Connect() + End Select + If MySocket.Status > Net.Inactive Then + If CurProtocol = 0 Then + '************************** + ' TCP : connection in progress... + '************************** + btnClose.Enabled = True + 'ME.Enabled=FALSE + lblMessage.Text = ("Looking up host name...") + timTimeout.Delay = 10000 ' we'll wait a maximun time of 10 seconds + timTimeout.Enabled = True + End If + End If + +End + +Public Sub timTimeout_Timer() + + '*************************** + ' timeout trying to connect + '*************************** + Me.Enabled = True + timTimeout.Enabled = False + If MySocket.Status <> Net.Connected Then + Close MySocket + Set_Interface(False) + lblMessage.Text = ("Timeout trying to stablish connection") + End If + +End + +Public Sub btnClose_Click() + + '********************************** + ' Here we close the connection + ' to remote host + '********************************** + Close MySocket + Set_Interface(False) + lblMessage.Text = ("Connection closed by user") + +End + +Public Sub btnSend_Click() + '**************************************************** + ' Here we send data to the remote part of the socket. + ' We have to be sure that connection is active + '**************************************************** + + If MySocket.Status = Net.Connected Then + Write #MySocket, txtSend.Text, Len(txtSend.Text) + txtSend.Text = "" + End If + +End + +Public Sub Form_Close() + + '********************* + ' Close possible Stablished connections + '********************* + If MySocket.Status > 0 Then Close #MySocket + +End + +Public Sub cmbProtocol_Click() + '************************************************** + ' Here we select protocol to use : TCP,UDP or UNIX + '************************************************** + + CurProtocol = cmbProtocol.Index + If CurProtocol = 0 Then + Label2.Visible = True + txtPort.Visible = True + Label1.Text = ("Host :") + Else + Label2.Visible = False + txtPort.Visible = False + Label1.Text = ("Path :") + End If + +End diff --git a/app/examples/Networking/ClientSocket/.src/FrmMain.form b/app/examples/Networking/ClientSocket/.src/FrmMain.form new file mode 100644 index 00000000..4c049648 --- /dev/null +++ b/app/examples/Networking/ClientSocket/.src/FrmMain.form @@ -0,0 +1,75 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(34,23.4286,83,60) + Text = ("Client socket example ") + Icon = Picture["socket.png"] + Resizable = False + { btnConnect Button + MoveScaled(64,7,17,4) + Text = ("Connect") + } + { txtReceive TextArea + MoveScaled(1,44,81,15) + ReadOnly = True + } + { btnClose Button + MoveScaled(64,12,17,4) + Enabled = False + Text = ("Close") + } + { txtHost TextBox + MoveScaled(14,7,49,4) + Text = ("localhost") + } + { Label1 Label + MoveScaled(1,7,12,4) + Text = ("Host :") + } + { Label2 Label + MoveScaled(1,12,12,4) + Text = ("Port :") + } + { txtPort TextBox + MoveScaled(14,12,49,4) + Text = ("32340") + } + { txtSend TextArea + MoveScaled(1,27,81,6) + Enabled = False + } + { btnSend Button + MoveScaled(13,34,23,4) + Enabled = False + Text = ("Send Data") + } + { Label4 Label + MoveScaled(1,24,81,3) + Text = ("Write here data to send, then press \"Send Data\"") + } + { Label5 Label + MoveScaled(1,1,17,4) + Text = ("Select protocol :") + } + { cmbProtocol ComboBox + MoveScaled(19,1,63,4) + ReadOnly = True + List = [("TCP"), ("UNIX")] + } + { lblMessage TextLabel + MoveScaled(1,17,81,6) + Font = Font["Bold"] + Alignment = Align.Center + Border = Border.Sunken + } + { timTimeout #Timer + #MoveScaled(26,47) + } + { Label3 Label + MoveScaled(1,40,81,4) + Text = ("Data Received :") + } + { MySocket #Socket + #MoveScaled(38,35) + } +} diff --git a/app/examples/Networking/ClientSocket/socket.png b/app/examples/Networking/ClientSocket/socket.png new file mode 100644 index 0000000000000000000000000000000000000000..bf16a70ad3137ebc3e6c1a9e01f81d4f07d97ffe GIT binary patch literal 2200 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 wc(nk, 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: DnsClient\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2010-12-17 01:09+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FMain.form:164 +msgid "Asynchronous" +msgstr "Assincrònic" + +#: FMain.form:95 +msgid "Cancel" +msgstr "Canceŀla" + +#: FMain.class:251 +msgid "Cancelled" +msgstr "Canceŀlat" + +#: FMain.form:159 +msgid "<< Copy" +msgstr "<< Copia" + +#: FMain.form:29 +msgid "DnsClient Example" +msgstr "Exemple de client Dns" + +#: .project:1 +msgid "DNS client example" +msgstr "Exemple de client DNS" + +#: FMain.class:217 +msgid "Finished" +msgstr "Acabat" + +#: FMain.form:44 +msgid "gambas.sourceforge.net" +msgstr "-" + +#: FMain.form:34 +msgid "Go!" +msgstr "Endavant!" + +#: FMain.form:154 +msgid "Host Name to IP" +msgstr "Nom de domini a IP" + +#: FMain.form:154 +msgid "IP to Host Name" +msgstr "IP a nom de domini" + +#: FMain.class:14 +msgid "Not Found" +msgstr "No s'ha trobat" + +#: FMain.class:295 +msgid "Write here 7 host names then press GO!" +msgstr "Escriu 7 noms d'ordinador i pitja Endavant!" + +#: FMain.class:297 +msgid "Write here 7 IP addresses then press GO!" +msgstr "Escriu 7 adreces ip i pitja Endavant!" + +#: FMain.form:110 +msgid "www.debian.org" +msgstr "-" + +#: FMain.form:54 +msgid "www.freshmeat.net" +msgstr "-" + +#: FMain.form:49 +msgid "www.kudla.org" +msgstr "-" + +#: FMain.form:115 +msgid "www.mageia.org" +msgstr "-" + +#: FMain.form:105 +msgid "www.rpmfind.net" +msgstr "-" + +#: FMain.form:100 +msgid "www.slashdot.org" +msgstr "-" + diff --git a/app/examples/Networking/DnsClient/.lang/cs.po b/app/examples/Networking/DnsClient/.lang/cs.po new file mode 100644 index 00000000..0bd1585c --- /dev/null +++ b/app/examples/Networking/DnsClient/.lang/cs.po @@ -0,0 +1,92 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "DNS client example" +msgstr "Příklad DNS klienta" + +#: FMain.class:14 +msgid "Not Found" +msgstr "Nenalezeno" + +#: FMain.class:217 +msgid "Finished" +msgstr "Dokončeno" + +#: FMain.class:251 +msgid "Cancelled" +msgstr "Zrušené" + +#: FMain.class:295 +msgid "Write here 7 host names then press GO!" +msgstr "Napiš zde 7 host jmen a pak zmačkni GO!" + +#: FMain.class:297 +msgid "Write here 7 IP addresses then press GO!" +msgstr "Napiš zde 7 IP adres a pak zmačni GO!" + +#: FMain.form:29 +msgid "DnsClient Example" +msgstr "Příklad DnsKlienta" + +#: FMain.form:34 +msgid "Go!" +msgstr "Go!" + +#: FMain.form:44 +msgid "gambas.sourceforge.net" +msgstr "-" + +#: FMain.form:49 +msgid "www.kudla.org" +msgstr "-" + +#: FMain.form:54 +msgid "www.freshmeat.net" +msgstr "-" + +#: FMain.form:95 +msgid "Cancel" +msgstr "Zrušit" + +#: FMain.form:100 +msgid "www.slashdot.org" +msgstr "-" + +#: FMain.form:105 +msgid "www.rpmfind.net" +msgstr "-" + +#: FMain.form:110 +msgid "www.debian.org" +msgstr "-" + +#: FMain.form:115 +msgid "www.mageia.org" +msgstr "-" + +#: FMain.form:154 +msgid "Host Name to IP" +msgstr "Host name z IP" + +#: FMain.form:154 +msgid "IP to Host Name" +msgstr "IP z Host name" + +#: FMain.form:159 +msgid "<< Copy" +msgstr "<< Koírovat" + +#: FMain.form:164 +msgid "Asynchronous" +msgstr "Asynchronně" diff --git a/app/examples/Networking/DnsClient/.lang/de.po b/app/examples/Networking/DnsClient/.lang/de.po new file mode 100644 index 00000000..79726ee6 --- /dev/null +++ b/app/examples/Networking/DnsClient/.lang/de.po @@ -0,0 +1,93 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "DNS client example" +msgstr "Beispiel für einen DNS-Client" + +#: FMain.class:14 +msgid "Not Found" +msgstr "Nicht gefunden" + +#: FMain.class:217 +msgid "Finished" +msgstr "Fertig" + +#: FMain.class:251 +msgid "Cancelled" +msgstr "Abgebrochen" + +#: FMain.class:295 +msgid "Write here 7 host names then press GO!" +msgstr "Gib 7 Hostnamen ein und klicke auf Los!" + +#: FMain.class:297 +msgid "Write here 7 IP addresses then press GO!" +msgstr "Gib 7 IP-Adressen ein und klicke auf Los!" + +#: FMain.form:29 +msgid "DnsClient Example" +msgstr "Beispiel für einen DNS-Client" + +#: FMain.form:34 +msgid "Go!" +msgstr "Los!" + +#: FMain.form:44 +msgid "gambas.sourceforge.net" +msgstr "-" + +#: FMain.form:49 +msgid "www.kudla.org" +msgstr "-" + +#: FMain.form:54 +msgid "www.freshmeat.net" +msgstr "-" + +#: FMain.form:95 +msgid "Cancel" +msgstr "Abbrechen" + +#: FMain.form:100 +msgid "www.slashdot.org" +msgstr "-" + +#: FMain.form:105 +msgid "www.rpmfind.net" +msgstr "-" + +#: FMain.form:110 +msgid "www.debian.org" +msgstr "-" + +#: FMain.form:115 +msgid "www.mageia.org" +msgstr "-" + +#: FMain.form:154 +msgid "Host Name to IP" +msgstr "Host Name nach IP-Adresse" + +#: FMain.form:154 +msgid "IP to Host Name" +msgstr "IP-Adresse nach Host Name" + +#: FMain.form:159 +msgid "<< Copy" +msgstr "<< Kopieren" + +#: FMain.form:164 +msgid "Asynchronous" +msgstr "Asynchron" + diff --git a/app/examples/Networking/DnsClient/.lang/es.po b/app/examples/Networking/DnsClient/.lang/es.po new file mode 100644 index 00000000..2df0d745 --- /dev/null +++ b/app/examples/Networking/DnsClient/.lang/es.po @@ -0,0 +1,67 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FMain.class:356 +msgid "DnsClient Example" +msgstr "Ejemplo de Cliente DNS" + +#: FMain.class:361 +msgid "Go!" +msgstr "¡Ir!" + +#: FMain.class:371 +msgid "gambas.sourceforge.net" +msgstr "gambas.sourceforge.net" + +#: FMain.class:376 +msgid "www.kudla.org" +msgstr "www.kudla.org" + +#: FMain.class:381 +msgid "www.freshmeat.net" +msgstr "www.freshmeat.net" + +#: FMain.class:422 +msgid "Cancel" +msgstr "Cancelar" + +#: FMain.class:427 +msgid "www.slashdot.org" +msgstr "www.slashdot.org" + +#: FMain.class:432 +msgid "www.rpmfind.net" +msgstr "www.rpmfind.net" + +#: FMain.class:437 +msgid "www.debian.org" +msgstr "www.debian.org" + +#: FMain.class:442 +msgid "www.mageia.org" +msgstr "www.mageia.org" + +#: FMain.class:481 +msgid "Host Name to IP" +msgstr "Nombre de servidor a IP" + +#: FMain.class:481 +msgid "IP to Host Name" +msgstr "IP a nombre de servidor" + +#: FMain.class:486 +msgid "<< Copy" +msgstr "<< Copiar" + +#: FMain.class:491 +msgid "Asynchronous" +msgstr "Asincrónimo" diff --git a/app/examples/Networking/DnsClient/.lang/nl.po b/app/examples/Networking/DnsClient/.lang/nl.po new file mode 100644 index 00000000..70de5745 --- /dev/null +++ b/app/examples/Networking/DnsClient/.lang/nl.po @@ -0,0 +1,92 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2014-09-22 00:24+0100\n" +"Last-Translator: Willy Raets \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "DNS client example" +msgstr "DNS cliënt voorbeeld" + +#: FMain.class:14 +msgid "Not Found" +msgstr "Niet gevonden" + +#: FMain.form:29 +msgid "DnsClient Example" +msgstr "DnsCliënt Voorbeeld" + +#: FMain.form:34 +msgid "Go!" +msgstr "-" + +#: FMain.form:44 +msgid "gambas.sourceforge.net" +msgstr "-" + +#: FMain.form:49 +msgid "www.kudla.org" +msgstr "-" + +#: FMain.form:54 +msgid "www.freshmeat.net" +msgstr "-" + +#: FMain.form:95 +msgid "Cancel" +msgstr "Annuleer" + +#: FMain.form:100 +msgid "www.slashdot.org" +msgstr "-" + +#: FMain.form:105 +msgid "www.rpmfind.net" +msgstr "-" + +#: FMain.form:110 +msgid "www.debian.org" +msgstr "-" + +#: FMain.form:115 +msgid "www.mageia.org" +msgstr "-" + +#: FMain.form:154 +msgid "Host Name to IP" +msgstr "Host naam naar IP" + +#: FMain.form:154 +msgid "IP to Host Name" +msgstr "IP naar Host naam" + +#: FMain.form:159 +msgid "<< Copy" +msgstr "<< Kopiëer" + +#: FMain.form:164 +msgid "Asynchronous" +msgstr "Asynchrone" + +#: FMain.class:217 +msgid "Finished" +msgstr "Beëindigt" + +#: FMain.class:251 +msgid "Cancelled" +msgstr "Geannuleerd" + +#: FMain.class:279 +msgid "Write here 7 host names then press GO!" +msgstr "Noteer hier 7 host namen en druk GO!" + +#: FMain.class:281 +msgid "Write here 7 IP addresses then press GO!" +msgstr "Noteer hier 7 IP adressen en druk GO!" + diff --git a/app/examples/Networking/DnsClient/.lang/ru.po b/app/examples/Networking/DnsClient/.lang/ru.po new file mode 100644 index 00000000..76f7246a --- /dev/null +++ b/app/examples/Networking/DnsClient/.lang/ru.po @@ -0,0 +1,98 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-06-04 19:30 UTC\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: .project:1 +msgid "DNS client example" +msgstr "Пример DNS-клиента" + +#: FMain.class:14 +msgid "Not Found" +msgstr "Не найдено" + +#: FMain.class:217 +msgid "Finished" +msgstr "Готово" + +#: FMain.class:251 +msgid "Cancelled" +msgstr "Отменено" + +#: FMain.class:279 +msgid "Write here 7 host names then press GO!" +msgstr "Напишите здесь 7 имён хостов и нажмите 'Вперёд'!" + +#: FMain.class:281 +msgid "Write here 7 IP addresses then press GO!" +msgstr "Напишите здесь 7 IP-адресов и нажмите 'Вперёд'!" + +#: FMain.form:29 +msgid "DnsClient Example" +msgstr "Пример DNS-клиента" + +#: FMain.form:34 +msgid "Go!" +msgstr "Вперёд!" + +#: FMain.form:90 +msgid "Cancel" +msgstr "Отмена" + +#: FMain.form:144 +msgid "Host Name to IP" +msgstr "Имя хоста по IP" + +#: FMain.form:144 +msgid "IP to Host Name" +msgstr "IP к имени хоста" + +#: FMain.form:150 +msgid "<< Copy" +msgstr "<< Копировать" + +#: FMain.form:155 +msgid "Asynchronous" +msgstr "Асинхронный" + +#~ msgid "www.mageia.org" +#~ msgstr "www.mageia.org" + +#~ msgid "www.debian.org" +#~ msgstr "www.debian.org" + +#~ msgid "www.rpmfind.net" +#~ msgstr "www.rpmfind.net" + +#~ msgid "www.slashdot.org" +#~ msgstr "www.slashdot.org" + +#~ msgid "www.freshmeat.net" +#~ msgstr "www.freshmeat.net" + +#~ msgid "www.kudla.org" +#~ msgstr "www.kudla.org" + +#~ msgid "gambas.sourceforge.net" +#~ msgstr "gambas.sourceforge.net" diff --git a/app/examples/Networking/DnsClient/.project b/app/examples/Networking/DnsClient/.project new file mode 100644 index 00000000..731be02f --- /dev/null +++ b/app/examples/Networking/DnsClient/.project @@ -0,0 +1,18 @@ +# Gambas Project File 3.0 +Title=DNS client example +Startup=FMain +Icon=dnsclient.png +Version=3.13.90 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.net +Environment="GB_GUI=gb.gtk" +TabSize=2 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Princeton +Address=benoit@desnouettes +License=General Public Licence +Packager=1 diff --git a/app/examples/Networking/DnsClient/.src/FMain.class b/app/examples/Networking/DnsClient/.src/FMain.class new file mode 100644 index 00000000..146aa10a --- /dev/null +++ b/app/examples/Networking/DnsClient/.src/FMain.class @@ -0,0 +1,308 @@ +' Gambas class file +'*********************************** +' We define 7 dns objects +'*********************************** +Private A As DnsClient +Private B As DnsClient +Private C As DnsClient +Private D As DnsClient +Private E As DnsClient +Private F As DnsClient +Private G As DnsClient + +Private Working As Integer +Private sNoResult As String = ("Not Found") + +Public Sub Button1_Click() + Label2.Text = "" + Label3.Text = "" + Label4.Text = "" + Label6.Text = "" + Label7.Text = "" + Label8.Text = "" + Label9.Text = "" + Working = 7 + Button1.Enabled = False + Button1.Enabled = False + ComboBox1.Enabled = False + Button3.Enabled = False + CheckBox1.Enabled = False + Label5.Text = "|" + Timer1.Delay = 200 + Timer1.Enabled = True + Select Case ComboBox1.Index + Case 0 + A.HostName = TextBox1.Text + B.HostName = TextBox2.Text + C.HostName = TextBox3.Text + D.HostName = TextBox4.Text + E.HostName = TextBox5.Text + F.HostName = TextBox6.Text + G.HostName = TextBox7.Text + A.GetHostIP() + B.GetHostIP() + C.GetHostIP() + D.GetHostIP() + E.GetHostIP() + F.GetHostIP() + G.GetHostIP() + Case 1 + A.HostIP = TextBox1.Text + B.HostIP = TextBox2.Text + C.HostIP = TextBox3.Text + D.HostIP = TextBox4.Text + E.HostIP = TextBox5.Text + F.HostIP = TextBox6.Text + G.HostIP = TextBox7.Text + A.GetHostName() + B.GetHostName() + C.GetHostName() + D.GetHostName() + E.GetHostName() + F.GetHostName() + G.GetHostName() + End Select + +End + +Public Sub A_Finished() + + Select Case ComboBox1.index + Case 0 + If A.HostIP = "" Then + Label2.Text = sNoResult + Else + Label2.Text = A.HostIP + End If + Case 1 + If A.HostName = "" Then + Label2.Text = sNoResult + Else + Label2.Text = A.HostName + End If + End Select + Working = working - 1 + +End + +Public Sub B_Finished() + + Select Case ComboBox1.index + Case 0 + If B.HostIP = "" Then + Label3.Text = sNoResult + Else + Label3.Text = B.HostIP + End If + Case 1 + If B.HostName = "" Then + Label3.Text = sNoResult + Else + Label3.Text = B.HostName + End If + End Select + Working = working - 1 + +End + +Public Sub C_Finished() + + Select Case ComboBox1.index + Case 0 + If C.HostIP = "" Then + Label4.Text = sNoResult + Else + Label4.Text = C.HostIP + End If + Case 1 + If C.HostName = "" Then + Label4.Text = sNoResult + Else + Label4.Text = C.HostName + End If + End Select + Working = working - 1 + +End + +Public Sub D_Finished() + + Select Case ComboBox1.index + Case 0 + If D.HostIP = "" Then + Label6.Text = sNoResult + Else + Label6.Text = D.HostIP + End If + Case 1 + If D.HostName = "" Then + Label6.Text = sNoResult + Else + Label6.Text = D.HostName + End If + End Select + Working = working - 1 + +End + +Public Sub E_Finished() + + Select Case ComboBox1.index + Case 0 + If E.HostIP = "" Then + Label7.Text = sNoResult + Else + Label7.Text = E.HostIP + End If + Case 1 + If E.HostName = "" Then + Label7.Text = sNoResult + Else + Label7.Text = E.HostName + End If + End Select + Working = working - 1 + +End + +Public Sub F_Finished() + + Select Case ComboBox1.index + Case 0 + If F.HostIP = "" Then + Label8.Text = sNoResult + Else + Label8.Text = F.HostIP + End If + Case 1 + If F.HostName = "" Then + Label8.Text = sNoResult + Else + Label8.Text = F.HostName + End If + End Select + Working = working - 1 + +End + +Public Sub G_Finished() + + Select Case ComboBox1.index + Case 0 + If G.HostIP = "" Then + Label9.Text = sNoResult + Else + Label9.Text = G.HostIP + End If + Case 1 + If G.HostName = "" Then + Label9.Text = sNoResult + Else + Label9.Text = G.HostName + End If + End Select + Working = working - 1 + +End + + + + + + +Public Sub Timer1_Timer() + + Timer1.Enabled = False + If Working = 0 Then + Label5.Text = ("Finished") + Button1.Enabled = True + Button3.Enabled = True + ComboBox1.Enabled = True + CheckBox1.Enabled = True + Else + Select Case Label5.Text + Case "|" + Label5.Text = "/" + Case "/" + Label5.Text = "-" + Case "-" + Label5.Text = "\\" + Case "\\" + Label5.Text = "|" + End Select + Timer1.Delay = 200 + Timer1.Enabled = True + + End If + +End + +Public Sub Button2_Click() + + If Timer1.Enabled = True Then + Timer1.Enabled = False + A.Stop() + B.Stop() + C.Stop() + D.Stop() + E.Stop() + F.Stop() + G.Stop() + Label5.Text = ("Cancelled") + Working = 0 + Button1.Enabled = True + ComboBox1.Enabled = True + Button3.Enabled = True + CheckBox1.Enabled = True + End If + +End + +Public Sub Form_Open() + + A = New DnsClient As "A" + B = New DnsClient As "B" + C = New DnsClient As "C" + D = New DnsClient As "D" + E = New DnsClient As "E" + F = New DnsClient As "F" + G = New DnsClient As "G" + CheckBox1_Click + ComboBox1_Click + Working = 0 +End + +Public Sub ComboBox1_Click() + + Select Case ComboBox1.Index + Case 0 + Label1.Text = ("Write here 7 host names then press GO!") + Case 1 + Label1.Text = ("Write here 7 IP addresses then press GO!") + End Select +End + +Public Sub Button3_Click() + + TextBox1.Text = Label2.Text + TextBox2.Text = Label3.Text + TextBox3.Text = Label4.Text + TextBox4.Text = Label6.Text + TextBox5.Text = Label7.Text + TextBox6.Text = Label8.Text + TextBox7.Text = Label9.Text + + +End + +Public Sub CheckBox1_Click() + + A.ASync = CheckBox1.Value + B.ASync = CheckBox1.Value + C.ASync = CheckBox1.Value + D.ASync = CheckBox1.Value + E.ASync = CheckBox1.Value + F.ASync = CheckBox1.Value + G.ASync = CheckBox1.Value + +End diff --git a/app/examples/Networking/DnsClient/.src/FMain.form b/app/examples/Networking/DnsClient/.src/FMain.form new file mode 100644 index 00000000..8e0f157a --- /dev/null +++ b/app/examples/Networking/DnsClient/.src/FMain.form @@ -0,0 +1,119 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(26,20,63,51) + Text = ("DnsClient Example") + Resizable = False + { Button1 Button + MoveScaled(1,45,16,4) + Text = ("Go!") + } + { Label1 Label + MoveScaled(1,6,61,4) + } + { TextBox1 TextBox + MoveScaled(1,11,28,4) + #Translate = False + Text = "gambas.sourceforge.net" + } + { TextBox2 TextBox + MoveScaled(1,15,28,4) + #Translate = False + Text = "www.kudla.org" + } + { TextBox3 TextBox + MoveScaled(1,19,28,4) + #Translate = False + Text = "www.freshmeat.net" + } + { Label2 Label + MoveScaled(30,11,32,4) + Font = Font["Bold"] + Background = &H5500FF& + Foreground = &HFFFF00& + } + { Label3 Label + MoveScaled(30,15,32,4) + Font = Font["Bold"] + Background = &H5500FF& + Foreground = &HFFFF00& + } + { Label4 Label + MoveScaled(30,19,32,4) + Font = Font["Bold"] + Background = &H5500FF& + Foreground = &HFFFF00& + } + { Timer1 #Timer + #MoveScaled(25.625,37.625) + } + { Label5 Label + MoveScaled(18,45,27,4) + Font = Font["12,Bold"] + Background = &HAA0000& + Foreground = &HFFFFFF& + Alignment = Align.Center + } + { Button2 Button + MoveScaled(46,45,16,4) + Text = ("Cancel") + } + { TextBox4 TextBox + MoveScaled(1,23,28,4) + #Translate = False + Text = "www.slashdot.org" + } + { TextBox5 TextBox + MoveScaled(1,27,28,4) + #Translate = False + Text = "www.rpmfind.net" + } + { TextBox6 TextBox + MoveScaled(1,31,28,4) + #Translate = False + Text = "www.debian.org" + } + { TextBox7 TextBox + MoveScaled(1,35,28,4) + #Translate = False + Text = "www.mageia.org" + } + { Label6 Label + MoveScaled(30,23,32,4) + Font = Font["Bold"] + Background = &H5500FF& + Foreground = &HFFFF00& + } + { Label7 Label + MoveScaled(30,27,32,4) + Font = Font["Bold"] + Background = &H5500FF& + Foreground = &HFFFF00& + } + { Label8 Label + MoveScaled(30,31,32,4) + Font = Font["Bold"] + Background = &H5500FF& + Foreground = &HFFFF00& + } + { Label9 Label + MoveScaled(30,35,32,4) + Font = Font["Bold"] + Background = &H5500FF& + Foreground = &HFFFF00& + } + { ComboBox1 ComboBox + MoveScaled(1,1,37,4) + ReadOnly = True + List = [("Host Name to IP"), ("IP to Host Name")] + Text = (" ") + } + { Button3 Button + MoveScaled(18,40,23,4) + Text = ("<< Copy") + } + { CheckBox1 CheckBox + MoveScaled(41,1,21,4) + Text = ("Asynchronous") + } +} diff --git a/app/examples/Networking/DnsClient/dnsclient.png b/app/examples/Networking/DnsClient/dnsclient.png new file mode 100644 index 0000000000000000000000000000000000000000..5c2ca2807566beed571e49547ce8f3e792b3848b GIT binary patch literal 1808 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, 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: HTTPGet\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2010-12-17 01:10+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FConfig.form:46 +msgid "127.0.0.1:3128" +msgstr "-" + +#: FConfig.form:87 +msgid "Authentication" +msgstr "Autenticació" + +#: F.form:82 +msgid "Basic" +msgstr "Bàsic" + +#: F.class:243 +msgid "Cancelled by user" +msgstr "Canceŀlat per l'usuari" + +#: FConfig.form:65 +msgid "Close" +msgstr "Tanca" + +#: F.form:91 +msgid "&Configuration..." +msgstr "&Configuració..." + +#: F.class:142 +msgid "Connected, waiting for reply..." +msgstr "Connectat, s'està esperant resposta..." + +#: F.class:101 +msgid "Connecting..." +msgstr "S'està connectant..." + +#: FConfig.form:60 +msgid "Cookies file (if you leave it blank HttpClient will not manage cookies)" +msgstr "Fitxer de galetes (si el deixeu en blanc, l'HttpClient no gestionarà les galetes)" + +#: F.form:82 +msgid "DIGEST" +msgstr "-" + +#: F.class:188 +msgid "Error " +msgstr "-" + +#: F.form:24 +msgid "GET!" +msgstr "OBTÉ!" + +#: F.form:82 +msgid "GSS" +msgstr "-" + +#: .project:1 +msgid "HTTP client GET example" +msgstr "Exemple GET de client HTTP" + +#: F.form:43 +msgid "http://gambasdoc.org/help" +msgstr "-" + +#: F.form:82 FConfig.form:25 +msgid "NTLM" +msgstr "-" + +#: F.class:203 +msgid "OK" +msgstr "D'acord" + +#: F.form:62 +msgid "Page needs authorization" +msgstr "La pàgina necessita autorització" + +#: F.form:74 FConfig.form:73 +msgid "Password" +msgstr "Contrasenya" + +#: FConfig.form:25 +msgid "Plain" +msgstr "Pla" + +#: F.class:157 +msgid "Receiving data..." +msgstr "S'està rebent dades..." + +#: F.form:57 +msgid "Stop" +msgstr "Atura" + +#: FConfig.form:55 +msgid "Update cookies file" +msgstr "Actualitza el fitxer de galetes" + +#: F.form:38 +msgid "URL :" +msgstr "-" + +#: FConfig.form:41 +msgid "Use Proxy" +msgstr "Usa servidor intermediari" + +#: F.form:68 FConfig.form:80 +msgid "User" +msgstr "Usuari" + diff --git a/app/examples/Networking/HTTPGet/.lang/cs.po b/app/examples/Networking/HTTPGet/.lang/cs.po new file mode 100644 index 00000000..c21950c1 --- /dev/null +++ b/app/examples/Networking/HTTPGet/.lang/cs.po @@ -0,0 +1,121 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "HTTP client GET example" +msgstr "Příklad GET klienta" + +#: F.class:101 +msgid "Connecting..." +msgstr "Připojování..." + +#: F.class:142 +msgid "Connected, waiting for reply..." +msgstr "Připojeno, čekám na odpověď..." + +#: F.class:158 +msgid "Receiving data..." +msgstr "Přijímám data..." + +#: F.class:162 +msgid "&1 bytes" +msgstr "-" + +#: F.class:195 +msgid "Error " +msgstr "Chyba" + +#: F.class:210 +msgid "OK" +msgstr "-" + +#: F.class:250 +msgid "Cancelled by user" +msgstr "Zrušeno uživatelem" + +#: F.form:24 +msgid "GET!" +msgstr "-" + +#: F.form:38 +msgid "URL :" +msgstr "-" + +#: F.form:43 +msgid "http://gambasdoc.org/help" +msgstr "-" + +#: F.form:48 +msgid "Stop" +msgstr "-" + +#: F.form:53 +msgid "Page needs authorization" +msgstr "Autorizace na stránce" + +#: F.form:59 FConfig.form:80 +msgid "User" +msgstr "Uživatel" + +#: F.form:65 FConfig.form:73 +msgid "Password" +msgstr "Heslo" + +#: F.form:73 +msgid "Basic" +msgstr "-" + +#: F.form:73 +msgid "DIGEST" +msgstr "-" + +#: F.form:73 +msgid "GSS" +msgstr "-" + +#: F.form:73 FConfig.form:25 +msgid "NTLM" +msgstr "-" + +#: F.form:82 +msgid "&Configuration..." +msgstr "&Konfigurace..." + +#: FConfig.form:25 +msgid "Plain" +msgstr "-" + +#: FConfig.form:41 +msgid "Use Proxy" +msgstr "Užít proxy" + +#: FConfig.form:46 +msgid "127.0.0.1:3128" +msgstr "-" + +#: FConfig.form:55 +msgid "Update cookies file" +msgstr "Aktualizuj soubor cookie" + +#: FConfig.form:60 +msgid "Cookies file (if you leave it blank HttpClient will not manage cookies)" +msgstr "Soubor cookie (když nezaškrknete tak HttpClient nezpracuje cookie)" + +#: FConfig.form:65 +msgid "Close" +msgstr "Zavřít" + +#: FConfig.form:87 +msgid "Authentication" +msgstr "Autorizace" + diff --git a/app/examples/Networking/HTTPGet/.lang/de.po b/app/examples/Networking/HTTPGet/.lang/de.po new file mode 100644 index 00000000..baf3c9c0 --- /dev/null +++ b/app/examples/Networking/HTTPGet/.lang/de.po @@ -0,0 +1,117 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "HTTP client GET example" +msgstr "Beispiel für HTTP-Client GET" + +#: F.class:101 +msgid "Connecting..." +msgstr "Verbinden" + +#: F.class:142 +msgid "Connected, waiting for reply..." +msgstr "Verbunden, warte auf Antwort..." + +#: F.class:157 +msgid "Receiving data..." +msgstr "Empfange Daten..." + +#: F.class:188 +msgid "Error " +msgstr "Fehler" + +#: F.class:203 +msgid "OK" +msgstr "-" + +#: F.class:243 +msgid "Cancelled by user" +msgstr "Durch Benutzer abgebrochen" + +#: F.form:24 +msgid "GET!" +msgstr "-" + +#: F.form:38 +msgid "URL :" +msgstr "-" + +#: F.form:43 +msgid "http://gambasdoc.org/help" +msgstr "-" + +#: F.form:57 +msgid "Stop" +msgstr "-" + +#: F.form:62 +msgid "Page needs authorization" +msgstr "Seite verlangt Authentifizierung" + +#: F.form:68 FConfig.form:80 +msgid "User" +msgstr "Benutzer" + +#: F.form:74 FConfig.form:73 +msgid "Password" +msgstr "Passwort" + +#: F.form:82 +msgid "Basic" +msgstr "Einfach" + +#: F.form:82 +msgid "DIGEST" +msgstr "-" + +#: F.form:82 +msgid "GSS" +msgstr "-" + +#: F.form:82 FConfig.form:25 +msgid "NTLM" +msgstr "-" + +#: F.form:91 +msgid "&Configuration..." +msgstr "&Konfiguration..." + +#: FConfig.form:25 +msgid "Plain" +msgstr "Einfach" + +#: FConfig.form:41 +msgid "Use Proxy" +msgstr "Proxy verwenden" + +#: FConfig.form:46 +msgid "127.0.0.1:3128" +msgstr "-" + +#: FConfig.form:55 +msgid "Update cookies file" +msgstr "Cookie-Datei neu laden" + +#: FConfig.form:60 +msgid "Cookies file (if you leave it blank HttpClient will not manage cookies)" +msgstr "Cookie-Datei (wenn leer, verwaltet der HTTP-Client keine Cookies)" + +#: FConfig.form:65 +msgid "Close" +msgstr "Schließen" + +#: FConfig.form:87 +msgid "Authentication" +msgstr "Authentifizierung" + diff --git a/app/examples/Networking/HTTPGet/.lang/en_GB.po b/app/examples/Networking/HTTPGet/.lang/en_GB.po new file mode 100644 index 00000000..e1dc855c --- /dev/null +++ b/app/examples/Networking/HTTPGet/.lang/en_GB.po @@ -0,0 +1,120 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "HTTP client GET example" +msgstr "-" + +#: F.class:101 +msgid "Connecting..." +msgstr "-" + +#: F.class:142 +msgid "Connected, waiting for reply..." +msgstr "-" + +#: F.class:158 +msgid "Receiving data..." +msgstr "-" + +#: F.class:162 +msgid "&1 bytes" +msgstr "-" + +#: F.class:195 +msgid "Error " +msgstr "-" + +#: F.class:210 +msgid "OK" +msgstr "-" + +#: F.class:250 +msgid "Cancelled by user" +msgstr "-" + +#: F.form:24 +msgid "GET!" +msgstr "-" + +#: F.form:38 +msgid "URL :" +msgstr "-" + +#: F.form:43 +msgid "http://gambasdoc.org/help" +msgstr "-" + +#: F.form:48 +msgid "Stop" +msgstr "-" + +#: F.form:53 +msgid "Page needs authorization" +msgstr "-" + +#: F.form:59 FConfig.form:80 +msgid "User" +msgstr "-" + +#: F.form:65 FConfig.form:73 +msgid "Password" +msgstr "-" + +#: F.form:73 +msgid "Basic" +msgstr "-" + +#: F.form:73 +msgid "DIGEST" +msgstr "-" + +#: F.form:73 +msgid "GSS" +msgstr "-" + +#: F.form:73 FConfig.form:25 +msgid "NTLM" +msgstr "-" + +#: F.form:82 +msgid "&Configuration..." +msgstr "-" + +#: FConfig.form:25 +msgid "Plain" +msgstr "-" + +#: FConfig.form:41 +msgid "Use Proxy" +msgstr "-" + +#: FConfig.form:46 +msgid "127.0.0.1:3128" +msgstr "-" + +#: FConfig.form:55 +msgid "Update cookies file" +msgstr "-" + +#: FConfig.form:60 +msgid "Cookies file (if you leave it blank HttpClient will not manage cookies)" +msgstr "-" + +#: FConfig.form:65 +msgid "Close" +msgstr "-" + +#: FConfig.form:87 +msgid "Authentication" +msgstr "-" diff --git a/app/examples/Networking/HTTPGet/.lang/es.po b/app/examples/Networking/HTTPGet/.lang/es.po new file mode 100644 index 00000000..3f8781f1 --- /dev/null +++ b/app/examples/Networking/HTTPGet/.lang/es.po @@ -0,0 +1,91 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FConfig.class:106 +msgid "Plain" +msgstr "Plano" + +#: FConfig.class:106 F.class:382 +msgid "NTLM" +msgstr "NTLM" + +#: FConfig.class:112 +msgid "Authentication" +msgstr "Autenticación" + +#: FConfig.class:118 F.class:367 +msgid "User" +msgstr "Usuario" + +#: FConfig.class:124 F.class:373 +msgid "Password" +msgstr "Contraseña" + +#: FConfig.class:142 +msgid "Use Proxy" +msgstr "Usar Proxy" + +#: FConfig.class:147 +msgid "127.0.0.1:3128" +msgstr "127.0.0.1:3128" + +#: FConfig.class:152 +msgid "TextBox1" +msgstr "TextBox1" + +#: FConfig.class:157 +msgid "Update cookies file" +msgstr "Actualizar achivos cookies" + +#: FConfig.class:162 +msgid "Cookies file (if you leave it blank HttpClient will not manage cookies)" +msgstr "Archivos Cookies (si lo deja en blanco HttpClient no manejará cookies)" + +#: FConfig.class:167 +msgid "Close" +msgstr "Cerrar" + +#: F.class:322 +msgid "GET!" +msgstr "¡Obtener!" + +#: F.class:337 +msgid "URL :" +msgstr "URL :" + +#: F.class:342 +msgid "http://gambasdoc.org/help" +msgstr "http://gambasdoc.org/help" + +#: F.class:356 +msgid "Stop" +msgstr "Detener" + +#: F.class:361 +msgid "Page needs authorization" +msgstr "Página necesita autorización" + +#: F.class:382 +msgid "Basic" +msgstr "Básico" + +#: F.class:382 +msgid "DIGEST" +msgstr "DIGEST" + +#: F.class:382 +msgid "GSS" +msgstr "GSS" + +#: F.class:390 +msgid "&Configuration..." +msgstr "&Configuración..." diff --git a/app/examples/Networking/HTTPGet/.lang/nl.po b/app/examples/Networking/HTTPGet/.lang/nl.po new file mode 100644 index 00000000..5290baf2 --- /dev/null +++ b/app/examples/Networking/HTTPGet/.lang/nl.po @@ -0,0 +1,120 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2014-09-22 13:13+0100\n" +"Last-Translator: Willy Raets \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "HTTP client GET example" +msgstr "HTTP client GET voorbeeld" + +#: F.form:24 +msgid "GET!" +msgstr "-" + +#: F.form:38 +msgid "URL :" +msgstr "-" + +#: F.form:43 +msgid "http://gambasdoc.org/help" +msgstr "-" + +#: F.form:48 +msgid "Stop" +msgstr "-" + +#: F.form:53 +msgid "Page needs authorization" +msgstr "Pagina vereist authorisatie" + +#: F.form:59 FConfig.form:80 +msgid "User" +msgstr "Gebruiker" + +#: F.form:65 FConfig.form:73 +msgid "Password" +msgstr "Wachtwoord" + +#: F.form:73 +msgid "Basic" +msgstr "-" + +#: F.form:73 FConfig.form:25 +msgid "NTLM" +msgstr "-" + +#: F.form:73 +msgid "DIGEST" +msgstr "-" + +#: F.form:73 +msgid "GSS" +msgstr "-" + +#: F.form:82 +msgid "&Configuration..." +msgstr "&Configuratie..." + +#: F.class:101 +msgid "Connecting..." +msgstr "Verbinding maken..." + +#: F.class:142 +msgid "Connected, waiting for reply..." +msgstr "Verbonden, wacht op antwoord..." + +#: F.class:158 +msgid "Receiving data..." +msgstr "Ontvang data..." + +#: F.class:162 +msgid "&1 bytes" +msgstr "-" + +#: F.class:195 +msgid "Error " +msgstr "Fout" + +#: F.class:210 +msgid "OK" +msgstr "-" + +#: F.class:250 +msgid "Cancelled by user" +msgstr "Geannuleerd door gebruiker" + +#: FConfig.form:25 +msgid "Plain" +msgstr "Plat" + +#: FConfig.form:41 +msgid "Use Proxy" +msgstr "Gebruik Proxy" + +#: FConfig.form:46 +msgid "127.0.0.1:3128" +msgstr "-" + +#: FConfig.form:55 +msgid "Update cookies file" +msgstr "Update cookies bestand" + +#: FConfig.form:60 +msgid "Cookies file (if you leave it blank HttpClient will not manage cookies)" +msgstr "Cookies bestand (indien leeg zal HTTP cliënt geen cookies beheren)" + +#: FConfig.form:65 +msgid "Close" +msgstr "Sluiten" + +#: FConfig.form:87 +msgid "Authentication" +msgstr "Autenticatie" + diff --git a/app/examples/Networking/HTTPGet/.lang/ru.po b/app/examples/Networking/HTTPGet/.lang/ru.po new file mode 100644 index 00000000..042fa962 --- /dev/null +++ b/app/examples/Networking/HTTPGet/.lang/ru.po @@ -0,0 +1,144 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-30 09:26+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Networking/HTTPGet/.project:23 +msgid "HTTP client GET example" +msgstr "Пример GET клиента HTTP" + +#: app/examples/Networking/HTTPGet/.project:24 +msgid "" +"HttpClient GET request example.\n" +"\n" +"This example how to send a GET HTTP request to a server and get the response. You can configure an HTTP proxy if needed." +msgstr "" +"Пример GET-запроса HTTP-клиента.\n" +"\n" +"В этом примере показано, как отправить GET HTTP запрос на сервер и получить ответ. При необходимости вы можете настроить HTTP-прокси." + +#: app/examples/Networking/HTTPGet/.src/FConfig.form:10 +msgid "Plain" +msgstr "Обычный" + +#: app/examples/Networking/HTTPGet/.src/FConfig.form:10 app/examples/Networking/HTTPGet/.src/FHttpGet.form:48 +msgid "NTLM" +msgstr "NTLM" + +#: app/examples/Networking/HTTPGet/.src/FConfig.form:23 +msgid "Use Proxy" +msgstr "Использовать прокси" + +#: app/examples/Networking/HTTPGet/.src/FConfig.form:27 +msgid "127.0.0.1:3128" +msgstr "127.0.0.1:3128" + +#: app/examples/Networking/HTTPGet/.src/FConfig.form:34 +msgid "Update cookies file" +msgstr "Обновить куки-файл" + +#: app/examples/Networking/HTTPGet/.src/FConfig.form:38 +msgid "Cookies file (if you leave it blank HttpClient will not manage cookies)" +msgstr "Куки-файл (если вы оставите его пустым, клиент Http не будет управлять куки-файлами)" + +#: app/examples/Networking/HTTPGet/.src/FConfig.form:42 +msgid "Close" +msgstr "Закрыть" + +#: app/examples/Networking/HTTPGet/.src/FConfig.form:49 app/examples/Networking/HTTPGet/.src/FHttpGet.form:41 +msgid "Password" +msgstr "Пароль" + +#: app/examples/Networking/HTTPGet/.src/FConfig.form:55 app/examples/Networking/HTTPGet/.src/FHttpGet.form:36 +msgid "User" +msgstr "Пользователь" + +#: app/examples/Networking/HTTPGet/.src/FConfig.form:61 +msgid "Authentication" +msgstr "Аутентификация" + +#: app/examples/Networking/HTTPGet/.src/FHttpGet.class:97 +msgid "Connecting..." +msgstr "Соединение..." + +#: app/examples/Networking/HTTPGet/.src/FHttpGet.class:138 +msgid "Connected, waiting for reply..." +msgstr "Подключено, в ожидании ответа..." + +#: app/examples/Networking/HTTPGet/.src/FHttpGet.class:155 +msgid "Receiving data..." +msgstr "Получение данных..." + +#: app/examples/Networking/HTTPGet/.src/FHttpGet.class:159 +msgid "&1 bytes" +msgstr "&1 байт" + +#: app/examples/Networking/HTTPGet/.src/FHttpGet.class:191 +msgid "Error " +msgstr "Ошибка " + +#: app/examples/Networking/HTTPGet/.src/FHttpGet.class:205 +msgid "OK" +msgstr "ОК" + +#: app/examples/Networking/HTTPGet/.src/FHttpGet.class:246 +msgid "Cancelled by user" +msgstr "Отменено пользователем" + +#: app/examples/Networking/HTTPGet/.src/FHttpGet.form:8 +msgid "GET!" +msgstr "GET!" + +#: app/examples/Networking/HTTPGet/.src/FHttpGet.form:19 +msgid "URL :" +msgstr "URL :" + +#: app/examples/Networking/HTTPGet/.src/FHttpGet.form:23 +msgid "http://gambaswiki.org/wiki" +msgstr "http://gambaswiki.org/wiki" + +#: app/examples/Networking/HTTPGet/.src/FHttpGet.form:27 +msgid "Stop" +msgstr "Стоп" + +#: app/examples/Networking/HTTPGet/.src/FHttpGet.form:31 +msgid "Page needs authorization" +msgstr "Страница требует авторизации" + +#: app/examples/Networking/HTTPGet/.src/FHttpGet.form:48 +msgid "Basic" +msgstr "Основы" + +#: app/examples/Networking/HTTPGet/.src/FHttpGet.form:48 +msgid "DIGEST" +msgstr "DIGEST" + +#: app/examples/Networking/HTTPGet/.src/FHttpGet.form:48 +msgid "GSS" +msgstr "GSS" + +#: app/examples/Networking/HTTPGet/.src/FHttpGet.form:56 +msgid "&Configuration..." +msgstr "Конфигурация..." + diff --git a/app/examples/Networking/HTTPGet/.project b/app/examples/Networking/HTTPGet/.project new file mode 100644 index 00000000..70c4d5d9 --- /dev/null +++ b/app/examples/Networking/HTTPGet/.project @@ -0,0 +1,22 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.6.90 +Title=HTTP client GET example +Startup=FHttpGet +Icon=httpclient.png +Version=1.0.0 +Component=gb.image +Component=gb.qt5 +Component=gb.net +Component=gb.net.curl +Component=gb.qt5.ext +Description="HttpClient GET request example.\n\nThis example how to send a GET HTTP request to a server and get the response. You can configure an HTTP proxy if needed." +TabSize=2 +Translate=1 +Language=fr +ControlPublic=1 +Maintainer=benoit +Vendor=Example +Address=benoit@desnouettes +License=General Public Licence +Packager=1 +Tags=Network diff --git a/app/examples/Networking/HTTPGet/.src/ClsParams.class b/app/examples/Networking/HTTPGet/.src/ClsParams.class new file mode 100644 index 00000000..ceea7236 --- /dev/null +++ b/app/examples/Networking/HTTPGet/.src/ClsParams.class @@ -0,0 +1,8 @@ +' Gambas class file +Static Public UseProxy As Boolean +Static Public ProxyHost As String +Static Public ProxyUser As String +Static Public ProxyPwd As String +Static Public ProxyAuth As Integer +Static Public CookiesFile As String +Static Public UpdateCookies As Boolean diff --git a/app/examples/Networking/HTTPGet/.src/FConfig.class b/app/examples/Networking/HTTPGet/.src/FConfig.class new file mode 100644 index 00000000..6a740382 --- /dev/null +++ b/app/examples/Networking/HTTPGet/.src/FConfig.class @@ -0,0 +1,75 @@ +' Gambas class file + +Public Sub ChkProxy_Click() + + + If ChkProxy.Value = True Then + TxtProxy.Enabled = True + LblAuth.Enabled = True + LblProxyUser.Enabled = True + TxtProxyUser.Enabled = True + LblProxyPassword.Enabled = True + TxtProxyPassword.Enabled = True + CmbProxyAuth.Enabled = True + Else + TxtProxy.Enabled = False + LblAuth.Enabled = False + LblProxyUser.Enabled = False + TxtProxyUser.Enabled = False + LblProxyPassword.Enabled = False + TxtProxyPassword.Enabled = False + CmbProxyAuth.Enabled = False + End If + +End + + +Public Sub Form_Open() + + + TxtCookies.Text = ClsParams.CookiesFile + ChkUpdate.Value = ClsParams.UpdateCookies + + ChkProxy.Value = ClsParams.UseProxy + TxtProxy.Text = ClsParams.ProxyHost + TxtProxyUser.Text = ClsParams.ProxyUser + TxtProxyPassword.Text = ClsParams.ProxyPwd + + + Select Case ClsParams.ProxyAuth + Case Net.AuthBasic + CmbProxyAuth.Index = 0 + Case Net.AuthNTLM + CmbProxyAuth.Index = 1 + End Select + + +End + +Public Sub Form_Close() + + ClsParams.CookiesFile = TxtCookies.Text + ClsParams.UpdateCookies = ChkUpdate.Value + + ClsParams.UseProxy = ChkProxy.Value + ClsParams.ProxyHost = TxtProxy.Text + ClsParams.ProxyUser = TxtProxyUser.Text + ClsParams.ProxyPwd = TxtProxyPassword.Text + + If ClsParams.ProxyUser = "" And ClsParams.ProxyPwd = "" Then + ClsParams.ProxyAuth = Net.AuthNone + Else + Select Case CmbProxyAuth.Index + Case 0 + ClsParams.ProxyAuth = Net.AuthBasic + Case 1 + ClsParams.ProxyAuth = Net.AuthNTLM + End Select + End If +End + +Public Sub Button1_Click() + + Me.Close + +End diff --git a/app/examples/Networking/HTTPGet/.src/FConfig.form b/app/examples/Networking/HTTPGet/.src/FConfig.form new file mode 100644 index 00000000..13518228 --- /dev/null +++ b/app/examples/Networking/HTTPGet/.src/FConfig.form @@ -0,0 +1,64 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(34.5714,30.7143,49,45) + Resizable = False + { CmbProxyAuth ComboBox + MoveScaled(27,6,21,4) + Enabled = False + ReadOnly = True + List = [("Plain"), ("NTLM")] + } + { TxtProxyPassword TextBox + MoveScaled(27,16,21,4) + Enabled = False + Password = True + } + { TxtProxyUser TextBox + MoveScaled(27,11,21,4) + Enabled = False + } + { ChkProxy CheckBox + MoveScaled(1,1,26,4) + Text = ("Use Proxy") + } + { TxtProxy TextBox + MoveScaled(27,1,21,4) + Text = ("127.0.0.1:3128") + } + { TxtCookies TextBox + MoveScaled(1,29,47,4) + } + { ChkUpdate CheckBox + MoveScaled(1,34,47,4) + Text = ("Update cookies file") + } + { TextLabel1 TextLabel + MoveScaled(1,22,47,7) + Text = ("Cookies file (if you leave it blank HttpClient will not manage cookies)") + } + { Button1 Button + MoveScaled(16,40,16,4) + Text = ("Close") + Default = True + Cancel = True + } + { LblProxyPassword Label + MoveScaled(1,16,26,4) + Enabled = False + Text = ("Password") + Transparent = True + } + { LblProxyUser Label + MoveScaled(1,11,26,4) + Enabled = False + Text = ("User") + Transparent = True + } + { LblAuth Label + MoveScaled(1,6,26,4) + Enabled = False + Text = ("Authentication") + Transparent = True + } +} diff --git a/app/examples/Networking/HTTPGet/.src/FHttpGet.class b/app/examples/Networking/HTTPGet/.src/FHttpGet.class new file mode 100644 index 00000000..f3b0584b --- /dev/null +++ b/app/examples/Networking/HTTPGet/.src/FHttpGet.class @@ -0,0 +1,285 @@ +' Gambas class file + +'/////////////////////////////////////// +' Here we define a HttpClient object +'/////////////////////////////////////// +'PRIVATE MyHTTP AS HttpClient +'/////////////////////////////// +' This is a buffer I use when +' a link is clicked (ugly hack:) +'/////////////////////////////// +Private CurHost As String + +Public Sub Form_Open() + + '/////////////////////////////////// + ' We set Default configuration values + '/////////////////////////////////// + ClsParams.ProxyHost = "127.0.0.1:3128" + ClsParams.ProxyUser = "" + ClsParams.ProxyPwd = "" + ClsParams.ProxyAuth = Net.AuthNone + ClsParams.CookiesFile = User.Home & "/gbcookies.txt" + '//////////////////////////////////// + ' Now we create the HttpClient object + '//////////////////////////////////// + 'MyHTTP=NEW HttpClient AS "MyHTTP" + +End + +Public Sub Button1_Click() + '///////////////////////////////////////////////// + ' When we press 'Get' button we start 'getting' + ' proccess + '///////////////////////////////////////////////// + + '///////////////////////////////////////////// + ' If user has configured a proxy, we set + ' that values in HttpClient object + '///////////////////////////////////////////// + If ClsParams.UseProxy And ClsParams.ProxyHost <> "" Then + '////////////////////////////////// + ' Host address and port + '////////////////////////////////// + MyHTTP.Proxy.Host = ClsParams.ProxyHost + MyHTTP.Proxy.Type = Net.ProxyHTTP + '////////////////////////////////// + ' If Proxy needs authentication, + ' we set it + '////////////////////////////////// + If ClsParams.ProxyUser <> "" Or ClsParams.ProxyPwd <> "" Then + MyHTTP.Proxy.User = ClsParams.ProxyUser + MyHTTP.Proxy.Password = ClsParams.ProxyPwd + MyHTTP.Proxy.Auth = ClsParams.ProxyAuth + Else + '/////////////////////////////////// + ' No authentication needed + '/////////////////////////////////// + MyHTTP.Proxy.Auth = Net.AuthNone + End If + Else + '////////////////////////////////////// + ' No proxy selected (direct connection) + '////////////////////////////////////// + MyHTTP.Proxy.Host = "" + ' todo authnone + End If + + '///////////////////////////////////////////////// + ' User and Password settings to access to that + ' document (this is a HTTP server authorization, + ' not a Proxy authorization) + '///////////////////////////////////////////////// + ' 1º User and password + If ChkPassword.Value Then + MyHTTP.User = TxtUser.Text + MyHTTP.Password = TxtPassword.Text + ' 2º Authorization type + Select Case CmbAuth.Index + Case 0 + MyHTTP.Auth = Net.AuthBasic + Case 1 + MyHTTP.Auth = Net.AuthNTLM + Case 2 + MyHTTP.Auth = Net.AuthDigest + Case 3 + MyHTTP.Auth = Net.AuthGSSNEGOTIATE + End Select + Else + MyHTTP.User = "" + MyHTTP.Auth = Net.AuthNone + End If + + '////////////////////////////////// + ' A bit of feedback for user... + '////////////////////////////////// + TextArea1.Text = "" + txtInfo.Text = ("Connecting...") + Navigator.Text = "" + + '//////////////////////////////////// + ' URL to Get + '//////////////////////////////////// + MyHTTP.Url = TxtHost.Text + + '//////////////////////////////////// + ' a little buffer for me + '//////////////////////////////////// + CurHost = Mid(MyHTTP.Url, 8) + + '//////////////////////////////////// + ' Cookies + '//////////////////////////////////// + MyHTTP.CookiesFile = ClsParams.CookiesFile + MyHTTP.UpdateCookies = ClsParams.UpdateCookies + + '//////////////////////////////////// + ' Let's get it! + '//////////////////////////////////// + Print MyHTTP.Proxy.Auth + MyHTTP.Get() + + '/////////////////////////////////////////// + ' If we'd want to download remote document + ' to a file, instead of receving it in + ' memory, we could do that: + ' MyHTTP.Get( "FilePath" ) + '/////////////////////////////////////////// + +End + +Public Sub MyHTTP_Connect() + + '/////////////////////////////////////////////// + ' This event from HttpClient raises when + ' we connect successfully with remote server + ' and allows us to give more feed-back to user + '/////////////////////////////////////////////// + txtInfo.Text = ("Connected, waiting for reply...") + +End + +Public Sub MyHTTP_Read() + '/////////////////////////////////////////// + ' This event raises when a new piece of data + ' arrives to us from server, so we read that + ' part of the document + '/////////////////////////////////////////// + + Dim sBuf As String + Dim sText As String + + '///////////////////////////////// + ' more feedback... + '///////////////////////////////// + sText = ("Receiving data...") & " " + If MyHttp.TotalDownloaded Then + sText &= Format(MyHttp.Downloaded / MyHttp.TotalDownloaded, "0 %") + Else + sText &= Subst(("&1 bytes"), MyHttp.Downloaded) + Endif + txtInfo.Text = sText + + '///////////////////////////////// + ' Header of HTTP document received + ' from server + '///////////////////////////////// + If TextArea1.Text = "" Then + TextArea1.Text = MyHTTP.Headers.Join("\n") + End If + + '///////////////////////////////// + ' If really there's data to read, + ' we read it and place it in our + ' "navigator" screen + '////////////////////////////////// + If Lof(MyHTTP) Then + Read #MyHTTP, sBuf, Lof(MyHTTP) + Navigator.Text = Navigator.Text & sBuf + End If + +End + +Public Sub MyHTTP_Error() + + '//////////////////////////// + ' If something fails, this + ' event raises and connection + ' is stopped + '//////////////////////////// + CurHost = "" + txtInfo.Text = ("Error ") & MyHTTP.Status + +End + +Public Sub MyHTTP_Finished() + + '///////////////////////////////////// + ' When all document has been received, + ' this event raises + '///////////////////////////////////// + Dim sBuf As String + '////////////////////////////// + ' feeback... + '////////////////////////////// + txtInfo.Text = ("OK") + If TextArea1.Text = "" Then + TextArea1.Text = MyHTTP.Headers.Join("\n") + End If + + '/////////////////////////////////// + ' we extract all possible data + ' buffered in HttpClient + '/////////////////////////////////// + If Lof(MyHTTP) Then + Read #MyHTTP, sBuf, Lof(MyHTTP) + Navigator.Text = Navigator.Text & sBuf + End If + +End + +Public Sub mnuOptions_Click() + '//////////////////////////////////// + ' If user wants to modify parameters + '//////////////////////////////////// + + FConfig.ShowModal + +End + +Public Sub Form_Close() + + '////////////////////////////////////// + ' When program finishes, we must ensure + ' that we close HttpClient object + '/////////////////////////////////////// + MyHTTP.Stop() + +End + +Public Sub BtnStop_Click() + + '/////////////////////////////////////// + ' If user wants to close the + ' connection... + '/////////////////////////////////////// + If MyHttp.Status > 0 Then txtInfo.Text = ("Cancelled by user") + MyHTTP.Stop() + +End + +Public Function Correct_Url(sCad As String) As String + + If InStr(sCad, "://") Then Return sCad + + If Left(sCad, 1) = "/" Then + If InStr(CurHost, "/") Then CurHost = Left(CurHost, InStr(CurHost, "/") - 1) + Return CurHost & sCad + Else + If Right(CurHost, 1) = "/" Then Return CurHost & sCad + Return CurHost & "/" & sCad + End If + +End + +Public Sub Navigator_Link(Path As String) + + If MyHTTP.Status > 0 Then MyHTTP.Stop() + TxtHost.Text = Correct_Url(Path) + Button1_Click() + +End + +Public Sub ChkPassword_Click() + + If ChkPassword.Value Then + TxtUser.Enabled = True + TxtPassword.Enabled = True + CmbAuth.Enabled = True + Else + TxtUser.Enabled = False + TxtPassword.Enabled = False + CmbAuth.Enabled = False + End If + +End diff --git a/app/examples/Networking/HTTPGet/.src/FHttpGet.form b/app/examples/Networking/HTTPGet/.src/FHttpGet.form new file mode 100644 index 00000000..cc2861fe --- /dev/null +++ b/app/examples/Networking/HTTPGet/.src/FHttpGet.form @@ -0,0 +1,65 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(30,14,104,73) + Resizable = False + { Button1 Button + MoveScaled(1,6,14,4) + Text = ("GET!") + } + { TextArea1 TextArea + MoveScaled(1,11,63,14) + } + { Navigator TextEdit + MoveScaled(1,26,102,46) + ReadOnly = True + } + { Label1 Label + MoveScaled(1,1,7,4) + Text = ("URL :") + } + { TxtHost TextBox + MoveScaled(8,1,56,4) + Text = ("http://gambaswiki.org/wiki") + } + { BtnStop Button + MoveScaled(16,6,14,4) + Text = ("Stop") + } + { ChkPassword CheckBox + MoveScaled(66,6,37,4) + Text = ("Page needs authorization") + } + { TxtUser TextBox + MoveScaled(66,16,37,4) + Enabled = False + Text = ("User") + } + { TxtPassword TextBox + MoveScaled(66,21,37,4) + Enabled = False + Text = ("Password") + Password = True + } + { CmbAuth ComboBox + MoveScaled(66,11,37,4) + Enabled = False + ReadOnly = True + List = [("Basic"), ("NTLM"), ("DIGEST"), ("GSS")] + Text = (" ") + } + { MyHttp #HttpClient + #MoveScaled(27,36) + } + { mnuOptions Button + MoveScaled(66,1,37,4) + Text = ("&Configuration...") + } + { txtInfo Label + MoveScaled(32,6,32,4) + Font = Font["Bold"] + Background = Color.SelectedBackground + Foreground = &HFFFF00& + Padding = 8 + } +} diff --git a/app/examples/Networking/HTTPGet/httpclient.png b/app/examples/Networking/HTTPGet/httpclient.png new file mode 100644 index 0000000000000000000000000000000000000000..613d858f2cbcc49382048288ca7a5b04e9db60be GIT binary patch literal 1768 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, 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: HTTPPost\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2010-12-17 01:10+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: F.form:114 +msgid "127.0.0.1:3128" +msgstr "-" + +#: F.form:63 +msgid "5" +msgstr "-" + +#: F.class:72 +msgid "Connecting..." +msgstr "S'està connectant..." + +#: F.class:7 +msgid "Error " +msgstr "-" + +#: F.form:73 +msgid "Finally press the Post button >>>" +msgstr "Finalment premeu el botó Envia >>>" + +#: .project:1 +msgid "HTTP client POST example" +msgstr "Exemple POST de client HTTP" + +#: F.form:48 +msgid "HTTP Data" +msgstr "Dades HTTP" + +#: F.form:42 +msgid "HTTP Headers" +msgstr "Capçaleres HTTP" + +#: F.form:23 +msgid "Internet Calculator" +msgstr "Calculadora d'Internet" + +#: F.form:28 +msgid "Post" +msgstr "Envia" + +#: F.form:108 +msgid "Use Proxy" +msgstr "Usa servidor intermediari" + +#: F.form:81 +msgid "Using the power of internet to have a minimal calculator machine!" +msgstr "Usant el poder d'Internet per tenir una mínima màquina de calcular!" + +#: F.class:22 +msgid "Waiting for reply..." +msgstr "S'està esperant resposta..." + +#: F.form:58 +msgid "Write Here Another Number :" +msgstr "Escriviu aquí un altre nombre:" + +#: F.form:53 +msgid "Write Here a Number :" +msgstr "Escriviu aquí un nombre:" + diff --git a/app/examples/Networking/HTTPPost/.lang/cs.po b/app/examples/Networking/HTTPPost/.lang/cs.po new file mode 100644 index 00000000..03288a56 --- /dev/null +++ b/app/examples/Networking/HTTPPost/.lang/cs.po @@ -0,0 +1,72 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "HTTP client POST example" +msgstr "Příklad HTTP POST klienta" + +#: F.class:7 +msgid "Error " +msgstr "Chyba" + +#: F.class:22 +msgid "Waiting for reply..." +msgstr "Čekání na odpověď..." + +#: F.class:72 +msgid "Connecting..." +msgstr "Připojování..." + +#: F.form:23 +msgid "Internet Calculator" +msgstr "Internetová kalkulačka" + +#: F.form:28 +msgid "Post" +msgstr "-" + +#: F.form:42 +msgid "HTTP Headers" +msgstr "HTTP Hlavička" + +#: F.form:48 +msgid "HTTP Data" +msgstr "-" + +#: F.form:53 +msgid "Write Here a Number :" +msgstr "Zapiš zde číslo :" + +#: F.form:58 +msgid "Write Here Another Number :" +msgstr "Zapiš zde ještě číslo :" + +#: F.form:63 +msgid "5" +msgstr "-" + +#: F.form:73 +msgid "Finally press the Post button >>>" +msgstr "Nakonec zmáčkni tlačítko Post >>>" + +#: F.form:81 +msgid "Using the power of internet to have a minimal calculator machine!" +msgstr "Použití síly internetu na minimální kalkulačku!" + +#: F.form:108 +msgid "Use Proxy" +msgstr "Použít proxy" + +#: F.form:114 +msgid "127.0.0.1:3128" +msgstr "-" diff --git a/app/examples/Networking/HTTPPost/.lang/de.po b/app/examples/Networking/HTTPPost/.lang/de.po new file mode 100644 index 00000000..ec7afa61 --- /dev/null +++ b/app/examples/Networking/HTTPPost/.lang/de.po @@ -0,0 +1,73 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "HTTP client POST example" +msgstr "Beispiel fürHTTP-Client POST" + +#: F.class:7 +msgid "Error " +msgstr "Fehler" + +#: F.class:22 +msgid "Waiting for reply..." +msgstr "Warte auf Antwort..." + +#: F.class:72 +msgid "Connecting..." +msgstr "Verbinden..." + +#: F.form:23 +msgid "Internet Calculator" +msgstr "Internet-Rechner" + +#: F.form:28 +msgid "Post" +msgstr "Übermitteln" + +#: F.form:42 +msgid "HTTP Headers" +msgstr "-" + +#: F.form:48 +msgid "HTTP Data" +msgstr "HTTP Daten" + +#: F.form:53 +msgid "Write Here a Number :" +msgstr "Eine Zahl eingeben" + +#: F.form:58 +msgid "Write Here Another Number :" +msgstr "Noch eine Zahl eingeben" + +#: F.form:63 +msgid "5" +msgstr "-" + +#: F.form:73 +msgid "Finally press the Post button >>>" +msgstr "Dann auf Übermitteln klicken >>>" + +#: F.form:81 +msgid "Using the power of internet to have a minimal calculator machine!" +msgstr "Die Macht des Internets für einen kleinen Taschenrechner nutzen!" + +#: F.form:108 +msgid "Use Proxy" +msgstr "Proxy benutzen" + +#: F.form:114 +msgid "127.0.0.1:3128" +msgstr "-" + diff --git a/app/examples/Networking/HTTPPost/.lang/es.po b/app/examples/Networking/HTTPPost/.lang/es.po new file mode 100644 index 00000000..0901fdfa --- /dev/null +++ b/app/examples/Networking/HTTPPost/.lang/es.po @@ -0,0 +1,56 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: F.class:132 +msgid "Internet Calculator" +msgstr "Calculador de Internet" + +#: F.class:137 +msgid "Post" +msgstr "Post" + +#: F.class:152 +msgid "HTTP Header :" +msgstr "HTTP Encabezado :" + +#: F.class:157 +msgid "HTTP Data :" +msgstr "HTTP Datos :" + +#: F.class:162 +msgid "Write Here a Number :" +msgstr "Escriba aquí un número :" + +#: F.class:167 +msgid "Write Here Another Number :" +msgstr "Escriba aquí otro número :" + +#: F.class:172 +msgid "5" +msgstr "5" + +#: F.class:182 +msgid "Finally Press Post button ->" +msgstr "Finalmente presione el botón Post" + +#: F.class:190 +msgid "Using the power of internet to have a minimal calculator machine!" +msgstr "" +"¡Usando el poder de Internet para tener una mínima máquina calculadora!" + +#: F.class:224 +msgid "Use Proxy" +msgstr "Usar Proxy" + +#: F.class:230 +msgid "127.0.0.1:3128" +msgstr "127.0.0.1:3128" diff --git a/app/examples/Networking/HTTPPost/.lang/nl.po b/app/examples/Networking/HTTPPost/.lang/nl.po new file mode 100644 index 00000000..bbb2ca66 --- /dev/null +++ b/app/examples/Networking/HTTPPost/.lang/nl.po @@ -0,0 +1,72 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2014-09-22 00:19+0100\n" +"Last-Translator: Willy Raets \n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "HTTP client POST example" +msgstr "HTTP cliënt POST voorbeeld" + +#: F.form:23 +msgid "Internet Calculator" +msgstr "-" + +#: F.form:28 +msgid "Post" +msgstr "-" + +#: F.form:42 +msgid "HTTP Headers" +msgstr "-" + +#: F.form:48 +msgid "HTTP Data" +msgstr "-" + +#: F.form:53 +msgid "Write Here a Number :" +msgstr "Schrijf hier een nummer:" + +#: F.form:58 +msgid "Write Here Another Number :" +msgstr "Schrijf hier een ander nummer:" + +#: F.form:63 +msgid "5" +msgstr "-" + +#: F.form:73 +msgid "Finally press the Post button >>>" +msgstr "Uiteindelijk druk the Post knop >>>" + +#: F.form:81 +msgid "Using the power of internet to have a minimal calculator machine!" +msgstr "Gebruik de kracht van het internet om een minimale calculator machine te hebben!" + +#: F.form:108 +msgid "Use Proxy" +msgstr "Gebruik Proxy" + +#: F.form:114 +msgid "127.0.0.1:3128" +msgstr "-" + +#: F.class:7 +msgid "Error " +msgstr "Fout" + +#: F.class:22 +msgid "Waiting for reply..." +msgstr "Wachten op antwoord..." + +#: F.class:72 +msgid "Connecting..." +msgstr "Verbinding maken..." + diff --git a/app/examples/Networking/HTTPPost/.lang/ru.po b/app/examples/Networking/HTTPPost/.lang/ru.po new file mode 100644 index 00000000..bfc033a1 --- /dev/null +++ b/app/examples/Networking/HTTPPost/.lang/ru.po @@ -0,0 +1,104 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Networking/HTTPPost/.project:21 +msgid "HTTP client POST example" +msgstr "Пример POST HTTP-клиента" + +#: app/examples/Networking/HTTPPost/.project:22 +msgid "" +"HttpClient POST request example.\n" +"\n" +"This example how to send a POST HTTP request to a server and get the response. You can configure an HTTP proxy if needed." +msgstr "" +"Пример POST-запроса клиента HTTP.\n" +"\n" +"В этом примере показано, как отправить запрос POST HTTP на сервер и получить ответ. При необходимости вы можете настроить HTTP-прокси." + +#: app/examples/Networking/HTTPPost/.src/FHttpPost.class:7 +msgid "Error " +msgstr "Ошибка " + +#: app/examples/Networking/HTTPPost/.src/FHttpPost.class:22 +msgid "Waiting for reply..." +msgstr "Ожидание ответа..." + +#: app/examples/Networking/HTTPPost/.src/FHttpPost.class:33 +msgid "OK" +msgstr "ОК" + +#: app/examples/Networking/HTTPPost/.src/FHttpPost.class:59 app/examples/Networking/HTTPPost/.src/FHttpPost.class:62 +msgid "Error" +msgstr "Ошибка" + +#: app/examples/Networking/HTTPPost/.src/FHttpPost.class:72 +msgid "Connecting..." +msgstr "Соединение..." + +#: app/examples/Networking/HTTPPost/.src/FHttpPost.form:5 +msgid "Internet Calculator" +msgstr "Интернет-калькулятор" + +#: app/examples/Networking/HTTPPost/.src/FHttpPost.form:9 +msgid "Post" +msgstr "Отправить" + +#: app/examples/Networking/HTTPPost/.src/FHttpPost.form:20 +msgid "HTTP Headers" +msgstr "Заголовки HTTP" + +#: app/examples/Networking/HTTPPost/.src/FHttpPost.form:25 +msgid "HTTP Data" +msgstr "Данные HTTP" + +#: app/examples/Networking/HTTPPost/.src/FHttpPost.form:29 +msgid "Write Here a Number :" +msgstr "Написать здесь число:" + +#: app/examples/Networking/HTTPPost/.src/FHttpPost.form:33 +msgid "Write Here Another Number :" +msgstr "Написать здесь другое число:" + +#: app/examples/Networking/HTTPPost/.src/FHttpPost.form:37 app/examples/Networking/HTTPPost/.src/FHttpPost.form:41 +msgid "5" +msgstr "5" + +#: app/examples/Networking/HTTPPost/.src/FHttpPost.form:45 +msgid "Finally press the Post button >>>" +msgstr "В заключение нажать кнопку >>>" + +#: app/examples/Networking/HTTPPost/.src/FHttpPost.form:52 +msgid "Using the power of internet to have a minimal calculator machine!" +msgstr "Использование возможностей Интернета, чтобы иметь минимальный калькулятор!" + +#: app/examples/Networking/HTTPPost/.src/FHttpPost.form:78 +msgid "Use Proxy" +msgstr "Использовать прокси" + +#: app/examples/Networking/HTTPPost/.src/FHttpPost.form:83 +msgid "127.0.0.1:3128" +msgstr "127.0.0.1:3128" + diff --git a/app/examples/Networking/HTTPPost/.project b/app/examples/Networking/HTTPPost/.project new file mode 100644 index 00000000..149b45db --- /dev/null +++ b/app/examples/Networking/HTTPPost/.project @@ -0,0 +1,20 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.6.90 +Title=HTTP client POST example +Startup=FHttpPost +Icon=httpclient.png +Version=1.0.0 +Component=gb.image +Component=gb.gui +Component=gb.net +Component=gb.net.curl +Description="HttpClient POST request example.\n\nThis example how to send a POST HTTP request to a server and get the response. You can configure an HTTP proxy if needed." +TabSize=2 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Example +Address=benoit@desnouettes +License=General Public Licence +Packager=1 +Tags=Network diff --git a/app/examples/Networking/HTTPPost/.src/FHttpPost.class b/app/examples/Networking/HTTPPost/.src/FHttpPost.class new file mode 100644 index 00000000..fc233522 --- /dev/null +++ b/app/examples/Networking/HTTPPost/.src/FHttpPost.class @@ -0,0 +1,105 @@ +' Gambas class file + +Public P As HttpClient + +Public Sub P_Error() + + LblInfo.Text = ("Error ") & P.Status + +End + + +Public Sub Form_Open() + + TextArea1.Text = "" + P = New HttpClient As "P" + +End + + +Public Sub P_Connect() + + LblInfo.Text = ("Waiting for reply...") + +End + + + +Public Sub P_Finished() + + Dim sBuf As String + Dim MyLoop As Integer + + LblInfo.Text = ("OK") + + TextArea2.Insert(P.Headers.Join("\n") & "\n") + + If Lof(P) Then + sBuf = Read #P, Lof(P) + TextArea1.Text = sBuf + Endif + + If (InStr(sBuf, "")) Then + sBuf = Mid(sBuf, InStr(sBuf, "") + 12) + MyLoop = 1 + Label6.Text = TextBox1.Text & " + " & TextBox2.Text & " = " + Do While Mid(sBuf, MyLoop, 1) <> "<" + Label6.Text = Label6.Text & Mid(sBuf, MyLoop, 1) + MyLoop = MyLoop + 1 + Loop + If (InStr(sBuf, "")) Then + sBuf = Mid(sBuf, InStr(sBuf, "") + 12) + MyLoop = 1 + Label7.Text = TextBox1.Text & " - " & TextBox2.Text & " = " + Do While Mid(sBuf, MyLoop, 1) <> "<" + Label7.Text = Label7.Text & Mid(sBuf, MyLoop, 1) + MyLoop = MyLoop + 1 + Loop + Else + Message.Error(("Error")) + End If + Else + Message.Error(("Error")) + End If + + +End + + +Public Sub Button1_Click() + + Dim sCad As String + LblInfo.Text = ("Connecting...") + TextBox1.Text = Val(Trim(TextBox1.Text)) + TextBox2.Text = Val(Trim(TextBox2.Text)) + Wait + TextArea1.Text = "" + sCad = "" & Chr(13) & Chr(10) + sCad = sCad & "" '& Chr(13) & Chr(10) + sCad = sCad & "sample.sumAndDifference" '& Chr(13) & Chr(10) + sCad = sCad & "" + sCad = sCad & "" + sCad = sCad & "" & TextBox1.Text & "" + sCad = sCad & "" + sCad = sCad & "" + sCad = sCad & "" & TextBox2.Text & "" + sCad = sCad & "" + sCad = sCad & "" + sCad = sCad & "" + If ChkProxy.Value Then + P.Proxy.Host = TxtProxy.Text + Else + P.Proxy.Host = "" + End If + P.URL = "dansoft.krasnokamensk.ru/xmlrpc-c-api/sample.php" + + P.Post("text/xml", sCad) + +End + + +Public Sub ChkProxy_Click() + + TxtProxy.Enabled = ChkProxy.Value + +End diff --git a/app/examples/Networking/HTTPPost/.src/FHttpPost.form b/app/examples/Networking/HTTPPost/.src/FHttpPost.form new file mode 100644 index 00000000..69bf3555 --- /dev/null +++ b/app/examples/Networking/HTTPPost/.src/FHttpPost.form @@ -0,0 +1,85 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(38.1429,12.7143,95,85) + Text = ("Internet Calculator") + Resizable = False + { Button1 Button + MoveScaled(42,18,14.7143,4) + Text = ("Post") + } + { TextArea1 TextArea + MoveScaled(1,56,93,28) + } + { TextArea2 TextArea + MoveScaled(1,35,93,16) + } + { Label1 Label + MoveScaled(1,31,89.1429,4) + Font = Font["Bold"] + Text = ("HTTP Headers") + } + { Label2 Label + MoveScaled(1,52,90.7143,4) + Font = Font["Bold"] + Text = ("HTTP Data") + } + { Label3 Label + MoveScaled(4,8,38,4) + Text = ("Write Here a Number :") + } + { Label4 Label + MoveScaled(4,13,38,4) + Text = ("Write Here Another Number :") + } + { TextBox1 TextBox + MoveScaled(42,8,14.7143,4) + Text = ("5") + } + { TextBox2 TextBox + MoveScaled(42,13,14.7143,4) + Text = ("5") + } + { Label5 Label + MoveScaled(4,18,38,4) + Text = ("Finally press the Post button >>>") + } + { TextLabel1 TextLabel + MoveScaled(0,0,96,6) + Font = Font["Bold"] + Background = &H101A9E& + Foreground = &HF7F02A& + Text = ("Using the power of internet to have a minimal calculator machine!") + Alignment = Align.Center + } + { Label6 Label + MoveScaled(60,8,34,5) + Font = Font["12,Bold"] + Background = &H092773& + Foreground = &HFFFFFF& + Padding = 4 + } + { Label7 Label + MoveScaled(60,14,34,5) + Font = Font["12,Bold"] + Background = &H092773& + Foreground = &HFFFFFF& + Padding = 4 + } + { LblInfo Label + MoveScaled(60,20,34,4) + Font = Font["Bold"] + Background = &H003DB6& + Foreground = &HFFFF00& + Padding = 4 + } + { ChkProxy CheckBox + MoveScaled(1,26,36,4) + Text = ("Use Proxy") + } + { TxtProxy TextBox + MoveScaled(28,26,67,4) + Enabled = False + Text = ("127.0.0.1:3128") + } +} diff --git a/app/examples/Networking/HTTPPost/httpclient.png b/app/examples/Networking/HTTPPost/httpclient.png new file mode 100644 index 0000000000000000000000000000000000000000..613d858f2cbcc49382048288ca7a5b04e9db60be GIT binary patch literal 1768 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, YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Networking/POPMailbox/.project:20 +msgid "POP-Mailbox" +msgstr "Почтовый ящик POP" + +#: app/examples/Networking/POPMailbox/.project:21 +msgid "Simple mail reader based on the POP3 component." +msgstr "Простая читалка почты на основе компонента POP3." + +#: app/examples/Networking/POPMailbox/.src/FMain.class:49 +msgid "Login failed!" +msgstr "Ошибка логина!" + +#: app/examples/Networking/POPMailbox/.src/FMain.form:5 +msgid "POP3 Mailbox Example" +msgstr "Пример почтового ящика POP3" + +#: app/examples/Networking/POPMailbox/.src/FMain.form:31 +msgid "Connect" +msgstr "Соединить" + +#: app/examples/Networking/POPMailbox/.src/FMain.form:39 +msgid "Disconnect" +msgstr "Отсоединить" + +#: app/examples/Networking/POPMailbox/.src/FMain.form:47 app/examples/Networking/POPMailbox/.src/FSettings.form:5 +msgid "Settings" +msgstr "Параметры" + +#: app/examples/Networking/POPMailbox/.src/FSettings.class:28 +msgid "Missing username" +msgstr "Отсутствует имя пользователя" + +#: app/examples/Networking/POPMailbox/.src/FSettings.class:33 +msgid "Missing password" +msgstr "Отсутствует пароль" + +#: app/examples/Networking/POPMailbox/.src/FSettings.class:38 +msgid "Missing server" +msgstr "Отсутствует сервер" + +#: app/examples/Networking/POPMailbox/.src/FSettings.form:13 +msgid "Login Details" +msgstr "Данные для логина" + +#: app/examples/Networking/POPMailbox/.src/FSettings.form:17 +msgid "Username" +msgstr "Имя пользователя" + +#: app/examples/Networking/POPMailbox/.src/FSettings.form:26 +msgid "Password" +msgstr "Пароль" + +#: app/examples/Networking/POPMailbox/.src/FSettings.form:36 +msgid "Server Details" +msgstr "Детали сервера" + +#: app/examples/Networking/POPMailbox/.src/FSettings.form:40 +msgid "Server" +msgstr "Сервер" + +#: app/examples/Networking/POPMailbox/.src/FSettings.form:49 +msgid "Port" +msgstr "Порт" + +#: app/examples/Networking/POPMailbox/.src/FSettings.form:59 +msgid "Use SSL" +msgstr "Использовать SSL" + +#: app/examples/Networking/POPMailbox/.src/FSettings.form:64 +msgid "Save" +msgstr "Сохранить" + diff --git a/app/examples/Networking/POPMailbox/.project b/app/examples/Networking/POPMailbox/.project new file mode 100644 index 00000000..15fc0f24 --- /dev/null +++ b/app/examples/Networking/POPMailbox/.project @@ -0,0 +1,19 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.6.90 +Title=POP-Mailbox +Startup=FMain +Icon=pop3client.png +Version=3.6.2 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.form +Component=gb.settings +Component=gb.net +Component=gb.mime +Component=gb.net.pop3 +Description="Simple mail reader based on the POP3 component." +Authors="sebikul " +TabSize=2 +Packager=1 +Translate=1 diff --git a/app/examples/Networking/POPMailbox/.src/FMain.class b/app/examples/Networking/POPMailbox/.src/FMain.class new file mode 100644 index 00000000..3838a456 --- /dev/null +++ b/app/examples/Networking/POPMailbox/.src/FMain.class @@ -0,0 +1,106 @@ +' Gambas class file + + + +Public Sub Form_Open() + + Settings.Read(FMain) + + FSettings.ShowModal() + + MailClient.Debug = True + + 'Connect() + + If Not MailClient.User Then Me.Close + +End + +Public Sub btnSettings_Click() + + If MailClient.Status <> Net.Connected Then + FSettings.ShowModal() + Endif + +End + +Public Sub btnConnect_Click() + + Connect() + +End + +Private Sub Connect() + + 'Wait 0.5 + + Inc Application.Busy + + If MailClient.Host Then + btnSettings.Enabled = False + MailClient.Open() + Endif + + If MailClient.Status = Net.Connected Then + LoadInbox() + btnDisconnect.Enabled = True + Else + btnSettings.Enabled = True + Message.Warning(("Login failed!")) + Endif + + Dec Application.Busy + +End + +Private Sub LoadInbox() + + Dim oMail As _Pop3Client_Message + + If MailClient.Status <> Net.Connected Then Return + + For Each oMail In MailClient + + If oMail.Index = 3 Then Return + + lvInbox.Add(oMail.Index, Subst("&1 &2", oMail.Message.Sender, oMail.Message.Subject)) + + Wait + + Next + +End + +Public Sub btnDisconnect_Click() + + If MailClient.Status <> Net.Connected Then Return + + lvInbox.Clear() + + MailClient.Close() + + btnDisconnect.Enabled = False + + btnSettings.Enabled = True + +End + +Public Sub lvInbox_Select() + + ''Please note that this is not an example of the gb.mime component!!! + txtContent.Text = MailClient[lvInbox.Key].Message.Body[0].ToString() + + ''THIS SHOULD WORK!!! + 'txtContent.Text = Mime.Decode(MailClient[lvInbox.Key].Message.Body[0].ToString(), MailClient[lvInbox.Key].Message.Body[0].ContentEncoding) + +End + +Public Sub Form_Close() + + If btnDisconnect.Enabled Then + MailClient.Close() + Endif + + Settings.Write(FMain) + +End diff --git a/app/examples/Networking/POPMailbox/.src/FMain.form b/app/examples/Networking/POPMailbox/.src/FMain.form new file mode 100644 index 00000000..2c8f7391 --- /dev/null +++ b/app/examples/Networking/POPMailbox/.src/FMain.form @@ -0,0 +1,50 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,77,38) + Text = ("POP3 Mailbox Example") + Arrangement = Arrange.Vertical + Spacing = True + Margin = True + Padding = 10 + { !MailClient #Pop3Client + #MoveScaled(23,1) + #Public = True + } + { HSplit1 HSplit + MoveScaled(1,9,69,19) + Expand = True + { lvInbox ListView + MoveScaled(2,3,29,14) + } + { txtContent TextArea + MoveScaled(33,1,31,16) + ReadOnly = True + Wrap = True + ScrollBar = Scroll.Vertical + } + } + { HBox1 HBox + MoveScaled(3,30,67,4) + { btnConnect Button + MoveScaled(0,0,16,4) + Text = ("Connect") + } + { Panel2 Panel + MoveScaled(16,0,7,4) + } + { btnDisconnect Button + MoveScaled(23,0,16,4) + Enabled = False + Text = ("Disconnect") + } + { Panel1 Panel + MoveScaled(39,0,7,4) + Expand = True + } + { btnSettings Button + MoveScaled(46,0,16,4) + Text = ("Settings") + } + } +} diff --git a/app/examples/Networking/POPMailbox/.src/FSettings.class b/app/examples/Networking/POPMailbox/.src/FSettings.class new file mode 100644 index 00000000..ed66a025 --- /dev/null +++ b/app/examples/Networking/POPMailbox/.src/FSettings.class @@ -0,0 +1,68 @@ +' Gambas class file + +Public Sub Form_Close() + + Settings.Write(FSettings) + +End + +Public Sub Form_Open() + + Settings.Read(FSettings) + + txtUsername.Text = Settings["LastUser", FMain.MailClient.User] + + txtPassword.Text = FMain.MailClient.Password + + txtServer.Text = Settings["LastServer", FMain.MailClient.Host] + + vbPort.Value = IIf(FMain.MailClient.Port, FMain.MailClient.Port, vbPort.Value) + +End + +Public Sub btnSave_Click() + + Balloon.Delay = 3000 + + If Not txtUsername.Text Then + Balloon.Error(("Missing username"), txtUsername) + Return + Endif + + If Not txtPassword.Text Then + Balloon.Error(("Missing password"), txtPassword) + Return + Endif + + If Not txtServer.Text Then + Balloon.Error(("Missing server"), txtServer) + Return + Endif + + FMain.MailClient.User = txtUsername.Text + Settings["LastUser"] = FMain.MailClient.User + + FMain.MailClient.Password = txtPassword.Text + + FMain.MailClient.Host = txtServer.Text + Settings["LastServer"] = FMain.MailClient.Host + + FMain.MailClient.Port = vbPort.Value + + Me.Close + +End + +Public Sub chbSSL_Click() + + Select Case chbSSL.Value + + Case -1 + If vbPort.Value = 110 Then vbPort.Value = 995 + + Case 0 + If vbPort.Value = 995 Then vbPort.Value = 110 + + End Select + +End diff --git a/app/examples/Networking/POPMailbox/.src/FSettings.form b/app/examples/Networking/POPMailbox/.src/FSettings.form new file mode 100644 index 00000000..62814211 --- /dev/null +++ b/app/examples/Networking/POPMailbox/.src/FSettings.form @@ -0,0 +1,66 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,48,53) + Text = ("Settings") + Resizable = False + Arrangement = Arrange.Vertical + AutoResize = True + Spacing = True + Margin = True + { Frame1 Frame + MoveScaled(1,2,46,18) + Text = ("Login Details") + { Label1 Label + MoveScaled(1,5,16,4) + AutoResize = True + Text = ("Username") + } + { txtUsername TextBox + MoveScaled(21,5,24,4) + Expand = True + } + { Label2 Label + MoveScaled(1,11,16,4) + AutoResize = True + Text = ("Password") + } + { txtPassword TextBox + MoveScaled(21,11,24,4) + Expand = True + Password = True + } + } + { Frame2 Frame + MoveScaled(1,26,46,21) + Text = ("Server Details") + { Label3 Label + MoveScaled(1,5,17,4) + AutoResize = True + Text = ("Server") + } + { txtServer TextBox + MoveScaled(21,5,24,4) + Expand = True + } + { Label4 Label + MoveScaled(1,11,32,4) + AutoResize = True + Text = ("Port") + } + { vbPort SpinBox + MoveScaled(36,11,9,4) + MaxValue = 999999 + Value = 110 + } + { chbSSL CheckBox + MoveScaled(1,16,42,4) + AutoResize = True + Text = ("Use SSL") + } + } + { btnSave Button + MoveScaled(31,48,16,4) + Text = ("Save") + } +} diff --git a/app/examples/Networking/POPMailbox/pop3client.png b/app/examples/Networking/POPMailbox/pop3client.png new file mode 100644 index 0000000000000000000000000000000000000000..3ac6e3cd827550e3f24ac0cfd9e9c3e8f1ff1707 GIT binary patch literal 957 zcmV;u148_XP)Z0B9%xbu9o!8~^|R$;!_5_V)Vv z`uX|!_4W0~$;{^I?X|bO+uPgz{{8p&_x}F=+S=Q+x4Y`?@!a3z!^X(E|<=^7v)7ILks;%VZ<@@{l@$vEU^78!r{Nv>0?Curta_W?d|RE?(XjH@1mrp@ACEI=IP|- z>et!aqot?D$H?jF>FVn0#>U6-^Y-QE>gDI_y1c%kqonxw`2GF;>+9>HqNMZn_~+^D z=jrR{>g?p^=&rA@goK6J+1c3G*sia!_4fMd>h0<4?%?6%y1TvS=;*Djt*or9tE;Q$ z=jh<#g?|6?C#Lg)XdGz=;-L=VJkiRI^yi;0hljDU!RffXbqfRoc}dAyA}U zQ(IA9R$5vDR!~>p(Ad-*+*0iT2h}aX%}tFB^>ttct!?ccol*{tD8NCgv!lJO6{w&K zClK!L=>;k1!v*@4TPEOD093)x4psn4I(=XYmEG6R!3j|S62U?ORWRUC&<7*?k*t6! zfEeBfAwep-kah4w*$5N3uq%MOfr|m5pbu^l!WUeO_``vVfdOwwa)YyGKTf~{&Ahx^ f*a08md=CZy+L9lmVaOD500000NkvXXu0mjfUIQU6 literal 0 HcmV?d00001 diff --git a/app/examples/Networking/SerialPort/.directory b/app/examples/Networking/SerialPort/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Networking/SerialPort/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Networking/SerialPort/.icon.png b/app/examples/Networking/SerialPort/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7cda40d9199bbf380bda87817e786e26a2413869 GIT binary patch literal 4320 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 O0000, YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-28 09:00+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Networking/SerialPort/.project:18 +msgid "Serial Port example" +msgstr "Пример последовательного порта" + +#: app/examples/Networking/SerialPort/.project:19 app/examples/Networking/SerialPort/.src/FMain.form:5 +msgid "RS232 Serial port example" +msgstr "Пример последовательного порта RS232" + +#: app/examples/Networking/SerialPort/.src/FAbout.class:6 app/examples/Networking/SerialPort/.src/FMain.form:17 +msgid "About" +msgstr "О программе" + +#: app/examples/Networking/SerialPort/.src/FAbout.class:8 +msgid "Version" +msgstr "Версия" + +#: app/examples/Networking/SerialPort/.src/FAbout.form:10 +msgid "Label1" +msgstr "Метка1" + +#: app/examples/Networking/SerialPort/.src/FAbout.form:15 +msgid "Provided under GPL License" +msgstr "Предоставлено по лицензии GPL" + +#: app/examples/Networking/SerialPort/.src/FAbout.form:20 +msgid "by" +msgstr "от" + +#: app/examples/Networking/SerialPort/.src/FAbout.form:25 +msgid "Claus Dietrich" +msgstr "Клаус Дитрих" + +#: app/examples/Networking/SerialPort/.src/FAbout.form:30 +msgid "Close" +msgstr "Закрыть" + +#: app/examples/Networking/SerialPort/.src/FMain.class:47 +msgid "Unable to open" +msgstr "Невозможно открыть" + +#: app/examples/Networking/SerialPort/.src/FMain.class:48 app/examples/Networking/SerialPort/.src/FMain.class:127 +msgid "Apply" +msgstr "Применить" + +#: app/examples/Networking/SerialPort/.src/FMain.class:111 +msgid "Please open serial port first." +msgstr "Пожалуйста, сначала откройте последовательный порт." + +#: app/examples/Networking/SerialPort/.src/FMain.class:126 app/examples/Networking/SerialPort/.src/FMain.class:150 app/examples/Networking/SerialPort/.src/FMain.form:152 +msgid "Change" +msgstr "Изменить" + +#: app/examples/Networking/SerialPort/.src/FMain.class:146 +msgid "Error while opening" +msgstr "Ошибка при открытии" + +#: app/examples/Networking/SerialPort/.src/FMain.form:9 +msgid "File" +msgstr "Файл" + +#: app/examples/Networking/SerialPort/.src/FMain.form:11 +msgid "Exit" +msgstr "Выход" + +#: app/examples/Networking/SerialPort/.src/FMain.form:15 +msgid "Help" +msgstr "Справка" + +#: app/examples/Networking/SerialPort/.src/FMain.form:25 +msgid "TextArea1" +msgstr "Текстовая_область_1" + +#: app/examples/Networking/SerialPort/.src/FMain.form:39 +msgid "TextArea2" +msgstr "Текстовая_область_2" + +#: app/examples/Networking/SerialPort/.src/FMain.form:53 +msgid "Send" +msgstr "Послать" + +#: app/examples/Networking/SerialPort/.src/FMain.form:68 +msgid "Parity" +msgstr "Паритет" + +#: app/examples/Networking/SerialPort/.src/FMain.form:72 +msgid "Stopbits" +msgstr "Стоп-биты" + +#: app/examples/Networking/SerialPort/.src/FMain.form:76 +msgid "Bits" +msgstr "Бит" + +#: app/examples/Networking/SerialPort/.src/FMain.form:80 +msgid "Baud" +msgstr "Бод" + +#: app/examples/Networking/SerialPort/.src/FMain.form:84 +msgid "Device" +msgstr "Устройство" + +#: app/examples/Networking/SerialPort/.src/FMain.form:94 +msgid "50" +msgstr "50" + +#: app/examples/Networking/SerialPort/.src/FMain.form:94 +msgid "75" +msgstr "75" + +#: app/examples/Networking/SerialPort/.src/FMain.form:94 +msgid "100" +msgstr "100" + +#: app/examples/Networking/SerialPort/.src/FMain.form:94 +msgid "150" +msgstr "150" + +#: app/examples/Networking/SerialPort/.src/FMain.form:94 +msgid "200" +msgstr "200" + +#: app/examples/Networking/SerialPort/.src/FMain.form:94 +msgid "300" +msgstr "300" + +#: app/examples/Networking/SerialPort/.src/FMain.form:94 +msgid "600" +msgstr "600" + +#: app/examples/Networking/SerialPort/.src/FMain.form:94 +msgid "1200" +msgstr "1200" + +#: app/examples/Networking/SerialPort/.src/FMain.form:94 +msgid "2400" +msgstr "2400" + +#: app/examples/Networking/SerialPort/.src/FMain.form:94 +msgid "4800" +msgstr "4800" + +#: app/examples/Networking/SerialPort/.src/FMain.form:94 app/examples/Networking/SerialPort/.src/FMain.form:95 +msgid "9600" +msgstr "9600" + +#: app/examples/Networking/SerialPort/.src/FMain.form:94 +msgid "19200" +msgstr "19200" + +#: app/examples/Networking/SerialPort/.src/FMain.form:94 +msgid "38400" +msgstr "38400" + +#: app/examples/Networking/SerialPort/.src/FMain.form:101 +msgid "5" +msgstr "5" + +#: app/examples/Networking/SerialPort/.src/FMain.form:101 +msgid "6" +msgstr "6" + +#: app/examples/Networking/SerialPort/.src/FMain.form:101 +msgid "7" +msgstr "7" + +#: app/examples/Networking/SerialPort/.src/FMain.form:101 app/examples/Networking/SerialPort/.src/FMain.form:102 +msgid "8" +msgstr "8" + +#: app/examples/Networking/SerialPort/.src/FMain.form:108 app/examples/Networking/SerialPort/.src/FMain.form:109 +msgid "1" +msgstr "1" + +#: app/examples/Networking/SerialPort/.src/FMain.form:108 +msgid "2" +msgstr "2" + +#: app/examples/Networking/SerialPort/.src/FMain.form:115 +msgid "None" +msgstr "Нет" + +#: app/examples/Networking/SerialPort/.src/FMain.form:115 +msgid "Even" +msgstr "Чётный" + +#: app/examples/Networking/SerialPort/.src/FMain.form:115 +msgid "Odd" +msgstr "Нечётный" + +#: app/examples/Networking/SerialPort/.src/FMain.form:116 +msgid "N" +msgstr "N" + +#: app/examples/Networking/SerialPort/.src/FMain.form:122 +msgid "NONE" +msgstr "НЕТ" + +#: app/examples/Networking/SerialPort/.src/FMain.form:122 +msgid "CRTSCTS" +msgstr "CRTSCTS" + +#: app/examples/Networking/SerialPort/.src/FMain.form:122 +msgid "XON/XOFF" +msgstr "XON/XOFF" + +#: app/examples/Networking/SerialPort/.src/FMain.form:122 +msgid "CRTSCTS + XON/XOFF" +msgstr "CRTSCTS + XON/XOFF" + +#: app/examples/Networking/SerialPort/.src/FMain.form:127 +msgid "DCD" +msgstr "DCD" + +#: app/examples/Networking/SerialPort/.src/FMain.form:132 +msgid "DSR" +msgstr "DSR" + +#: app/examples/Networking/SerialPort/.src/FMain.form:137 +msgid "CTS" +msgstr "CTS" + +#: app/examples/Networking/SerialPort/.src/FMain.form:142 +msgid "DTR" +msgstr "DTR" + +#: app/examples/Networking/SerialPort/.src/FMain.form:147 +msgid "RTS" +msgstr "RTS" + +#: app/examples/Networking/SerialPort/.src/FMain.form:157 +msgid "RNG" +msgstr "RNG" + +#: app/examples/Networking/SerialPort/.src/FMain.form:161 +msgid "Handshake" +msgstr "Рукопожатие" + +#: app/examples/Networking/SerialPort/.src/FMain.form:174 +msgid "Message" +msgstr "Сообщение" + diff --git a/app/examples/Networking/SerialPort/.project b/app/examples/Networking/SerialPort/.project new file mode 100644 index 00000000..bb5450c6 --- /dev/null +++ b/app/examples/Networking/SerialPort/.project @@ -0,0 +1,17 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.5.90 +Title=Serial Port example +Description="RS232 Serial port example" +Startup=FMain +Icon=serialport.png +Version=3.6.2 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.form +Component=gb.settings +Component=gb.net +Authors="Claus Dietrich\nBenoît Minisini" +TabSize=2 +Packager=1 +Translate=1 diff --git a/app/examples/Networking/SerialPort/.src/FAbout.class b/app/examples/Networking/SerialPort/.src/FAbout.class new file mode 100644 index 00000000..3e40f230 --- /dev/null +++ b/app/examples/Networking/SerialPort/.src/FAbout.class @@ -0,0 +1,16 @@ +' Gambas class file + + +Public Sub Form_Open() + + FAbout.text = ("About") + Label1.width = FAbout.width + Label1.text = Application.name & " " & ("Version") & " " & Application.Version + +End + +Public Sub Button1_Click() + + Me.close + +End diff --git a/app/examples/Networking/SerialPort/.src/FAbout.form b/app/examples/Networking/SerialPort/.src/FAbout.form new file mode 100644 index 00000000..b4656819 --- /dev/null +++ b/app/examples/Networking/SerialPort/.src/FAbout.form @@ -0,0 +1,32 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,43,30) + Resizable = False + Utility = True + SkipTaskbar = True + { Label1 Label + MoveScaled(1,3,42,4) + Text = ("Label1") + Alignment = Align.Center + } + { Label2 Label + MoveScaled(1,8,42,4) + Text = ("Provided under GPL License") + Alignment = Align.Center + } + { Label3 Label + MoveScaled(1,12,42,4) + Text = ("by") + Alignment = Align.Center + } + { Label4 Label + MoveScaled(1,16,42,4) + Text = ("Claus Dietrich") + Alignment = Align.Center + } + { Button1 Button + MoveScaled(26,24,15,4) + Text = ("Close") + } +} diff --git a/app/examples/Networking/SerialPort/.src/FMain.class b/app/examples/Networking/SerialPort/.src/FMain.class new file mode 100644 index 00000000..ab3de3b9 --- /dev/null +++ b/app/examples/Networking/SerialPort/.src/FMain.class @@ -0,0 +1,246 @@ +' Gambas class file + +Public Sub _new() + +End + +Public Sub Form_Open() + 'This is a tested and fully operational example for how to use GAMBAS for serial (RS232) communications. + 'The sourcecode is provided under GNU Public Licence. So feel free to use it for non-commercial or commercial purposes. + 'The code is based on the example provided with Gambas 3.5.1 and the application published in the Gambas book available at: + 'http://www.gambas-buch.de/dw/doku.php?id=k19: k19.1: k19.1.2: start + + 'Features: + ' -Enumerates serial ports including USB types + ' -Change of comms parameters + ' -Storage and retrieval of comms parameters + ' -Display of incoming data + ' -Transmission of data + ' -Display of handshake line status + ' -Restoring of last window position as program start + ' + 'Have Fun + 'Claus Dietrich/ 23.12.2013 + ' + '############################################################################################################## + 'Example of RS232 properties for reference only: + 'SerialPort1.PortName = "/dev/ttyS0" + 'SerialPort1.Speed = "19200" + 'SerialPort1.Parity = 0 + 'SerialPort1.DataBits = "8" + 'SerialPort1.StopBits = "1" + 'SerialPort1.FlowControl = 0 + '############################################################################################################## + + 'Enumerate all available RS232 Interfaces and Display them in the Combo + Module_RS232.EnumerateSerialInterfaces + + 'Set the Default-Path for Storage of Program Parameters + Module_Config.InitDefaultPath + + 'Load Port-Configuration from the config file and set the combos accordingly + Module_Config.RestoreSerialSettings(FMain.SerialPort1, 0) + + 'Open the serial port + Try SerialPort1.Open() + If Error Then + FMain.Message(("Unable to open") & " " & SerialPort1.PortName & ": " & Error.Text) + FMain.ButtonChange.text = ("Apply") + FMain.ComboPortDeviceName.text = "" + Else + FMain.ComboPortDeviceName.enabled = False + FMain.ComboSpeed.enabled = False + Fmain.ComboDataBits.enabled = False + Fmain.ComboStopBits.enabled = False + FMain.ComboParity.enabled = False + FMain.ComboHandShake.enabled = False + 'Display Status of RS232 handshake lines + Module_RS232.CheckRS232Status() + Endif + + 'Empty the TextArea controls + TextArea1.text = "" + TextArea2.text = "" + TextArea2.SetFocus + + 'Restore the last position of the main window + Module_Config.RestoreFormPosition(FMain) + +End + +Public Sub SerialPort1_Read() + 'This routine reads the RS232 port + + Dim Rx As String + 'Sleep 0.025 + + 'Read it + Read #SerialPort1, Rx, Lof(SerialPort1) + 'Display it + Module_RS232.DisplaySerialInput(Rx) + +End + +Public Sub Form_Close() + 'This routine is the central exit point of the appplication + + Dim cwin As Window + + 'Close all open windows + For Each cwin In Windows + cwin.Close + Next + + 'Store last position of the FMain Window + Module_Config.StoreFormPosition(FMain) + + 'If open, close the serial port + If SerialPort1.Status = Net.active Then + SerialPort1.Close() + End If + +End + +Public Sub TextArea1_KeyPress() + +End + +Public Sub btnSend_Click() + + If SerialPort1.status = Net.Inactive Then + FMain.Message(("Please open serial port first.")) + Else + 'FMain.CheckRTS.Value = True + 'Wait 0.01 + Write #SerialPort1, TextArea2.text, Len(TextArea2.text) + 'Wait 0.5 + 'FMain.CheckRTS.Value = False + Endif + +End + +Public Sub ButtonChange_Click() + + With Fmain + + If FMain.ButtonChange.text = ("Change") Then + .ButtonChange.text = ("Apply") + .SerialPort1.close + .ComboPortDeviceName.enabled = True + .ComboSpeed.enabled = True + .ComboDataBits.enabled = True + .ComboStopBits.enabled = True + .ComboParity.enabled = True + .ComboHandShake.enabled = True + Else + 'Transfer combo settings to port + .SerialPort1.PortName = FMain.ComboPortDeviceName.text + .SerialPort1.Speed = FMain.ComboSpeed.text + .SerialPort1.Parity = FMain.ComboParity.index + .SerialPort1.DataBits = Fmain.ComboDataBits.Text + .SerialPort1.StopBits = Fmain.ComboStopBits.Text + .SerialPort1.FlowControl = Fmain.ComboHandShake.Index + 'Open serial port with new settings + Try FMain.SerialPort1.Open() + If Error Then + FMain.Message(("Error while opening") & " " & FMain.SerialPort1.PortName & ": " & Error.Text) + Else + 'Store new Settings + Module_Config.StoreSerialSettings(FMain.SerialPort1, 0) + FMain.ButtonChange.text = ("Change") + 'Disabling all RS232 Combos + .ComboPortDeviceName.enabled = False + .ComboSpeed.enabled = False + .ComboDataBits.enabled = False + .ComboStopBits.enabled = False + .ComboParity.enabled = False + .ComboHandShake.enabled = False + 'Update Status of RS232 Handshake Lines + Module_RS232.CheckRS232Status() + Endif + Endif + + End With + +End + +Public Sub CheckDTR_Click() + 'For setting DTR manually + + If FMain.SerialPort1.status = Net.Active + FMain.SerialPort1.DTR = CheckDTR.Value + Module_RS232.CheckRS232Status + Endif + +End + +Public Sub CheckRTS_Click() + 'For setting RTS manually + + If FMain.SerialPort1.Status = Net.Active + FMain.SerialPort1.RTS = CheckRTS.Value + Module_RS232.CheckRS232Status + Endif + +End + +'The following routines cause following warnings: +'"gbx3: warning: 3 allocation(s) non freed." +'I couldn't find any solution yet. +Public Sub SerialPort1_RTSChange(CurrentValue As Boolean) + + FMain.CheckRTS.Value = CurrentValue + +End + +Public Sub SerialPort1_DSRChange(CurrentValue As Boolean) + + FMain.CheckDSR.Value = CurrentValue + +End + +Public Sub SerialPort1_CTSChange(CurrentValue As Boolean) + + FMain.ChecCTS.Value = CurrentValue + +End + +Public Sub SerialPort1_DCDChange(CurrentValue As Boolean) + + FMain.CheckDCD.Value = CurrentValue + +End + +Public Sub SerialPort1_DTRChange(CurrentValue As Boolean) + + FMain.CheckDTR.Value = CurrentValue + +End + +Public Sub SerialPort1_RNGChange(CurrentValue As Boolean) + + FMain.CheckRNG.Value = CurrentValue + +End + +Public Sub MenuExit_Click() + 'Close application by closing FMain. The close-event of Fmain is doing the rest. + + Me.close + +End + +Public Sub MenuAbout_Click() + + 'Center FAbout over FMain + FAbout.Move(FMain.left + FMain.width / 2 - FAbout.width / 2, Fmain.Top + FMain.height / 2 - FAbout.height / 2) + 'Show it + FAbout.show + +End + +Public Sub Message(sMsg As String) + + txtMessage.Text = sMsg + +End diff --git a/app/examples/Networking/SerialPort/.src/FMain.form b/app/examples/Networking/SerialPort/.src/FMain.form new file mode 100644 index 00000000..49b1b5a3 --- /dev/null +++ b/app/examples/Networking/SerialPort/.src/FMain.form @@ -0,0 +1,189 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,102,80) + Text = ("RS232 Serial port example") + Icon = Picture["serialport.png"] + Arrangement = Arrange.Vertical + { MenuFile Menu + Text = ("File") + { MenuExit Menu + Text = ("Exit") + } + } + { MenuHelp Menu + Text = ("Help") + { MenuAbout Menu + Text = ("About") + } + } + { !TextArea1 TextArea + MoveScaled(1,1,98,30) + #Public = True + Font = Font["Monospace,+2"] + Expand = True + Text = ("TextArea1") + Alignment = Align.Left + ReadOnly = True + Border = False + } + { Separator1 Separator + MoveScaled(42,32,16,0) + } + { panSend HBox + MoveScaled(2,34,98,12) + { TextArea2 TextArea + MoveScaled(0,0,77,12) + Font = Font["Monospace,+2"] + Expand = True + Text = ("TextArea2") + Alignment = Align.Left + Border = False + } + { Panel1 VBox + MoveScaled(78,1,17,10) + Background = Color.TextBackground + Margin = True + { Panel4 Panel + MoveScaled(5,1,6,2) + Expand = True + } + { btnSend Button + MoveScaled(0,4,15,5) + Text = ("Send") + Picture = Picture["icon:/medium/redo"] + } + } + } + { Separator2 Separator + MoveScaled(16,48,16,0) + } + { Panel3 HBox + MoveScaled(3,50,98,26) + Spacing = True + { Panel2 Panel + MoveScaled(0,0,56,26) + { Label5 Label + MoveScaled(1,17,20,4) + Text = ("Parity") + } + { Label4 Label + MoveScaled(1,13,20,4) + Text = ("Stopbits") + } + { Label3 Label + MoveScaled(1,9,20,4) + Text = ("Bits") + } + { Label2 Label + MoveScaled(1,5,20,4) + Text = ("Baud") + } + { Label1 Label + MoveScaled(1,1,20,4) + Text = ("Device") + } + { !ComboPortDeviceName ComboBox + MoveScaled(21,1,17,4) + #Public = True + } + { !ComboSpeed ComboBox + MoveScaled(21,5,17,4) + #Public = True + ReadOnly = True + List = [("50"), ("75"), ("100"), ("150"), ("200"), ("300"), ("600"), ("1200"), ("2400"), ("4800"), ("9600"), ("19200"), ("38400")] + Text = ("9600") + } + { !ComboDataBits ComboBox + MoveScaled(21,9,17,4) + #Public = True + ReadOnly = True + List = [("5"), ("6"), ("7"), ("8")] + Text = ("8") + } + { !ComboStopBits ComboBox + MoveScaled(21,13,17,4) + #Public = True + ReadOnly = True + List = [("1"), ("2")] + Text = ("1") + } + { !ComboParity ComboBox + MoveScaled(21,17,17,4) + #Public = True + ReadOnly = True + List = [("None"), ("Even"), ("Odd")] + Text = ("N") + } + { !ComboHandShake ComboBox + MoveScaled(21,21,17,4) + #Public = True + ReadOnly = True + List = [("NONE"), ("CRTSCTS"), ("XON/XOFF"), ("CRTSCTS + XON/XOFF")] + } + { !CheckDCD CheckBox + MoveScaled(40,14,9,3) + #Public = True + Text = ("DCD") + } + { !CheckDSR CheckBox + MoveScaled(40,11,9,3) + #Public = True + Text = ("DSR") + } + { !CheckCTS CheckBox + MoveScaled(40,8,9,3) + #Public = True + Text = ("CTS") + } + { !CheckDTR CheckBox + MoveScaled(40,5,9,3) + #Public = True + Text = ("DTR") + } + { !CheckRTS CheckBox + MoveScaled(40,2,9,3) + #Public = True + Text = ("RTS") + } + { !ButtonChange Button + MoveScaled(40,21,15,4) + #Public = True + Text = ("Change") + } + { !CheckRNG CheckBox + MoveScaled(40,17,9,3) + #Public = True + Text = ("RNG") + } + { Label6 Label + MoveScaled(1,21,20,4) + Text = ("Handshake") + } + } + { Separator3 Separator + MoveScaled(58,7,0,14) + } + { Panel5 VBox + MoveScaled(60,1,36,24) + Expand = True + Margin = True + { Label7 Label + MoveScaled(2,1,16,3) + Font = Font["Bold"] + Text = ("Message") + } + { txtMessage TextLabel + MoveScaled(0,10,35,13) + Expand = True + } + } + } + { !SerialPort1 #SerialPort + #MoveScaled(75,4) + #Public = True + Parity = SerialPort.Even + Speed = 75 + DataBits = SerialPort.Bits5 + } +} diff --git a/app/examples/Networking/SerialPort/.src/Module_Config.module b/app/examples/Networking/SerialPort/.src/Module_Config.module new file mode 100644 index 00000000..fa21f22d --- /dev/null +++ b/app/examples/Networking/SerialPort/.src/Module_Config.module @@ -0,0 +1,92 @@ +' Gambas module file + +Public AppSettings As Settings + +Public Sub InitDefaultPath() + + AppSettings = New Settings + +End + +Public Sub StoreSerialSettings(Port As SerialPort, PIndex As Integer) + 'Parameters are for example stored in home/.config/Gambas3/RS232.conf + + Dim Headline As String + + HeadLine = "SerialPort " & Format(PIndex, "0") + + 'Store all parameters + With Port + AppSettings[HeadLine & "/Portname"] = .PortName + AppSettings[HeadLine & "/Speed"] = .Speed + AppSettings[HeadLine & "/DataBits"] = .DataBits + AppSettings[HeadLine & "/Stopbits"] = .StopBits + AppSettings[HeadLine & "/Parity"] = .Parity + AppSettings[HeadLine & "/FlowControl"] = .FlowControl + End With + +End + +Public Sub RestoreSerialSettings(Port As SerialPort, Pindex As Integer) + 'Parameters are for example stored in home/.config/Gambas3/RS232.conf + + Dim i As Integer + Dim HeadLine As String + + 'Set parameter headline + HeadLine = "SerialPort " & Format(PIndex, "0") + + 'Retrieve all RS232 settings from config file + With Port + .PortName = AppSettings[HeadLine & "/Portname", "/dev/ttyS0"] + .Speed = AppSettings[HeadLine & "/Speed", "9600"] + .DataBits = AppSettings[HeadLine & "/DataBits", "8"] + .StopBits = AppSettings[HeadLine & "/StopBits", "1"] + .Parity = AppSettings[HeadLine & "/Parity", 0] + .FlowControl = AppSettings[HeadLine & "/FlowControl", 0] + End With + + 'Set the RS232 combos accordingly: + + 'Finding Serial Device in Combo for Displaying + i = FMain.ComboPortDeviceName.Find(FMain.SerialPort1.PortName) + FMain.ComboPortDeviceName.index = i + + 'Finding Speed in Combo for Displaying + i = FMain.ComboSpeed.find(FMain.SerialPort1.Speed) + FMain.ComboSpeed.Index = i + + 'Finding DataBits in Combo for Displaying + i = Fmain.ComboDataBits.find(FMain.Serialport1.DataBits) + Fmain.ComboDataBits.Index = i + + 'Finding StopBits in Combo for Displaying + i = Fmain.ComboStopBits.find(FMain.Serialport1.StopBits) + Fmain.ComboStopBits.Index = i + + 'Displaying Parity in Combo (0=NON, 1=EVEN, 2=ODD) + FMain.ComboParity.index = FMain.SerialPort1.Parity + + 'Displaying Flow-Control in Combo + FMain.ComboHandShake.index = FMain.SerialPort1.FlowControl + +End + +Public Sub StoreFormPosition(F As Form) + + With F + AppSettings[.name & "/left"] = .left + AppSettings[.name & "/top"] = .top + End With + +End + +Public Sub RestoreFormPosition(F As Form) + + With F + .left = AppSettings[.name & "/left", 0] + .top = AppSettings[.name & "/top", 0] + End With + +End + diff --git a/app/examples/Networking/SerialPort/.src/Module_RS232.module b/app/examples/Networking/SerialPort/.src/Module_RS232.module new file mode 100644 index 00000000..dcac6bda --- /dev/null +++ b/app/examples/Networking/SerialPort/.src/Module_RS232.module @@ -0,0 +1,93 @@ +' Gambas module file + +Public Sub EnumerateSerialInterfaces() + + Dim i As Integer + + With FMain + + 'Set operational parameters (used for testing only) + .SerialPort1.Speed = "19200" + .SerialPort1.Parity = 0 + .SerialPort1.DataBits = "8" + .SerialPort1.StopBits = "1" + .SerialPort1.FlowControl = 0 + + 'Clear Device Combo + FMain.ComboPortDeviceName.Clear() + + 'Standard USB Ports + For i = 0 To 8 + .SerialPort1.PortName = "/dev/ttyS" & Format(i, "0") + Try .SerialPort1.Open + If Not Error + .ComboPortDeviceName.Add(.SerialPort1.PortName) + .SerialPort1.close + Endif + Next + + 'USB based ports + For i = 0 To 8 + .SerialPort1.PortName = "/dev/ttyUSB" & Format(i, "0") + Try .SerialPort1.Open + If Not Error + .ComboPortDeviceName.Add(.SerialPort1.PortName) + .SerialPort1.close + Endif + Next + + End With + +End + +Public Sub DisplaySerialInput(RX As String) + 'This Routine displays serial data + + Dim R As String + Dim i As Integer + + With FMain + + 'Set cursor to the end of the text + .TextArea1.Pos = .TextArea1.Length + + 'CR is ommited because the TextArea control displays it as CR+LF + For i = 1 To Len(RX) + R = Mid$(RX, i, 1) + If R <> Chr$(13) Then + 'Amend character + .TextArea1.insert(R) + Endif + Next + + ' 'Use the following alternatively to the above. It displays ASCII-values in [] if it is a control character (ASCII-value < 32) + ' For i = 1 To Len(RX) + ' R = Mid$(RX, i, 1) + ' If Asc(R) > 31 Then + ' .TextArea1.insert(R) + ' Else + ' If R <> Chr$(13) 'Ommit CR because the TextArea control display it as CR+LF + ' .TextArea1.insert("[" & Format(Asc(R), "0") & "]" & R) + ' Else + ' .TextArea1.insert("[" & Format(Asc(R), "0") & "]") + ' Endif + ' Endif + ' Next + + End With + +End + +Public Sub CheckRS232Status() + 'This dipslays the status of the RS232 handshake lines + + With FMain.SerialPort1 + FMain.CheckDSR.Value = .DSR + FMain.CheckDTR.Value = .DTR + FMain.CheckCTS.Value = .CTS + FMain.CheckRTS.Value = .RTS + FMain.CheckDCD.Value = .DCD + FMain.CheckRNG.Value = .RNG + End With + +End diff --git a/app/examples/Networking/SerialPort/serialport.png b/app/examples/Networking/SerialPort/serialport.png new file mode 100644 index 0000000000000000000000000000000000000000..e1d380b9de706bf37bfce82f0019b9b266f556c9 GIT binary patch literal 2498 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 c8O-2+0W=z, 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: ServerSocket\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2011-03-20 22:37+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: .project:1 +msgid "Server socket example" +msgstr "Exemple de sòcol de servidor" + +#: FrmMain.class:200 +msgid "Server Socket Example" +msgstr "Exemple de servidor de sòcol" + +#: FrmMain.class:206 +msgid "Listen" +msgstr "Escolta" + +#: FrmMain.class:211 +msgid "32340" +msgstr "-" + +#: FrmMain.class:221 +msgid "Close" +msgstr "Tanca" + +#: FrmMain.class:226 +msgid "Port" +msgstr "-" + +#: FrmMain.class:231 +msgid "Pause" +msgstr "Pausa" + +#: FrmMain.class:236 +msgid "Max. number of clients" +msgstr "Nombre màxim de clients" + +#: FrmMain.class:243 +msgid "1" +msgstr "-" + +#: FrmMain.class:243 +msgid "10" +msgstr "-" + +#: FrmMain.class:243 +msgid "2" +msgstr "-" + +#: FrmMain.class:243 +msgid "3" +msgstr "-" + +#: FrmMain.class:243 +msgid "4" +msgstr "-" + +#: FrmMain.class:243 +msgid "5" +msgstr "-" + +#: FrmMain.class:243 +msgid "6" +msgstr "-" + +#: FrmMain.class:243 +msgid "7" +msgstr "-" + +#: FrmMain.class:243 +msgid "8" +msgstr "-" + +#: FrmMain.class:243 +msgid "9" +msgstr "-" + +#: FrmMain.class:243 +msgid "No limit" +msgstr "Sense límit" + +#: FrmMain.class:248 +msgid "Type" +msgstr "Tipus" + +#: FrmMain.class:254 +msgid "TCP" +msgstr "-" + +#: FrmMain.class:254 +msgid "UNIX" +msgstr "-" + +#: FrmMain.class:259 +msgid "Path" +msgstr "Camí" + diff --git a/app/examples/Networking/ServerSocket/.lang/cs.po b/app/examples/Networking/ServerSocket/.lang/cs.po new file mode 100644 index 00000000..3eb2bf05 --- /dev/null +++ b/app/examples/Networking/ServerSocket/.lang/cs.po @@ -0,0 +1,104 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Server socket example" +msgstr "Příklad servrového soketu" + +#: FrmMain.form:20 +msgid "Server Socket Example" +msgstr "Příkald Servrového soketu" + +#: FrmMain.form:26 +msgid "Listen" +msgstr "Naslouchat" + +#: FrmMain.form:31 +msgid "32340" +msgstr "-" + +#: FrmMain.form:41 +msgid "Close" +msgstr "Zavřír" + +#: FrmMain.form:46 +msgid "Port" +msgstr "-" + +#: FrmMain.form:51 +msgid "Pause" +msgstr "Pauza" + +#: FrmMain.form:56 +msgid "Max. number of clients" +msgstr "Max. počet klientů" + +#: FrmMain.form:63 +msgid "1" +msgstr "-" + +#: FrmMain.form:63 +msgid "10" +msgstr "-" + +#: FrmMain.form:63 +msgid "2" +msgstr "-" + +#: FrmMain.form:63 +msgid "3" +msgstr "-" + +#: FrmMain.form:63 +msgid "4" +msgstr "-" + +#: FrmMain.form:63 +msgid "5" +msgstr "-" + +#: FrmMain.form:63 +msgid "6" +msgstr "-" + +#: FrmMain.form:63 +msgid "7" +msgstr "-" + +#: FrmMain.form:63 +msgid "8" +msgstr "-" + +#: FrmMain.form:63 +msgid "9" +msgstr "-" + +#: FrmMain.form:63 +msgid "No limit" +msgstr "Bez limitu" + +#: FrmMain.form:68 +msgid "Type" +msgstr "Typ" + +#: FrmMain.form:74 +msgid "TCP" +msgstr "-" + +#: FrmMain.form:74 +msgid "UNIX" +msgstr "-" + +#: FrmMain.form:79 +msgid "Path" +msgstr "Cesta" diff --git a/app/examples/Networking/ServerSocket/.lang/es.po b/app/examples/Networking/ServerSocket/.lang/es.po new file mode 100644 index 00000000..9cf52137 --- /dev/null +++ b/app/examples/Networking/ServerSocket/.lang/es.po @@ -0,0 +1,99 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FrmMain.class:161 +msgid "Server Socket Example" +msgstr "Ejemplo de Servidor Socket" + +#: FrmMain.class:166 +msgid "Listen" +msgstr "Escuchar" + +#: FrmMain.class:171 +msgid "32340" +msgstr "32340" + +#: FrmMain.class:181 +msgid "Close" +msgstr "Cerrar" + +#: FrmMain.class:186 +msgid "Port :" +msgstr "Puerto :" + +#: FrmMain.class:191 +msgid "Wait" +msgstr "Esperar" + +#: FrmMain.class:196 +msgid "Maximum number of clients:" +msgstr "Número máximo de clientes:" + +#: FrmMain.class:202 +msgid "(no Limit)" +msgstr "(sin límite)" + +#: FrmMain.class:202 +msgid "1" +msgstr "1" + +#: FrmMain.class:202 +msgid "2" +msgstr "2" + +#: FrmMain.class:202 +msgid "3" +msgstr "3" + +#: FrmMain.class:202 +msgid "4" +msgstr "4" + +#: FrmMain.class:202 +msgid "5" +msgstr "5" + +#: FrmMain.class:202 +msgid "6" +msgstr "6" + +#: FrmMain.class:202 +msgid "7" +msgstr "7" + +#: FrmMain.class:202 +msgid "8" +msgstr "8" + +#: FrmMain.class:202 +msgid "9" +msgstr "9" + +#: FrmMain.class:202 +msgid "10" +msgstr "10" + +#: FrmMain.class:207 +msgid "Type :" +msgstr "Tipo :" + +#: FrmMain.class:214 +msgid "TCP" +msgstr "TCP" + +#: FrmMain.class:214 +msgid "UNIX" +msgstr "UNIX" + +#: FrmMain.class:219 +msgid "Path :" +msgstr "Ruta :" diff --git a/app/examples/Networking/ServerSocket/.lang/nl.po b/app/examples/Networking/ServerSocket/.lang/nl.po new file mode 100644 index 00000000..dbe1f7b7 --- /dev/null +++ b/app/examples/Networking/ServerSocket/.lang/nl.po @@ -0,0 +1,104 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2014-09-21 23:59+0100\n" +"Last-Translator: Willy Raets \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Server socket example" +msgstr "Server socket voorbeeld" + +#: FrmMain.form:20 +msgid "Server Socket Example" +msgstr "Server Socket voorbeeld" + +#: FrmMain.form:26 +msgid "Listen" +msgstr "Luister" + +#: FrmMain.form:31 +msgid "32340" +msgstr "-" + +#: FrmMain.form:41 +msgid "Close" +msgstr "Sluiten" + +#: FrmMain.form:46 +msgid "Port" +msgstr "Poort" + +#: FrmMain.form:51 +msgid "Pause" +msgstr "-" + +#: FrmMain.form:56 +msgid "Max. number of clients" +msgstr "Max. aantal cliënten" + +#: FrmMain.form:63 +msgid "No limit" +msgstr "Geen limiet" + +#: FrmMain.form:63 +msgid "1" +msgstr "-" + +#: FrmMain.form:63 +msgid "2" +msgstr "-" + +#: FrmMain.form:63 +msgid "3" +msgstr "-" + +#: FrmMain.form:63 +msgid "4" +msgstr "-" + +#: FrmMain.form:63 +msgid "5" +msgstr "-" + +#: FrmMain.form:63 +msgid "6" +msgstr "-" + +#: FrmMain.form:63 +msgid "7" +msgstr "-" + +#: FrmMain.form:63 +msgid "8" +msgstr "-" + +#: FrmMain.form:63 +msgid "9" +msgstr "-" + +#: FrmMain.form:63 +msgid "10" +msgstr "-" + +#: FrmMain.form:68 +msgid "Type" +msgstr "-" + +#: FrmMain.form:74 +msgid "TCP" +msgstr "-" + +#: FrmMain.form:74 +msgid "UNIX" +msgstr "-" + +#: FrmMain.form:79 +msgid "Path" +msgstr "Pad" + diff --git a/app/examples/Networking/ServerSocket/.lang/ru.po b/app/examples/Networking/ServerSocket/.lang/ru.po new file mode 100644 index 00000000..7aa6de13 --- /dev/null +++ b/app/examples/Networking/ServerSocket/.lang/ru.po @@ -0,0 +1,172 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Networking/ServerSocket/.project:22 +msgid "Server socket example" +msgstr "Пример сокета сервера" + +#: app/examples/Networking/ServerSocket/.project:23 +msgid "" +"Server socket example.\n" +"\n" +"This example shows how to implement a TCP server accepting and managing multiple connections in the same process. You can use the 'ClientSocket' example as a testing peer." +msgstr "" +"Пример сокета сервера\n" +"\n" +"В этом примере показано, как реализовать сервер TCP, принимающий и управляющий несколькими подключениями в одном процессе. Вы можете использовать пример «Сокет клиента» в качестве тестового партнёра." + +#: app/examples/Networking/ServerSocket/.src/FrmMain.class:34 +msgid "Unable to bind socket" +msgstr "Невозможно привязать сокет" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.class:47 +msgid "Connection request from :" +msgstr "Запрос на соединение от:" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.class:49 +msgid "Connection request accepted" +msgstr "Запрос на соединение принят" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.class:58 +msgid "Connection from" +msgstr "Соединение от" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.class:58 +msgid "accepted" +msgstr "принято" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.class:58 +msgid "local port" +msgstr "локальный порт" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.class:106 +msgid "Socket #" +msgstr "Сокет #" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.class:117 +msgid "-- Client working --\n" +msgstr "-- Клиент работает --\n" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.class:123 +msgid "Client #" +msgstr "Клиент #" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.class:123 +msgid "Closed" +msgstr "Закрыт" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.class:131 app/examples/Networking/ServerSocket/.src/FrmMain.form:53 +msgid "Path" +msgstr "Путь" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.class:157 app/examples/Networking/ServerSocket/.src/FrmMain.form:30 +msgid "Pause" +msgstr "Пауза" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.class:160 +msgid "Resume" +msgstr "Возобновить" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.form:5 +msgid "Server Socket Example" +msgstr "Пример сокета сервера" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.form:10 +msgid "Listen" +msgstr "Слушать" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.form:14 +msgid "32340" +msgstr "32340" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.form:22 +msgid "Close" +msgstr "Закрыть" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.form:26 +msgid "Port" +msgstr "Порт" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.form:34 +msgid "Max. number of clients" +msgstr "Макс. количество клиентов" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.form:40 +msgid "No limit" +msgstr "Неограниченно" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.form:40 +msgid "1" +msgstr "1" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.form:40 +msgid "2" +msgstr "2" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.form:40 +msgid "3" +msgstr "3" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.form:40 +msgid "4" +msgstr "4" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.form:40 +msgid "5" +msgstr "5" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.form:40 +msgid "6" +msgstr "6" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.form:40 +msgid "7" +msgstr "7" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.form:40 +msgid "8" +msgstr "8" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.form:40 +msgid "9" +msgstr "9" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.form:40 +msgid "10" +msgstr "10" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.form:44 +msgid "Type" +msgstr "Тип" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.form:49 +msgid "TCP" +msgstr "TCP" + +#: app/examples/Networking/ServerSocket/.src/FrmMain.form:49 +msgid "UNIX" +msgstr "UNIX" + diff --git a/app/examples/Networking/ServerSocket/.project b/app/examples/Networking/ServerSocket/.project new file mode 100644 index 00000000..a456eefd --- /dev/null +++ b/app/examples/Networking/ServerSocket/.project @@ -0,0 +1,21 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.6.90 +Title=Server socket example +Startup=FrmMain +Icon=serversocket.png +Version=1.0.0 +Component=gb.image +Component=gb.gui +Component=gb.net +Component=gb.net.curl +Description="Server socket example.\n\nThis example shows how to implement a TCP server accepting and managing multiple connections in the same process. You can use the 'ClientSocket' example as a testing peer." +Environment="GB_GUI=gb.qt5" +TabSize=2 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Example +Address=benoit@desnouettes +License=General Public Licence +Packager=1 +Tags=Network diff --git a/app/examples/Networking/ServerSocket/.src/FrmMain.class b/app/examples/Networking/ServerSocket/.src/FrmMain.class new file mode 100644 index 00000000..285366b7 --- /dev/null +++ b/app/examples/Networking/ServerSocket/.src/FrmMain.class @@ -0,0 +1,176 @@ +' Gambas class file + +Private Waiting As Boolean +Private $iId As Integer + +Public Sub btnListen_Click() + + If cmbType.Index = 0 Then + 'TCP + MyServerSocket.Type = Net.Internet + ' The port to listen to + MyServerSocket.Port = Val(txtPort.Text) + ' we start listening + MyServerSocket.Listen(cmbMaxClient.Index) + Else + ' UNIX + MyServerSocket.Type = Net.Local ' You could also use Net.Unix + MyServerSocket.Path = txtPath.Text + MyServerSocket.Listen(cmbMaxClient.Index) + End If + If MyServerSocket.Status = Net.Active Then + ' listening + btnListen.Enabled = False + btnClose.Enabled = True + cmbMaxClient.Enabled = False + cmbType.Enabled = False + txtPath.Enabled = False + End If + +End + +Public Sub MyServerSocket_Error() + + Message.Error(("Unable to bind socket")) + +End + +Public Sub MyServerSocket_Connection(sHost As String) + '******************************* + ' A client has arrived! + ' let's accept it + + Dim Obj As Socket + + If MyServerSocket.Status <= Net.Inactive Then Return + If cmbType.Index = 0 Then + txtLog.Text = txtLog.Text & ("Connection request from :") & " " & sHost & Chr(13) & Chr(10) + Else + txtLog.Text = txtLog.Text & ("Connection request accepted") & Chr(13) & Chr(10) + End If + + Obj = MyServerSocket.Accept() + Obj.Blocking = False + Inc $iId + Obj.Tag = [$iId, 0, ""] + + If Obj.Status = Net.Connected And cmbType.Index = 0 Then + txtLog.Text = txtLog.Text & ("Connection from") & " " & Obj.RemoteHost & ":" & Obj.RemotePort & " " & ("accepted") & " (" & ("local port") & " " & Obj.LocalPort & ")" & Chr(13) & Chr(10) + End If + +End + +Public Sub Socket_Write() + + Dim hSocket As Socket = Last + Dim iInd As Integer + + 'Debug hSocket;; hSocket.Tag + iInd = hSocket.Tag[1] + If iInd < 0 Then Return + + Do + Inc iInd + If iInd > 10 Then + hSocket.Tag[1] = -1 + Return + Endif + + 'Debug iInd + Try Print #hSocket, iInd & ":" & hSocket.Tag[2] & Space$(512) & "\n"; + If Error Then + Debug Error.Text + Break + Endif + Loop + + hSocket.Tag[1] = iInd + +Catch + +End + +Public Sub Socket_Read() + + Dim sBuf As String + Dim iInd As Integer + + '****************************** + ' When some data arrives to + ' our server, we respond with + ' an echo + '***************************** + + If Last.Status <> Net.Connected Then Return + Read #Last, sBuf, Lof(Last) + txtLog.Text &= ("Socket #") & Last.Tag[0] & " --> " & sBuf & "\n" + + Last.Tag[1] = 0 + Last.Tag[2] = sBuf + + Socket_Write + +End + +Public Sub Socket_Ready() + + txtLog.Text &= ("-- Client working --\n") + +End + +Public Sub Socket_Closed() + + txtLog.Text &= ("Client #") & Last.Tag[0] & " " & ("Closed") & "\n" + +End + +Public Sub Form_Open() + + txtPath.Text = Application.Path & "/" & "gambas" + txtPath.Enabled = False + TextLabel3.Text = ("Path") + +End + +Public Sub btnClose_Click() + + MyServerSocket.Close() + btnClose.Enabled = False + btnListen.Enabled = True + cmbMaxClient.Enabled = True + cmbType.Enabled = True + cmbType_Click() + +End + +Public Sub Form_Close() + + ' We have to be sure of closing the server before exiting + MyServerSocket.Close() + +End + +Public Sub btnPause_Click() + + If Waiting Then + MyServerSocket.Resume() + btnPause.Text = ("Pause") + Else + MyServerSocket.Pause() + btnPause.Text = ("Resume") + End If + Waiting = Not Waiting + +End + +Public Sub cmbType_Click() + + If cmbType.Index = 0 Then + txtPort.Enabled = True + txtPath.Enabled = False + Else + txtPort.Enabled = False + txtPath.Enabled = True + End If + +End diff --git a/app/examples/Networking/ServerSocket/.src/FrmMain.form b/app/examples/Networking/ServerSocket/.src/FrmMain.form new file mode 100644 index 00000000..c560ad75 --- /dev/null +++ b/app/examples/Networking/ServerSocket/.src/FrmMain.form @@ -0,0 +1,61 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(36,28,79,51) + Text = ("Server Socket Example") + Icon = Picture["serversocket.png"] + Resizable = False + { btnListen Button + MoveScaled(60,1,18,4) + Text = ("Listen") + } + { txtPort TextBox + MoveScaled(16,6,43,4) + Text = ("32340") + } + { txtLog TextArea + MoveScaled(1,22,77,28) + } + { btnClose Button + MoveScaled(60,6,18,4) + Enabled = False + Text = ("Close") + } + { TextLabel1 TextLabel + MoveScaled(1,6,14,4) + Text = ("Port") + } + { btnPause Button + MoveScaled(1,17,16,4) + Text = ("Pause") + } + { Label1 Label + MoveScaled(18,17,38,4) + Text = ("Max. number of clients") + Alignment = Align.Right + } + { cmbMaxClient ComboBox + MoveScaled(57,17,21,4) + ReadOnly = True + List = [("No limit"), ("1"), ("2"), ("3"), ("4"), ("5"), ("6"), ("7"), ("8"), ("9"), ("10")] + } + { TextLabel2 TextLabel + MoveScaled(1,1,14,4) + Text = ("Type") + } + { cmbType ComboBox + MoveScaled(16,1,43,4) + ReadOnly = True + List = [("TCP"), ("UNIX")] + } + { TextLabel3 TextLabel + MoveScaled(1,11,14,4) + Text = ("Path") + } + { txtPath TextBox + MoveScaled(16,11,62,4) + } + { MyServerSocket #ServerSocket + #MoveScaled(8,3) + } +} diff --git a/app/examples/Networking/ServerSocket/serversocket.png b/app/examples/Networking/ServerSocket/serversocket.png new file mode 100644 index 0000000000000000000000000000000000000000..9049f7acf57321531fc3f227f17e209bcabc3054 GIT binary patch literal 2122 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 literal 0 HcmV?d00001 diff --git a/app/examples/Networking/UDPServerClient/.lang/ca.po b/app/examples/Networking/UDPServerClient/.lang/ca.po new file mode 100644 index 00000000..9decadc0 --- /dev/null +++ b/app/examples/Networking/UDPServerClient/.lang/ca.po @@ -0,0 +1,104 @@ +# Catalan translation of UDPServerClient +# Copyright (C) 2000-2010 Benoît Minisini. +# This file is distributed under the same license as the UDPServerClient package. +# Jordi Sayol , 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: UDPServerClient\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2010-12-17 01:10+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FrmClient.form:54 +msgid "127.0.0.1" +msgstr "-" + +#: FrmClient.form:59 FrmServer.form:42 +msgid "32340" +msgstr "-" + +#: FrmClient.form:18 +msgid "Client" +msgstr "Client" + +#: FrmClient.form:30 +msgid "Client Side" +msgstr "Costat del client" + +#: FrmClient.class:60 FrmServer.class:73 +msgid "Data --> " +msgstr "Dades -->" + +#: FrmClient.class:50 FrmServer.class:59 +msgid "Error Receiving Data" +msgstr "Error rebent dades" + +#: FrmClient.class:48 FrmServer.class:57 +msgid "Error Sending Data" +msgstr "Error enviant dades" + +#: FrmClient.form:39 +msgid "Host IP" +msgstr "IP del servidor" + +#: FrmServer.form:19 +msgid "New UDP Client window" +msgstr "Nova finestra de client UDP" + +#: FrmClient.form:48 +msgid "Port" +msgstr "Port" + +#: FrmServer.form:30 +msgid "Port :" +msgstr "Port:" + +#: FrmClient.class:59 FrmServer.class:72 +msgid "Received data from : " +msgstr "Dades rebudes des de:" + +#: FrmClient.form:76 +msgid "Send Data" +msgstr "Envia dades" + +#: FrmClient.form:64 FrmServer.form:47 +msgid "Start !" +msgstr "Endavant!" + +#: FrmClient.class:15 FrmServer.class:24 +msgid "Stop" +msgstr "Atura" + +#: FrmServer.form:24 +msgid "Super String Reverse Server" +msgstr "Super servidor de cadenes inverses" + +#: FrmClient.class:46 FrmServer.class:55 +msgid "System does not allow to create a socket" +msgstr "El sistema no permet crear un sòcol" + +#: .project:1 +msgid "UDP sockets example" +msgstr "Exemple de sòcols UDP" + +#: FrmServer.form:14 +msgid "UDP Test" +msgstr "Prova l'UDP" + +#: FrmClient.class:44 FrmServer.class:53 +msgid "Unable to Bind to that port" +msgstr "No es pot vincular amb aquell port" + +#: FrmClient.form:91 +msgid "Write Here data to send then press \"Send Data\"" +msgstr "Escriviu aquí dades per enviar i després premeu \"Envia dades\"" + diff --git a/app/examples/Networking/UDPServerClient/.lang/cs.po b/app/examples/Networking/UDPServerClient/.lang/cs.po new file mode 100644 index 00000000..82d4237b --- /dev/null +++ b/app/examples/Networking/UDPServerClient/.lang/cs.po @@ -0,0 +1,96 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "UDP sockets example" +msgstr "Příklad UDP spojení" + +#: FrmClient.class:15 FrmServer.class:24 +msgid "Stop" +msgstr "-" + +#: FrmClient.class:44 FrmServer.class:53 +msgid "Unable to Bind to that port" +msgstr "Nelze se spojit s portem" + +#: FrmClient.class:46 FrmServer.class:55 +msgid "System does not allow to create a socket" +msgstr "Systém nemá přístup k vytváření soketu" + +#: FrmClient.class:48 FrmServer.class:57 +msgid "Error Sending Data" +msgstr "Chyba posílaných dat" + +#: FrmClient.class:50 FrmServer.class:59 +msgid "Error Receiving Data" +msgstr "Chyba příjmaných dat" + +#: FrmClient.class:59 FrmServer.class:72 +msgid "Received data from : " +msgstr "Příjmané data od :" + +#: FrmClient.class:60 FrmServer.class:73 +msgid "Data --> " +msgstr "-" + +#: FrmClient.form:18 +msgid "Client" +msgstr "Klient" + +#: FrmClient.form:30 +msgid "Client Side" +msgstr "Klientská strana" + +#: FrmClient.form:39 +msgid "Host IP" +msgstr "-" + +#: FrmClient.form:48 +msgid "Port" +msgstr "-" + +#: FrmClient.form:54 +msgid "127.0.0.1" +msgstr "-" + +#: FrmClient.form:59 FrmServer.form:42 +msgid "32340" +msgstr "-" + +#: FrmClient.form:64 FrmServer.form:47 +msgid "Start !" +msgstr "-" + +#: FrmClient.form:76 +msgid "Send Data" +msgstr "Poslat data" + +#: FrmClient.form:91 +msgid "Write Here data to send then press \"Send Data\"" +msgstr "Zapište zde data na poslání a zmáčkněte \"Poslat data\"" + +#: FrmServer.form:14 +msgid "UDP Test" +msgstr "-" + +#: FrmServer.form:19 +msgid "New UDP Client window" +msgstr "Nové okno UDP klienta" + +#: FrmServer.form:24 +msgid "Super String Reverse Server" +msgstr "Super server na obrácení řetězeců" + +#: FrmServer.form:30 +msgid "Port :" +msgstr "-" diff --git a/app/examples/Networking/UDPServerClient/.lang/es.po b/app/examples/Networking/UDPServerClient/.lang/es.po new file mode 100644 index 00000000..71c1f02b --- /dev/null +++ b/app/examples/Networking/UDPServerClient/.lang/es.po @@ -0,0 +1,101 @@ +# #-#-#-#-# FrmClient.pot (PACKAGE VERSION) #-#-#-#-# +# /home/daniel/GAMBAS/gambas-0.93pre1/examples/Networking/UDPServerClient/FrmClient.class +# Generated by Gambas compiler +# FIRST AUTHOR , YEAR. +# +# #-#-#-#-# FrmServer.pot (PACKAGE VERSION) #-#-#-#-# +# /home/daniel/GAMBAS/gambas-0.93pre1/examples/Networking/UDPServerClient/FrmServer.class +# Generated by Gambas compiler +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FrmClient.class:14 FrmServer.class:22 +msgid "Stop" +msgstr "Parar" + +#: FrmClient.class:20 FrmServer.class:27 +msgid "Start !" +msgstr "¡ Iniciar !" + +#: FrmClient.class:42 FrmServer.class:51 +msgid "Unable to Bind to that port" +msgstr "Imposible abrir el puerto" + +#: FrmClient.class:44 FrmServer.class:53 +msgid "System does not allow to create a socket" +msgstr "El sistema no permite crear un nuevo socket" + +#: FrmClient.class:46 FrmServer.class:55 +msgid "Error Sending Data" +msgstr "Error enviando datos" + +#: FrmClient.class:48 FrmServer.class:57 +msgid "Error Receiving Data" +msgstr "Error recibiendo datos" + +#: FrmClient.class:57 FrmServer.class:70 +msgid "Received data from : " +msgstr "Datos recibidos desde:" + +#: FrmClient.class:58 FrmServer.class:71 +msgid "Data --> " +msgstr "Datos -->" + +#: FrmClient.class:93 +msgid "Client" +msgstr "Cliente" + +#: FrmClient.class:105 +msgid "Client Side" +msgstr "Lado cliente" + +#: FrmClient.class:114 +msgid "Host IP" +msgstr "IP del Host" + +#: FrmClient.class:123 +msgid "Port" +msgstr "Puerto" + +#: FrmClient.class:129 +msgid "127.0.0.1" +msgstr "127.0.0.1" + +#: FrmClient.class:134 FrmServer.class:129 +msgid "32340" +msgstr "32340" + +#: FrmClient.class:151 +msgid "Send Data" +msgstr "Enviar datos" + +#: FrmClient.class:165 +msgid "Write Here data to send then press \"Send Data\"" +msgstr "Escriba aquí los datos a enviar y pulse \"Enviar datos\"" + +#: FrmServer.class:101 +msgid "UDP Test" +msgstr "Test UDP" + +#: FrmServer.class:106 +msgid "New UDP Client window" +msgstr "Nueva ventana de cliente UDP" + +#: FrmServer.class:111 +msgid "Super String Reverse Server" +msgstr "Superservidor de Inversión de Cadenas" + +#: FrmServer.class:117 +msgid "Port :" +msgstr "Puerto:" diff --git a/app/examples/Networking/UDPServerClient/.lang/nl.po b/app/examples/Networking/UDPServerClient/.lang/nl.po new file mode 100644 index 00000000..34cb63bc --- /dev/null +++ b/app/examples/Networking/UDPServerClient/.lang/nl.po @@ -0,0 +1,96 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2014-09-21 23:57+0100\n" +"Last-Translator: Willy Raets \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "UDP sockets example" +msgstr "UDP sockets voorbeeld" + +#: FrmClient.form:18 +msgid "Client" +msgstr "Cliënt" + +#: FrmClient.form:30 +msgid "Client Side" +msgstr "Cliënt zijde" + +#: FrmClient.form:39 +msgid "Host IP" +msgstr "Gast IP" + +#: FrmClient.form:48 +msgid "Port" +msgstr "Poort" + +#: FrmClient.form:54 +msgid "127.0.0.1" +msgstr "-" + +#: FrmClient.form:59 FrmServer.form:42 +msgid "32340" +msgstr "-" + +#: FrmClient.form:64 FrmServer.form:47 +msgid "Start !" +msgstr "-" + +#: FrmClient.form:76 +msgid "Send Data" +msgstr "Verzend Data" + +#: FrmClient.form:91 +msgid "Write Here data to send then press \"Send Data\"" +msgstr "Schrijf hier de data om te verzenden \"Verzend Data\"" + +#: FrmClient.class:15 FrmServer.class:24 +msgid "Stop" +msgstr "-" + +#: FrmClient.class:44 FrmServer.class:53 +msgid "Unable to Bind to that port" +msgstr "Kan niet binden met die poort" + +#: FrmClient.class:46 FrmServer.class:55 +msgid "System does not allow to create a socket" +msgstr "Systeem staat niet toe een socket te creëren" + +#: FrmClient.class:48 FrmServer.class:57 +msgid "Error Sending Data" +msgstr "Fout bij data verzending" + +#: FrmClient.class:50 FrmServer.class:59 +msgid "Error Receiving Data" +msgstr "Fout bij data ontvangst" + +#: FrmClient.class:59 FrmServer.class:72 +msgid "Received data from : " +msgstr "Data ontvangen van:" + +#: FrmClient.class:60 FrmServer.class:73 +msgid "Data --> " +msgstr "-" + +#: FrmServer.form:14 +msgid "UDP Test" +msgstr "-" + +#: FrmServer.form:19 +msgid "New UDP Client window" +msgstr "Nieuw UDP cliënt venster" + +#: FrmServer.form:24 +msgid "Super String Reverse Server" +msgstr "-" + +#: FrmServer.form:30 +msgid "Port :" +msgstr "Poort:" + diff --git a/app/examples/Networking/UDPServerClient/.lang/ru.po b/app/examples/Networking/UDPServerClient/.lang/ru.po new file mode 100644 index 00000000..e59d53f4 --- /dev/null +++ b/app/examples/Networking/UDPServerClient/.lang/ru.po @@ -0,0 +1,110 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Networking/UDPServerClient/.project:18 +msgid "UDP sockets example" +msgstr "Пример сокетов UDP" + +#: app/examples/Networking/UDPServerClient/.src/FrmClient.class:15 app/examples/Networking/UDPServerClient/.src/FrmServer.class:24 +msgid "Stop" +msgstr "Стоп" + +#: app/examples/Networking/UDPServerClient/.src/FrmClient.class:21 app/examples/Networking/UDPServerClient/.src/FrmClient.class:39 app/examples/Networking/UDPServerClient/.src/FrmClient.form:44 app/examples/Networking/UDPServerClient/.src/FrmServer.class:29 app/examples/Networking/UDPServerClient/.src/FrmServer.class:49 app/examples/Networking/UDPServerClient/.src/FrmServer.form:32 +msgid "Start !" +msgstr "Начать!" + +#: app/examples/Networking/UDPServerClient/.src/FrmClient.class:44 app/examples/Networking/UDPServerClient/.src/FrmServer.class:53 +msgid "Unable to Bind to that port" +msgstr "Невозможно привязать к этому порту" + +#: app/examples/Networking/UDPServerClient/.src/FrmClient.class:46 app/examples/Networking/UDPServerClient/.src/FrmServer.class:55 +msgid "System does not allow to create a socket" +msgstr "Система не позволяет создать сокет" + +#: app/examples/Networking/UDPServerClient/.src/FrmClient.class:48 app/examples/Networking/UDPServerClient/.src/FrmServer.class:57 +msgid "Error Sending Data" +msgstr "Ошибка при отправке данных" + +#: app/examples/Networking/UDPServerClient/.src/FrmClient.class:50 app/examples/Networking/UDPServerClient/.src/FrmServer.class:59 +msgid "Error Receiving Data" +msgstr "Ошибка при получении данных" + +#: app/examples/Networking/UDPServerClient/.src/FrmClient.class:59 app/examples/Networking/UDPServerClient/.src/FrmServer.class:72 +msgid "Received data from : " +msgstr "Полученные данные из: " + +#: app/examples/Networking/UDPServerClient/.src/FrmClient.class:60 app/examples/Networking/UDPServerClient/.src/FrmServer.class:73 +msgid "Data --> " +msgstr "Данные --> " + +#: app/examples/Networking/UDPServerClient/.src/FrmClient.form:5 +msgid "Client" +msgstr "Клиент" + +#: app/examples/Networking/UDPServerClient/.src/FrmClient.form:15 +msgid "Client Side" +msgstr "Сторона клиента" + +#: app/examples/Networking/UDPServerClient/.src/FrmClient.form:23 +msgid "Host IP" +msgstr "IP хоста" + +#: app/examples/Networking/UDPServerClient/.src/FrmClient.form:31 +msgid "Port" +msgstr "Порт" + +#: app/examples/Networking/UDPServerClient/.src/FrmClient.form:36 +msgid "127.0.0.1" +msgstr "127.0.0.1" + +#: app/examples/Networking/UDPServerClient/.src/FrmClient.form:40 app/examples/Networking/UDPServerClient/.src/FrmServer.form:28 +msgid "32340" +msgstr "32340" + +#: app/examples/Networking/UDPServerClient/.src/FrmClient.form:53 +msgid "Send Data" +msgstr "Отправить данные" + +#: app/examples/Networking/UDPServerClient/.src/FrmClient.form:65 +msgid "Write Here data to send then press \"Send Data\"" +msgstr "Напишите здесь данные для отправки, затем нажмите «Отправить данные»" + +#: app/examples/Networking/UDPServerClient/.src/FrmServer.form:5 +msgid "UDP Test" +msgstr "Тест UDP" + +#: app/examples/Networking/UDPServerClient/.src/FrmServer.form:9 +msgid "New UDP Client window" +msgstr "Новое окно UDP-клиента" + +#: app/examples/Networking/UDPServerClient/.src/FrmServer.form:13 +msgid "Super String Reverse Server" +msgstr "Суперстроковый обрат. сервер" + +#: app/examples/Networking/UDPServerClient/.src/FrmServer.form:18 +msgid "Port :" +msgstr "Порт:" + diff --git a/app/examples/Networking/UDPServerClient/.project b/app/examples/Networking/UDPServerClient/.project new file mode 100644 index 00000000..24f98966 --- /dev/null +++ b/app/examples/Networking/UDPServerClient/.project @@ -0,0 +1,17 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.0.0 +Title=UDP sockets example +Startup=FrmServer +Icon=udpsocket.png +Version=3.6.2 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.net +TabSize=2 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Princeton +Address=benoit@desnouettes +License=General Public Licence diff --git a/app/examples/Networking/UDPServerClient/.src/FrmClient.class b/app/examples/Networking/UDPServerClient/.src/FrmClient.class new file mode 100644 index 00000000..dd1ba40e --- /dev/null +++ b/app/examples/Networking/UDPServerClient/.src/FrmClient.class @@ -0,0 +1,73 @@ +' Gambas class file +Public UDPClient As UdpSocket +Public Sub Form_Open() + UDPClient = New UdpSocket As "UDPClient" +End +'/////////////////////////////////////////////////// +' Client stuff +'/////////////////////////////////////////////////// +Public Sub Button2_Click() + + If UDPClient.Status <= Net.Inactive Then + 'UDPClient.Path = "/tmp/gambas-udp-client" + UDPClient.Bind + If UDPClient.Status = Net.Active Then + Button2.Text = ("Stop") + TxtData.Enabled = True + Button3.Enabled = True + End If + Else + Close #UDPClient + Button2.Text = ("Start !") + TxtData.Enabled = False + Button3.Enabled = False + End If + + +End + +Public Sub Button3_Click() + + UDPCLient.TargetPort = TxtPort.Text + UDPCLient.TargetHost = TxtIP.Text + 'UDPClient.TargetPath = "/tmp/gambas-udp-socket" + Write #UDPCLient, TxtData.Text, Len(TxtData.Text) +End + +Public Sub UDPClient_Error() + + Button2.Text = ("Start !") + TxtData.Enabled = False + Button3.Enabled = False + Select Case UDPClient.Status + Case Net.CannotBindSocket + Message.Error(("Unable to Bind to that port")) + Case Net.CannotCreateSocket + Message.Error(("System does not allow to create a socket")) + Case Net.CannotRead + Message.Error(("Error Sending Data")) + Case Net.CannotWrite + Message.Error(("Error Receiving Data")) + End Select + +End + +Public Sub UDPClient_Read() + + Dim sCad As String + Read #UDPClient, sCad, Lof(UDPClient) + TxtRecClient.Text = TxtRecClient.Text & ("Received data from : ") & UDPClient.SourceHost & ":" & UdpClient.SourcePort & Chr(13) & Chr(10) + TxtRecClient.Text = TxtRecClient.Text & ("Data --> ") & sCad & Chr(13) & Chr(10) + +End + + +Public Sub Form_Close() + + If UDPClient.Status > 0 Then Close #UDPClient + + +End + + + diff --git a/app/examples/Networking/UDPServerClient/.src/FrmClient.form b/app/examples/Networking/UDPServerClient/.src/FrmClient.form new file mode 100644 index 00000000..657d7201 --- /dev/null +++ b/app/examples/Networking/UDPServerClient/.src/FrmClient.form @@ -0,0 +1,68 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(10.1429,48.5714,93,43) + Text = ("Client") + Resizable = False + { Panel2 Panel + MoveScaled(0,0,93,43) + Background = &H4F87E7& + { Label3 Label + MoveScaled(0,1,29,4) + Font = Font["Bold"] + Background = &H4F87E7& + Foreground = &HFFFF7F& + Text = ("Client Side") + Alignment = Align.Center + } + { Label4 Label + MoveScaled(1,5,12,4) + Font = Font["Bold"] + Background = &H4F87E7& + Foreground = &HFFFF7F& + Text = ("Host IP") + Alignment = Align.Center + } + { Label5 Label + MoveScaled(1,9,12,4) + Font = Font["Bold"] + Background = &H4F87E7& + Foreground = &HFFFF7F& + Text = ("Port") + Alignment = Align.Center + } + { TxtIP TextBox + MoveScaled(14,5,14,4) + Text = ("127.0.0.1") + } + { TxtPort TextBox + MoveScaled(14,10,8,4) + Text = ("32340") + } + { Button2 Button + MoveScaled(35,5,11,4) + Text = ("Start !") + } + { TxtData TextBox + MoveScaled(2,19,60,4) + Enabled = False + } + { Button3 Button + MoveScaled(63,19,29,4) + Enabled = False + Text = ("Send Data") + Default = True + } + { TxtRecClient TextArea + MoveScaled(2,24,90,17) + ReadOnly = True + } + { Label1 Label + MoveScaled(2,15,90,3) + Font = Font["Bold"] + Background = &H4F87E7& + Foreground = &HFFFF00& + Text = ("Write Here data to send then press \"Send Data\"") + } + } +} diff --git a/app/examples/Networking/UDPServerClient/.src/FrmServer.class b/app/examples/Networking/UDPServerClient/.src/FrmServer.class new file mode 100644 index 00000000..06a96c0e --- /dev/null +++ b/app/examples/Networking/UDPServerClient/.src/FrmServer.class @@ -0,0 +1,86 @@ +' Gambas class file + +'PRIVATE UDPServer AS UdpSocket +Public Sub Button1_Click() + + Dim MyFrm As FrmClient + MyFrm = New FrmClient + MyFrm.Visible = True + + + +End + +'////////////////////////////////////////////////// +' Server Stuff +'////////////////////////////////////////////////// +Public Sub Button2_Click() + + If UDPServer.Status <= Net.Inactive Then + UDPServer.Port = CInt(TextBox1.Text) + 'UDPServer.Path = "/tmp/gambas-udp-server" + UDPServer.Bind + If UDPServer.Status = Net.Active Then + Button2.Text = ("Stop") + TextBox1.Enabled = False + End If + Else + Close #UDPServer + Button2.Text = ("Start !") + TextBox1.Enabled = True + End If + +End + +'PUBLIC SUB Form_Open() +' +' UDPServer = NEW UdpSocket AS "UDPServer" +' +'END + +Public Sub Form_Close() + + If UDPServer.Status > 0 Then Close #UDPServer + +End + +Public Sub UDPServer_Error() + + Button2.Text = ("Start !") + TextBox1.Enabled = True + Select Case UDPServer.Status + Case Net.CannotBindSocket + Message.Error(("Unable to Bind to that port")) + Case Net.CannotCreateSocket + Message.Error(("System does not allow to create a socket")) + Case Net.CannotRead + Message.Error(("Error Sending Data")) + Case Net.CannotWrite + Message.Error(("Error Receiving Data")) + End Select + +End + +Public Sub UDPServer_Read() + + Dim sCadRet As String + Dim sCad As String + Dim MyLoop As Integer + + sCadRet = "" + Read #UDPServer, sCad, Lof(UDPserver) + TextArea1.Text = TextArea1.Text & ("Received data from : ") & UDPServer.SourceHost & ":" & UDPServer.SourcePort & Chr(13) & Chr(10) + TextArea1.Text = TextArea1.Text & ("Data --> ") & sCad & Chr(13) & Chr(10) + If Len(sCad) > 0 Then + For myloop = String.Len(sCad) To 1 Step -1 + sCadRet = sCadRet & String.Mid(sCad, myloop, 1) + Next + UDPServer.TargetHost = UDPServer.SourceHost + UDPServer.TargetPort = UDPServer.SourcePort + 'UDPServer.TargetPath = UDPServer.SourcePath + Write #UDPServer, sCadRet, Len(sCadRet) + End If + +End + + diff --git a/app/examples/Networking/UDPServerClient/.src/FrmServer.form b/app/examples/Networking/UDPServerClient/.src/FrmServer.form new file mode 100644 index 00000000..3c4a97dc --- /dev/null +++ b/app/examples/Networking/UDPServerClient/.src/FrmServer.form @@ -0,0 +1,38 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(9,10.5,37,41) + Text = ("UDP Test") + Resizable = False + { Button1 Button + MoveScaled(4,1,30,4) + Text = ("New UDP Client window") + } + { Label1 Label + MoveScaled(2,7,33,4) + Text = ("Super String Reverse Server") + Alignment = Align.Center + } + { Label2 Label + MoveScaled(1,12,10,4) + Text = ("Port :") + Alignment = Align.Center + } + { TextArea1 TextArea + MoveScaled(1,17,35,23) + Text = ("") + ReadOnly = True + } + { TextBox1 TextBox + MoveScaled(12,12,10,4) + Text = ("32340") + } + { Button2 Button + MoveScaled(23,12,13,4) + Text = ("Start !") + } + { UDPServer #UdpSocket + #X = 132 + #Y = 174 + } +} diff --git a/app/examples/Networking/UDPServerClient/udpsocket.png b/app/examples/Networking/UDPServerClient/udpsocket.png new file mode 100644 index 0000000000000000000000000000000000000000..d53f902f8dab20080e181ae74c0bb13501ba6203 GIT binary patch literal 2161 zcmV-%2#)uOP)}EH0W7bP50d0vU8YQ4D7^EVhl+ubt2(=ViCAE}7 zg|ww!h?G(i+mcvpB-NOt2Gk}}@Eea@UYr+=)qBD6F^UU>QV z{`h!*JkRreoCDWTM~@!u86O`%G&wnW?D+BHv1>W|-%9@c<`4+o5b%QvP=Hzv3J-vN z|F8ASeQ{WH?8{_f4owKQ@eK!QcjD|o{aMo%=+N|}}%@00UOe7M) zY&I**%*>>wr>CDV4C90A2GHSh4Rqaq{|~*#ejDb&jo|ZuEK{^KAsyYJ^>5#;<@0%_ zE?j6_dhflTXW*6n`}f<24av?hX1MYWbpNX`$|6yQY z;Crg7x|f%iE4f^5t|E04xwmJ6hTq21&xaAr@pev(n1CX+9v)9GI~1>k{gT0XCmFMt#Q6Ewd>zxhv+6KVQIgZ_k$ zs`+sQiBzK#?V)>-TrTnI^t3rKF>xrfwDhCL9(!!LDFC-9Ch+?p9D?{}NM1y^#ZRZp zqBD>MSpreV7DST8AoAc2WKWQ*$t3AFUeBjqKk?%C$3AFkIDqI@Sc%4h3DA%NL?50;=YIdO%#^QVZ6o$z%p%x-;NKx`U7)m^Q$N8s;o!O7QQXe(SU zLB#?|21x-)X4!OOS`O)%t7N9e=+c*I83?KIP|MvNEkRGS0J5#A4OW+7brmE5u6zvL zF?fF-w)H@p3uKwTV3|wFF$6QmXtYQq7{T4Jh1Cz2dhND=##*k>6o4tqSxUwA;hF-o zDbQ5t-T?2UVRH?Jy6A3`2nP*BQ9@B#5Cj2g7DCX6xMuL@7QfgYj|E&Fy;qUtyWAc< zp}W*}pG)&QRnso78Af3(H)E_BCyK?=`**GyMF82b8y|-(a~rbsspm3e7S@4!<8W>c z77Tp{AzQ?mHLzrPY9*I<58r;vL#pitW7YYq0fTLS^Xtc!(AEnlgc znR2NzRky6aRZEprW_s4>>5R0>mX#1<0SM?g4U2l+#V-hRBCmSIhm~8Lcc3Zhg?DEZ-Lj&gTEE>1ntN+6sx3*8kL@%L^^v&E?%Ow@)j-?Xe@!>N6qgyOWEwZO#uuK4?o`9 z+xu`h9G1)F^3wUY-~NsI+gH9}+#cI#4@ZR+J%$tCP9pIoT&hBLE{|x{z^;SWhI)-c zEOxn`&7Ny21HoXhI}{4JOw%k+PEJ03F_U>_E|Y&^@pN)><#H8yU?=h6EriY0}qTs)0Wtbt`gp#&c-QRyqqO`bdVyZfLnG#kP%WI_xC0$-2E(J29 zi{0JbL667dT)cSkFEims%lM5O`V*WnE3AA%s44&=d{1LNPruNy$6Qu%8pleyb8&HVWI n_>cGO*)t390N8->zs~*(t`eRES13jV00000NkvXXu0mjfthg;C literal 0 HcmV?d00001 diff --git a/app/examples/Networking/WebBrowser/.directory b/app/examples/Networking/WebBrowser/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Networking/WebBrowser/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Networking/WebBrowser/.icon.png b/app/examples/Networking/WebBrowser/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..891cc0287affd5cb5a64dc2bb2120470c7e9f51e GIT binary patch literal 3585 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, 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: WebBrowser\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2011-03-20 23:31+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FBrowser.form:100 +msgid "0" +msgstr "-" + +#: FBrowser.form:95 +msgid "-1" +msgstr "-" + +#: FBrowser.form:105 +msgid "+1" +msgstr "-" + +#: FBrowser.form:90 +msgid "-2" +msgstr "-" + +#: FBrowser.form:110 +msgid "+2" +msgstr "-" + +#: FBrowser.form:115 +msgid "+3" +msgstr "-" + +#: FBrowser.form:120 +msgid "+4" +msgstr "-" + +#: FBrowser.form:262 FEditable.form:18 +msgid "Bold" +msgstr "Negreta" + +#: FAuth.form:78 FOption.form:68 +msgid "Cancel" +msgstr "Canceŀla" + +#: FBrowser.form:439 +msgid "Case sensitive" +msgstr "Sensible a caixa" + +#: FBrowser.form:306 +msgid "Centered" +msgstr "Centrat" + +#: FBrowser.form:218 +msgid "Copy" +msgstr "Copia" + +#: FBrowser.form:226 +msgid "Cut" +msgstr "Retalla" + +#: FDownloadList.form:9 +msgid "Download manager" +msgstr "Gestor de baixades" + +#: FBrowser.form:384 +msgid "Font family" +msgstr "Família de la font" + +#: FBrowser.form:394 +msgid "Font size" +msgstr "Mida de la font" + +#: FBrowser.form:74 +msgid "Gambas WebKit" +msgstr "-" + +#: FBrowser.form:446 +msgid "Highlight" +msgstr "Ressaltat" + +#: FOption.form:33 +msgid "Host" +msgstr "Amfitrió" + +#: FOption.form:81 +msgid "HTTP proxy" +msgstr "Servidor intermediari HTTP" + +#: FBrowser.form:334 +msgid "Indent" +msgstr "Sagnat" + +#: FBrowser.form:270 +msgid "Italic" +msgstr "Cursiva" + +#: FBrowser.form:322 +msgid "Justified" +msgstr "Justificat" + +#: FBrowser.form:298 +msgid "Left aligned" +msgstr "Alineat a l'esquerra" + +#: .project:1 +msgid "Light browser based on WebKit component" +msgstr "Navegador lleuger basat en el component WebKit" + +#: FOption.form:81 +msgid "No proxy" +msgstr "Sense servidor intermediari" + +#: FAuth.form:72 FOption.form:62 +msgid "OK" +msgstr "D'acord" + +#: FBrowser.form:354 +msgid "Ordered list" +msgstr "Llista ordenada" + +#: FAuth.form:50 FOption.form:48 +msgid "Password" +msgstr "Contrasenya" + +#: FBrowser.form:234 +msgid "Paste" +msgstr "Enganxa" + +#: FAuth.form:17 +msgid "Please authenticate" +msgstr "Si us plau, autentiqueu" + +#: FOption.form:38 +msgid "Port" +msgstr "-" + +#: FOption.form:21 +msgid "Proxy configuration" +msgstr "Configuració del servidor intermediari" + +#: FBrowser.form:250 +msgid "Redo" +msgstr "Refés" + +#: FBrowser.form:159 +msgid "Refresh" +msgstr "Refresca" + +#: FBrowser.form:314 +msgid "Right aligned" +msgstr "Alineat a la dreta" + +#: FOption.form:81 +msgid "SOCKS5 proxy" +msgstr "Servidor intermediari SOCKS5" + +#: FDownload.form:18 +msgid "Starting download..." +msgstr "Iniciant la descàrrega..." + +#: FBrowser.form:286 +msgid "Strikethrough" +msgstr "Ratllat" + +#: FBrowser.form:378 +msgid "Text background" +msgstr "Fons del text" + +#: FBrowser.form:372 +msgid "Text color" +msgstr "Color del text" + +#: FBrowser.form:165 +msgid "Toggle edit mode" +msgstr "Commuta el mode d'edició" + +#: FOption.form:28 +msgid "Type" +msgstr "Tipus" + +#: FBrowser.form:278 +msgid "Underline" +msgstr "Subratllat" + +#: FBrowser.form:242 +msgid "Undo" +msgstr "Desfés" + +#: FBrowser.form:342 +msgid "Unindent" +msgstr "Desfés sagnat" + +#: FBrowser.form:362 +msgid "Unordered list" +msgstr "Llista desordenada" + +#: FAuth.form:39 FOption.form:43 +msgid "User" +msgstr "Usuari" + diff --git a/app/examples/Networking/WebBrowser/.lang/cs.po b/app/examples/Networking/WebBrowser/.lang/cs.po new file mode 100644 index 00000000..d5ee66a8 --- /dev/null +++ b/app/examples/Networking/WebBrowser/.lang/cs.po @@ -0,0 +1,204 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Light browser based on WebKit component" +msgstr "Lehký prohlížeč založený na komponentě WebKit" + +#: FAuth.form:17 +msgid "Please authenticate" +msgstr "Prosím autorizujte se" + +#: FAuth.form:39 FOption.form:43 +msgid "User" +msgstr "Uživatel" + +#: FAuth.form:50 FOption.form:48 +msgid "Password" +msgstr "Heslo" + +#: FAuth.form:72 FOption.form:62 +msgid "OK" +msgstr "-" + +#: FAuth.form:78 FOption.form:68 +msgid "Cancel" +msgstr "Zrušit" + +#: FBrowser.form:74 +msgid "Gambas WebKit" +msgstr "-" + +#: FBrowser.form:90 +msgid "-2" +msgstr "-" + +#: FBrowser.form:95 +msgid "-1" +msgstr "-" + +#: FBrowser.form:100 +msgid "0" +msgstr "-" + +#: FBrowser.form:105 +msgid "+1" +msgstr "-" + +#: FBrowser.form:110 +msgid "+2" +msgstr "-" + +#: FBrowser.form:115 +msgid "+3" +msgstr "-" + +#: FBrowser.form:120 +msgid "+4" +msgstr "-" + +#: FBrowser.form:144 +msgid "Refresh" +msgstr "Obnovit" + +#: FBrowser.form:165 +msgid "Toggle edit mode" +msgstr "Přepnout režim úprav" + +#: FBrowser.form:218 +msgid "Copy" +msgstr "Kopírovat" + +#: FBrowser.form:226 +msgid "Cut" +msgstr "Výjmout" + +#: FBrowser.form:234 +msgid "Paste" +msgstr "Vložit" + +#: FBrowser.form:242 +msgid "Undo" +msgstr "Dopředu" + +#: FBrowser.form:250 +msgid "Redo" +msgstr "Zpět" + +#: FBrowser.form:262 FEditable.form:18 +msgid "Bold" +msgstr "Tučné" + +#: FBrowser.form:270 +msgid "Italic" +msgstr "Kurzíva" + +#: FBrowser.form:278 +msgid "Underline" +msgstr "Podtržené" + +#: FBrowser.form:286 +msgid "Strikethrough" +msgstr "Přeškrtnutí" + +#: FBrowser.form:298 +msgid "Left aligned" +msgstr "Zarovnat vlevo" + +#: FBrowser.form:306 +msgid "Centered" +msgstr "Vycentrovat" + +#: FBrowser.form:314 +msgid "Right aligned" +msgstr "Zarovant vpravo" + +#: FBrowser.form:322 +msgid "Justified" +msgstr "Zarovnáná do bloku" + +#: FBrowser.form:334 +msgid "Indent" +msgstr "Odrážka" + +#: FBrowser.form:342 +msgid "Unindent" +msgstr "Neodrážkovat" + +#: FBrowser.form:354 +msgid "Ordered list" +msgstr "Číslovaný seznam" + +#: FBrowser.form:362 +msgid "Unordered list" +msgstr "Nečíslovaný seznam" + +#: FBrowser.form:372 +msgid "Text color" +msgstr "Barva textu" + +#: FBrowser.form:378 +msgid "Text background" +msgstr "Pozadí textu" + +#: FBrowser.form:384 +msgid "Font family" +msgstr "Rodina fontů" + +#: FBrowser.form:394 +msgid "Font size" +msgstr "Velikost fontu" + +#: FBrowser.form:439 +msgid "Case sensitive" +msgstr "Rozlišovat velikost" + +#: FBrowser.form:446 +msgid "Highlight" +msgstr "Zvýraznění" + +#: FDownload.form:18 +msgid "Starting download..." +msgstr "Zahájení stahování..." + +#: FDownloadList.form:9 +msgid "Download manager" +msgstr "Manažer stahování" + +#: FOption.form:21 +msgid "Proxy configuration" +msgstr "Konfigurace proxy" + +#: FOption.form:28 +msgid "Type" +msgstr "Typ" + +#: FOption.form:33 +msgid "Host" +msgstr "-" + +#: FOption.form:38 +msgid "Port" +msgstr "-" + +#: FOption.form:81 +msgid "HTTP proxy" +msgstr "-" + +#: FOption.form:81 +msgid "No proxy" +msgstr "Žádné proxy" + +#: FOption.form:81 +msgid "SOCKS5 proxy" +msgstr "-" diff --git a/app/examples/Networking/WebBrowser/.lang/de.po b/app/examples/Networking/WebBrowser/.lang/de.po new file mode 100644 index 00000000..e3b6b13c --- /dev/null +++ b/app/examples/Networking/WebBrowser/.lang/de.po @@ -0,0 +1,205 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Light browser based on WebKit component" +msgstr "Ein schlanker Browser, basierend auf der WebKit-Komponente" + +#: FAuth.form:17 +msgid "Please authenticate" +msgstr "Anmeldung" + +#: FAuth.form:39 FOption.form:43 +msgid "User" +msgstr "Benutzer" + +#: FAuth.form:50 FOption.form:48 +msgid "Password" +msgstr "Passwort" + +#: FAuth.form:72 FOption.form:62 +msgid "OK" +msgstr "-" + +#: FAuth.form:78 FOption.form:68 +msgid "Cancel" +msgstr "Abbrechen" + +#: FBrowser.form:74 +msgid "Gambas WebKit" +msgstr "-" + +#: FBrowser.form:90 +msgid "-2" +msgstr "-" + +#: FBrowser.form:95 +msgid "-1" +msgstr "-" + +#: FBrowser.form:100 +msgid "0" +msgstr "-" + +#: FBrowser.form:105 +msgid "+1" +msgstr "-" + +#: FBrowser.form:110 +msgid "+2" +msgstr "-" + +#: FBrowser.form:115 +msgid "+3" +msgstr "-" + +#: FBrowser.form:120 +msgid "+4" +msgstr "-" + +#: FBrowser.form:144 +msgid "Refresh" +msgstr "Neu laden" + +#: FBrowser.form:165 +msgid "Toggle edit mode" +msgstr "Editiermodus umschalten" + +#: FBrowser.form:218 +msgid "Copy" +msgstr "Kopieren" + +#: FBrowser.form:226 +msgid "Cut" +msgstr "Ausschneiden" + +#: FBrowser.form:234 +msgid "Paste" +msgstr "Einfügen" + +#: FBrowser.form:242 +msgid "Undo" +msgstr "Rückgängig" + +#: FBrowser.form:250 +msgid "Redo" +msgstr "Wiederholen" + +#: FBrowser.form:262 FEditable.form:18 +msgid "Bold" +msgstr "Fett" + +#: FBrowser.form:270 +msgid "Italic" +msgstr "Kursiv" + +#: FBrowser.form:278 +msgid "Underline" +msgstr "Unterstrichen" + +#: FBrowser.form:286 +msgid "Strikethrough" +msgstr "Durchgestrichen" + +#: FBrowser.form:298 +msgid "Left aligned" +msgstr "Linksbündig" + +#: FBrowser.form:306 +msgid "Centered" +msgstr "Zentriert" + +#: FBrowser.form:314 +msgid "Right aligned" +msgstr "Rechtsbündig" + +#: FBrowser.form:322 +msgid "Justified" +msgstr "Blocksatz" + +#: FBrowser.form:334 +msgid "Indent" +msgstr "Einrücken" + +#: FBrowser.form:342 +msgid "Unindent" +msgstr "Ausrücken" + +#: FBrowser.form:354 +msgid "Ordered list" +msgstr "Geordnete Liste" + +#: FBrowser.form:362 +msgid "Unordered list" +msgstr "Ungeordnete Liste" + +#: FBrowser.form:372 +msgid "Text color" +msgstr "Textfarbe" + +#: FBrowser.form:378 +msgid "Text background" +msgstr "Texthintergrund" + +#: FBrowser.form:384 +msgid "Font family" +msgstr "Schriftarten" + +#: FBrowser.form:394 +msgid "Font size" +msgstr "Schriftgröße" + +#: FBrowser.form:439 +msgid "Case sensitive" +msgstr "Groß-/Kleinschreibung beachten" + +#: FBrowser.form:446 +msgid "Highlight" +msgstr "Hervorheben" + +#: FDownload.form:18 +msgid "Starting download..." +msgstr "Download wird gestartet..." + +#: FDownloadList.form:9 +msgid "Download manager" +msgstr "Download-Manager" + +#: FOption.form:21 +msgid "Proxy configuration" +msgstr "Proxy-Konfiguration" + +#: FOption.form:28 +msgid "Type" +msgstr "Typ" + +#: FOption.form:33 +msgid "Host" +msgstr "-" + +#: FOption.form:38 +msgid "Port" +msgstr "-" + +#: FOption.form:81 +msgid "HTTP proxy" +msgstr "HTTP-Proxy" + +#: FOption.form:81 +msgid "No proxy" +msgstr "Kein Proxy" + +#: FOption.form:81 +msgid "SOCKS5 proxy" +msgstr "SOCKS5-Proxy" + diff --git a/app/examples/Networking/WebBrowser/.lang/es.po b/app/examples/Networking/WebBrowser/.lang/es.po new file mode 100644 index 00000000..e077297d --- /dev/null +++ b/app/examples/Networking/WebBrowser/.lang/es.po @@ -0,0 +1,62 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Light browser based on WebKit component" +msgstr "" + +#: FAuth.class:59 +msgid "Please authenticate" +msgstr "" + +#: FAuth.class:81 +msgid "User" +msgstr "" + +#: FAuth.class:92 +msgid "Password" +msgstr "" + +#: FAuth.class:114 +msgid "OK" +msgstr "" + +#: FAuth.class:120 +msgid "Cancel" +msgstr "" + +#: FBrowser.class:473 +msgid "Gambas WebKit" +msgstr "" + +#: FBrowser.class:587 +msgid "Case sensitive" +msgstr "" + +#: FBrowser.class:594 +msgid "Highlight" +msgstr "" + +#: FDownload.class:72 +msgid "Starting download..." +msgstr "" + +#: FDownloadList.class:33 +msgid "Download manager" +msgstr "" + +#~ msgid "Browsing the web with Gambas!" +#~ msgstr "¡Buscando en la red con Gambas!" + +#~ msgid "Print selection" +#~ msgstr "Imprimir selección" diff --git a/app/examples/Networking/WebBrowser/.lang/nl.po b/app/examples/Networking/WebBrowser/.lang/nl.po new file mode 100644 index 00000000..b78bd485 --- /dev/null +++ b/app/examples/Networking/WebBrowser/.lang/nl.po @@ -0,0 +1,204 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2014-09-21 23:52+0100\n" +"Last-Translator: Willy Raets \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Light browser based on WebKit component" +msgstr "Lichte browser gebaseerd op het Webkit component" + +#: FAuth.form:17 +msgid "Please authenticate" +msgstr "Gelieve te authenticeren" + +#: FAuth.form:39 FOption.form:43 +msgid "User" +msgstr "Gebruiker" + +#: FAuth.form:50 FOption.form:48 +msgid "Password" +msgstr "Wachtwoord" + +#: FAuth.form:72 FOption.form:62 +msgid "OK" +msgstr "-" + +#: FAuth.form:78 FOption.form:68 +msgid "Cancel" +msgstr "Annuleer" + +#: FBrowser.form:74 +msgid "Gambas WebKit" +msgstr "-" + +#: FBrowser.form:90 +msgid "-2" +msgstr "-" + +#: FBrowser.form:95 +msgid "-1" +msgstr "-" + +#: FBrowser.form:100 +msgid "0" +msgstr "-" + +#: FBrowser.form:105 +msgid "+1" +msgstr "-" + +#: FBrowser.form:110 +msgid "+2" +msgstr "-" + +#: FBrowser.form:115 +msgid "+3" +msgstr "-" + +#: FBrowser.form:120 +msgid "+4" +msgstr "-" + +#: FBrowser.form:144 +msgid "Refresh" +msgstr "Ververs" + +#: FBrowser.form:165 +msgid "Toggle edit mode" +msgstr "Wissel bewerken modus" + +#: FBrowser.form:218 +msgid "Copy" +msgstr "Kopiëer" + +#: FBrowser.form:226 +msgid "Cut" +msgstr "Knippen" + +#: FBrowser.form:234 +msgid "Paste" +msgstr "Plakken" + +#: FBrowser.form:242 +msgid "Undo" +msgstr "Ongedaan maken" + +#: FBrowser.form:250 +msgid "Redo" +msgstr "Opnieuw" + +#: FBrowser.form:262 FEditable.form:18 +msgid "Bold" +msgstr "Vet" + +#: FBrowser.form:270 +msgid "Italic" +msgstr "Schuin" + +#: FBrowser.form:278 +msgid "Underline" +msgstr "Onderlijn" + +#: FBrowser.form:286 +msgid "Strikethrough" +msgstr "Doorstreept" + +#: FBrowser.form:298 +msgid "Left aligned" +msgstr "Links uitgelijnd" + +#: FBrowser.form:306 +msgid "Centered" +msgstr "Gecentreerd" + +#: FBrowser.form:314 +msgid "Right aligned" +msgstr "Rechts uitgelijnd" + +#: FBrowser.form:322 +msgid "Justified" +msgstr "Aangepast" + +#: FBrowser.form:334 +msgid "Indent" +msgstr "Inspringen" + +#: FBrowser.form:342 +msgid "Unindent" +msgstr "Ongedaan maken inspringen" + +#: FBrowser.form:354 +msgid "Ordered list" +msgstr "Geordende lijst" + +#: FBrowser.form:362 +msgid "Unordered list" +msgstr "Ongeordende lijst" + +#: FBrowser.form:372 +msgid "Text color" +msgstr "Tekst kleur" + +#: FBrowser.form:378 +msgid "Text background" +msgstr "Tekst achtergrond" + +#: FBrowser.form:384 +msgid "Font family" +msgstr "Lettertype familie" + +#: FBrowser.form:394 +msgid "Font size" +msgstr "Lettertype grootte" + +#: FBrowser.form:439 +msgid "Case sensitive" +msgstr "Case gevoelig" + +#: FBrowser.form:446 +msgid "Highlight" +msgstr "Uitlichten" + +#: FDownload.form:18 +msgid "Starting download..." +msgstr "Start download..." + +#: FDownloadList.form:9 +msgid "Download manager" +msgstr "Donload beheerder" + +#: FOption.form:21 +msgid "Proxy configuration" +msgstr "Proxy configuratie" + +#: FOption.form:28 +msgid "Type" +msgstr "Type" + +#: FOption.form:33 +msgid "Host" +msgstr "Gast" + +#: FOption.form:38 +msgid "Port" +msgstr "Poort" + +#: FOption.form:81 +msgid "No proxy" +msgstr "Geen proxy" + +#: FOption.form:81 +msgid "HTTP proxy" +msgstr "-" + +#: FOption.form:81 +msgid "SOCKS5 proxy" +msgstr "-" + diff --git a/app/examples/Networking/WebBrowser/.lang/ru.po b/app/examples/Networking/WebBrowser/.lang/ru.po new file mode 100644 index 00000000..d07bf8c6 --- /dev/null +++ b/app/examples/Networking/WebBrowser/.lang/ru.po @@ -0,0 +1,258 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Networking/WebBrowser/.project:27 +msgid "Light browser based on WebKit component" +msgstr "Лёгкий браузер на основе компонента WebKit" + +#: app/examples/Networking/WebBrowser/.project:28 +msgid "Light browser based on the QT4 or QT5 Webkit component" +msgstr "Лёгкий браузер на основе компонента QT4 или QT5 Webkit" + +#: app/examples/Networking/WebBrowser/.src/FAuth.form:5 +msgid "Please authenticate" +msgstr "Пожалуйста, аутентифицируйтесь" + +#: app/examples/Networking/WebBrowser/.src/FAuth.form:23 app/examples/Networking/WebBrowser/.src/FOption.form:23 +msgid "User" +msgstr "Пользователь" + +#: app/examples/Networking/WebBrowser/.src/FAuth.form:31 app/examples/Networking/WebBrowser/.src/FOption.form:27 +msgid "Password" +msgstr "Пароль" + +#: app/examples/Networking/WebBrowser/.src/FAuth.form:48 app/examples/Networking/WebBrowser/.src/FOption.form:38 +msgid "OK" +msgstr "ОК" + +#: app/examples/Networking/WebBrowser/.src/FAuth.form:53 app/examples/Networking/WebBrowser/.src/FOption.form:43 +msgid "Cancel" +msgstr "Отмена" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.class:72 +msgid "Loading..." +msgstr "Идёт загрузка..." + +#: app/examples/Networking/WebBrowser/.src/FBrowser.class:95 +msgid "Unable to load:" +msgstr "Невозможно загрузить:" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.class:96 +msgid "

    Unable to find the following URL:

    " +msgstr "

    Невозможно найти следующий URL:

    " + +#: app/examples/Networking/WebBrowser/.src/FBrowser.class:556 +msgid "Select a color" +msgstr "Выбрать цвет" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.class:577 +msgid "Select an image" +msgstr "Выбрать изображение" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:5 +msgid "Gambas WebKit" +msgstr "Веб-комплект Gambas WebKit" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:16 +msgid "-2" +msgstr "-2" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:20 +msgid "-1" +msgstr "-1" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:24 +msgid "0" +msgstr "0" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:28 app/examples/Networking/WebBrowser/.src/FBrowser.form:281 +msgid "+1" +msgstr "+1" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:32 +msgid "+2" +msgstr "+2" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:36 +msgid "+3" +msgstr "+3" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:40 +msgid "+4" +msgstr "+4" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:75 +msgid "Refresh" +msgstr "Освежить" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:89 +msgid "Toggle edit mode" +msgstr "Переключить в режим редактирования" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:129 +msgid "Copy" +msgstr "Копировать" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:136 +msgid "Cut" +msgstr "Вырезать" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:143 +msgid "Paste" +msgstr "Вставить" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:150 +msgid "Undo" +msgstr "Откатить" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:157 +msgid "Redo" +msgstr "Вернуть" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:167 app/examples/Networking/WebBrowser/.src/FEditable.form:11 +msgid "Bold" +msgstr "Полужирный" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:174 +msgid "Italic" +msgstr "Курсив" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:181 +msgid "Underline" +msgstr "Подчёркнутый" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:188 +msgid "Strikethrough" +msgstr "Зачёркнутый" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:198 +msgid "Left aligned" +msgstr "По левому краю" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:205 +msgid "Centered" +msgstr "По центру" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:212 +msgid "Right aligned" +msgstr "По правому краю" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:219 +msgid "Justified" +msgstr "По ширине" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:229 +msgid "Indent" +msgstr "Отступ" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:236 +msgid "Unindent" +msgstr "Отменить отступ" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:246 +msgid "Ordered list" +msgstr "Упорядоченный список" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:253 +msgid "Unordered list" +msgstr "Неупорядоченный список" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:261 +msgid "Text color" +msgstr "Цвет текста" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:266 +msgid "Text background" +msgstr "Фон текста" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:271 +msgid "Font family" +msgstr "Гарнитура шрифта" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:280 +msgid "Font size" +msgstr "Размер шрифта" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:322 +msgid "Case sensitive" +msgstr "С учётом регистра" + +#: app/examples/Networking/WebBrowser/.src/FBrowser.form:328 +msgid "Highlight" +msgstr "Подсветка" + +#: app/examples/Networking/WebBrowser/.src/FDownload.class:24 +msgid "Cancelled" +msgstr "Отменено" + +#: app/examples/Networking/WebBrowser/.src/FDownload.class:26 +msgid "Finished" +msgstr "Готово" + +#: app/examples/Networking/WebBrowser/.src/FDownload.class:28 +msgid "Error:" +msgstr "Ошибка:" + +#: app/examples/Networking/WebBrowser/.src/FDownload.class:30 +msgid "Downloading..." +msgstr "Скачивание..." + +#: app/examples/Networking/WebBrowser/.src/FDownload.form:16 +msgid "Starting download" +msgstr "Начинается загрузка" + +#: app/examples/Networking/WebBrowser/.src/FDownloadList.form:5 +msgid "Download manager" +msgstr "Менеджер загрузок" + +#: app/examples/Networking/WebBrowser/.src/FOption.form:5 +msgid "Proxy configuration" +msgstr "Конфигурация прокси" + +#: app/examples/Networking/WebBrowser/.src/FOption.form:11 +msgid "Type" +msgstr "Тип" + +#: app/examples/Networking/WebBrowser/.src/FOption.form:15 +msgid "Host" +msgstr "Хост" + +#: app/examples/Networking/WebBrowser/.src/FOption.form:19 +msgid "Port" +msgstr "Порт" + +#: app/examples/Networking/WebBrowser/.src/FOption.form:54 +msgid "No proxy" +msgstr "Без прокси" + +#: app/examples/Networking/WebBrowser/.src/FOption.form:54 +msgid "HTTP proxy" +msgstr "HTTP-прокси" + +#: app/examples/Networking/WebBrowser/.src/FOption.form:54 +msgid "SOCKS5 proxy" +msgstr "SOCKS5-прокси" + diff --git a/app/examples/Networking/WebBrowser/.project b/app/examples/Networking/WebBrowser/.project new file mode 100644 index 00000000..e1b37c20 --- /dev/null +++ b/app/examples/Networking/WebBrowser/.project @@ -0,0 +1,26 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.7.90 +Title=Light browser based on WebKit component +Startup=FBrowser +Icon=icon.png +Version=1.0.3 +Component=gb.image +Component=gb.gui.qt +Component=gb.form +Component=gb.desktop.x11 +Component=gb.desktop +Component=gb.form.dialog +Component=gb.gui.qt.webkit +Description="Light browser based on the QT4 or QT5 Webkit component" +TabSize=2 +Translate=1 +Language=fr +Maintainer=benoit +Vendor=Example +Address=benoit@desnouettes +License=General Public Licence +Packager=1 +Systems=mandriva +Menus=mandriva:"More Applications/Development/Other" +Groups=mandriva:"Development/Other" +Tags=Network,Web,WebBrowser,Example diff --git a/app/examples/Networking/WebBrowser/.src/FAuth.class b/app/examples/Networking/WebBrowser/.src/FAuth.class new file mode 100644 index 00000000..01e7ed69 --- /dev/null +++ b/app/examples/Networking/WebBrowser/.src/FAuth.class @@ -0,0 +1,38 @@ +' Gambas class file + +Static Public User As String +Static Public Password As String + +'Private $sUrl As String +'Private $sRealm As String + +Public Sub Run(sUrl As String, sRealm As String) As Boolean + + lblRealm.Text = sRealm + Me.Title = sUrl + '$sUrl = sUrl + '$sRealm = sRealm + Return Not Me.ShowModal() + +End + +Public Sub btnOK_Click() + + User = txtUser.Text + Password = txtPassword.Text + Me.Close(True) + +End + +Public Sub btnCancel_Click() + + Me.Close + +End + + +Public Sub Form_Open() + + txtUser.SetFocus + +End diff --git a/app/examples/Networking/WebBrowser/.src/FAuth.form b/app/examples/Networking/WebBrowser/.src/FAuth.form new file mode 100644 index 00000000..6b0c115b --- /dev/null +++ b/app/examples/Networking/WebBrowser/.src/FAuth.form @@ -0,0 +1,57 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,54,26) + Text = ("Please authenticate") + Icon = Picture["icon:/small/unlock"] + Resizable = False + Arrangement = Arrange.Vertical + AutoResize = True + Spacing = True + Margin = True + { HPanel1 HPanel + MoveScaled(1,1,52,18) + AutoResize = True + Spacing = True + { lblRealm TextLabel + MoveScaled(2,1,48,4) + Expand = True + AutoResize = True + } + { Label1 Label + MoveScaled(2,6,17,3) + Text = ("User") + } + { txtUser TextBox + MoveScaled(19,6,32,4) + Expand = True + } + { Label2 Label + MoveScaled(2,11,17,3) + Text = ("Password") + } + { txtPassword TextBox + MoveScaled(19,11,32,4) + Expand = True + Password = True + } + } + { HBox1 HBox + MoveScaled(1,20,52,4) + Spacing = True + { Panel1 Panel + MoveScaled(4,0,4,4) + Expand = True + } + { btnOK Button + MoveScaled(17,0,16,4) + Text = ("OK") + Default = True + } + { btnCancel Button + MoveScaled(34,0,16,4) + Text = ("Cancel") + Cancel = True + } + } +} diff --git a/app/examples/Networking/WebBrowser/.src/FBrowser.class b/app/examples/Networking/WebBrowser/.src/FBrowser.class new file mode 100644 index 00000000..e81b90f4 --- /dev/null +++ b/app/examples/Networking/WebBrowser/.src/FBrowser.class @@ -0,0 +1,584 @@ +' Gambas class file + +'Static Private $aZoom As Float[] + +'Private $sStatus As String +'Private $iZoom As Integer +'Private $iHidden As Integer +Private $sLastLink As String + +' Static Public Sub _init() +' +' Dim iInd As Integer +' +' $aZoom = New Float[17] +' +' For iInd = 0 To $aZoom.Max +' $aZoom[iInd] = 2 ^ (- (iInd - $aZoom.Max / 2) / 4) +' Next +' +' End + +Public Sub Form_Open() + + WebSettings.IconDatabase.Path = File.Dir(File.Dir(Temp$())) + WebSettings.Fonts.FixedFont = "Monospace" + WebSettings[WebSettings.PluginsEnabled] = True + WebSettings[WebSettings.JavascriptEnabled] = True + WebSettings[WebSettings.JavaEnabled] = True + WebSettings.Fonts.DefaultFontSize = 12 + WebSettings.Fonts.DefaultFixedFontSize = 12 + + CreateView() + btnZoomNormal_Click + txtURL.SetFocus + tabBrowser_Click + + txtURL.Text = "http://gambas.sourceforge.net" + txtURL_Activate + +End + +Private Sub GetView() As WebView + + Try Return tabBrowser[tabBrowser.Index].Children[0] + +End + +Private Sub IsLastCurrentView() As Boolean + + Dim hView As WebView = GetView() + Return hView = Last + +End + +Public Sub WebView_Link(Url As String) + + If Not IsLastCurrentView() Then Return + $sLastLink = Url + lblStatus.Text = Url + +End + +Public Sub WebView_Status() + + If Not IsLastCurrentView() Then Return + lblStatus.Text = GetView().Status + +End + +Public Sub WebView_Progress() + + GetView().Status = ("Loading...") + If Not IsLastCurrentView() Then Return + + lblStatus.Text = GetView().Status + pgbLoad.Value = GetView().Progress + panLoad.Show + +End + +Public Sub WebView_Error() + + Dim hView As WebView = GetView() + Dim sUrl As String + + sUrl = $sLastLink + If Not sUrl Then sUrl = txtURL.Text + + ' If Not (sUrl Begins "www.") Then + ' txtURL.Text = "www." & sUrl + ' btnGo.Value = True + ' Return + ' Endif + + hView.Status = ("Unable to load:") & " " & sUrl + hView.HTML = ("

    Unable to find the following URL:

    ") & sUrl + If Not IsLastCurrentView() Then Return + + lblStatus.Text = GetView().Status + pgbLoad.Hide + +End + +Public Sub WebView_Load() + + 'Dim iInd As Integer + Dim hView As WebView = GetView() + Dim hIcon As Picture + + hView.Status = "" + hIcon = hView.Icon 'WebSettings.IconDatabase[hView.Url] + tabBrowser[hView.Tag].Picture = hIcon + + If Not IsLastCurrentView() Then Return + + lblStatus.Text = "" + txtURL.Text = hView.Url + pgbLoad.Hide + + UpdateIcon + + ' Debug GetView().Frame + ' For iInd = 0 To GetView().Frame.Children.Count - 1 + ' Debug "["; iInd; "] "; GetView().Frame.Children[iInd] + ' Next + +End + +Public Sub btnGo_Click() + + Dim sText As String = txtURL.Text + + If InStr(sText, "://") = 0 Then sText = "http://" & sText + + $sLastLink = sText + GetView().Url = sText + +End + +Public Sub txtURL_Activate() + + btnGo.Value = True + +End + +Public Sub btnBack_Click() + + GetView().Back + +End + +Public Sub btnForward_Click() + + GetView().Forward + +End + +Public Sub btnStop_Click() + + GetView().Stop + +End + +Public Sub btnReload_Click() + + Dim hView As WebView = GetView() + + hView.Reload + +End + +Public Sub btnZoomIn_Click() + + GetView().Zoom = Round(GetView().Zoom * 1.25, -2) + +End + +Public Sub btnZoomOut_Click() + + GetView().Zoom = Round(GetView().Zoom / 1.25, -2) + +End + +Public Sub btnZoomNormal_Click() + + GetView().Zoom = 1 + +End + +Public Sub WebView_Title() + + Dim hView As WebView = Last + tabBrowser[hView.Tag].Text = hView.Title + If Not IsLastCurrentView() Then Return + Me.Title = hView.Title & " - Gambas WebKit" + +End + +Public Sub WebView_Icon() + + Dim hView As WebView = Last + 'hView.Icon.Save("~/icon.png") + tabBrowser[hView.Tag].Picture = hView.Icon + UpdateIcon + +End + +Public Sub btnClear_Click() + + txtURL.Clear + txtURL.SetFocus + +End + +Public Sub WebView_NewWindow((Modal) As Boolean) + + CreateView() + + Last.NewView = GetView() + +End + +Private Sub CreateView() + + Dim iLast As Integer = tabBrowser.Count - 1 + Dim hView As WebView + + Object.Lock(tabBrowser) + Inc tabBrowser.Count + Object.Lock(tabBrowser) + tabBrowser[iLast + 1].Picture = tabBrowser[iLast].Picture + tabBrowser[iLast + 1].Text = tabBrowser[iLast].Text + tabBrowser[iLast].Text = "" + tabBrowser[iLast].Picture = Null + tabBrowser[iLast].Closable = True + Object.Lock(tabBrowser) + tabBrowser.Index = iLast + hView = New WebView(tabBrowser) As "WebView" + hView.Tag = tabBrowser.Index + hView.Editable = btnEdit.Value + hView.Resize(1, 1) + 'hView.Show + 'Print WebSettings.Fonts.FixedFont + Object.Unlock(tabBrowser) + Object.Unlock(tabBrowser) + Object.Unlock(tabBrowser) + tabBrowser_Click + txtURL.SetFocus + +End + + +Public Sub tabBrowser_Click() + + Dim iLast As Integer = tabBrowser.Count - 1 + Dim hView As WebView + + If tabBrowser.Index = iLast Then + CreateView() + Else + hView = GetView() + If hView.Title Then + Me.Title = hView.Title & " - Gambas WebKit" + Else + Me.Title = "Gambas WebKit" + Endif + tabBrowser.Text = hView.Title + UpdateIcon + tabBrowser.Picture = hView.Icon + txtURL.Text = hView.Url + lblStatus.Text = hView.Status + pgbLoad.Value = hView.Progress + If hView.Progress > 0 And If hView.Progress < 1 Then + panLoad.Show + Else + panLoad.Hide + Endif + Endif + +End + +Public Sub btnDownloadList_Click() + + FDownloadList.Show + +End + +Public Sub WebView_Auth() + + Dim hView As WebView = Last + + If Not FAuth.Run(hView.Auth.Url, hView.Auth.Realm) Then + + hView.Auth.User = FAuth.User + hView.Auth.Password = FAuth.Password + 'Debug hView.Auth.Url;; hView.Auth.User;; hView.Auth.Password + + Endif + +End + +Public Sub WebView_Click(Frame As WebFrame) + + Dim sName As String = Frame.Name + If sName Then sName &= ": " + Debug sName; Frame.Url + +End + +Public Sub WebView_NewFrame(Frame As WebFrame) + + Debug Frame.Name + +End + +Public Sub WebView_Download(Download As WebDownload) + + Dialog.Path = System.User.Home &/ File.Name(Download.Url) + If Not Dialog.SaveFile() Then + Download.Path = Dialog.Path + FDownloadList.AddDownload(Download) + FDownloadList.Show + Endif + +End + +Public Sub WebView_MouseDown() + + Dim hView As WebView = Last + Dim hTest As WebHitTest = hView.HitTest(Mouse.X, Mouse.Y) + Dim sMsg As String + + If hTest.Document Then sMsg &= "DOCUMENT " + If hTest.Link Then sMsg &= "LINK " + If hTest.Image Then sMsg &= "IMAGE " + If hTest.Selected Then sMsg &= "SELECTED " + If hTest.Editable Then sMsg &= "EDITABLE " + Debug sMsg; hTest.Url + +End + +Public Sub tabBrowser_Close(Index As Integer) + + Dim hView As WebView + + Try hView = tabBrowser[Index].Children[0] + If Not hView Then Return + + hView.Delete + + Object.Lock(tabBrowser) + tabBrowser[Index].Delete + Object.UnLock(tabBrowser) + If Index = tabBrowser.Index Then + If tabBrowser.Index = (tabBrowser.Count - 1) And If tabBrowser.Index > 0 Then + tabBrowser.Index = tabBrowser.Index - 1 + Else + tabBrowser_Click + Endif + Endif + +End + +Public Sub btnFind_Click() + + Dim hView As WebView = GetView() + + panFind.Visible = btnFind.Value + If btnFind.Value Then + DoFind + txtFind.SetFocus + Else + hView.FindText("") + Endif + +End + +Private Sub DoFind(Optional bBackward As Boolean) + + Dim hView As WebView = GetView() + Dim sText As String + + sText = Trim(txtFind.Text) + + If sText And If hView.FindText(sText, bBackward, chkCaseSensitive.Value, True) Then ', chkHighlight.Value) Then + panFind.Background = &HFFDFDF + Else + panFind.Background = Color.Default + If Not sText Then hView.FindText("") + Endif + +End + + +Public Sub txtFind_Change() + + DoFind + +End + +Public Sub Form_KeyPress() + + If Key.Control And If Key.Code = Key["F"] Then + btnFind.Value = True + Else If Key.Code = Key.Escape Then + btnFind.Value = False + Else If Key.Code = Key.F3 Then + DoFind(Key.Shift) + Endif + +End + +Public Sub chkCaseSensitive_Click() + + DoFind + +End + +Public Sub chkHighlight_Click() + + Dim hView As WebView + + If Not chkHighlight.Value Then + hView = GetView() + hView.FindText("",,,, True) + Else + DoFind + Endif + +End + +Public Sub btnNext_Click() + + DoFind + +End + +Public Sub btnPrevious_Click() + + DoFind(True) + +End + +Public Sub btnClearFind_Click() + + txtFind.Text = "" + +End + +Public Sub txtFind_Activate() + + DoFind + +End + +Private Sub UpdateIcon() + + Dim hView As WebView = GetView() + Dim hIcon As Picture + + hIcon = hView.Icon 'WebSettings.IconDatabase[hView.Url] + + If hIcon Then + Me.Icon = hIcon + Else + Me.Icon = Picture["icon:/16/internet"] + Endif + +End + +Public Sub btnConfig_Click() + + With WebSettings.Proxy + + FOption.Type = .Type + FOption.Host = .Host + FOption.Port = .Port + FOption.User = .User + FOption.Password = .Password + + If FOption.Run() Then Return + + .Type = FOption.Type + .Host = FOption.Host + .Port = FOption.Port + .User = FOption.User + .Password = FOption.Password + + End With + +End + +Public Sub btnEdit_Click() + + Dim hWebView As WebView + + For Each hWebView In tabBrowser.Children + hWebView.Editable = btnEdit.Value + Next + + WebSettings[WebSettings.JavascriptCanAccessClipboard] = btnEdit.Value + panEdit.Visible = btnEdit.Value + +End + +Public Sub btnAction_Click() + + Dim hWebView As WebView = GetView() + + Debug "Action " & Last.Tag & ": "; hWebView.Eval(Subst("document.execCommand('&1', false, false)", Last.Tag)) + +End + +Public Sub btnColor_Click() + + Dim hWebView As WebView = GetView() + + If Dialog.SelectColor() Then Return + hWebView.Eval(Subst("document.execCommand('forecolor', false, '&1')", "#" & Hex$(Dialog.Color, 6))) + +End + +Public Sub mnuFont_Show() + + Dim sFont As String + Dim hMenu As Menu + + If mnuFont.Children.Count > 1 Then Return + + mnuFont.Children.Clear + + For Each sFont In Fonts + + hMenu = New Menu(mnuFont) As "mnuSelectFont" + hMenu.Text = sFont + + Next + +End + + +Public Sub mnuSelectFont_Click() + + Dim hWebView As WebView = GetView() + Dim sFont As String = Last.Text + + hWebView.Eval(Subst("document.execCommand('fontname', false, '&1')", sFont)) + +End + + +Public Sub btnBackground_Click() + + Dim hWebView As WebView = GetView() + + Dialog.Title = ("Select a color") + If Dialog.SelectColor() Then Return + hWebView.Eval(Subst("document.execCommand('backcolor', false, '&1')", "#" & Hex$(Dialog.Color, 6))) + +End + +Public Sub mnuSelectSize_Click() + + Dim hWebView As WebView = GetView() + Dim sSize As String = Last.Text + + hWebView.Eval(Subst("document.execCommand('fontsize', false, '&1')", sSize)) + +End + + + +Public Sub btnInsertImage_Click() + + Dim hWebView As WebView = GetView() + + Dialog.Title = ("Select an image") + Dialog.Filter = ["*.jpg;*.jpeg;*.png;*.gif;*.xpm;*.bmp", "Image files"] + If Dialog.OpenFile() Then Return + + Print Dialog.Path + hWebView.Eval(Subst("document.execCommand('insertImage', false, '&1')", "file://" & Replace(Dialog.Path, "'", "\\'"))) + +End diff --git a/app/examples/Networking/WebBrowser/.src/FBrowser.form b/app/examples/Networking/WebBrowser/.src/FBrowser.form new file mode 100644 index 00000000..4fd51e3b --- /dev/null +++ b/app/examples/Networking/WebBrowser/.src/FBrowser.form @@ -0,0 +1,352 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,169,98) + Text = ("Gambas WebKit") + Icon = Picture["icon:/small/gambas"] + Arrangement = Arrange.Vertical + { mnuFont Menu + { mnuSelectFont Menu mnuSelectFont + Name = "mnuSelectFont" + } + } + { mnuSize Menu + { mnuSizeM2 Menu mnuSelectSize + Name = "mnuSizeM2" + Text = ("-2") + } + { mnuSizeM1 Menu mnuSelectSize + Name = "mnuSizeM1" + Text = ("-1") + } + { mnuSize0 Menu mnuSelectSize + Name = "mnuSize0" + Text = ("0") + } + { mnuSizeP1 Menu mnuSelectSize + Name = "mnuSizeP1" + Text = ("+1") + } + { mnuSizeP2 Menu mnuSelectSize + Name = "mnuSizeP2" + Text = ("+2") + } + { mnuSizeP3 Menu mnuSelectSize + Name = "mnuSizeP3" + Text = ("+3") + } + { mnuSizeP4 Menu mnuSelectSize + Name = "mnuSizeP4" + Text = ("+4") + } + } + { HBox2 HBox + MoveScaled(1,1,99,4) + { btnBack ToolButton + MoveScaled(0,0,4,4) + Picture = Picture["icon:/small/left"] + } + { btnForward ToolButton + MoveScaled(4,0,4,4) + Picture = Picture["icon:/small/right"] + } + { Separator9 Separator + MoveScaled(9,0,0,4) + } + { Panel2 HBox + MoveScaled(12,0,44,4) + Background = Color.TextBackground + Expand = True + { txtURL TextBox + MoveScaled(0,0,28,4) + Expand = True + Border = False + } + { btnClear ToolButton + MoveScaled(28,0,4,4) + Picture = Picture["icon:/small/clear"] + } + { btnStop ToolButton + MoveScaled(33,0,4,4) + Picture = Picture["icon:/small/delete"] + } + { btnReload ToolButton + MoveScaled(38,0,4,4) + ToolTip = ("Refresh") + Picture = Picture["icon:/small/refresh"] + } + } + { btnGo ToolButton + MoveScaled(57,0,4,4) + Visible = False + Picture = Picture["icon:/small/apply"] + } + { Separator1 Separator + MoveScaled(62,0,0,4) + } + { btnEdit ToolButton + MoveScaled(64,0,4,4) + ToolTip = ("Toggle edit mode") + Picture = Picture["icon:/small/edit"] + Toggle = True + } + { btnZoomIn ToolButton + MoveScaled(69,0,4,4) + Picture = Picture["icon:/small/zoom-in"] + } + { btnZoomOut ToolButton + MoveScaled(73,0,4,4) + Picture = Picture["icon:/small/zoom-out"] + } + { btnZoomNormal ToolButton + MoveScaled(77,0,4,4) + Picture = Picture["icon:/small/zoom-normal"] + } + { Separator2 Separator + MoveScaled(81,0,0,4) + } + { btnFind ToolButton + MoveScaled(83,0,4,4) + Picture = Picture["icon:/small/find"] + Toggle = True + } + { btnDownloadList ToolButton + MoveScaled(87,0,4,4) + Picture = Picture["icon:/small/archive"] + } + { btnConfig ToolButton + MoveScaled(91,0,4,4) + Picture = Picture["icon:/small/options"] + } + } + { panEdit HBox + MoveScaled(1,6,97,4) + Visible = False + { btnCopy ToolButton btnAction + Name = "btnCopy" + MoveScaled(0,0,4,4) + Tag = "Copy" + ToolTip = ("Copy") + Picture = Picture["icon:/small/copy"] + } + { btnCut ToolButton btnAction + Name = "btnCut" + MoveScaled(4,0,4,4) + Tag = "Cut" + ToolTip = ("Cut") + Picture = Picture["icon:/small/cut"] + } + { btnPaste ToolButton btnAction + Name = "btnPaste" + MoveScaled(8,0,4,4) + Tag = "Paste" + ToolTip = ("Paste") + Picture = Picture["icon:/small/paste"] + } + { btnUndo ToolButton btnAction + Name = "btnUndo" + MoveScaled(12,0,4,4) + Tag = "Undo" + ToolTip = ("Undo") + Picture = Picture["icon:/small/undo"] + } + { btnRedo ToolButton btnAction + Name = "btnRedo" + MoveScaled(16,0,4,4) + Tag = "Redo" + ToolTip = ("Redo") + Picture = Picture["icon:/small/redo"] + } + { Separator7 Separator + MoveScaled(20,0,1,4) + } + { btnBold ToolButton btnAction + Name = "btnBold" + MoveScaled(21,0,4,4) + Tag = "bold" + ToolTip = ("Bold") + Picture = Picture["icon:/small/text-bold"] + } + { btnItalic ToolButton btnAction + Name = "btnItalic" + MoveScaled(25,0,4,4) + Tag = "italic" + ToolTip = ("Italic") + Picture = Picture["icon:/small/text-italic"] + } + { btnUnderline ToolButton btnAction + Name = "btnUnderline" + MoveScaled(29,0,4,4) + Tag = "underline" + ToolTip = ("Underline") + Picture = Picture["icon:/small/text-underline"] + } + { btnStrike ToolButton btnAction + Name = "btnStrike" + MoveScaled(33,0,4,4) + Tag = "strikethrough" + ToolTip = ("Strikethrough") + Picture = Picture["icon:/small/text-strike"] + } + { Separator3 Separator + MoveScaled(37,0,1,4) + } + { btnLeft ToolButton btnAction + Name = "btnLeft" + MoveScaled(39,0,4,4) + Tag = "justifyleft" + ToolTip = ("Left aligned") + Picture = Picture["icon:/small/text-left"] + } + { btnCenter ToolButton btnAction + Name = "btnCenter" + MoveScaled(43,0,4,4) + Tag = "justifycenter" + ToolTip = ("Centered") + Picture = Picture["icon:/small/text-center"] + } + { btnRight ToolButton btnAction + Name = "btnRight" + MoveScaled(47,0,4,4) + Tag = "justifyright" + ToolTip = ("Right aligned") + Picture = Picture["icon:/small/text-right"] + } + { btnFill ToolButton btnAction + Name = "btnFill" + MoveScaled(51,0,4,4) + Tag = "justifyfull" + ToolTip = ("Justified") + Picture = Picture["icon:/small/text-fill"] + } + { Separator5 Separator + MoveScaled(55,0,1,4) + } + { btnIndent ToolButton btnAction + Name = "btnIndent" + MoveScaled(56,0,4,4) + Tag = "indent" + ToolTip = ("Indent") + Picture = Picture["icon:/small/indent"] + } + { btnUnindent ToolButton btnAction + Name = "btnUnindent" + MoveScaled(60,0,4,4) + Tag = "outdent" + ToolTip = ("Unindent") + Picture = Picture["icon:/small/unindent"] + } + { Separator6 Separator + MoveScaled(64,0,1,4) + } + { btnOrdered ToolButton btnAction + Name = "btnOrdered" + MoveScaled(65,0,4,4) + Tag = "insertOrderedList" + ToolTip = ("Ordered list") + Picture = Picture["list-ordered.png"] + } + { btnUnordered ToolButton btnAction + Name = "btnUnordered" + MoveScaled(69,0,4,4) + Tag = "insertUnorderedList" + ToolTip = ("Unordered list") + Picture = Picture["list-unordered.png"] + } + { Separator4 Separator + MoveScaled(73,0,1,4) + } + { btnColor ToolButton + MoveScaled(74,0,4,4) + ToolTip = ("Text color") + Picture = Picture["icon:/small/color"] + } + { btnBackground ToolButton + MoveScaled(78,0,4,4) + ToolTip = ("Text background") + Picture = Picture["icon:/small/fill"] + } + { btnFont MenuButton + MoveScaled(82,0,6,4) + ToolTip = ("Font family") + Picture = Picture["icon:/small/font"] + Border = False + Menu = "mnuFont" + MenuOnly = True + } + { btnFont2 MenuButton + MoveScaled(88,0,6,4) + Font = Font["Bold,-1"] + ToolTip = ("Font size") + Text = ("+1") + Border = False + Menu = "mnuSize" + MenuOnly = True + } + } + { Separator8 Separator + MoveScaled(8,12,17,0) + } + { tabBrowser TabPanel + MoveScaled(1,14,76,40) + Expand = True + Arrangement = Arrange.Fill + Border = False + Index = 0 + Text = ("") + Picture = Picture["icon:/small/add"] + Index = 0 + } + { panFind HBox + MoveScaled(1,54,101,4) + Visible = False + { btnClearFind ToolButton + MoveScaled(4,0,4,4) + Picture = Picture["icon:/small/clear"] + } + { txtFind TextBox + MoveScaled(8,0,32,4) + Expand = True + } + { btnNext ToolButton + MoveScaled(41,0,4,4) + Picture = Picture["icon:/small/down"] + } + { btnPrevious ToolButton + MoveScaled(45,0,4,4) + Picture = Picture["icon:/small/up"] + } + { chkCaseSensitive CheckBox + MoveScaled(54,0,17,4) + AutoResize = True + Text = ("Case sensitive") + } + { chkHighlight CheckBox + MoveScaled(70,0,20,4) + Visible = False + AutoResize = True + Text = ("Highlight") + } + { Panel1 Panel + MoveScaled(91,1,1,2) + } + } + { HBox1 HBox + MoveScaled(1,61,66,2) + { lblStatus Label + MoveScaled(5,0,21,2) + Font = Font["-2"] + Expand = True + } + { panLoad Panel + MoveScaled(46,0,19,2) + Visible = False + Arrangement = Arrange.Fill + Padding = 4 + { pgbLoad ProgressBar + MoveScaled(1,0,17,2) + Label = False + } + } + } +} diff --git a/app/examples/Networking/WebBrowser/.src/FDownload.class b/app/examples/Networking/WebBrowser/.src/FDownload.class new file mode 100644 index 00000000..ce500c5e --- /dev/null +++ b/app/examples/Networking/WebBrowser/.src/FDownload.class @@ -0,0 +1,50 @@ +' Gambas class file + +Private $hDownload As WebDownload + +Public Sub Init(hDownload As WebDownload) + + $hDownload = hDownload + Redraw + +End + + +Public Sub Redraw() + + Dim sTitle As String + Dim sStatus As String + + If Not $hDownload Then Return + + With $hDownload + + sTitle = .Url + If .Status = .Cancelled Then + sStatus = ("Cancelled") + Else If .Status = .Finished Then + sStatus = ("Finished") + Else If .Status = .Error Then + sStatus = ("Error:") & " " & .ErrorText + Else + sStatus = ("Downloading...") + Endif + lblTitle.Text = sTitle + lblStatus.Text = sStatus + + pgbDownload.Value = .Progress + + End With + +End + +Public Sub btnAbort_Click() + + If $hDownload.Status = WebDownload.Downloading Then + $hDownload.Cancel + Else + $hDownload.Delete + Me.Delete + Endif + +End diff --git a/app/examples/Networking/WebBrowser/.src/FDownload.form b/app/examples/Networking/WebBrowser/.src/FDownload.form new file mode 100644 index 00000000..b14e5303 --- /dev/null +++ b/app/examples/Networking/WebBrowser/.src/FDownload.form @@ -0,0 +1,34 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,69,13) + Arrangement = Arrange.Fill + Margin = True + { Panel1 Panel + MoveScaled(1,1,67,11) + Background = Color.Background + Arrangement = Arrange.Vertical + Margin = True + Border = Border.Plain + { lblTitle Label + MoveScaled(1,1,65,3) + Expand = True + Text = ("Starting download") & "..." + } + { lblStatus Label + MoveScaled(1,4,11,2) + Font = Font["Italic,-2"] + } + { HBox2 HBox + MoveScaled(1,6,65,4) + { pgbDownload ProgressBar + MoveScaled(0,0,56,4) + Expand = True + } + { btnAbort ToolButton + MoveScaled(61,0,4,4) + Picture = Picture["icon:/small/close"] + } + } + } +} diff --git a/app/examples/Networking/WebBrowser/.src/FDownloadList.class b/app/examples/Networking/WebBrowser/.src/FDownloadList.class new file mode 100644 index 00000000..eed15dfe --- /dev/null +++ b/app/examples/Networking/WebBrowser/.src/FDownloadList.class @@ -0,0 +1,20 @@ +' Gambas class file + +Public Sub AddDownload(hDownload As WebDownload) + + Dim hForm As FDownload + + hForm = New FDownload(svwDownload) + hForm.Init(hDownload) + +End + +Public Sub timRefresh_Timer() + + Dim hForm As FDownload + + For Each hForm In svwDownload.Children + hForm.Redraw + Next + +End diff --git a/app/examples/Networking/WebBrowser/.src/FDownloadList.form b/app/examples/Networking/WebBrowser/.src/FDownloadList.form new file mode 100644 index 00000000..baaaf84c --- /dev/null +++ b/app/examples/Networking/WebBrowser/.src/FDownloadList.form @@ -0,0 +1,20 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,68,39) + Text = ("Download manager") + Icon = Picture["icon:/small/archive"] + Persistent = True + Arrangement = Arrange.Fill + { svwDownload ScrollView + MoveScaled(1,1,66,36) + Background = Color.SelectedForeground + Arrangement = Arrange.Vertical + Border = False + ScrollBar = Scroll.Vertical + { timRefresh #Timer + #MoveScaled(52,15) + Enabled = True + } + } +} diff --git a/app/examples/Networking/WebBrowser/.src/FEditable.class b/app/examples/Networking/WebBrowser/.src/FEditable.class new file mode 100644 index 00000000..98308606 --- /dev/null +++ b/app/examples/Networking/WebBrowser/.src/FEditable.class @@ -0,0 +1,15 @@ +' Gambas class file + + +Public Sub Form_Open() + + WebView1.Url = "http://gambasdoc.org/" + +End + +Public Sub Button1_Click() + + Print WebView1.Frame.EvalJavaScript("1+2") + Print WebView1.Frame.EvalJavaScript("document.execCommand('bold', false, false)") + +End diff --git a/app/examples/Networking/WebBrowser/.src/FEditable.form b/app/examples/Networking/WebBrowser/.src/FEditable.form new file mode 100644 index 00000000..7d7ec8f7 --- /dev/null +++ b/app/examples/Networking/WebBrowser/.src/FEditable.form @@ -0,0 +1,19 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,68,64) + Arrangement = Arrange.Vertical + Margin = True + { HBox1 HBox + MoveScaled(2,1,63,4) + { Button1 Button + MoveScaled(0,0,28,4) + Text = ("Bold") + } + } + { WebView1 WebView + MoveScaled(4,7,54,40) + Expand = True + Editable = True + } +} diff --git a/app/examples/Networking/WebBrowser/.src/FOption.class b/app/examples/Networking/WebBrowser/.src/FOption.class new file mode 100644 index 00000000..d6a6cc34 --- /dev/null +++ b/app/examples/Networking/WebBrowser/.src/FOption.class @@ -0,0 +1,67 @@ +' Gambas class file + +Static Public Type As Integer +Static Public Host As String +Static Public Port As Integer +Static Public User As String +Static Public Password As String + +Public Sub Run() As Boolean + + Return Not Me.ShowModal() + +End + +Public Sub btnOK_Click() + + Select Case cmbType.Index + Case 0 + Type = WebSettings.NoProxy + Case 1 + Type = WebSettings.HttpProxy + Case 2 + Type = WebSettings.Socks5Proxy + End Select + + Host = Trim(txtHost.Text) + Port = txtPort.Value + User = Trim(txtUser.Text) + Password = txtPassword.Text + + Me.Close(True) + +End + +Public Sub btnCancel_Click() + + Me.Close + +End + + +Public Sub cmbType_Click() + + txtHost.Enabled = cmbType.Index > 0 + txtPassword.Enabled = cmbType.Index > 0 + txtPort.Enabled = cmbType.Index > 0 + txtUser.Enabled = cmbType.Index > 0 + +End + +Public Sub Form_Open() + + Select Type + Case WebSettings.NoProxy + cmbType.Index = 0 + Case WebSettings.HttpProxy + cmbType.Index = 1 + Case WebSettings.Socks5Proxy + cmbType.Index = 2 + End Select + + txtHost.Text = Host + txtPort.Value = Port + txtUser.Text = User + txtPassword.Text = Password + +End diff --git a/app/examples/Networking/WebBrowser/.src/FOption.form b/app/examples/Networking/WebBrowser/.src/FOption.form new file mode 100644 index 00000000..1faee652 --- /dev/null +++ b/app/examples/Networking/WebBrowser/.src/FOption.form @@ -0,0 +1,69 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,61,35) + Text = ("Proxy configuration") + Resizable = False + Spacing = True + Margin = True + { Label1 Label + MoveScaled(1,1,15,4) + Text = ("Type") + } + { Label2 Label + MoveScaled(1,6,15,4) + Text = ("Host") + } + { Label3 Label + MoveScaled(1,11,15,4) + Text = ("Port") + } + { Label4 Label + MoveScaled(1,16,15,4) + Text = ("User") + } + { Label5 Label + MoveScaled(1,21,15,4) + Text = ("Password") + } + { HBox1 HBox + MoveScaled(1,30,59,4) + Spacing = True + { Panel1 Panel + MoveScaled(4,0,4,4) + Expand = True + } + { btnOK Button + MoveScaled(11,0,16,4) + Text = ("OK") + Default = True + } + { btnCancel Button + MoveScaled(28,0,16,4) + Text = ("Cancel") + Cancel = True + } + } + { txtHost TextBox + MoveScaled(17,6,43,4) + Enabled = False + } + { cmbType ComboBox + MoveScaled(17,1,43,4) + ReadOnly = True + List = [("No proxy"), ("HTTP proxy"), ("SOCKS5 proxy")] + } + { txtPort SpinBox + MoveScaled(17,11,12,4) + Enabled = False + } + { txtUser TextBox + MoveScaled(17,16,43,4) + Enabled = False + } + { txtPassword TextBox + MoveScaled(17,21,43,4) + Enabled = False + Password = True + } +} diff --git a/app/examples/Networking/WebBrowser/icon.png b/app/examples/Networking/WebBrowser/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..268485b35ff1ec22b2fde11239acf698bd053acb GIT binary patch literal 2932 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 SXLkZ!#^CAd=d#Wzp$Pz4)fQ0z literal 0 HcmV?d00001 diff --git a/app/examples/Networking/WebBrowser/list-unordered.png b/app/examples/Networking/WebBrowser/list-unordered.png new file mode 100644 index 0000000000000000000000000000000000000000..5e6ec74c95807328dc700cfdf4dcdb5f177af8fb GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!M}SX=>;M1%qvk+Sd3m`~)qfyj zNP{AOe}9N9Py{Gjxaxm$a`K-)f4+VD_Tj^amoHyFdi3bQg9kumTh=qq0h-BI666=m zkohdF;n|M#9VrdzJJPbe55@vz+&oFg0*lDx&8$mod%ZYdI10d&~KY_5&Zk+J3Ul6YS z<<$+K`15a~4Hyk~el(lM9xBDPeEh5iO4Acb4Om2r*AwsFN8X057}t=U>czGd@%+_r zwE`%4WG6-_jD{s;$vpO8DYJ@``NJ{TSqF{-d+XsN^Rn2|S3&-U*HKFG)q9Ki`n@H5 z`3HyC(th%SuJu<1pzLq=Vzi4fke}w`yZ04y$MP(;HNp!!z>c0dHX7HQib?!g1*~0? z$rF#1)6o}a&3BJe-!KHycXa_M|H>YWfs{lqe|P%~{^s_4YI@RZRyMyq49Z8M@Do@5O9$}irv8mah(|4D3NG;eBjFg;3CjK2 zllNuUT#VtfHtq!>kpe!mGMjJQRmdr$_{n?FGC1PyV>&eu=Jpw>$o$Luolx-) zRTu-t7*@|u<9nYfBsI;)mS#BC3voS;uI+I2P#f({oou)%hi~0Ghuw7+>z{_9UKhvs z01ZMQj6i8G#z;K*w-E1m*s?|`H%ZRdN3O16$SX-Ckt3q zmdIP}@a`dqjeFv*3$@34IC-p&;}gWTs#3_Ns&o?w^_XYFPr*qeQFYfdEY*W(T1!f58t^vpF5YO@oq0Xe+0tL zh(Tj&Zw+yvrj>wn`N8LB^3lq4p4kpBS5G|7>-T{X2rP^-SS}cCKzk6rtoOZNG1ZU% zy1CcP&AT)JV*pR~2rk8oJ_u<|Eavj^(+_5SX7avsdw{-l003oK(>wn%%X^|r-aXZh zsR6hn@pmmr7^W-?rUrn)ou&u;wdq_b?Q8&#KQ5zj&7l2P62O;9;TZ6^kvuLY7&ZaG z+Gl&%_S$yQlrl)zzP4hZcSyqFofZ%q|GQZGfTtFwZB`ekriLp7m{B!m;gv^3IO zteIVLJ?1Y}NF|7cgIEcPNO>h;OtjMyDr_kwBa=MvQQ>JA3m zPjW+shsK#7MG3{ps#hsnd@G5mIakhpF%f`LZp4yG+GRc#J?s7LmGYj_z+JyZCzczVag)dXH0j-EByD<%$k5DFmdFwxy)7Cr5y}gcR`7 zzdyj&zj!B~{mJvZ{_9`z{oigUHnReikVv)%hJ?eOy)R?69mG?VM`F4kOUWzRckPemUTsouF2kJDQR0$U{B{MxZxf+{yVmQ;hVg^bSZNO2T2l=CG#s-a>oX$ z`W=*U(Xq$~Ss{q_wo#grgFldTMFC8D3n6Qa+Z^m^P=xd|ByMg+{+nATp zM)}&cqyULIIka_k^W=X%O*|oqxZ|SjA#^NqI{w^P1k+Maenugdl5mGZ2xSrNYGy{nq2js~ zsOctuK+&qS0j#+P4;j@ZQZ{E6f_OA#27yV|*N{YK<80^duN zWrZtX8bYl=6bdM#q)g>)0rC@9lQ0Q^@w{P2K z?q5~TfryVj<6*evFewXGFdQ6UDCUq6NWoGPAp|pSxSi*I^8~T#muL_cSw6*6D;}gZ z79+2xgLQX(by^SIIn~6nyndDz%|!|yP5Cp3Wn?ldC5a`;29I6Kwt5fV?8>2CCtFay08X$EcW4mDlfdp1%>?2h z{9X@k%%;1&h5t&Q#e&9WKHXSPPsae=#v-?=mRs-I$XL6Vvc<#w#ExuYu)mX&wI>OM zLi~2~CZ756Gen~i8XKGF>+V3*{U6a&ZRco5oVHU*gzXZ-ymn*2Ew5ra_44> zV>ZW;+;i7Pa*Hc3@EM<5oz*W<7U*N`Ew_-8l0r{!AI;6pxQ@kB*+ipJc5L6y z;Z8&0#~wbb4UeU|g%B=))`oAcOPFB+SW?(R3jb(q;0i%B8pa>*LF+R5QVS9NM~L>c z5g+i9T(OK$-C>fma@lsWo0Q0LtmJeCkG+e>A0WA80lxHHzPxx99^Zv6RCqs?WC%o5 zpp+sSjdJwpQQqG5Hjd-6Xz?P}-n<5n$3hB0d9IhJ(Ps^`loVnt*-5Zr^u2(R*h1nT zjSV3s2pl@w>gn+&U=MjnuDA{-*iZ1pyBO_|Q&3Fe&;TKim;MkWdKD%97?y(6tQjo& z$Ss$}Z~!-E^RcC~+45Q)j^nWVoxS|vsqYgCg#g(3=5~yMo7db#Fc{>}`OJMRKPmLBs07eiQ2Y~R{p@I=gUa2sFTncAZP}UEFktjk+y0*N? zjO$mC>>2`D1=QO?5^@WO#$vQaV<;&Ir6iIa=%u5+nu7A{rVT(^UUnU5A}u|A(fz}RiVptN^EWe$%8jrEif{s8cju|O6l`t4%XgOt*HlvuD69;gFVrJO_q?+Eu zNB5wOKj4y{o=)Z5dF0-!?3jwJ_ zWNgaR7<0NPTC{LEyKvaBaz1}-i&49OH=cxfG{3i-{(){9^dNRi2Pz{E>G3euhLVDs z)?SuWF6HHyUgRV3ewu3bbN9zTM@nY?B>~7^bQ?`Oe@t;x6P2^e`TWCQ;J|?zJeEa8 z#av2fmeAkdM}0#x`76FS<-3isF~F!IjNS1IRqZ7 z%}$~-btb{#2>tuEFyrQXDK9T45bC0)p&gZ12AI(ck6a|K4NiEN+0j-Wdf)+m|H>aJ z$t(d?}#Q1S@$?SQow=8E-bZ-DyxCWJqU!RC|r zhKER;y%@|$7ziQoD2c+Qrm>47FaDXCd3l6;8i{Mo+{z^vWxUZY9Y=O@?A`t3W@oeR zmfI*QDg*%o{ik^CwLj6`)=IfIoAkm8kY|q#loVntG0I6fATm}5Yt2~$m7=mr)~9E3 z;JqpeQqu?~_|fqg8Qo1Ru3SX?mV4=|JH)}md+}9XkFY$TU4-%wJG7fc#j{EA!eD1R z!t!zK$bQO;%J3(pTrdDnq?6T)i&!!D3wXU=gb>)ajS!%eVEy`!<2VjdNT4oNb*Q}@TXf?lUX~COaNKhEMdpfvn-6vtre9Deg z@%Hie=vE2%i)Ldm_~tDq6d5L6N>~-M~$Jbv5|@s2f2Cu{TJo_ z0Ql4B&su>*GD`aLkK}iS|)2&-^uk$S5jYpl&S-JXzuAE zrZqD%vngJ+9&w4UpEL6cr~KXWcnKt>UO)@tv~5zFFpQ?_S5N3~hGOE|0Cv>La9n+1 zORcXmSxQFzKC2%f*=v4y#~k^z1)z-{w&Mz8j0i_urH$sATOlJr3ZsmWLI`0JJ$e{M zLtwCfpw986dBaghMj|m~jNw`&AcRmZ#uxBeda(ag-6$6XkoAkVTHf>~Wt6*SY_Zg} z2LM0`6ORq`*M07$qSZjpX#l`_paKX0Ud~=naka|@;=nL)9C&RE0DuoD0A>UEKsw;( zD*IdAd88TX_6C3s;3UurM8}N*QKLrt81VqfIaZTjg)*ZMVxyZ4I85;#{8};iLV#R8 zgNr`91z%bQi)W?rn|~^&XE4SSzi#Hw)qR9p_tX34lQ_d&ADA_tc;ts1sSRRzld!x2 zy#6#QOJU8LWmrm(o$lwJ8%w4<_p+>3vRii})LITVTm0KgZEW7%OMg!n{Z-ErJp7vv z%5KDY_3Qt^8I5UFKhS&ZC*5+3{e_2)hBvaMI^di9G}%-E@vla++eisHHvHa+(x lHoUN%tgPw(x%!&d{{vM=t#O`Mlyv|A002ovPDHLkV1oMpPN)C? literal 0 HcmV?d00001 diff --git a/app/examples/OpenGL/3DWebCam/.lang/ru.po b/app/examples/OpenGL/3DWebCam/.lang/ru.po new file mode 100644 index 00000000..b15ed83d --- /dev/null +++ b/app/examples/OpenGL/3DWebCam/.lang/ru.po @@ -0,0 +1,46 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/OpenGL/3DWebCam/.project:20 +msgid "3DWebCam" +msgstr "3D-веб-камера" + +#: app/examples/OpenGL/3DWebCam/.src/Mmain.module:30 +msgid "Unable to open video device" +msgstr "Невозможно открыть видеоустройство" + +#: app/examples/OpenGL/3DWebCam/.src/Mmain.module:231 +msgid "frames in" +msgstr "кадров за" + +#: app/examples/OpenGL/3DWebCam/.src/Mmain.module:231 +msgid "seconds =" +msgstr "секунд =" + +#: app/examples/OpenGL/3DWebCam/.src/Mmain.module:231 +msgid "FPS" +msgstr "кадр/с" + diff --git a/app/examples/OpenGL/3DWebCam/.project b/app/examples/OpenGL/3DWebCam/.project new file mode 100644 index 00000000..4f8290ea --- /dev/null +++ b/app/examples/OpenGL/3DWebCam/.project @@ -0,0 +1,19 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.0.0 +Title=3DWebCam +Startup=Mmain +Icon=webcam.png +Version=3.6.2 +VersionFile=1 +Component=gb.image +Component=gb.image.io +Component=gb.sdl +Component=gb.opengl +Component=gb.opengl.glu +Component=gb.v4l +TabSize=2 +Maintainer=Benoît Minisini +Vendor=ASAP +Address=bminisini@asap-info.com +License=General Public Licence +Translate=1 diff --git a/app/examples/OpenGL/3DWebCam/.src/Mmain.module b/app/examples/OpenGL/3DWebCam/.src/Mmain.module new file mode 100644 index 00000000..909efb64 --- /dev/null +++ b/app/examples/OpenGL/3DWebCam/.src/Mmain.module @@ -0,0 +1,256 @@ +' Gambas module file + +Private hWebCam As VideoDevice +Private Const ScrWidth As Integer = 640 +Private Const ScrHeight As Integer = 480 + +' Needed for frame count +Private Frames As Integer +Private CTime As Float + +' Rotations +Private xrot As Float +Private yrot As Float +Private zrot As Float + +' texture +Private textures As New Integer[] +Private Screen As New Window(True) As "Screen" + +Private logo As Image +Private tmpLogo As Image +Private hTimer As New Timer As "Timer1" +Private count As Integer +Private UpdateLogo As Boolean + +Public Sub Main() + + Try hWebCam = New VideoDevice("/dev/video0") + If Error Then + Print ("Unable to open video device") + Return + + End If + hWebCam.Hue = 10 + hWebCam.Color = 10 + hWebcam.Resize(320, 240) + + logo = hWebCam.Image + logo.Resize(256, 256) + + screen.Width = ScrWidth + screen.Height = ScrHeight + Screen.show() + Screen.Resizable = True + InitGL() + textures = Gl.GenTextures(1) + LoadTextures() + Screen_resize() + CTime = Timer() + hTimer.Delay = 200 + hTimer.Enabled = True + +End + +Public Sub LoadTextures() + + Gl.BindTexture(gl.TEXTURE_2D, textures[0]) + Gl.TexImage2D(logo) + Gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR) + Gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR) + +End + +Public Sub InitGL() + + ' Enable smooth shading + Gl.ShadeModel(gl.SMOOTH) + ' Set the background black + Gl.ClearColor(0.0, 0.0, 0.0, 0.5) + ' Depth buffer setup + Gl.ClearDepth(1.0) + ' Enables Depth Testing + Gl.Enable(gl.DEPTH_TEST) + ' Enable texturing + Gl.Enable(gl.TEXTURE_2D) + ' The Type OF Depth Test TO DO + Gl.DepthFunc(gl.LESS) + ' Really Nice Perspective Calculations + Gl.Hint(gl.PERSPECTIVE_CORRECTION_HINT, gl.NICEST) + +End + +Public Sub Screen_close() + + ' Delete textures if needed + If (textures.count > 0) Then Gl.DeleteTextures(textures) + +End + +Public Sub Screen_resize() + + ' Width/Height Ratio + Dim ratio As Float + Dim Height As Integer + + Height = Screen.Height + ' Protect against a divide by zero + If Height = 0 Then Height = 1 + + ratio = Screen.Width / Height + + ' Setup our viewport + Gl.Viewport(0, 0, Screen.Width, Screen.Height) + ' change to the projection matrix AND set our viewing volume. + Gl.MatrixMode(gl.PROJECTION) + Gl.LoadIdentity() + + ' Set our perspective + Glu.Perspective(45.0, ratio, 0.1, 100.0) + + ' Make sure we're changing the model view and not the projection + Gl.MatrixMode(gl.MODELVIEW) + GL.LoadIdentity() + +End + +Public Sub Screen_Draw() + + Dim calc As Float + Inc count + If UpdateLogo Then + 'count = 0 + 'logo = tmpLogo + logo.Resize(256, 256) + LoadTextures() + UpdateLogo = False + Endif + + Gl.Clear(gl.COLOR_BUFFER_BIT Or gl.DEPTH_BUFFER_BIT) + + Gl.LoadIdentity() + Gl.Translatef(0.0, 0.0, -5.0) + + Gl.Rotatef(xrot, 1.0, 0.0, 0.0) ' Rotate On The X Axis + Gl.Rotatef(yrot, 0.0, 1.0, 0.0) ' Rotate On The Y Axis + Gl.Rotatef(zrot, 0.0, 0.0, 1.0) ' Rotate On The Z Axis + + ' Select our texture + Gl.BindTexture(gl.TEXTURE_2D, textures[0]) + + Gl.Begin(gl.QUADS) + ' front face + ' Bottom Left OF The Texture AND Quad + Gl.TexCoord2f(0.0, 1.0) + Gl.Vertex3f(-1.0, -1.0, 1.0) + ' Bottom Right OF The Texture AND Quad + Gl.TexCoord2f(1.0, 1.0) + Gl.Vertex3f(1.0, -1.0, 1.0) + ' Top Right OF The Texture AND Quad + Gl.TexCoord2f(1.0, 0.0) + Gl.Vertex3f(1.0, 1.0, 1.0) + ' Top Left OF The Texture AND Quad + Gl.TexCoord2f(0.0, 0.0) + Gl.Vertex3f(-1.0, 1.0, 1.0) + + ' Back face + ' Bottom Right OF The Texture AND Quad + Gl.TexCoord2f(0.0, 0.0) + Gl.Vertex3f(-1.0, -1.0, -1.0) + ' Top Right OF The Texture AND Quad + Gl.TexCoord2f(0.0, 1.0) + Gl.Vertex3f(-1.0, 1.0, -1.0) + ' Top Left OF The Texture AND Quad + Gl.TexCoord2f(1.0, 1.0) + Gl.Vertex3f(1.0, 1.0, -1.0) + ' Bottom Left OF The Texture AND Quad + Gl.TexCoord2f(1.0, 0.0) + Gl.Vertex3f(1.0, -1.0, -1.0) + + ' Top face + ' Top Left OF The Texture AND Quad + Gl.TexCoord2f(1.0, 1.0) + Gl.Vertex3f(-1.0, 1.0, -1.0) + ' Bottom Left OF The Texture AND Quad + Gl.TexCoord2f(1.0, 0.0) + Gl.Vertex3f(-1.0, 1.0, 1.0) + ' Bottom Right OF The Texture AND Quad + Gl.TexCoord2f(0.0, 0.0) + Gl.Vertex3f(1.0, 1.0, 1.0) + ' Top Right OF The Texture AND Quad + Gl.TexCoord2f(0.0, 1.0) + Gl.Vertex3f(1.0, 1.0, -1.0) + + ' Bottom ace + ' Top Right OF The Texture AND Quad + Gl.TexCoord2f(0.0, 1.0) + Gl.Vertex3f(-1.0, -1.0, -1.0) + ' Top Left OF The Texture AND Quad + Gl.TexCoord2f(1.0, 1.0) + Gl.Vertex3f(1.0, -1.0, -1.0) + ' Bottom Left OF The Texture AND Quad + Gl.TexCoord2f(1.0, 0.0) + Gl.Vertex3f(1.0, -1.0, 1.0) + ' Bottom Right OF The Texture AND Quad + Gl.TexCoord2f(0.0, 0.0) + Gl.Vertex3f(-1.0, -1.0, 1.0) + + ' Right face + ' Bottom Right OF The Texture AND Quad + Gl.TexCoord2f(0.0, 0.0) + Gl.Vertex3f(1.0, -1.0, -1.0) + ' Top Right OF The Texture AND Quad + Gl.TexCoord2f(0.0, 1.0) + Gl.Vertex3f(1.0, 1.0, -1.0) + ' Top Left OF The Texture AND Quad + Gl.TexCoord2f(1.0, 1.0) + Gl.Vertex3f(1.0, 1.0, 1.0) + ' Bottom Left OF The Texture AND Quad + Gl.TexCoord2f(1.0, 0.0) + Gl.Vertex3f(1.0, -1.0, 1.0) + + ' Left face + ' Bottom Left OF The Texture AND Quad + Gl.TexCoord2f(1.0, 0.0) + Gl.Vertex3f(-1.0, -1.0, -1.0) + ' Bottom Right OF The Texture AND Quad + Gl.TexCoord2f(0.0, 0.0) + Gl.Vertex3f(-1.0, -1.0, 1.0) + ' Top Right OF The Texture AND Quad + Gl.TexCoord2f(0.0, 1.0) + Gl.Vertex3f(-1.0, 1.0, 1.0) + ' Top Left OF The Texture AND Quad + Gl.TexCoord2f(1.0, 1.0) + Gl.Vertex3f(-1.0, 1.0, -1.0) + + Gl.End() + + Inc (Frames) + If (Timer() > CTime + 5) Then + calc = Timer() - CTime + Print CStr(Frames) & " " & ("frames in") & " " & Format$(calc, "#.0") & " " & ("seconds =") & " " & Format$((Frames / calc), "######.000") & " " & ("FPS") + Frames = 0 + CTime = Timer() + Endif + + xrot += 0.3 ' X Axis Rotation + yrot += 0.2 ' Y Axis Rotation + zrot += 0.4 ' Z Axis Rotation + Sleep 0.05 + +End + +Public Sub Screen_keyPress() + + If key.Code = key.F1 Then Screen.Fullscreen = Not Screen.Fullscreen + If key.Code = key.Esc Then Screen.Close() + +End + +Public Sub Timer1_Timer() + + logo = hWebCam.Image + + UpdateLogo = True + +End diff --git a/app/examples/OpenGL/3DWebCam/webcam.png b/app/examples/OpenGL/3DWebCam/webcam.png new file mode 100644 index 0000000000000000000000000000000000000000..e90b27a8e5be2e8b39ac125fbbf4b67e20ff510b GIT binary patch literal 6442 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 literal 0 HcmV?d00001 diff --git a/app/examples/OpenGL/GambasGears/.directory b/app/examples/OpenGL/GambasGears/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/OpenGL/GambasGears/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/OpenGL/GambasGears/.icon.png b/app/examples/OpenGL/GambasGears/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f4ee5b433917b29da800bcd02cbc5488c809c0c0 GIT binary patch literal 3450 zcmV-=4TbWFP)1I;1n0K-!QLLxB`RF;Jjj{J_RGSbocvWLcK=vR-?4@7{Y(|5!=3WJBdg z?BM!4b7pq$-TT|~{hr_Xo!|N01DA0bmvI@FaT)(_A*Z`|?~@&?t*Cp9c9o+s;vk*! z*_toeuigKJ@!KvosdE|WcDWkPYpW*@T+&m!g(;PkCK%}Y)oFlUIGjt!>&o#vn z4o&_TS~UB&yg>E5733F=yKn-GSl_j_X(L)ZBWlDC&u$~MCw~nYW z7c}XTkwMUE&nV@*5qS`2vJnnbZLsHQUis~BvTpu-W^{KmMif`gn$A_9xt%SY0osLF zKMmG`2$}X~rXb74SNM>9u`9i)EetIRBJX6g+$ zkOcC_jib5s7!Q2^L9%&c$Oa+S>%;nKWFP>Aej3+Q&xGQM7!&!>|2pq&1kZ@lo)K|9 zS`f#H0)YE~Q8}`23q6r6DVt$;%VBPvR)#H`$m3g^S-rD`AFp|YtC$UEook2W!D;w;8bthsPQKRDti&466DT#t!pb4-*Ib&>$5tA%XX_8L_MJ#YZ0ZxHseHEwL&SCi+$pdlc&I@ zSJ!gK(y44u$LMeo`kQu=oV|qpo-X?QfZ{|FqZJ}T#WgEg^Y8cLZ+(V?VknJi{%*-{ zaM<@LZ);)sEx&(u!wy($+4f=sH4AI_*yk##-(JU-|IE;RG)-|u-l%LCLEMR2p9-wB zsvtk!Y80ZCpp~Gsh*G(lK;waJOuEAG_JL+L?QcTI5(GURgniuvkv!J#Z6uNHB_53s z`X0xQH1UI?E17+$k=qW{)7H|(F=rUxu#XkDtY*;e*|fHXqqH5$GG$&NN`bQh1tpr| zirDDwXc^*Z6cXgeTLs{IFQ<!pY)javidYZaZiV#JFghEjfm051PK8`>-eJ^^C}ELM2jav96&j+R>)*h#ItQ! zTTMsdM5MEhOj|SAt|$f57t(uRCk3VBd3FCWlIcB|f+D(ize^;ZpkUH$VnyTm>b#{y zV)1h(51=B32@}WC(Y1p;KRnFDgwIWtrDS?ZamMxa5?!P4p8N|Mzx^UX)lB|l^ZgW0sb+5SMv9^nPO%~S zq+~F3CkbFwdQce~B321H5~W~VC6Q#3zIQf|@l%Khu?bTs_c~F=(3-V`2exCcoKNB8 z>A3tD@t}_hI$-zC^~{=c?fGHvr|GDFpC$kDRie&f^kA-TiT1WL>7l#$liTOAw|@if zc$63P!`vHvhC(%br>RAT%6(2GeL?``QZl$#RyhxdDve8wXX2I9sqTdCbOuq1)|Z~3 zV$o6xLPw&sl6tR)yz!M}e4oP^AFYJmWIknyc3SGUQaN?OIrC4y^%P5fcsF?hYDAKv z1PYq!C_my+zpR*`*pkKamV26;W%aP%8ad$sPF(7Q02=RvMbHik3X{~;^{{WvKcSQ5 zbRBMiz{e=Ke(_5F=g@BE7-&fp61ZHdsU>$(r0KZF*orE)?cGiwn#t9(QTpr(AK8u; z$~HVnD1st4^6AQ2I!daj+_4UDSOsF!WQ#-eW)HhCL0spbn){n!`yp?DE@&-jr3Ix0 z83+_2Fn7*kA{BGEedYDc`Sfk%l}{o$`#KumTTf@>ZVv9>h*|FUkD&*rPy}3 zowC~bJp1PJtl#qn|MruAptrMyLEEEk(V{Zw?WBMcThyleUSR9w#dHlMY}UlsS2-3* zJHo{YicC2x^_NevrE<$WN()-&rhpo71J5WhDiPhGaRjyBdeySe0yicIdv1CrQuv zI5nU6UH-46*r;401fUeD6CR*QE6D{EC7?&NE2?W*HG2WkY@Eu%v8cQ_HtSP(tbtF& zH8Ttkbj?H}M1TG3 zwAfR3Pc~7AH)k2g@A|7z*%FnD0ZMY5hde-OU3jE#TYKK)n9d`9MGX!|Z02Hm)BO}F#kJFBQZZ!)4g20l z8$IfJVC3ezNp&5e;i(^xj77;)3Z^Z@uUSObSN@jKZmouUKrRsyfS=cee;o?H1CYsv zNk8j8@a=Fm>+{GH50jpCEjWu7MX>#K?z-s?O2${x+ug~QZEy3+woN3a%qCV+jzl78 z=ZN+lXS(0RCs*Au$}SIwYB@w^=XzA_Vq#hmOsGDi=Oae?@}jyIKs(mlGE?6(=mDw0 zBSDT(4dsicK{OiUv&(N~%~OvOnRyLC&vDA4F|t`75g|FYgzJ~x#G?7vQeVG|E!#KH z*w%_~EfpnYR4rY_huQxyxQZ!6E2aRsvfUY55m7Qw0UwM30`UB9_s!lc-vUTyvc-XQ zu`{*(QGijB$%{og0SY2~_oiBT&;U3I`@KNpoE0w=A+zA;0C8DiTA|h@~)b+za z5bW+aejtb@qp3`&(q3jDWxE6w03ARq5!1H2qvycjRRKzW{6^y&v4Y~Mp;M7dSOB!x zY^JyKz?YX+Ed$zy1OQe6(}4sK1uo7j++Q9-AWQC`)E?l)K>;9ljIsbb$P&a#qF-h~N)24+sD^lHjF6cr=1s#${Z_ cWn9Mp0&t&Kv?XDDEC2ui07*qoM6N<$g1b7gwg3PC literal 0 HcmV?d00001 diff --git a/app/examples/OpenGL/GambasGears/.lang/ru.po b/app/examples/OpenGL/GambasGears/.lang/ru.po new file mode 100644 index 00000000..8cd90749 --- /dev/null +++ b/app/examples/OpenGL/GambasGears/.lang/ru.po @@ -0,0 +1,38 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/OpenGL/GambasGears/.project:20 +msgid "GambasGears" +msgstr "Шестерни Gambas" + +#: app/examples/OpenGL/GambasGears/.project:21 +msgid "glxgears ported to Gambas!" +msgstr "glxgears портированы на Gambas!" + +#: app/examples/OpenGL/GambasGears/.src/Module1.module:116 +msgid "FPS" +msgstr "кадр/с" + diff --git a/app/examples/OpenGL/GambasGears/.project b/app/examples/OpenGL/GambasGears/.project new file mode 100644 index 00000000..eca46a6f --- /dev/null +++ b/app/examples/OpenGL/GambasGears/.project @@ -0,0 +1,19 @@ +# Gambas Project File 3.0 +Title=GambasGears +Startup=Module1 +Icon=gears.png +Version=3.11.90 +VersionFile=1 +Component=gb.image +Component=gb.sdl2 +Component=gb.opengl +Description="glxgears ported to Gambas!" +Authors="Fabien Bodard\nLaurent Carlier" +TabSize=2 +Language=fr +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence +Packager=1 +Translate=1 diff --git a/app/examples/OpenGL/GambasGears/.src/Module1.module b/app/examples/OpenGL/GambasGears/.src/Module1.module new file mode 100644 index 00000000..abb49a88 --- /dev/null +++ b/app/examples/OpenGL/GambasGears/.src/Module1.module @@ -0,0 +1,256 @@ +' Gambas module file + +' GambasGears +' Released under GPL v2 or later +' aka glxgears for gambas :) +' based on gears.c by Brian Paul / Mark J. Kilgard +' +' Code : Bodard Fabien & Carlier Laurent +' + +Private screen As New Window(True) As "Screen" +Private gearlists As Integer + +Private angle As Float +Private Frames As Integer +Private fTime As Float + +Public Sub Main() + + With screen + '.Resizable = True + .Resize(480, 480) + .Show() + End With + + fTime = Timer + +End + +Public Sub Screen_Open() + + Dim red As Float[] + Dim green As Float[] + Dim blue As Float[] + Dim pos As Float[] + + red = [0.8, 0.1, 0.0, 0.2] + green = [0.0, 0.8, 0.2, 0.8] + blue = [0.1, 0.1, 0.8, 1.0] + + ' we enable lights, depth test, cull face + Gl.Lightfv(Gl.LIGHT0, Gl.POSITION, [5.0, 5.0, 10.0, 0.0]) + Gl.Enable(Gl.CULL_FACE) + Gl.Enable(Gl.LIGHTING) + Gl.Enable(Gl.LIGHT0) + Gl.Enable(Gl.DEPTH_TEST) + Gl.ClearDepth(1.0) + + ' We need 3 displaylists for the 3 gears + gearlists = Gl.GenLists(3) + + Gl.NewList(gearlists, Gl.COMPILE) + Gl.Materialfv(Gl.FRONT, Gl.AMBIENT_AND_DIFFUSE, red) + Gear(1.0, 4.0, 1.0, 20, 0.7) + Gl.EndList() + Gl.NewList(gearlists + 1, Gl.COMPILE) + Gl.Materialfv(Gl.FRONT, Gl.AMBIENT_AND_DIFFUSE, green) + Gear(0.5, 2.0, 2.0, 10, 0.7) + Gl.EndList() + Gl.NewList(gearlists + 2, Gl.COMPILE) + Gl.Materialfv(Gl.FRONT, Gl.AMBIENT_AND_DIFFUSE, blue) + Gear(1.3, 2.0, 0.5, 10, 0.7) + Gl.EndList() + Gl.Enable(Gl.NORMALIZE) + +End + +Public Sub Screen_Resize() + + Gl.Viewport(0, 0, Screen.Width, Screen.Height) + Gl.MatrixMode(Gl.PROJECTION) + Gl.LoadIdentity() + Gl.Frustum(-1.0, 1.0, -(Screen.Height / Screen.Width), (Screen.Height / Screen.Width), 5.0, 60.0) + Gl.MatrixMode(Gl.MODELVIEW) + Gl.LoadIdentity() + Gl.Translatef(0.0, 0.0, -40.0) + +End + +Public Sub Screen_Draw() + + Dim calc As Float + + angle += 0.05 + + Gl.Clear(Gl.COLOR_BUFFER_BIT Or Gl.DEPTH_BUFFER_BIT) + + Gl.PushMatrix() + + Gl.Rotatef(20, 1.0, 0.0, 0.0) + Gl.Rotatef(30, 0.0, 1.0, 0.0) + Gl.Rotatef(0, 0.0, 0.0, 1.0) + + Gl.PushMatrix() + Gl.Translatef(-3.0, -2.0, 0.0) + Gl.Rotatef(angle, 0.0, 0.0, 1.0) + Gl.CallList(gearlists) + Gl.PopMatrix() + + Gl.PushMatrix() + Gl.Translatef(3.1, -2.0, 0.0) + Gl.Rotatef((-2.0 * angle) - 9.0, 0.0, 0.0, 1.0) + Gl.CallList(gearlists + 1) + Gl.PopMatrix() + + Gl.PushMatrix() + Gl.Translatef(-3.1, 4.2, 0.0) + Gl.Rotatef((-2.0 * angle) - 25.0, 0.0, 0.0, 1.0) + Gl.CallList(gearlists + 2) + Gl.PopMatrix() + + Gl.PopMatrix() + + If (Timer > (fTime + 1)) Then + Inc fTime + Print Screen.Framerate; " " & ("FPS") + Endif + +End + +Public Sub Screen_Close() + + Gl.DeleteLists(gearLists, 3) + +End + +Public Sub Screen_KeyPress() + + If (key.code = key.F1) Then Screen.Fullscreen = Not Screen.Fullscreen + If (key.Code = key.Esc) Then Screen.Close() + +End + +Public Sub Screen_MouseMove() + + If Mouse.Button = 0 Then Return + + Gl.Rotatef(Mouse.StartY - Mouse.Y, 0, 0, 1) + Gl.Rotatef(Mouse.StartX - Mouse.X, 1, 0, 0) + +End + +Public Sub Gear(inner_radius As Float, outer_radius As Float, width As Float, teeth As Integer, tooth_depth As Float) + + Dim i As Integer + Dim r0 As Float + Dim r1 As Float + Dim r2 As Float + Dim angle As Float + Dim da As Float + Dim u As Float + Dim v As Float + Dim fLen As Float + + r0 = inner_radius + r1 = outer_radius - tooth_depth / 2.0 + r2 = outer_radius + tooth_depth / 2.0 + + da = 2.0 * Pi / teeth / 4.0 + + Gl.ShadeModel(Gl.FLAT) + Gl.Normal3f(0.0, 0.0, 1.0) + + ' Draw front face + Gl.Begin(Gl.QUAD_STRIP) + For i = 0 To teeth + angle = i * 2.0 * Pi / teeth + Gl.Vertexf(r0 * Cos(angle), r0 * Sin(angle), width * 0.5) + Gl.Vertexf(r1 * Cos(angle), r1 * Sin(angle), width * 0.5) + If i < teeth Then + Gl.Vertexf(r0 * Cos(angle), r0 * Sin(angle), width * 0.5) + Gl.Vertexf(r1 * Cos(angle + 3 * da), r1 * Sin(angle + 3 * da), width * 0.5) + Endif + Next + Gl.End() + + ' Draw front sides of teeth + Gl.Begin(Gl.QUADS) + da = 2.0 * Pi / teeth / 4.0 + For i = 0 To teeth - 1 + angle = i * 2.0 * Pi / teeth + Gl.Vertexf(r1 * Cos(angle), r1 * Sin(angle), width * 0.5) + Gl.Vertexf(r2 * Cos(angle + da), r2 * Sin(angle + da), width * 0.5) + Gl.Vertexf(r2 * Cos(angle + 2 * da), r2 * Sin(angle + 2 * da), width * 0.5) + Gl.Vertexf(r1 * Cos(angle + 3 * da), r1 * Sin(angle + 3 * da), width * 0.5) + Next + Gl.End() + + Gl.Normal3f(0.0, 0.0, -1.0) + + ' Draw back face + Gl.Begin(Gl.QUAD_STRIP) + For i = 0 To teeth + angle = i * 2.0 * Pi / teeth + Gl.Vertexf(r1 * Cos(angle), r1 * Sin(angle), -width * 0.5) + Gl.Vertexf(r0 * Cos(angle), r0 * Sin(angle), -width * 0.5) + If i < teeth Then + Gl.Vertexf(r1 * Cos(angle + 3 * da), r1 * Sin(angle + 3 * da), -width * 0.5) + Gl.Vertexf(r0 * Cos(angle), r0 * Sin(angle), -width * 0.5) + Endif + Next + Gl.End() + + ' Draw back sides of teeth + Gl.Begin(Gl.QUADS) + da = 2.0 * Pi / teeth / 4.0 + For i = 0 To teeth - 1 + angle = i * 2.0 * Pi / teeth + Gl.Vertexf(r1 * Cos(angle + 3 * da), r1 * Sin(angle + 3 * da), -width * 0.5) + Gl.Vertexf(r2 * Cos(angle + 2 * da), r2 * Sin(angle + 2 * da), -width * 0.5) + Gl.Vertexf(r2 * Cos(angle + da), r2 * Sin(angle + da), -width * 0.5) + Gl.Vertexf(r1 * Cos(angle), r1 * Sin(angle), -width * 0.5) + Next + Gl.End() + + ' Draw outward faces of teeth + Gl.Begin(Gl.QUAD_STRIP) + For i = 0 To teeth - 1 + angle = i * 2.0 * Pi / teeth + Gl.Vertexf(r1 * Cos(angle), r1 * Sin(angle), width * 0.5) + Gl.Vertexf(r1 * Cos(angle), r1 * Sin(angle), -width * 0.5) + u = r2 * Cos(angle + da) - r1 * Cos(angle) + v = r2 * Sin(angle + da) - r1 * Sin(angle) + fLen = Sqr(u * u + v * v) + u /= fLen + v /= fLen + Gl.Normal3f(v, -u, 0.0) + Gl.Vertexf(r2 * Cos(angle + da), r2 * Sin(angle + da), width * 0.5) + Gl.Vertexf(r2 * Cos(angle + da), r2 * Sin(angle + da), -width * 0.5) + Gl.Normal3f(Cos(angle), Sin(angle), 0.0) + Gl.Vertexf(r2 * Cos(angle + 2 * da), r2 * Sin(angle + 2 * da), width * 0.5) + Gl.Vertexf(r2 * Cos(angle + 2 * da), r2 * Sin(angle + 2 * da), -width * 0.5) + u = r1 * Cos(angle + 3 * da) - r2 * Cos(angle + 2 * da) + v = r1 * Sin(angle + 3 * da) - r2 * Sin(angle + 2 * da) + Gl.Normal3f(v, -u, 0.0) + Gl.Vertexf(r1 * Cos(angle + 3 * da), r1 * Sin(angle + 3 * da), width * 0.5) + Gl.Vertexf(r1 * Cos(angle + 3 * da), r1 * Sin(angle + 3 * da), -width * 0.5) + Gl.Normal3f(Cos(angle), Sin(angle), 0.0) + Next + Gl.Vertexf(r1 * Cos(0), r1 * Sin(0), width * 0.5) + Gl.Vertexf(r1 * Cos(0), r1 * Sin(0), -width * 0.5) + Gl.End() + + Gl.ShadeModel(Gl.SMOOTH) + + ' Draw inside radius cylinder + Gl.Begin(Gl.QUAD_STRIP) + For i = 0 To teeth + angle = i * 2.0 * Pi / teeth + Gl.Normal3f(-Cos(angle), -Sin(angle), 0.0) + Gl.Vertexf(r0 * Cos(angle), r0 * Sin(angle), -width * 0.5) + Gl.Vertexf(r0 * Cos(angle), r0 * Sin(angle), width * 0.5) + Next + Gl.End() + +End diff --git a/app/examples/OpenGL/GambasGears/gears.png b/app/examples/OpenGL/GambasGears/gears.png new file mode 100644 index 0000000000000000000000000000000000000000..6eed1fa86ad3f75a71131ccd7b9349be424d80c4 GIT binary patch literal 3488 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 literal 0 HcmV?d00001 diff --git a/app/examples/OpenGL/Md2Model/.directory b/app/examples/OpenGL/Md2Model/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/OpenGL/Md2Model/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/OpenGL/Md2Model/.icon.png b/app/examples/OpenGL/Md2Model/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..22e52cbf7cf15fa7739846c602b7c482a5da47d8 GIT binary patch literal 3521 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, YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/OpenGL/Md2Model/.project:23 +msgid "Md2Model example" +msgstr "Пример Md2Model" + +#: app/examples/OpenGL/Md2Model/.project:24 +msgid "This example shows how to use the 'gb.opengl.sge' component and OpenGL to display a lot of animated monster." +msgstr "В этом примере показано, как использовать компонент 'gb.opengl.sge' и OpenGL для отображения большого количества анимированных монстров." + +#: app/examples/OpenGL/Md2Model/.src/FMain.class:85 +msgid "objects" +msgstr "объектов" + +#: app/examples/OpenGL/Md2Model/.src/FMain.class:148 +msgid "FPS" +msgstr "кадр/с" + +#: app/examples/OpenGL/Md2Model/.src/FMain.class:153 +msgid "vertices in" +msgstr "вершин за" + +#: app/examples/OpenGL/Md2Model/.src/FMain.class:153 +msgid "seconds" +msgstr "секунд" + diff --git a/app/examples/OpenGL/Md2Model/.project b/app/examples/OpenGL/Md2Model/.project new file mode 100644 index 00000000..278d09a2 --- /dev/null +++ b/app/examples/OpenGL/Md2Model/.project @@ -0,0 +1,22 @@ +# Gambas Project File 3.0 +Title=Md2Model example +Startup=FMain +Profiling=1 +Icon=icon.png +Version=1.0.0 +Component=gb.image +Component=gb.gui +Component=gb.db +Component=gb.db.mysql +Component=gb.gui.opengl +Component=gb.opengl +Component=gb.opengl.glu +Component=gb.opengl.sge +Description="This example shows how to use the 'gb.opengl.sge' component and OpenGL to display a lot of animated monster." +Authors="Benoît Minisini" +Environment="GB_GUI=gb.qt5" +TabSize=2 +Language=fr +Vendor=Example +Packager=1 +Translate=1 diff --git a/app/examples/OpenGL/Md2Model/.src/FMain.class b/app/examples/OpenGL/Md2Model/.src/FMain.class new file mode 100644 index 00000000..e3e7bbda --- /dev/null +++ b/app/examples/OpenGL/Md2Model/.src/FMain.class @@ -0,0 +1,243 @@ +' Gambas class file + +Private $aModel As Md2Model[] +Private $aObject As Md2Object[] +Private $iFrames As Integer +Private $fTime As Single +Private $fFramerate As Float +Private $iEndWidth As Integer +Private $iEndZ As Integer + +Private $iDisk As Integer +Private $hQuadric As GluQuadric +Private $nDraw As Integer + +' Private $fRotX As Float +' Private $fRotY As Float +' Private $fStartX As Float +' Private $fStartY As Float + +Public Sub glaScreen_Open() + + Init() + Gl.ClearDepth(100.0) ' Enables clearing of the depth buffer + Glu.ClearColor(&H3398C3) ' This will clear the background color to blue + Gl.DepthFunc(Gl.LESS) ' The type of depth test to do + Gl.Enable(Gl.DEPTH_TEST) ' Enables depth testing + Gl.ShadeModel(Gl.SMOOTH) ' Enables smooth color shading + + $fTime = Timer + timAnim.Enabled = True + +End + +Public Sub glaScreen_Resize() + + Gl.Viewport(0, 0, glaScreen.Width, glaScreen.Height) + Gl.MatrixMode(Gl.PROJECTION) + Gl.LoadIdentity() 'Reset The Projection Matrix + Glu.Perspective(45.0, glaScreen.Width / glaScreen.Height, 0.1, 3000.0) 'Calculate The Aspect Ratio Of The Window + Glu.LookAt(0, 100, 120, 0, 0, -300, 0, 100, 0) + Gl.MatrixMode(Gl.MODELVIEW) + +End + +Public Sub Init() + + Dim X, D, Z As Float + Dim sModel As String + Dim hModel As Md2Model + Dim I As Integer + Dim aModel As String[] = ["bauul", "goblin", "knight", "ogro", "rat", "rhino"] + Dim hObject As Md2Object + + 'Randomize 1972 + $aModel = New Md2Model[] + $aObject = New Md2Object[] + + For Each sModel In aModel + $aModel.Add(Md2Model.Load(sModel & ".md2")) + $aModel[$aModel.Max].Texture = LoadTexture(sModel & ".jpg") + Next + + D = 100 + + X = -D + Z = -100 + + Do + + hModel = $aModel[Int(Rnd(0, aModel.Count))] + hObject = New Md2Object(hModel) + $aObject.Add(hObject) + $aObject[$aObject.Max].Move(X, -10, Z) + X += 50 + If X > D Then + D += 100 + X = -D + Z -= 100 + Inc I + If I = 10 Then Break + Endif + + Loop + + Print $aObject.Count; " " & ("objects") + + $iEndWidth = D + $iEndZ = Z + + sldFrame.MinValue = 0 + sldFrame.MaxValue = $aModel[0].Count + + $iDisk = Gl.GenLists(1) + $hQuadric = Glu.NewQuadric() + + Gl.NewList($iDisk, Gl.COMPILE) + Gl.Rotatef(90, 1, 0, 0) + Glu.Disk($hQuadric, 0, 20, 30, 1) + Gl.EndList + +End + + +Public Sub glaScreen_Draw() + + Dim fTime As Float = Timer + Dim I, N As Integer + + Gl.Clear(Gl.COLOR_BUFFER_BIT Or Gl.DEPTH_BUFFER_BIT) ' Clear The Screen And The Depth Buffer + + Gl.PushMatrix + + Gl.Disable(Gl.TEXTURE_2D) + + Glu.Color(&HD96800&) + Gl.Begin(Gl.QUADS) + Gl.Vertex3f(-100, -34.2, -100) + Gl.Vertex3f(100, -34.2, -100) + Gl.Vertex3f($iEndWidth, -34.2, $iEndZ) + Gl.Vertex3f(-$iEndWidth, -34.2, $iEndZ) + Gl.End + + Glu.Color(Color.Lighter(&HD96800&)) + For I = 0 To $aObject.Max + + Gl.PushMatrix() + Gl.Translatef($aObject[I].X, -34, $aObject[I].Z) + Gl.CallList($iDisk) + Gl.PopMatrix() + + Next + + Gl.Enable(Gl.TEXTURE_2D) + Gl.Color3f(1, 1, 1) + For I = 0 To $aObject.Max + N += $aObject[I].Draw() + Next + + ' You can use this code to get FPS printed in terminal + + Inc $iFrames + If Timer >= ($fTime + 1) Then + $fFrameRate = $iFrames / (Timer - $fTime) + $iFrames = 0 + Inc $fTime + Endif + + lblInfo.Text = Format($aObject[0].Frame, "0.00") & " / " & $aObject[0].Model.Count & " ( " & CInt($fFramerate) & " " & ("FPS") & " )" + + Gl.PopMatrix + + Inc $nDraw + Print "\r"; Format($nDraw, "#####0"); ": "; N; " " & ("vertices in") & " "; Format(Timer - fTime, "0.000000"); " " & ("seconds"); + +End + +Public Sub Form_KeyPress() + + If Key.code = Key.F1 Then + Me.FullScreen = Not Me.FullScreen + sldFrame.Visible = Not Me.FullScreen + Else If Key.Code = Key.Esc Then + Me.Close + Else If Key.code = Key.Space Then + timAnim.Enabled = Not timAnim.Enabled + Else If LCase(Key.Text) = "w" Then + Gl.PolygonMode(Gl.FRONT_AND_BACK, Gl.LINE) + Else If LCase(Key.Text) = "f" Then + Gl.PolygonMode(Gl.FRONT_AND_BACK, Gl.FILL) + Endif + +End + +Public Sub timAnim_Timer() + + ' At every timer call we increase interpolation. It makes Frame number increase every 10 calls. + ' You can control frame flow any way you want. The smaller incrementation, the smoother movement. + + Dim I As Integer + + For I = 0 To $aObject.Max + With $aObject[I] + .Frame += 0.1 + If .Frame >= .Count Then .Frame = 0 + End With + Next + + Object.Lock(sldFrame) + sldFrame.Value = CInt($aObject[0].Frame) + Object.Unlock(sldFrame) + + glaScreen.Refresh + +End + +' Just the subroutine to load textures for our models +Private Sub LoadTexture(sPath As String) As Integer + + Dim iTex As Integer + Dim hImage As Image + + iTex = Gl.GenTextures(1)[0] + hImage = Image.Load(sPath) + Gl.BindTexture(Gl.TEXTURE_2D, iTex) + Gl.TexImage2D(hImage) + Glu.Build2DMipmaps(hImage) + Gl.Texparameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MIN_FILTER, Gl.LINEAR_MIPMAP_LINEAR) + Gl.Texparameteri(Gl.TEXTURE_2D, Gl.TEXTURE_MAG_FILTER, Gl.LINEAR) + Return iTex + +End + + +Public Sub sldFrame_Change() + + $aObject[0].Frame = sldFrame.Value + +End + +' Public Sub glaScreen_MouseMove() +' +' $fRotX = $fStartX + 180 * (Mouse.X - Mouse.StartX) / glaScreen.Width +' $fRotY = $fStartY + 180 * (Mouse.Y - Mouse.StartY) / glaScreen.Height +' glaScreen.Refresh +' +' End +' +' Public Sub glaScreen_MouseDown() +' +' $fStartX = $fRotX +' $fStartY = $fRotY +' +' End + +' Public Sub Form_Activate() +' +' While $nDraw < 10 +' glaScreen.Refresh +' Wait 1 +' Wend +' Me.Close +' +' End diff --git a/app/examples/OpenGL/Md2Model/.src/FMain.form b/app/examples/OpenGL/Md2Model/.src/FMain.form new file mode 100644 index 00000000..6ca8c351 --- /dev/null +++ b/app/examples/OpenGL/Md2Model/.src/FMain.form @@ -0,0 +1,31 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,160,72) + Arrangement = Arrange.Vertical + { Panel1 HBox + MoveScaled(1,2,116,4) + Spacing = True + { sldFrame Slider + MoveScaled(0,0,24,4) + Expand = True + } + { Separator1 Separator + MoveScaled(54,0,0,4) + } + { lblInfo Label + MoveScaled(64,0,18,4) + Padding = 4 + AutoResize = True + } + } + { timAnim #Timer + #MoveScaled(52,13) + Delay = 20 + } + { glaScreen GLArea + MoveScaled(4,14,16,16) + Background = &H7FBFFF& + Expand = True + } +} diff --git a/app/examples/OpenGL/Md2Model/Weapon.md2 b/app/examples/OpenGL/Md2Model/Weapon.md2 new file mode 100644 index 0000000000000000000000000000000000000000..560facea70735ad5e0232ba4fb9b71401fe6efd0 GIT binary patch literal 71708 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/app/examples/OpenGL/Md2Model/Weapon.png b/app/examples/OpenGL/Md2Model/Weapon.png new file mode 100644 index 0000000000000000000000000000000000000000..e2eab7addb7e11aa441c9551dd5707a94cca1d63 GIT binary patch literal 17376 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 X&M~jdJ_R2(00000NkvXXu0mjfA%%l8 literal 0 HcmV?d00001 diff --git a/app/examples/OpenGL/Md2Model/bauul.jpg b/app/examples/OpenGL/Md2Model/bauul.jpg new file mode 100644 index 0000000000000000000000000000000000000000..403d146f618d76dffa9a6e376cd59dc3711181ea GIT binary patch literal 25801 zcma%?bx<5%@Zc8@?(S|21PSi$?hxGFEx0=@PH=Yui)(=3_634#aJR+%xT~vQ)%|xp zHC0pnre=Cx_3NJQ`OL@i$3FmuytJG&016rau=v~nA7=neNl$ZoUjP&U761SUeyT12 zXkr%5W|jbpzE2I*#~L6U01pcb3kM4i2M3P`|G6W7frtNsjDm!OjD&=Of%1O@0|gBo z104+o8yg1)8=Hifn3#n8e*_8v0Ra^Sl>h^SfCv{8m*{^6{(lcX`T&?;pgygHfx-kp zV?x1TLVXMZ8UO%jXc#D{Pdopwz`?`7LO~+{KF|Gs2LS(D4+nt906;^*z(B*od_D^d z0u0>eT)+S@VJWfT*x|+0sIX04aY8^v90-m5;?%ga+v;X+oT0@uS1I5D3H&eD=6D+J zONI?)b1%%)7=4k~u=?4v*2&VReNNnDoOKIj8uzj>~1%E%|2W^H{YB{#=KwnaEp_SK50v@vik(LYs2AR3dAaL4b zv5f9njM6N1;+zs6$RrA@k$h6!8>UcI%6icnY{#}_`QMMQJPwO^Ab?f~QS1kKR$Vpw zvRg)+@XOsU92;i80?pZa2%T7U;oq{v7K3`zVivBH*G!Q&DJ{~!sV!}&pq$smmMf8F zQeR`1H^`V(j$X~e1gQ6~Xm_u$L|pZ^j5lOV=YiW^wR;S_sDz|D$t0;c-u)beWO1q4 zEDXOezmdi=+>_Io_}HLWl^+-wVrUf-l^tYSiDq-kBObrU53)k6&1#3wa6GP#?={l< z()gA~VRcUhdbLGwJz~E)1~~gUq;M&Oj6#^xZ`7#VusMR-sGI8U_#1!k8nnpmbX$El z1X4IuB2nq_kqwNf4GSD{Pm58~L|--@YFm02)X^GKncmpK7Y(H>r@vp|`t{(Zq@0r+X2QfUu-co)3U3ha}pfNk(H&t!MF{ zucXNpk>;J)puT@HP#|~0T-!G5q%G;E~WWH04lvP@_v1(w9nhrAFGz7#GxY3y@f~AY3 zgON9WsTmH&Kp9h2NjEZjOa7(YK#m9~EKogOyoJFymDmHGh3y}dE7n>nfvM8j4)@F0 z3BXf%#nwlayN#P&&9KYl;9Ci>QB!?o5p-OCn8KI-$nN*WdHmR*_?0Fro# zBsb3}AQv}TBcv{3Dn7g{{>!R{(5b*d;+T9^cOOOYl>3wa18}4_@?Cc6UKLV{8MVN< z%fQ+A0Z13}O7ij_Vh zmxp^RBp22U`L7)@RLPld6b}tjt7>0!I@*s~t{dCoPYN#+A$>#cD?_3)VgFApAl6j9$o+Hb#yv$ z?qm|DFi3WmU_Oij>3nBKmJf7IQCl8a`zW4h?h}HXARSKjQ~0RLoVnk60Xc2YH;>1m z&gyM-hl1lTDsCZf-W;pXBPzGC!XnF9dfUH}?<8MH(<~rJe!{GO@23d3NG_WLf;RZJ zCzOq^KLG2P%8(t`>yA?PoWaq;B#z>F6a%@aog9efm*p=j$xbpb-gC9owjhVVMUfT7 zfghz{hDDYI?DJ`Q!gA1_>ieIw-+7&@VIb3^y#C=Bn*2DSOZJTO4x1Na!)Vl;N+x?YLOe&z;@Q!2=q3%2(9ndSFHOj7t0?oC+)eBTd6VR->19I(6fqn zHg2@}WhoRVh^$0~I9`hRYe*aa`{&xxer;um=yMi|LP2hbT8Z@V0Z`IlCYYv=ULfj@ zo;SaM=UBUa)9MBds5}?MH+;RPH8ucQa-=z>%f2=a(Og7W6uqlDY6>l_hmixX3qcE)$@bAR72;-sW9<|N;Z5IeB$}=aiWb$qI9NhMy`RU%Rz`YGAJv7u^2R|xgiO?9z%o2eilO&V7nHP zcww?j;-TeC_3oQV+NpeKwk7Atkrilc+=%`=KO5>SGbB7zuqTR7{^t$ndmT@cut5q} zur4|IK~ameq9J-UTYLeb?0dl^RlvkJon!-;7;ISZ5|Bn>;|j;O$HA984m)8>Kk~!R zT%Fa==L6uV+aDr^*Aa8}>)y%j#|nnLcoVzJmJkD<=Mf>#PTitt^~MHUM@l@xHB0X^ z9mOonIKG8*!ek;V$>pgd)RCj9{0jch`SL!d1(-b!4F;SaEHil}(>e7(@ULbSDVdZn z-GM;Udg+X77!Ao^7mW7HqOc=L6Es=N$tCBj6Yl$_^73_Z2Ds}eW~8uRn!FdXHuTNi zA&IyBb4mS{&e@Oea&hoF{fDbA0Y?{JG66zHdCq&baxaBY27oL>`Ba#$$J!N+k_+xs ze8znm#i|SH`f3;`dxsV01dnT43|_l2KmSrbf@Q*a|4eJs1A-gg^;-XE;sqKIF=$6< z=%m!BoG>MrN;HDoWXaY?mNBT*l{)&_9A3elN*j5sZlHd?p)L1&;F=CG?by1j<8NH^ zSl+vXmv{1`DA&9qVBKAAjZ9KvkJXrCtkFBoiBd?-e{9mh9zDF&7tL);on2Gj=+4)l z(=0P6vb0|vY!#3BgDDV7~INQ1B ze_9zGJWKYJJt`a%)N7Im?8XXDek@G!cccyuLb69v!M@WoGGpQW0F2x)csmfgx5x8G z(!WbckG-$R``oVEh1Z5@|3A7Ec(AtPQ&{i-WD*8{}xmCm7ns zE6!`{*#yMyzQZdcqbNnDOr7syO;M$~C`HuJ80j{6_Ao(N^E2g6!QsJuUprSF9>AN(B0wl>1R9K*LVw&pkdpTQ4MCtc`F`m9fINst24h&9OV z9r-|GTWylo5o?_O4~z)Q%cPXCF)a8{Uxgv6{O}X)=x-R#AxgV zbq0pL;ReDaO-+yf1WK_{4Rxe>G7%V+zfc1ZFG`TArY&T^j(^S_*pAf?50!Onnc!OB z-@e?GTBcrNBD>XMm?^d?xQt^OklUShE&46ry`^m<)6qy06u+W7KsbTEGs&QdfQo;J zg2HP&}?=oqLBvn0?qe$V%CrW59mINu# z!Yp4~9jVIqUJL|~Iq3wgtiwncIg+;N`xfj+O%z4K#>~JkCb;;eAdMQ^{h#w70%cNpEFy{kS`^B9)gH!AKOg6Od(g}1`#4|gn z6VQ3mVP`87ea*+Dg`lHX#?fc~pG=zP5TVZCUn{o9V=+^g&tXGQ|I^q5J zw2gz}-Fy9#og|7Om2pMFl*$wyF_M9Cw&tgx$O1ENy`Q9u-TY(Z9;O#}&X$ZpEE`OY z&e27hJ6FdVsn#P0ka(#QA8;uh7+IB}L;{HW0oOujKLc2^)Ks@_;Fc z0Q5R~p@PvZ^MyVhhFP4{iQl-cO4iV!u}3>OI2`HlZDVLCiK7`PmqDBMifnXO7iWGs zYwF8H5XxWty(I>XoEV>;0cCAqr4!1j85ol-JH!(rn_y-^mrp=#emKR4_JpFDI=3zN zb{jF+?i8nFFA^lH~Z>DD)ct&2vnX$17o^DBVAx^(DXR%RhvKpkeW-1Vr|Y>y$~h&zi$p;$6QhIGmCyQD)lfLYv32#G-kZICOOP$z~@Z zJ}#ZwqFdX*ZxkyIQ!AO&L#nn>q8*LO(CfV}C;nR2bo zz2tAtik)jkO9?QeFR`cZ6G^w z!<8v8a?7<29iI?s;xjAkbuZ=RDm6NRUdJ_d+%oZ#Bfao7&0P<^P(Lh2fP9jh*d4Yl zEOOg>g};}elVp=g)9$s2{Zq2mGe6NOF0SJZm!X1-56|DQrqPn zr0)4c=D*@1l^EPCGrOc_k14-9PJ!iD4(3bY{pAX={L?p`?Ru6Xv^Lh;8w4(QC8w~Q z;lO=K_S|KMu+JhQb5<|=wnVg)qn6XM+QmmzBaaPb!$@!xDR#?jbQP@~z8uFcA8$~D z5Qj?P8|4k#sOhOkRq`01_14_sW{ej9Uepmt#ETkvz4%U!WsjFDy=z&}1jX#}32R-o z^ObX$XXCG;R;d@ptv|6AFu@gy64JAqIfB2^dsyd0@>)efvv&w0D7WF{(e|gTjt0kI zK$(Yvcv(-wm?^@;g&`sni(3);+mLxti9#f&eU{jg3G0!`hwyCKpmdsQoL6Mzz||hr z$77gT7SGW2Ok(DOYF8O@wvjYd!mIfX7xuyx@R3ca<>GXk(5e&R%@TQ5oaAWF~hOY+li zJvoBHB1lY{RsTbVhrp|l_eSh)532{(bobp$LKUVkPear#Tmr{)_T*2K!alE4>omPAbst{Bf)HAVI zly^mc5~A*cApz;3`P2l{2~VVCt;(z8x{uf)m_)*;6398M@R&?KD{L@-hPz@p`cpe7yyBe|b8a z-qsGKIcVbb>C$nNR%LtidAFNqC{<{}E&v6^jR^izI4YfAR`mbD5Uu+dm#OPIH!{sm z0Qg|;nc6ot(ozXsOmu1Nf3?Tvgl_e%-by5tm#Gu#9|2x*lCsD5IQH_UD;?PYWM1`d!gPY&5iyZMWp#sI3vn? z0}tU@0yHW6r3i(mb}0LX*|AAh{^Y(3Az@s!!I9#BB#5Nb z(FN>dhhkJOb^%AhSXh2oQ0;|UhO!IaJi#%4i~rL3kNHGNZ5{@_$>H;RiiGJ%Qz+tM z)AWm_lK3kQYrKxC)>c;3uVfs3gS6lYUyZuiO;p?S2&BR$;o*1E&MM@zbSAcV#d|YQ zX-~6KcNUG^|6&nlDt)BliBW02hJ$|#&{wM&4;JVug$VjrV3uIM%qbhuJZ7WAo@h%7 z7ut(+V4>mXgFD0(y`=@H@N+t@#C373+#yIdgqGDQ&ch#oH;m`gR=*tocyhvVi1~q} z0WY#Ri}R*IbHi%_Iv!s8?2`6S7Wy=viD(812i1^2zFQ)k6Y2w>bdfiiF|SyghqW7D z)i;4HQSTyIip&DLRxdNq=Wftz#;TAqpHPCjKxqz_%ENsXn)4o{F$O3uVOTZ$Xp2_K z{Rv0;&g1pa*Ra~3Bj?TGLC1M4&fuswk(Sw{sfRXc@tj@`d^2# zN2&#J*t-6v4zA5L?Lf=Gs7wqIGXY74CU0P0OlzBjQ)m<~^mlfpIZTuC!BI@fGa+@O zf!#S4XQJ8xS~rvLSi9_x7yNqGiUCh3@2kHK_))oEzZGsUDkw)U-wrp8^^6Oybm)~~ zDiTs@^vaf;;4LjKP+^d2Dtlo~#+h1(cK@(eoH$lD7ptz{5=p4UgSP1BF)SGY$v^2` zDVuvk^$b#w-(Z&sAx&yqoX2O~Nr8D^wg2T%RA&=pg^UetB&F1)dK9YO(uNxOX&JI8DiAAzuTCe-!IyY?+wH_54J|c-F#pBqgVTK6zHsij z3z~3D5E9Hir+Sr-lpW`P%}=VG39n8Yxn< z9=4$4O4B-1wg!b!ucixuC)^Am%cn&}dWN!!;wzF(ekC04yf@~lj7Wz!Y*}sky6R%H zUmasMko;-m|BMYPNZ<@;$MqTFvN)#`=e($>hMJ6IT@+6Ir&z^djl{j7`SltP`WMn; zgH~R#vgYhzJ%^>_AbJ46AVIE?DBw;5hE6CA0>Ip`3S8!tr2FaYP4!LV%veRaE07z$ z-J)?;TemwbO$I%En79p-Y}+xTC3*(xL6u&O5%lB4!&4#k5F869=0!h;Uw2-1ls*T4 zq-~^^?Y4P3RzRIM=DXxj(?Tfoq^W%`s1INx-lHEs#xcGf=l#$1rQS0V--FCz+2Dff zH;6^ud7zKDph0?ac4C9~MQM?lb|lVcZt$BVOBjV4LNVe7xYyWiGMaU^P^#^ZzB&Gy zL3&=k;w6QbzLy}>6E-vQ3k~KC-GalwtfetFel}Ck0z#~^GvN-kp@}X`fOn6^Ff@g6 z=cS-nE6eNeY}LTL9h7_(plt_x_6*3iYh9G9#(Jz!xVjgsS9>(DV3JN*AvF$l4#h{y zmr;4{Vas*K&__LeVM3!p|9%hYKY}*u;_nmtzQb7Z+eSbcrl|%Df~3pxT}=_Y$$YKV zl+C$l*W65g2p#4G6=Ur=xIbFrN$l!WJWnfFfzGz|7!%rCR=jyBOK~G6m0Q@#{m-#` zT(g}08NBYrmM3F2KFmqWt6+3)^tAC9?PsmL4q9<;l7zOPBHOOa}&%`}Uq# zTnN?b`vT*IV69Hq;iQ(O1l6B;}XC;?t-uwvF3}KsCMQTADG96raydJAm{|s64q?8kq^dEmy%9)~9 z!->0P_HiUw7h}&p3jd=FnN>X&$!YzN3#|<-Rsv(LU5soOhz z(AI=Ti4GVPg~s9sI4~tww`YC<=Rr`!zwcjn$hs;kmaIi5Ly_XbA4&_)IlDIyP%KXK;c@unhcpGygXH|Pv-?hSFSlQBYKToH^3V1;<+4_kthc-kKv&h$84h#ND7xe(Z8u`jX8-^U z7tn_g$fE)E;OLknBEVrCqcefdM3c5qJR8kMk%n?Lk%go>>8@t`adOBaz zsyq^1AC4q&*;wRrzhWU=VH8l9S&!jdg87OmPhStZ_=O7txJz;)>u$O zYF+%UnF7H|vm`&y*&J9j&@wlw1UDxa@}(%A+NU_F1j9eCE||iLb8@g9Wr(P8>?N@K zY(^f~;`qi@zTMu#@}!L1WbhDu0C3ESlk>HC4dvk(#HTVmp&ZM4`R5?DsFvWFh{61? zC>v@mmV-ke3j0dHp0a1hbqjF46njo%xw*xfztf|n%NemWbzadrk7+bUV8e35I)au zH5?I+NEEZUE+qFxf+N{N!EsdF6Jc8$40S7BKdoGCAtypMx%8aKK3u6%Ez%l85Q9FC zv3Ip~&YX6bHSHyqq&u0YvERPhR?LMwxVj$aZD3x)MH4dn+f!Rc)6PuqO^w7bEvPs| zx{}c11E9gabWtSBnYPc(8?J`-57d6~50!9rwl6~V^BWUVk_RUE?D5id1*-Qcj8yK9 zXHD@8&t<;O-F#U!)yqCr1G*-eAR?&ctJ&E8PKr;@x}f>R9^;Xw2f1yLrQR@6z!34s z486%78MS(6?fD;zJ=12@L4X_CI9%4ddf@Y5d^wa`PY{9Zh!hX{(6;67L2l_Ld)abf z$gk?Ypm7FoeKQGW@kRqLVqG)#^4g24_5x!?i_W$E;f8xb$q_z=iOEOgrqP*_0 zP+_uSMY_GZz8&@(k(O$BtW^}|@Y#+r``yva0OQq)-!`5BK9=`O+t3_nCxZ&nYAB6m zc)XgjFqsp2W|&96tdSJ}*LnbGlI9JC*&*1V-D2ID0(%MyaK?O%uE*R!iwiK7EB0p7 zm<(`JYuor-Bvde(D3WFvY0tW^z0}w80q`W|=vA}$9ow$MBcvm@?}BUj9F18zoaKb_ z^RCwJ%n@Dc#4&mub%8*!eRwor;_++aT&yfpSeo`<%YJ_Jz^`q1W{!0UqOcC_E2DN; z>tr(rwQ`tHF3yL_1&x*?FIAb?Of;(OW@uASXqk_9rF)3$b+VJFp#$SLT+z;swd5u} zF)doSSG!qKqB% zSJF|iIyVFOIc?!h38mf8MMi2QCjamE7g8syn<_ z#t_)5j7u%Ecw#eS!tXfU{Z4Bq>a7p)TF*GH zQ?lzY2sdx`C2)m3+Lc>o=IKL4*izX4lZ?29?_hSh;K9m6jcqkXt=iRx(n~L1ewS{c z@Jq?CSR#VnX@7#ub|lTO3{+pbd2j#TuQ?jc?x|1X%TwJpZnZ1IoP;|NZ(;q(zkJ1& zuc3l{kO7NMqKy%^Kfx8`4dyBR#Dk{ZZH}bd;?&Q&vcYI*a)3X|FD&oyb#QhjX7jG1 zxnq0IG#+jmvevCjb)mpgLsRx;Z$GmNno2?H>Fx&xIU-d;K)2ehN*Lpjf-^(IgH3>& zti&rnSeoTP91VPsW_)mPz}zo4Ybi36$2g)?rVO{vqi;liA7|)9YYQk%FxW4vRd&sR zDQr?^@Rux|KW7?F8f=y;(6%m>C7@|T6~>^CFz@glwF4d-Gm4x|pAh@l(JDay+)vO4!gtlmWl>AlcRu&e_ix(HAU-oEv#>iVP79Zl+ciieWW45f zp+`IqK^#nnn5#!_B+-8MH9X!bRVh}?o?Ik?$v$|#PR;WJV8dVY2p$R(X~cZ6PUJ?> zsY*{sfH#>G?&pLVQ0h=Uw3I`kB7f6(3jP3K`)U>83&*nLz@M}Y4LsQe!(6nM}OGqfEiqp>tFB?O`bLQGaW1UmMzJ^MRcd*JDUJRy`N+;3ffd&w2aQ(qr;$eVqytdzi(Y^lBRAPERGY?lD?ZWzsN54l z1kHk}H=R31Wu2FUp?9x}6PRerLvX;*)?v(d4dt6j9rJ5p4LXzUD7vVNx029Ib19qZ7uym#$v3_W$GWbE zu3hBtDx0R0lT)nRA78h`{uDnkR&8T<)5VbI#An8uNJu3=1dfj!@Xvh!h(ob=`b*Ol z{mX12O&t3)ZDq)|$M`rBsKMgl>)Enk-F>&fl1!Z_O@kLx&(6fObG2PmZC0gn9q4b0 zt|}3E!woWP$bhJUYF^Yx1Nh7Ap&Ib6^U=`G@eok z>)~RWH@>4-2$mF16ikoHFp?3<;<(xD(F$_{{8n60^qJG_PMz^WOdjAZ z$z)KY&O#DC09uqLt^AYH3{Trw?e7Pm z%qZ?Dil5SQ=hd>PrYzBZ<;yS3wN9nc9z;AI)2rUJef`?pVW|Fvg=rB+^(WBuL?(S1 zMou!zQ}1(GasVMQ(bg{311a&1%yuR@8q1N;Z znp(dxJB_4TngnP;|MS76Bg2FnSpCbX)8nn#PhZs{U+!zmOU;&AOx~9ydb!|t#S)1i zJgtD=pH zFYylXfFbp7Fb}h*dMgIu3e8`8+XU#4mvg=BlOV}9eD1p#0UE-ry&B1HB4@P+8TlR{ zO7@!JF3}UOW4~HmezPTx^WvVUq%<=v5YpxW^+C`XgGTbv&uT13ty)N0{ts6)0` zg652WMe1B4FBF4A`?1%67p7ss&`AUu?P}X~J3+h^`{my)%Y{7pKc>(zA}c@02f&hB zgJ54#<5I#7sj{0m7NqAWP1M*2@VzGx(G+a**WbkVsGMG%YQ!gB{+e@V^zK)_N|CUK{k*=ke z^@QoSBbFE!&7RR!=)dXwdt7#?zPd}Q(pXV$vdhFqY7gA^OG83A5|BKZ}N` z%!dTn^iwU*ABm&lNP!M@Dsp0=pr=!1)t=TC+kHF8uB@%?@sxbQGR5bXJDTMvXdMX4 z!H?R>zS^%7xmM0jHv0e=?ob63p&_FF6~|55k+L3;2~VotXqVZKeq$nI{zlD^tzZ!@ zui>4N<5|^=4L+$O#?@(t%=+ewEuPYZ^wc~e+vM~~mPYf?dwT2$; z)n8gA+v82`y5EOeCCr^^`8{9a**^b}i#`F<` zu?~Ex)F&DX*w92A{5gyMr+9ffh4nX*2&BGDf)y06ohmu0bZ40}P%{jq4Cy0bfDq3u zF2%&-oF><=<^S-kku0S@TQ%^Y$+Ylg77@}fL?J>*`Itjwb{4DLU-~snYp~}!4cn2;f zG0_Tp;hBaT7+vvcRlMD(7J4<@?FA^F!E)42j`* zHvNMIm+YNNH-?%Ryxy8w<_(qj3pa zE;=pYIj?X%aMe)qOPgmABeqB}HE2TSjUUB2zDtJDmZr6pUM&b5MYJjTOlR#b3cq6N zvuS`PeUKv54q;3e<9Fx@ep>dZHXO^4TX&(-gp?BVL8*y@xawnKh%_m3{v!O zkO{SHV(fmpy~Pgv9dV#1LfMc?e{tnBYlxd+2JqVP-6mWAJ~;*I_izo;C`0C+w7HDu zcg~n>D-cY`li0ELS229MeZN4hm5W$xgCiD0W+;6BV3qdg6aF8OF$~A8vIdo#$L3pHh?o9vH3g z{5217E^`qF%}OP%(W38bu%v0~E7x*`{5+^03!{*aZ@>x_WYQu*gcZkCj898n9S44S zLPx@!WheK~tx=%BTldQT(m-aQqF+Ntf)VBR;~qK0{?WfOz057d!oJZ5f6v-ix{BEE z9RN@{FS~L2N65E*{glc&I$-XwcT*JMErkIf8(9pxi_(Oaa~m^AF|fe|)@yL%B$t-TB+@b9B8- zho{EaR`eZlY2VHqpGmp{yIt=o>)UICbMsN6nc242B|V)mwPVD!gH_ALKRai6dG${I z2YpXXhD?I9QLc4iNi&DYyU}fOZ-W|A+pKl85SFXt!)o#|bH%Tu_ZRoSDoKHkQuRjv zFxY-ApD25Wny-N@i`c--d*pN!If1wY59sOX?ykQJcMBINc0_OXMz8|CxuIKVblJWc z^2q|qda`sk6Y24Z42YO%FYmt@=w2dJJLT$54`W8}sAhp2zQTC%1ZHv@JGi?_ zE1eLtu=FleIr=_LSm`A#hLJ3gg)k4oKh_{ryV3|jE#H|D&Jz6-$1)>&NoJ}!i|bXT zcmdBvNp*c`8c=;W2EvA3hx30|Mo~jNe;$iF47u^?2P`Hr2(KgWR*ER>?EuXKCf+Ir z3B-2vm9p64)r+JoMRlS&xoMvIRaWtlSJ#i4;K~(KO#!GMA%@k{TJgf1^sMSx*O_gq zOtdDSnDcjdYvq^;m}biUZT&zgt@6>=nw_|}mOQ~G#%Ap)VUc(;8y)I_tE($t?19?9 z!#@SEcm50{Y5nB{lySH+C#WZH&>v*)e)EMT54n9$cUp71a6U+_0-H-0yB zLC;SYkJB@2wIyk=oLg*o84~ZH9f)IDDY0}$4P0&3as;un{`_R{`IcRL{o_$WJoYGU zwoSJg@IL@q>PE_mE?DFPIae!!z<)sr+;T~HY?PT5FDKj>B7Kg#defO& z>`+_;1HK-u>fkLmT}>7Jtjiq5gV+=Bvf{!@9QtyF@wY-Hkn!igJAU;EpY<{Oc7eKs z3!s1W-SB{kn*T%KkAl{`5&~(kK&`{%!zipHR+4-7)lUYRB-Qa*VxPFMpx)auoNLcI zPFis8 zW^bW?g2SdhobP{RWRGte@wp^u_hcDp#$si!!c&Y;zDD6YlBM-J7&}%Rac4ZMfn>Nv znw!kidpg%s_A%+K!lEhEtzuU3uTmJaWu3>mAAlOw9rLl#?dyJD!Duv*&aLzK&=3ok zlGi%*YJ86AF<;24&gMq$mCvZJaM~O-cL$2_b*%7C zt>yaW;f5JDS_76bn=5u~p_28S70|$5C!aW>OELYojA-uSF-v0#K%G2tAMOFCD84M( z(Svgh4>Z68?V;t}{KeKV>{36FH%RtP105z0s7MI_V@ZZhV%n=`_TTBZFJcfnj^E>P z8@<-bwMO8x7sT|Y<65;w=+FYK~OD!;=k@921RKwt)_WaS#QJz8?868+8=c*fAJ%9iaMNrQqo^TGG0~d zWpX2YUIi`fxqy1Xrxo%-9^Ekv+MBb{q%$NB6H^%uqy2>VP;!fl-x)gx&1R39z$oPq z;xfXW6h?hMsZtHAr##y$F|_X69WjcF#Os@h)RFRkDh&aR5Y;bbwE(P^#xu@e?~Gl< z`H{Z6X|@beYc77!1VsPkp%6Mr&|rNzOK|-UCcsI5QzAZ6j6i)YKH=mQEu-x07<+-8 z5LLmUgNJYW(4CN(TaSF=dn47m7VP?Jn_c<0NaUeCi}7Q@HiP@N&ws+c{$32a`Wc^e zo@Pw?_V}hF7dkBGzhW5nxX5nQDv(yN{up+Q840G=eNC9M+5Jx|X3zHixh#wJzD$p$ zy)GJITN%iaouVwvOW~EL@C=?7o(LXtwx6#Dz&52aj*g|M76lBmm|lOI$exawXxYIu ztrTXt;9dGtW^IwlJm>S+Ovt4|$@gdb=%sUx;)iyX@c!gW8TUZ<^tjQt`n}n7J?YK))FyfmX-UL<-`q*}PAcJJaK@Nn=)3TW=qJ92Q4K!S z`x!_p$_tw68rfu!c`fe9WGUKnTbm^st`=Mfvc;Xqb9__b7tWvh0L(=_XjW>1!DZuF zQ!H&c=<*Rnwlg}cQa-FKw1ZQ7Bx^@$9APslpQY}U!j?HE`GG#K?s^F`+RS&Ic2{X- z1VRe?js^>a{^8xnb!|MsRdwXW4Kmjlg^`3on&#hx*2GZ$Q2<1%M*ucEgnzbZ)M zMwHcNMvZBy@jd_-RPXp))TUXkD+HR%>p>Xug1?+b^47bTu>%BsQa+QDTYqE*^g@ZY z3{lBRgY&?X8xU~46L6qJytpP)Hh)bYmtFqXBn^aL)6hVJ@-u@Fa z`Cs;J#AD*O`R=g?`r{$+T|8hG)U z%op(}D7KWDcxsfRC};Qs)1tpe?r#CU7Hn6}o=B79c z?-+oAT1D|5dW6@st@X{uY?`j^=|t22`jqKt0ijkyx1jBb{#4&_ zorOz)F8-Tfxs|z1qTnh=@rYH&_SMBO4BnDUVR12Yebo5+5-R=K2r4Mf;b}1+JQwCk z4#j%HmQ1l=f5$qTZv6m64m8K!h?Z`uU^cp2L_{P!KwUXXiSK9WW&skhbd5do;XCBx z8`01qe{>ksCa62^xG&S)_DS9LMuud@l-9C&mtC7feLnyN&Bn7tjBT6qb;DGBmMeB< z!(*!EfJ+t~y}f`**~eNf-G~1`s3G&ga0#!!ylRO?sHu9sm$fGqBPW5dOb)qRYxd0C zpxyS4G;SPUs#4Gyo`={7;WJCq^Di?9U0wOU;IGDWSnv|9m&O8xhj0WLk`=v=VzP`# zI-Me}2>m^TJ^<6^`_cOko4jeGj%KYWGTFUpLkp9;{mqs+ah|RdO_`bsO=gNflK9;A zwl9}dB{nckIY}?IHiXVp0DXewZD{3jlH7EE5_lUe4o=R=lifmvi&dG#pISv&klWap zJnHAtSaX@ooP>$(^7#xx>z0HVl-{J_c|{?CCISVhL*pP)2(P%pjh`FMG<^Sf1^iXQC!KH!aHh=hV> zLKskF#^IYlyG=-Q#Q{?Mr zpD#Goz=u=h_r^47HTd&zemydXW`zsGLM2QjI0q&0Go1F@yjZ8&J8P%g!+;@53 )d@x@=n>pwd* zsLH-Fq7gG6BY5oZdl0 zfKVS%KRRaHIK?4FJgiJyz65Yw0>w6sfwc>*m=A%yDOAZ?7u3ZBF#$D@SYN|WjWy9G zLu{CMY*%4%{?w|;F!L;@Z{2Isc1!lB>WO5n$YT93Fi={}W>e-4x2LP0C@i~c;c7jL zDJb%5qT5>qe@og`fx29G3l*T0^SlO@j^79~&t897F=_6k7cWv7~K}xUD)R z?1)fzB#9ntH$bQhF|fA3-$ch6Fhk3eNS?t8!^y{&BN>smsbIl}&!rx5AQwu)=*WgC zvn`e>5D4z208{6CR(y6^)&ewSlP*9`XDFY_?892q1K1W3v96Q#OgT~P;4;{BIL>|m z5J&H&AYQ<a7xJVVfQ7r&3n zs!AjomR)v%uD=0L>f|!s5q2J{4;tdF0IzI}Exp5_zvc0vxlHkj%0gb=yPI^ba;z!^ zT8A0OQKy-z8KcIw=!)_9`X@~32FT^7QaJ#Q@s{@ zF-{x_wles7kNzDiI`OL0r|n98$OrXkoOs5c*-zvBpNh=P4QTo+(6C-BCC^Zo`+=cI zdxB&C0E$I&^IL1hm1~aVa_}b;V>wp8scv?#@?lh*1cMY>u9b3lqO)@ApDyydByCv- zod8wGWuS7tQ|gN+bmH;&>$C~75l6Qcwg+COfN^=BMB(ycxaqoG<@wy+PbO@M$R6&V z+TUu6gJJhmmC+am3m+pYcF4$`(LN`$`->-x9JU!A%Ii(`XCGoV*@+kcA`$~z&aXuRA^N2=a?OQ@+M7R4yDvAC!hF|tgAaAYvjStdxE2Fa zcMWaQkn$PAv&Ct6yho2Ib=foKew>WWkwHEuBQiIt2+y|3aeJNLvXPIG;x*+Ew5N>; zeZXjk=XREM5&C?tGx>PxB;6YCKmwM&;6C~_d189TOTHML2+$=yU$vu}XwC=tqQ*>GUupA7<9-M+$9W;(~O8& zmOPdB(35frQlW3t!&=dYkcr%Al9!1f0wtI^ox)6T0-8x2*me7TgIY^iY^!Jj5buzdD6lrB>ULy}kgKaCeR$^C6{XP92%H%z+SGZ8)@&1>`!(tLi@2{%=0F^o) z^9sh#^3ku^Ub9-5el}7sJtChoyPvms?_xX{ez-uWki{4B;EFJ$4Tqtz(AG3D?X&MJ z>(TNN97f8g*Y=+*yQE*}{E;j~`iREUePmPPaTKrT7Ewo>^aU(NpSiqN&)m-Gc1#pF+EGQ{`&P1 z*?6ly;=Y*w0OJoCiJ$s+&Mc}LMdVniZ9ppoBpZG87RnN6fOw);Vtf0J$*miN_}xkWUgxCkH8rFdvl(xNCe* z?4_+TeLsyUlqTW7`A7c0(HW18;} zIE?Nwpav9{M%&ba`l0(O{{ZA4x%Eb#OoW8`p!nyCPB)Et1=7HWjn}NQl79;IUINZI(kG<9AhR;WrziuzAIzn0 z)9pMM`Pow>ncETAMmh_}aCZ+H(#Xj?bVH*Ya@V47=lf%T;V(< zivV;NG_`p)4FYz|TFE4Y4E8^7xr6$0u`_N-l36z}^zI%4-#RpMr~F7K5+B03-zUe( z$K|vPLC`!>1EWUb>ci}_8bDREI&wo9*_e`UPNs|!M7q@1C|Issvu!JvErOG+a+X9g5;w<+ zcx)8t>HZQe`)iadTs)4M5Xc(P!y-z{eG4fz)9J``nR>ae0VCgA@7cgDM3 zi-!`8_M&qC08uthHfPb{<0yQ&Y?WA5B&c8M^oA9v)ZWgZ_M+>Z&)b9rRRmW4zTlWR&C7a(-oW>xrD zikmFqWFZ}jsXyqrLld~)t@W=`yh+`C8UFyr4&sZ7;j`e$HiIiQfxq~KG3#Da&&2%E zKd19rSeT~DjE6}l#OI)nE<=n2?}9;>iY`I8JwDa7Vtg_pC2gEXF_(P`vc35nx$ruu z_HyF(BsT>6yGdTY0M!l|5iW=S09M0sx)+1qNZ6dG8J3>ll^Ibq7ISrPvcpO(m~wc^ zJrh=7@{}hYi#!(+o8AR_=@ybV^?iN9KbcA=P9J#=@aXI@&2rEI-mw1d~}8mziF_1RshZ_E*-x1wZ$^ zC`6_}8!hqSntX)DiA=LdY>1-gz#qHDpq37F3LjP|-XCb^%gnDIHpPx4OpM71ArdoY zWG&NoRr%7kWyDv=YNU?ATF=d1Vpup%1|XbV7O(?XIt}Ok+M1AT5&CiT;eVNt5*fiP3jITF zCdb5d`O;O(cv+9_8;CGJ*H;o*>@nQjfGSH@BaST;o#A#ZNq^`^W58@_XBre7N$Zh97)ukYd~e zbv~WnzJf5}s2d}Ttcy8v5H9KN+`R0FXTyu>85-=Qf*aCS#@`BS8x%k^wb3b?m}JJk zZmOJ}{oFFc3`}C(1N)IpX5KHYzDCqhhf}48lgQcDWbe-E`nfVAo;dx`7FgA8tUfpM zsQ&;8pc$QU@;M~GC2x`aQ|?TW2e}q99B`_Z-*OaKUi3J4+G6aW`76fftEpS{Yr7es zW{ViUIk;;z_4BI#0M*m4s-OEDhGJDLe&NsNyVHr}GxjWzzp|+qAXx8jAB$1G2-j4j z6bmh#mc~*?OZy!3#aNBZ#Qmo9xDOOpX`=ne&Ghj}39*nHDLsFPT7^dF_8pR^A(JGy zb29>Gg6!puiBoV$K7Mr6V$w=kCkxy>Q{eW@xrn4oGj3KITx{t3t9VJ0#c7_R#LZ1n5yQysLe{s{PH}*qqKMw8?*Ll9E2A=EF}em3(}2 zS$9Fr%C7kA$p|9q4up8to3A&;ZZVkJ%n#Ypxz+v!GNfx8Cfh&w{{Xt6lu-}^ECo=S z>O2iWDge=BMX+uid@3DZgKDFgZX-=kTD(xM9aU>w+N_sYHOrSw;z*Z_#bKr6U%*@U zRz2T&Uc(z&;zwjti{o;+Jjk%IfHKK@mNp8b^EbxB!k4nx!X`x>%3_}{8@BM~hmKqF z41Kw?Tnn)R$7lFJ+(+F>MkeC&`+Fkr;yEBwa{2P({X0zF!~S&y-HpivpZK~{qL@3f zgCbdxJc%XXc*yafeVmqRi89=Ejv@#VgWy{90sUz?`$peYBsPeDY;nUooWsSi*d+HP z8e42$v)8TcFGR_=g=B;lM|K_68$&Z)OLoRCAhQ~gu{{RWUO1Our8L$qBW>!`dux;D3 zY5eEzB8>=_N?SPa*Se&zT4B?Q`I!);&5=OQoa1WWtIA7@VGmL-tp49n{J! z9gC`&SXmd+2K$ePg3e9GVxmOK7rM2_T@IG>`wdu_w&-z;!Pyw?*j>5qFL~Hb zNYS+Xs!o(E8;SZO2jv&;n>j3RXPaOHZDuYn*352y6G%Y3QONfq9P)?a@n=!$$5fD9 zbyH+iW( zB9HoMGGP z5onI+hFuEx0UTdg(@PPSJXqf#L^_{nTmU}Gi`>UUzKfzYJ(*L<%E-yelO|>_JnUJ| z$4v*o4wP8HL@-n&?wWfrM}fs>^An}Zvg2bu-9nF3GM^$?1OA#rHeBW)KNV`j$RN4d zVojzkjUO_v;U2EL&Xu>3_cTsX`&?5%GZ0{z!H?k?UibtLMv>hcuU3q(Y^qMeV* zo*y@M737adldOXZ zB%?z%Cc|H4Lo2X&-a{iB1|BjXb1x)O$b<&;Gwbo`MURo3K_*8*Q$On%_a~H7k zpSF0sSn&khejaqjPBefPDT@^nf!6z3f!4auDgj|&Ln9W@1A!TmnXOx&z# z@KQvK60Sfh*B3+c($uxSN7@=i9Ou=``H1Bo_O(8s6|%8*7=7b&a23GJ%eZepilpW_+OFD#zp2>*Yj*^kl@~ z<<)GwjCAewGO$pjslJ|@*}nr;tR8H-WC&`Ndm2Ulr8a!%WoTnz0Jek1{{V$EoA!vJ zc$f}GL_UaPWk{TkMnv+Taz|_K_|c;Q!~m#dM9Gm>xa?+un>o$TR2^<_RGgeLEif@A zYFNAPIx+0Z#KuK{BduSdGvgTaYY%k4%jD&r|-1jwwzwl6g`!1?G{0 zpdCvw(zHnfR59+;s&(Uge*{TBJ_N>oQx6Vh$%Gs3d1Bf&_Af-x1xN0Pu6u=o>y zi8Yyv11aeA#`!2Sf!7AWngu2PbWLj9r zxo8V*zvEs;P}|jO9APGHrayWrnehE$#*%58hFCr}us?k&L1Iu1MC#vZWG9Wti<9Cx z4mvj8>AhAxH*I}Xf8NrIG4aSrGiWtVGwzdfJG5kQS$^E644yNJMV{JrBei&?QL{;>dHvkdcq#7TB4P$Ij*9GXT;m zuw5)&R>$uZ+zEgxY^a*V`z4t7hrha413}Q86PS9zJYU372W#s&la27Fn9OXi*r~<$m znL;k6yXF-Z6FZi+pz3IWlG5aLP^&Rvb5epNNkw6e2nDnrG$K}%LWehMg0cQzI+&o^ zSwR>!-*PI&3Ij)2yo>5#sqv{$uc3(w88m=(L9-!Frog5i#IElm&+i-#>7Db-EYk1`uYV{a~6>p z?bT9X#JUfOpPh@4GI8g4rW&-0e>bajoOp|i+M1jrAjCLP#nT69!kAb&9Q@+OHEets z!Ti!&*2njKw4Pz*Az16FT^Exj{M@;+S?;*A~aT%yP_NkcgE#ljc)Sc zHHZ2gUB3ZBylVscl|a!5Sr#^V7+5GI-~A?;XI83W5_7Vj^b?iH;@gzVgq1$-GH%yt zBuaJ@=E|*ak@BeXlo^QnI`h6FxJ=42>bi#`&u1?-`5JvMGLIW=Cqh85`_xyTs(@kZ z73gcm5fP8_>WAWYK4{w$%oj6`kSZqYu|V2|9y%Hu8iiw6vM~}G1ijsO^W))i@-6+Wyg8lr0zmW>yIaFvzZ!oG ziAo-Xe#Kn##+eTBNBN%hg<(SsNXS1za(;zBi$4u}5$ z3WUAIE;eRI8#YI`kC4YB7&BO1kH^GO#wd^y16`8_P_9MyZ4t?N9#M`5FB`SWBTVb7 z?*nNz>ETHVq6DB+LYT_F9To0QIdVA+eoSi8I7tn)+Q+5-6dI2hm?)>&4n4M9hxL*P zFmwBUISu26Y1v1B1>rXQE7JH`@{EtsVtK+0phsi_kW}I>sksi;<1-67yYG;Kp_FTL)~jAr z;-=gfP2Fu5>F)}NjV4hb8?f1JJaw)8R zRgw7@T1o03Gg1{Ls8~Y2ln3(a!lhOv*e@syeP1h76=AOH%$p?x%s2iMR*Dtjl{6}^ zcIjjLD(PjV>z60)FSxL?nhbGx=PT=5dTs}WW!sKo<$8>4=vcw^MdY3FgG~!GZZt1JVE*0idZh#s}J>u2K$EI2lWw$|epo zsUhQvSxxqbk%F&J@ZRRFI2gsxR5)abOWV_AD?eM9Ln+9Wm4?y_wTL}OUX|P; zHVciCIucesuP`lJHJ%aC&UCPMjIeS~{vMuHAzxLOBaqJZQlI~PlIoX*YeMIt2vil5< zTG#Tw%A^1T02N7n%8%TX{{R`&;%Z0>oU3^J*DH=cla%RhgjEeuJrPDlgQ}c&M{#Lv z`FhY1%<(d90H(7)AMPt>m9 zL8N%(__w#$@u8m|1Kluu-QA=66nTCB0Lo_n0R5<8Ay;Y$*KLi#zf)F*3?s6nyv4HI z1iqPjRE@r->S?1Cgl%Q3Wa(|TuHvBDwKK66=qtFW`4q8aA}Rj>5%^RXtHRJ0%aIn- zd)(9*D@Nd=l5$$>@gI1#Tm&mD peaG!wx4ZJpyqU#Q=*AmOjnuK!k@wctEC7pz<$Se=LY%z9;MzDdRbcP~b0qITHr7V5veHU1EVS%Oh-g}pBqu2|A zJywdnL}Ox0@%;}md7kh6zU$L#JpXggeaf6U^E>yPol9NKgS);V2tth{h_gtCXW}3H z`4Rav95P}Av34#&oQ6&F>k&VjAS%}qgwmB6#L+)z5CUQ|k&i<_Y$t+AVE8PP-7YeyZg?uf zM;ap_gPLS@SOIcd^fmLMJy&~ z60>p4B$vZ)8L^yPhjPlq9@w}<9_G?X!WU^RYGi<10`%)gG8%p{C=*S5Lke*nBD5($ zi}CPFAqvq>3DN`{Kf`_uqtJt+frv#7vG9)|_&B?Xv`61rsEh793;oL>7NOnc!i@9}shve2&-!W%~{j{9iiPt-}05$IzqMmZL~5g=MCu@wE6 zMDMmEH9{|BaTviai~JIdi8KxwT;CG(Y!~daV4nq_Stv6Lc}X0$LyN?hA8v4tEUc9BiQGNe*uGa*an z5DUptTzfaJqZa+|A~uk@xHre3^ND$6GBKY_CwAgEL3Co~VOoLn?Z`zFGmsO*Toea$V?;7<`VSts{8mX%@>O*9Nr$ z{TW7oI`AZZPpm>p&(u|5_)4Th7`c_ut8pd6&})!ejXHXe`wsnIi}X11Yf;a4(A}tW zEv|Pa(&Na_gncdg*@a%uMvoUGl|`Or?`&LSFM2%>SNIK5S>(TgeID++4|+|nC1Rka z5Ay4w*I`6CtZ4)kyv&fkKTL2es-PU1f8gvT=C269Kyi=EKdk?Vw##T~m2bpo2i z47!QC*M)w}z`eT()d#&0cl!oP_QHD^?(Yq#PH1tIxP{Uu(9%wny^Y)n^k4^cJ8~yb z3(e)*sHqQ14)qKo*N1-Xg1!me4(l%X4Wa&%xW;AZ=@4ebQRr334WUFI^fvgnBG-qx z@B?%(p@h-ijWtFdBmOh$*nsg{2Ym;*4Y&h)5q$(;EcX!#SS@H?d!UR0^7lZCyI2=h zkiQT6T_^?U2UzRxV>MJG)M34koC3~JQ1@_7ozTF!aj1t_gH#DE=n3RBu|BDSTX*5T zAGPS99R=j}LD6;IgTE@uYC%mxE5l0{XC_d756WsnDdBpwk=qTQyYNzmWk1SJz^;lj zyP<>8A5|zdoTsm7KkCvYK0jOQjdKlRQNO!^O05m;QpJ1dnqR!1w&!CME zrEG?J3~hkFQt-Wl++HXH_{gCTMkqnA-%8LMalM+v3*sf#LSsZ1rcke-O%N}bVqJOx zZHD#V0_iKnxu&pN!u}lE3|1@REz}!CE0%~EeuaJuB3psH?}*>fo;~8%!_dDYXOF1H z0X4oy8+63Mfc}7-G1d@g;uEYN2^X~N3iTe^1Xfq1pK;C&>$W@M;m;`J0d0)zVj%+XCjN%{3(vVPR;s^H)89y4k^c)`AK}45z3)-e-{_4eR`vH# zAJM80y#9p!GwSe!*9YYOhVq6F76tMP;)Vds1d=33F){$TAYuj-LDG>*DDegTA;>^n zjX%^M&@PBf{Gn#R#{;t{6r)L!zhE>2Fmf+Z;uWqp5P6b(gn@&ndGmy)8Xjz8_evtuyHXzeuerSHanbqg4ys5c^I=H8gumtbPQ$*t-m23 zBWB=1KZgDmF$WLv-EYKq&<==TV`2S`pzRLOzoEwOV0Xls-%Ont|yOIA1S_o!&;OR;PffS)VkxN9Zx(~C!3%O)O zP)V@+Lnk7a1lo8bmxA~;4XFz9$vBe^Z-1Q0fHf7VE3P{g5lt56x-0V8(5a|H6*Njh z)TV>f19=^^lr;SeIG}7Q{8f>2fQN|4MOh`3&c?H!3FQuk??Fx;<-FjR1fLvOy~^R#54l~)*9rSiZp1oG^J_2Sxk6}p z$quo-~zC0K(yU}HkJBG-YZO&@2DK(#{~p+qMlfeNGtkgq_*)rs>)&^@qs zPLuQCbWG5PHNY78ezb4|wYVVH0o4Xy7v$*}@hEC>hP@l{*KwrIu(zS*4%iREuN!N8 zC)5F)>qG81SZ|Fr@C4$60VoSR)hCe~M5=>49Xp;vf3%_7;X%jv2GFOGI|&aX=wbBp z6iV*Lc%8tAR>PZ#+yJh(9H|BJ;s-3JTg2T}GcY*z3Y!d}Q3qx#Hw3MP z+&S2X(H8^sZUFr+!I&H2Oa=O1iPQ)_mC(bOzn19RMbuh{wlvV^Gq~IJu(L29F2Y)i z)D34EU~R!%&;&0VF*7bf?SXE_yXhsQbObemchSqx@?ihSv|Sw~4iTd$F#=@<-3ady z)JGu_YC&!k^=m*kAUBFDKaAW3%(oV#y2!VnM;CCOUd=~QatwVt4EsgmDn`x<{dYim z7I}MkIH14RpdHY=!$_~gOC5H5lpRAG^3aFS%Q4inkX%eIC2t@Oy-6%3myip|n@~6K z-nbCCThsO>q$Ifrb~+|q3jakU9gW;2BvEn^c@MG4UA#*zz?u7q?{457cp*7|y3YHA z1k^(E!L)rLyd_}2g$Qgh{3XacAoDodS`2*`b&lixbso-4AX>YR_viWK-03fc@6tgT>FygYrl!LClnC|9VfkoazrffE7q0Y zkUHWGI7i1K zksvdLGXbb)BlK^mD**L`LBB_iUi|}b{yp+h=p_ebpJ5e`f{K9t12r*_3x@SG>f|8j z1nV>O`6u+u5i!v3=&20GM;Q^6Jl2A($SET-`hs;z1`*~a*a=b|HWi#p$NKd*N~)kg zze6jc9u?&Og#I0RD{^#Pm57$;UB743u@$}hCxa-3Ape45piTm#E)OM*{yf8(w^(=S zNI(oR%1n|sy(ZIf&kRz4bvqWZ%N+6>=mg|uBW{>O3eg51>-SuE39-Hvk)z|1Y(!PF$mQryHga>J zW|7%gQ{%8Bv10lfEQek}=3sr! zCB7%O;EF53`Z8iO`4hPjyEZ8(O;cqnS&h41PDtaf%U}*9!)qS2G+Bjus)=o=ht}0- zYYWP5hOR`NTcB2}F;h#3otUY+$P(x*Vi)u>%##x6rLfXE138*1v`+@^%r0nI zjAuUdV%)E_WGu=S6W^fhPWTjJ%y+>18U`ADdepTMectYp7}Eox*V zYHWs8fm9=#p+jL)z#9R*>P5n?2LBd3$u)#Jo@9B{-vX^ns-tfl*jvDyw>Z}X0=2;Y z2Xr&)k3>E1!7mPa5CI=$@&kGtiWU@6y8_y+gH|Q?qBSR+sX;ADsM85Ph|1ujNUp&i z$4opg)3X(N&Gd7P=LdULGw}@01~*niuOu{}=a7pKZ?4B2qo3s!(2H;%X^JevZVY~9 zz`d4$UW6QdcjuAcV9#ScR>lSJp8>T2&&4d{NVK&9^PgtOH`uS)03Vtm>#>ve4f;So z4eOxSgG)3;zC~O3O#)A;2Du9M)r1zQ2~F?QttPZdE$G$g<@f0498w$gtie7RO~B>k z0`zA+SV6OHF|2DaCzs>Q8eG@nX;!Qt*TOoJpcyg~K5J3u_qblVPI{*fZGsz1U|k1R zXrLD>U|&bjvvvtd?^u$=emu#Ga9#9n9!-tau>XME{%KbHFumVNQ)4xJ#IXBBb6`Ej zgoLK~2}WQ{2)v!q44Fw=q1VGp3_i1_IkSPB1wEVC0RPn(w{MZ7qmD%wpYNa-ll!5? zv9C9m*hK1p3Ui_76H?GWlJriX1o0!ZF6{JfDoqnzav{cN0iJi7tP7zQL(^oHgj#}U z{CiyGQh3iJ^x&<7`@00ds*BPW5oE{%HVz1VrAKJ-#(36$M} z(h|^12;FHGiPIj03_P}@tT^hV>9ZAO7sHDtmpU-#2m=CisPrfI1VV-DXtXAQSCiE`oS-4A@P=>f) z-$L)lc&& z4jvN-#(!=?vY9_?iLbLbgu( zyH5LGMhtz4a3fiyJ4r|Wmk1W=0euO2lyHakB*$PKCG24JBhl=X#`O^%|@5rR$n;YQok8#)#oMAkyaQ3sHE1?`0?7+_Z#YK;lObd%c@ggz=ZFw8 z82TJWK<O8H*@@jxKm)9C9>|Hj#W-<6zr_Tntn!o(4Md5s>j@!ZZt3l0q_(Ou`Dhocw`I zCPicl(&cy(Q=k*4*|7>L6?!GCE8v@m9M!l~CHDSLD&zAHsGM7wJ#hM5*8s(CFdyQE`bEL~)*#VaYzl z%(}z9jCO~9mrR9Q9&uXtxLnoCv5Bq^2=7hDq678IbVLe`vSxeQQ~l*n$GYu3&hgxm zCgr_7*C=>ib-dl`g0u*t$TMspvs$$}4-@kaJ(|_)b!{)lsBLqC zSbd)MqNu{6?*n`A3md9qB6)3Sr1!PFm{iSVZ$1>O;6R8fglaCD1Vc4?KNP28Z>lFDJHWz}cQer#_bm8Vg)?EF zxle&*CFF<7=J=K6M&lzX*OQdcJuy>*dn3 zG1x)oT~_}bH@W3g%%t3>h)J#Y(XW;6M}HE3Y5j5MxcMKk_icVHd1d!f?~~~Z*-u8V zy+0T}xBYbRsrr|eH}YTF-);Y^^NrM(wpY~KsyCW%tN&1V-1ue2WbOOnH;EHlpQcPn zKMtH^eTo^^_$6fA>16)3-OW`~^V$mA)GJ#$_7_$(NC~QruF3BjGLEgizBs(<)RNBn z9{po=efp<5hExYTMwN0~#>t`D)7rIdlj4=Pk0=#?EZI~!QS4lFrol(_yzkqLkxq?* zflmA8vwiw`*L$TBj$KJDxpHex_O)t+#r1xwalr zs8d$QxlVON-=*3FKU3+vQ&e{JS*kJaCe;#in<|UGNaeol_@w)&KN}UFIh(H>~ywOIbmSuGG^v4TW=zv)C`6dD-)~&H3{zojg_8U zFw6}M%VlbB4g&z4f?<_l*hQT{pL8%R5)2Cj z!|K4WG8YrwCNNACpQFtVZ49@HC`e1@2{r4$u%lpD0vN`3&lI?XBouhNr-umaBFm~> zQ|9GaB*(|Qh8{c}dqMkn%)8VA!6b1s;D&FylmN?(Rr++j~0JZtn?> z)8=$3=WTgLKJ#kgO@Am%3nGd=gJ-7NCQGEN8cU|;w3(dID${+Kn09Dt))CKZdjr8R zj#>A978rJLe^sF^7#0SGbvT^X&Q=~|@U4fe*kD)!PpI#g$TvBhoR`I2U8%}lR z`C!;U>hop3<@J&S={L6sk`tUn$wKvn%w)OX=JfR`HR-$TiVGIGl_g}IPrkS6DsRjr zW^1ov6d0CQY!w_1h82Ke95AdD3@blvCe;XrWi)6w7WYu9A-$wEv!4n|?O*0wnQP8& z0mJ&Tz1+{Vn5%aU+HY+F!y>^j4j7g*tSdbVhTSM+ePx*EwrVh}4h%cd=J!qQISHlw zd&G|oU|7!25}Slzn9C{6 z!OxSQZN8lOa_MmNAH=KJ%j%zaU>J8&?qm3b*6-ZcN_V)Q#GhMz*m>XVbL<`KUrS!t zzSR3@{6hAF;VbXo^`F~*JOG9@fnjZ6*by+Sc7kwuX$hmi*RD= zW6_lKRKO(bWAwPj>)?k@$MUZ3t_Q=K3tH7nn%np1RMbmx!LY2(A>)YJYl{P_hL?2I zb?YCk?bRP@A5=ZjKB|-sh7DAo(ynZs5HAD63O|;}l!IaUXX<@~U|0$mmNRg~zVS@2 ze%AHg%{(xyaOBpU^lRtVRX)j{W*BEY#h-IGr!@3~FeCI`&WcJfEcOA%vKysOwZS_b%1QzfC3b zhN%?p8LFChgQ|0nqz%oU2uJ4z)BPEi>N=O|7R;*9tcln@LHStO?7*0oh- zU6+wcjf2fV?e)$9bF=>#Ci^eLiWq@&x|o47SzuT$80HOz)q!Dy`ceF|77;sJn6@gt z`gSgt4+W@J7)vPC93a%P!LST4ED8(@1jB5=uv9S22Mmh^!^{t>g)_h~k=^nwL10+= zAuTN)7?z^y6jrF_$U3t>&^sOs^JAH$_-t)vXhXPOWPVy~ zY=UOFxw}c1S?Io~$mD%t?im8hkobbbU|57*L|KumXkLm%Qhbza$ib5_7qok#-=(JW zCx|Zp8@>X^@mUpzt|?}@O$oXKpM_S(wrRG+^iY0@=S6I<^0089LS~_TH>29Fm%&lI z?coE4xq@LquJy_z*DmBUOl{=DZx%W)00T_1Z$8;%knS3M0yxMrp?~Bqr zh*D3_nd!E%3o=yI7pLXa8K2S0(S4A}H=CN(>~U?c3mE2isC&N^7^b3KRj6;+y~G0y zYqUS5od|}7S`Aq-z%ULkLEj}Y&cq}+H!E;Wm1^L!;@wsoc%}^BYw2ElPP&C@^{Cke z4yTFul~l23i%XnChYbr18w$B=-KZbJYBTqA>2?e-i1w&=<%407)#V%eMbDQxSJX-N zr`^~RnH=xLOHNSdW+usbHm9xUgJB0t@)y~b$7h{Nytis3cFZJ5x>qsqh;vkWv2`%J z**q^@CxhXC;)HLSUud3#o2Js8$g#iWjbVJ8uX^&$={1H%%)uqrStwmLBHQQ%vJV z?R%pq>R%e)%71AA!`i{H=2z6~@;92VEB;Izulq9Ne%1TpR|(@=r;?_mC;TT_A2{P0 zFM}RB_2ypPU0FFbuP(nuJr4{^DX)_Xs_I{p+&O5>uDvSBsv26-Qro59Q{AI~qIFQU zzx9feu=yc*ylPmksAWRD5Dd!&!-~PMjI;GVycfOS#*ZA)NCm@cz_1iBEd2OLYBm^_ z1csG9&E8vuI4opRCqRc__$#z9}EkK>!)G`!;~=LEESO4M}>o7T;U*9+4e^H@%61LEipzaC%)S~ zu;|w#1GWbLF--1XhGl_aZHz#fWH2n%!+tFT3@g(Mi8-nl#UD10*jdN0Rq4>Pb2)Ds zpjrrqm4aa+C4wbXmGBOrR(g7XVF%n*m&P-+w=%%6P<>rDT`|Mi{EwMa4;+% z3`=sI60`<93oVUl)vS;1p&)|XEC9oz+d_UQ0mH(XZ1C`G=j?O+ItSEZ>$qvU;Ka+kqFd@AO`Iztw$i`; zSmP_|Rp}eem*syZKB)OJ<4)!K;+OH`TgMZpr0@Gpvff9HYdi~h=yW9K>h9u-sd-g- z&Fbk*ZTkgam}gbr8h+=1v1{F!q^$o|S9x$Ktl z`8i-%)~Ax~`CwS`*?M0N7#4Hoh(^L-hkg0!Uj2mYJ)8Z&u++;p=kUR>A~38H3}a7; z{Cyu}mwJ8{uJHUlXGIAZ7Bs=JXa>WW!{s)HSF5vqPPY47Ug(K1d)h7;0)~b5^swC? z9G$^BeLAB2=tJ?Y6E}8LjEzYDm{ziMZ&JGYk1+)yOUsg%uPfoHEXs~6o7odOXKtsz zHre7=He>SO#_t{&s1SGb^V1`*Q6-!^RAJmLDi{n4=bomrW3N+r+?!Ma_dFF9Hw2cA zP%JPk6by?_I76|Ldnw=e<5ZAvfMRsMP|ka~RfV_TNag$Np9b!3IWpkx^dG}^|I4rp zFsua(O9aD2VAx?WtON|}*Nx&2fnl{^SevfB%Q=$()%=4JO2tNmTB0JsidT{FW`kjF zV3*c0{?S{ftc8paof~G7ByO^vGa^3vVf z>-eU|?6GvqJp*noV3=OeU|KA{g31EJg1|6Kc3)tB&>iavy%4uLFsu~}^Yf@_~dH%%Y-J@<_^!Eo?9>BspF^01P_}hJ{zB?otE8j4A|K#}n?YI>#L~ao*Oi z$O6L>z%XYpEUD7Sh6RSDfngb7SV^mq8W#*p2E**SNNb&5ji4|vEGO53U0G!QAHy2K zure^rrOhCSb^L&292hoIz)rdbhK+$?Hyb=;^GkiBi(0_2c0ZZy(-KPjpNSs}&JqqW zHzhXtUtPILZ%AwTp_~6Otn>e3SRNS01;dI9;}gSb0`eaCy;V38^oje>?~3gN|D94- z+-Gtsaa8K4_kH$=&qvk84uTt`#yC#?)5BqD&d**Q0mL2ol&2Or<_aFd+wy{ z?-7%7zXwh3c@zFxX*A-K__*1JoukH|xg+LpOC~H|>c2I7A^S$>mG|rY&u!o8<6W{A z3~L0#TEMXS*VN0BH<~X>|4h7J{bk0_pRK%Jz`wrssBT#j_hl@ zi^`|wRpvISr-5N{Wwlc7RlRF?U>Fk&v!NMQbwt0jvP-|Oc|f(R`HB*UW?1=eE|32hw&(w5nD8sZ9GJ|7#d@JJePGxi7*+#@ zwSr-1!LVE~tPl(nf?<3x%tw8trz;qy2Zr&$Fb5mM^gu976AUv3!=i1LZ*c{~_+VHN z7#0nNrKmZvPJm%yS{7_3%Y2$)Ii{vADPUMJ;;>*a%s8wrd=ED_Eg)9ll7~2~=}?%0 z4;aRBPZMZ|@e2$+QbN4#!^+aYFfJJ8>lSpdn{!^fk@GH<2Zq(NulojoVHsc;-}O;K zy&ui6X3aWIx29v#S&@TxX_&iDJ~Pd>lTl#P&2U%z+0#nrKIeeil~^aYdlKqWgFIE; z3LOR*wrXcrs>ujg03t#>*@(OS2&=J#A)W+xjoaR{cpLD?1Mi zivz;~%%|p;v##$oFl?8y2E)|AuyqyN&PSFfARO5hQN!^r&O_!MUelRSwXPIv{&9K6M7-h+}Jl$6^06 ztcYeQUjrtYuR~uejf8&^ziawo=cR+6xfjgd zmfbghss2j;rR+=X*WS;xp4-0CeM)_)2E*!p+x}N07*-306}@qOQT%7(y~-~$ZkN3; ze#V>FdOv)~{jX8jslHP90g-b{B$SRXL67sg14E3}by|7^7}f(z<$JNn_;^ z{jLfytO*Qjx}p>Xh8-;%l*?#-I6n^z%l}lmy$B2wovrhY0mEWO|B1sY5QhnAhMl;K zIP4Z3hs`c~nv+xyh6Owp`TLJ&m$Ls7uJHYsyQ1=QyiVvNjs^C^n2a-JHikFAu)#Ke zi%UHb7SG!y!)S)}cC+2b5r@$X>jT4%-PloeWkh;?M)6WvQ5v-_Ea) z9S@r$-VcU#`IpXrX|_@FnX$@uj}IJ72E+2fuv{?A4-5+e!_s1|Q<-2G4-5+f!;--; zCKwg~hDCs3OfbwN;TYv7JV~WCyi}ICEv>S~#!yAeQ)(bbbYx&{@P7=G|CeED%%C|< zh{NJ7Ld22~huMQ+Mf#yJJ$RQKFpu0>#jsOp2E$H+VL4z}0T>n!hQ)zl-iX6oT=m!M zx~r~_1;gyYFnonTlU7#72yAZyq+eArG8XQkp@lIQw3p~ml7NHMorvla|H42Ic(VJzQ# zW~yB$BOeTNRl4J8q5FVis6HBd7z|U98saJHR_Yv9ZrQS8S5K&9MP!wxA6)1Lh* zCa0JDpix`6)v$NTL4|&1DH!IbH00!DJ!qk8b7`>;7-kNJsify**srNmby!xhTV+kW zse#{Ey78VNHwQ3mf5>187Ys`W!`O%0OAdiyonTm*eyCfmnU`iW80OG|wK*wb$V!+gN7ATZ1i40C8nSs#WtOtn0Bks%n?C%7kdDr(HcVcW53hQ$}#1T&j0 z(u81`+knlIG%ze33@dIiQi}q^61z1ttidqtUd_nhp5?w-U|2aA)`oY<ST5o)4&t!F!uYt*ngHY5KEEn72Yu$=_P%0$KjxiMJMWJf5BX!8J3Sxx zo%Q;}8{vNzKan=R`e)B)tZp#uVcherCq*yUw}N4lVV9}5;Zw42f+yu)`%N-m1ix0e z81_m0hRMgBXAb2`XzW=W87!lsV(ceQbGBnd6i&TN@Lr8 z9^x=JFf0~vm=hRgRr8f$OA;8C4~7NM42!4%!}8J*pSWaMcv#h% zg)4YQCGBxwaMPZBEpUxXCmU9uVsb4WfXvh^tobM-A?itsL(i+4$9<-49{dJj1U)L5)N z>%N5IkEeJFx>Y)M%B@?L%l4%zC|u;q>^sHTy)joxert)5?!4A`sTGxJCPb~!SS;U~ zC6TAPVL@J6#=)~puKswUujQlpMea8hbPSJ3nVa?=P&PfYW9CvF-34 zU!_w{hpmS!bZkZzd&hxcA}}l?C&PM8gNF68s@)1}gr@rbSJMy554+iE_N!@!45dV2 zKP=Uw+1}@HM~SI_e_%_%J$A7{s9Tk}mu7=wkb#$HJv$T(^TB>tQ__pshbrnNo0D(K zdWi&10eF{WXC=znx1_EQ!G4%(dEO$!N+yq< zv0&JF?1znDPyZ4aHU@^}ma?M@ngeEbVm~Ym42!-^{FnuXMct6tknP6XHU^uu;$76zYQih`PcWv%Vemn_>&^&lz{3$8?)K z9{LSp82%<7LoY?(?n3lU}WFjQW$j8!$pW3w$K|lszT?*mH_G z>GwwAbjWA%a|i!W>NEO_+iUuJ*#(nd)NgA2B6nT=t>>89YwH^tFQ~r@!LX8d+y5>H z!-`%}&$7U<9K1`Ge3^5*@cj=DBPNw^Mn96is^32hOIpGHl>dF@XQ58m6Rt(ulO!hNT)B}_Zk=_W)mmQL!4~CWn z_VtvwPaFrs&ZHLgj*GV)y|ttK%Bb`jQJLiS)J*kFG5KNQC8C8Z%fPT~UJ213vHZKf zU^%ig!1B9a?AI-RZLK`_xrIqQ_QNtccc~2CZOWTBMEOOZrjlcC;P=T}6c>B?LHuDV zA^HmC#P6rr@xxSz@GRvd>ZRO-$0_f`0cwf)pUN|1wyP|9ZJ<)NaQi^tgPwsaVgE5~ z-@gn?b`F|TgKsN%Rv}{X_&&_e#d%?lVQ5U70f*mf8M(96*-oWa-`?doewR$gw-wp= zwt|Q6!=mxKqzAqaW4a*@^Hg2WaR$Te4Aa?0U>E~&n6_AM1orfq_+2vETwBXepBWiJ zF~brlCsvnEuy>%21=|q}Gqxvl%sVB-{cu>Bkd-no+&U@7%RT5|L&OF7a_(;nIKm0CkbTqJn>ju! z(fpbsm-U2S9Pm6cAMcVC*blQ8ofX;omWH{q^O;HZos2BoZU$2o4ATe0G{$1>-0w;3 z+x!p1Y?NAMm+$UNRaCsl-KKDg*tIcFYBw0BIlnc2!^)~O1ES7T9}Hv6&sSZuFh3{N z_zaU{@G#NG>e2js4=~KAL(1$B7eE!3GSoy}a0q zAFprrm0{*!nAy^*-STS^P4xrD(huw%_OR3HQ_~I|Oo|ij=yQXwwL(=mNhbrqN847R!8hT-JYN^6Du&x^@vLp4-9ic9LC3iS(*wML& z!`i^G6flefhGpPgG6D?q{$C6$1;d)LAJzeebzx7x8F5%97#7hM{6kJrd|WUXcG~T? zq>7L~qJ|k`?6J^yij9cFu7!>oRJxCsb-RD&o#B2KKbrVZ>J;<2Yn8{#@atjEm5(O8 zSX;~agBHFNi18>v@)ZfY< zSAOT-uk?m}QuUR~U#YKszGS}L@ptwsgTK>WxI9gI&3KmbS@;DqvM z_|(<`=STi`SreKUnUk!BtQ)(t!LX9tM)gGOhjGhmrCh3e*KoQ9j1Sk3N?O(qEUCe} zWGmvZHZZISaad@}1F{ngOF|r$b-NS$VddNNz%b$YdhCbwf6E!`)QAJaioh_z&A!cE zCr3m{U|1{|R`e_v`(ZiT1D>Y%`As4Y`;xT6_fy{Y<)0IDLcp-5Cy7ianqjxAb3BLt zhhf2BSU`VI32Wl`OqX+~Q}YprH6soyxpGB%9T>I)48xv&*t{YztQZW-1jBkGmw($G zB1g0bSk8H6zfR(Xjq*27EKK6?yJR}{^i#2??-e&lv13kCLi{e7jNc`rqR&$S{2_`T zGeS8E`mm2bLI8ZR>6)_{o@Og8ZNV^e6BnVYv2L!H?dAYshPGK$Rruc6oOE^^ z-zCG!-KxqWOu>^Q-0R|%D%c;%%Qy5Eg?KoImL;;1=S5fxW4zr157vd9lP`;TD;b^q zfXw&1?(O4ze^#Q!7#KFiFARDbkss3thIMK>h)#>_d`rUI{PLK|4jqhayidBQ{p@LB zaGztOc_r4tEyFw|?1$MXHp{M*?@3irI?vsqI3%`nQ?8Vpbg_}z{FeB2t18p9 ziCRx>u{>*g@jTU4i}P|)O-?a6hW8VFttaN^dtOt}GiukhFzY^`YIbVL+WobK+Yj_C zIiT3Tr_g?IkFV;WlcVi`g`VBT#om0rzC}v3iCTJAhUw}$4U?snyX6pv83tZSH`zDn zVXxh*rW1A&3@fKnJR9tNoLWl`VK=PY?`}zfQLtONrKe^sBf!ARyM`T7k*n-eQw)YZ z*;ug=a+kaK7itq-Xc?V>7j79FUJ%WCJ|(LLfnYGNsK6mghy zR9uO5Ftf!R3^PO=W(|fpf?BpEjmSXk>8Ifv*CPBbS)c3a z-qmtQy=u@F40G7%jNc{Q@VjL6kdE}J0^g)_MXt_gYyHJ9*1LmYKGC@?eluI!*wYN- z;$4zvSR~#heXt*<|8+mCwBE_Isft0hxB6`Etn%I0lRnDe`& zlCVz_efDGQO98(oHpYFNGvaqerO4x9c8mL`S;LVZ#E%N@ZSHq`?qA~hBJE1RQ{|)l zXB(@zpJtqQzU*?-c}o7O)0EGM{gm$&=U)>00zQh@fnf#4U!n@l-sd(Ly`@@If0b`g z`rW-&=`FiS`4^Wz<6ioHiGRK0i|~cYUvWZQQR zEj>w-sN6h{JNfFQfOvo^Zf0yi1-hwK;IR5)5ngw;bt?uzJ}h z8S-EN4C_K1c66rex#85jzWd@$$FA=vzH(W5qo`DJmndEDr|5#v`T5BUSLXAS=cn@g z$j-t*wW_umCVjhp8HFsw0-maloEF7#3@xsTFA8 z6v@$a3QN>H%<9q&@D9;6V>^2tT4`--k(O>@;*#iQtefX;vpGnZu5H1o3RjHHPWR`> zxnx?gtg0TJ1bSfDL7(IhFUOFwB=@9wkv0i2z8(Q!*jf4Vm^YHKqWfUj zHE*`_y;;c?qlz)^ll;QqClLj)4VsnFM>HKpr$i3y;xKo=T&C!7J0r*b2*XY7mZ!DB zU5>HljagI+WS)k_|dFg|Y{`ml`Yf z?kRFODetE`;KZ;yVPR;0VX-e5W|hJ<(MZqCGX9}fGD7-4`lfrWfN{LhV&yJUKY)xJt3WjM`WG^zV;$?Mke%5biUoo+e?pJUJ!}$14 z-x&;x2gBS4td@v|4=+nOWh#~5YM>Sgh9&f8#o^qM}RP|Wg6EN(Z>ceoFLl_PxY6`$s&+RWJBWC?9d03clbH zhg->HUbf<0^2D;B{>~DQiM|=Eb3+mNefPkyYly=xNpBIANbX5WQ`^QZ3|)|& zynJOgPemdr&TmFrGMIJG{Gfnyh02J&Nu}|xQ@;EYQ~>t% zlj6oGQOq@p8+(Qd7M!HwV=q!nER22$C#lfHVTzg3Nx3H?E=xW}eKRssW!>zZDstWj zRa*P0f#JlX17^wZ^#5U4z%;`W!7#`FABJUuVYy(K01V@SVZLCP8yI$Anqk^o z9ltV67YsY}m0@mfgcJ`93!)i@I4lVa>juL@!7vvuvz4}BSO(&-B${DfHk*UNFiTE# zxN=N(dH@)f^_5{hoP@pZV3>X+ufW(lIm8twitVK!ixDHz58!{os*O1DhMR=!Dfl~UIN z4KQrC@_^X(AG3AkWD1S;&2Nfdy|z3>k*M}m6w76seVe1bY{@E7*vl+(7?2MD!<@me19le{v%xTH#9>-#nOR1wYBlwj zl<(WQF5c7_46{%;>A~3Ft!4m*alx=OFwCFPVq*!0mH*2y%YPW=`@b001cq5uS4uVs z$7FrMu;8x@a{|M{z%VT^%;YP>I>0dVpZXO%@SQ%*FqeNBhVS%KXoj5z!`ckgqQEdA z7-kQK8T4yJhWyL0;;#&A{U3(8fno0W#`S*~M#o|QZ-%Ae`!JeeSzj4O|1N0+hM9w5 zWer~$)@pZu2!=I*VZ#ys zFsug*D+a?xz_8hSHQ3fVAv%vtQQQc1jDkyuv{>#8Vsui!z#eA zQZTHVW*Fy%_ZOOBabOr1aTxc17f??IwZTc<$4~E?(k5ruek6}5ViV=tX!!YjuFwDN_Oc&y?uFbyxi(!S& zvXba;Txo{+Ph?_GKLLCC*(*xHu+Ya*7L7E+&V6Or&{u}N`2S#7|6TE>jJ)rV*k)j_4-+_l*_|F(t7tQ%$r^ zaF5p7ySu&ny*?pO+vj;=7Z@UkVb`eN204t59AuUSb$($pX}p zV#A{A!bvbJFb;;#cJu5>pLE9Qrk-EUZZ{NRJ5YX*s`zWM0yHe78)O3)x_Jfy(~>ps>(}o zSq{te{T!VQn?>0o7#3@IR}f%3yQ-Kut!!r4s^3M&%f=QA>uQmSm%rY=L1mH5KbyU>HkcSO9X^qG37}Icv?UVntoZ zVO=oHQf@$OSON@lhha&`VcrtM(j|sPi47xbI`=KJGaSTh1?Kd#h#dAe!yNV&opRnm z80HPbVkeL9n=JGbo<=Qs3Wl9+^!i&4%Y~T&u=6miMPgVn3~TZFdBsT>Hi{h955r1f*d^8zwNV&Wha7eq zhFz5yb`FMJfMEkLtQv;p!LS0WAM@&rzGF0~eSf4HhE=G%Vb`IS{4E-W@d?A8!LTP{ z!=A+=ho$}e-hJV>x|h9Y)XsC}RC{39CFfcC*pgwhD@!GY@hfX~dDZl6}93 zVT559y191GTTx3QhYfUNwgNfqG;-KmhJBe@vf)@4=#WIlKDQFb4D7=&lnXX!!QvH%YtES7#75vAg98xbQs3tox)t}7&#e+ zF%o*o0Wd5ahB06m6Na&cBV_Bz6{MBnUy|mJnvgO^HOD{9?jQe`=~50`n$u5p3y`jL z3&3|t)RIi(Fgoquc?Q9}b_)7o*5L=suxnI@U87+Oj#?J_VYx6Y0X=;_cE0^!n1=^) z7?ZStM@J5GL@jBAIei#rfqqyN`e7bKEop^XQXe@?1GOaC#j{%%wWKa;NpH)|_I9Wx zEm2D{&<|re$OR>3A&1q5tHvOQp&yoQ?P*(W8LI3TnXKf+L=Fo_4)Z|{a}LFKN#row zWS+mLIEU#h8dk`HVYGWI(yWlfJYiVS6K)>AS*x7atwl?jN_F)^4rApl^uu77H|d7A zgZ`Z;3-UR>o7e5t@_R;Owe`yM?G+jowy1Tj(N;bQ!$z0w-<_o=|5btU!Bq{s%{xld z4oX#c9a^4kZz!FuBl}5Kw#W=Qi~_@Kh#WSpY;MqMAU4e6#JW9(RWPi3gN0JBUy&0G zBaKqs?O~Y1*RtsQQS4xtHVo6-T&<-oTdMTc=W*s{oJ*OuM@PIFFw8InwPZp$In4)# zxwhKda$p$iPI-|5`e9byT6L}*1C~!MD-?$L!!RO;SyoqybC_Rh95pC4UV|+{E!m1% zvKF-@3^NrQc1vuS*%y5RFXXT|aV=??kpROyVOR=sSn3qf4_mAy$(l~sH9`&x3V~r6 zFsvB0WJ9jESNB`}FmWvj!+0=kqQFmhs>q!_1;f5x?1#0m-feA1ElK1s7?usgqF@*c zh8bbk$O?v)qLyqzKdc?KWG8Z1Q@*4h*1pgW3qd~&h6(?tVHeR4dw_n}f?-50+3)-e z{jdeYh#dB|VV9lf{oXdL2K}&nGZ=<`Se@Z_&V*q#DnIZlkHIh%!m#Hs?B!dAJ$GF& z?5DpBLk{b4kr?JU=TV<~`LL*Jc4cvXqlN%EECz;oq8}Cw!)Of`*E`gXuB(J$O_+0S zgJDfDEF6Zli*wlhRhhTil{0@S{z?SH5@8q@hDE}#SQu7_92R@MN6vTjTzc}wYtk_= zEbnQyuoQ-|9t$~sGudT6zb9^D{v_H|@JrnBz=sjmwJ?l!s?^^2T4gTtL@USUd^hI9 zTGt2OAK4h#-_7!XVeY3UxcNhOWg17X94MMTw{M@IZ2i&rOiTHQGTur-#)geaiKLZL z!r)~U+>IZWpq9)JES34%e246m3F*TLBkLq0hv6HfIETd{hrzIvSQr+wU|0xxWJx^a zFc`+co_AO>a#(5)**h8EDPdTA=?c=n&+Q|1Y%?L45I||+Vmshd#%vZCk(@`(U3WM`jYRG@i2^s?~=Y+o0#sH4>R&6ZHRHh zoW6rWCdUx{Fe>_C_%0a0Ey^Zc8!V3Y z_!YpgU{$eUwx;%HWc^{7O-hWJR;oyJd{d>C=GtPVuXggS%-EMQ?T!w6yX$nT8wQW1 zMZ&NYW)p+sf?AT@CpN5*66{fK>8(}k!ZGk?*0O?On6Jbzi|U11(iesW!Z4NyJ^j{H ze3wi;q*ybVX@fxc5Ag<=;^~S;iT)v6d0BZ!-$?f+OL|9 zFiami-@z~}Ezgow2*c`fyuG?$SQUEu1>&AQCCCGY#lW!f0)OF27&ckUmN{MTC7)I1 z7n1|SS_s3iFByY<$t>(kMq*!*g?&jw?0j2dU$VHKYTi&qBe%Bt%5_xvE1~D+nu(r1 z7l!2&p{HNNHXWkDu&~7(_8K|tN7Rxq%nOEj!Z1lcYygIpF`s7=Ic&)=*9(kmuJek7 zVdo_|Y!ErD*6{aZ1*U(lE`(wAFszaE=1A?aA9z*DZ`k$6(9xE&Li5v#Q>R?!Q)y&F*f<}#G7#0n~7JB+4rc@Ya2gAy0J1F%qtQCee z!muzH)><{Dkb)eR2E$TeSmseOeVr`bmf|IFOu^GLw)d5~4+`CGy!&mTpba$y*Io@-t8B*D$~WU0Nu)yiD2@m9>~ zcXKVCwXWyDFb)i(&-5>+!?0W!)&Ro_VA$T|vh_#eU>LWI_kLXVdRe}J^smq~j#Pg5 zh7UxTtw;+j{r9lRr<(?hNdNAp*d|3@UN9^U{jk_Ea$wAYVQDZdCILD$} zPalTqNesiBex1GpW610+!?5$shhcu2|1iuRhGFOXIA&Ze77fE}1>XWW>^Ka=zNA1M zhH1kv?FGZ^Z6t=#VVL)VVK$hpP>EVFEYr%)V@8a5?3%Zu?yYDm z^|O42$L-Y$y9cB6^hzj>hw2qRRc~LTt27a?}YIEAoXbEvqlE zipXL5e;LMN*19hkRw}L~Evl-;Im|cZpN6GjUlQLX-!ja6XSdiezQnLN;=3da6TD?u z_@ZIBTR|ZV!`%wPu!15BS}hFggkhC1ET1q8cPkbR8_V|>P8Pb;Cu-O-r(jrSnIB&S z!WEog;d7hzZl3~Pg7Q<8qzpwlx>x%czT%aU5Mo~R{V&%>}e#c8o&^F9}8uLOi) z^)Rf^W`7Wgh{@SStB>YF3=%0GD3z_3Qbu$X85f5yHz@Mi)HhUyny3+5FG9>B0E7&d%Yrhe?ofxIhc_w7w8Uw;^e9S$$&y&o-Fw>C0` zw33tVA(a-o;X`5Y;dkQ#SZmu1KmE9cqPo6LPi&Y7IV=l?vEDLFoWpR3CnRnhIqW={ z9tXqljWR6xB zFpRs9!(dn~Vc230!;EVj3=`+DMZ>&E8={FEwrCi3jVy>6S0abOFdku;E^0}_FtxV~ z!@i{0FzibvOAHH0%GR;r)?w$HFf4(QX(={L$uB~%Xjp-nSK3>K2@?GX!@^GMR1^I$ z;e9E>u%NdLD}!O#Fsz8z1H(?Gy86H{zkIi37?$PO!|+kQiur|G(bno;^BL}URx8R4 zL{apMDK7GL3ft9M*XSKR!9R9vaGAp1R5_)CBJ{&5d7tjgPdg%2;C=L6p}qP0sXCjt z3A1xeCbi>^-xUN}5QbekYGcrBK!afv^RaaYjLNr=Ogc8$9PM(;cRHaH2E#mIn1$V6 zhH0kch>SLuY3a-6D=B^vZDrwqInxn_dFga%7zK?ZhgFaT%w|S_bDO;#tAEL`GD~j; zk;7QtweCTc`Kms(Ff8TqPIJOA!L+Im=JW$GAI1{Thox>0s!cmYCJd{HCvun`(GRoQ z*(G#G4&%Wv8gf`H40B&FOj?K>mV+Ed7>1urO-I}h(;r$eEER_3!>}3{*3n|2Q31p9 zB!;;oheacYjl!@A7{GwaR_@Onb_E=K4GyhGi@o_CW0dXI8ZzhD|%q&`-dy8W@%d!*UCo zG!n&zVYZ^WZ(9Tmqrxyd7*wrZf|VwJ#Xf2*ZSJ_hp2)+EfyMDcqkjS3u{V zs`U$mVWBWAdc55!2ZlvS42!>XRhkRK(w}4<75$mM$8%1=@w}H+M*Af`i}s)FO&LG) zkNeDUZAu@k-eA}k-;|A*sv>lU?!~SmAq@WH;&ZG859zb(-U!Ug#R98!s8QG^bA(R!!8B z|A%2Es3qSvOoSQNw+&-pU(yi!k}yop#ZHpLB!&_5VT`{S=K4>=KDM(K=P+^-49h_d zBMh_t%P_4)!+gbtWhCf_#Q(2`p{Fk~?15A<3=4L-zarC|$YC?_gkf2+ty+crMZ?O( zh9x<7(=r`<8NM*gS?6Z7joKN$I}B5n>yI&{6jNx2YZZ2oTGr?v9p|ek4=g*nH$_h6 zV79UHstVrD9l2>LQu*GbcLnyg9|(1}Z51pSrYkXwdFiOFVUvNIRi~~23_E00zF7^1 z*&Xe4%X6C030EDadciPD80Lo@W{sV1!Z5SVB|66I@|2E!5h*szNpaA}n=mYJJcF1I zBMb{94D;^~tX{}ro`hjFV#Dg(17R3*!LS|XRW(b71xRLG9Wmp&XqXXUSoAHuZWv~} zt5e8;VKF5(!PK`5OP+L<7ED=uA%bCHgkk-E85V>ah$%2E4~A8VyuI3CSUC*Kg<)>U zVeVrKh7ITW3r`fd)5mH!GAHZ2EpyFl-e4u&PDFIIor4;*rB(SQ!lKfMKU1evlbS zxT7}=!zzdz_7B5u&|sL$oZm%7+zTXiEVYj-jJVOT+Z7p1bcN295IRIOfOSbfb2v0=$DEbf=WodOufgJJ9!-5&&B zY}br}VImk70mHnJ!(w4r7z|5=VVN+@eOAC>+|4R;`8htz_4}+%sW8m@0oSGohB=-n zwL5;XGRJ+S)x!*i8No2$d&3)9FwFUW|8nZd39e}5?#kK|R}P4-p53=6v3$LP#IO&- zvSinX3Juo!z_6IWb^nSA_)HlRI zTig%(|2B-6ab3z`FpQ`rbprf|T9W2z`IlknhvlFj#vyW8IC5A-UM4#>;ctd{W9NIx zFo&@66!gQQtQT@vV>k@MY(-qkqG1nKWQl9ZnfP*im&}Z9)hr+k6A(F!Fs#5$Y?xCo z!w-hJXy1&sg<&2rjPylcjIlv6g>j@-;S1H4H53>|QtppZ*(;P&hhZA4%6WS}&q>pg z%JbHFH`(6hUqYQ7TavT$OeeMDb?*p*%#p)jn4M9R936%k!Z3NGvd!u+%s~l;IZxJ*e?e?mCwlrzhPgcBRH7d?%|Q-JKn}xf#n-g+j2muqidS9d z{4P1n`@=BdaKKM8%`mJKhLypv7Q@%h9Wbl~hBYd`VYL#5#lf(|=a_MYVR0}l7KSCl zuq+ss2E%+{Sm3PcfGcKPU16BhqG1nKW*03O79lZ=OU$?;huLE1J0FHs)b(gIc8sdk zb(|N^xYpI4&=IshkV%AL{GSVVCc&^680HVdf?!xA49h;9rA!vs$< zkEZ>ZwucVG=rGLbr}!+VH(8qmFwFBl*QVfcytc!5sh!S+${Yp^GdTFPMyhJEpO!xFU?`e7kTL=N-zlo;lj9^&JGeaZjJFw9njxGWeJ ziyS64EDnan_WrMi`72)$8)mm)m=qa?nHUrw_dHrFzx!Box&aJRhhZ8pOzU8l;qjH_ zUSEBdlV%{5$23}zZ0{~3)Y^I~p=^%%}Fs>^M^VRLrFb+5&&S8XML5n#IvlT^@;DsEv zWLSZ!H+GH0hE>+CZxS1ZeaX~B4L|IBJK%0bz@lO0Ff3-lFsfXqGGSPh#4sKVqZ5Wr zEEtxJ9QHp9!=Jk#&w`bU99EI-<=uuHRyOXiHwQV4)~UZ>7;4GETtDGhzB_%SiY+ry z>m{EG!!iiNTKzvvJBu9lPs2{(yX3tUMY*+9v+4>OxuL~ZuDQZbsX7OSwZ`oaX$#(x zS(p&VuIA*A(UHR>hFuDTVF^D5qc^f>SO5%5lo;lAo^g{t zr+AGD!yM=Rr|GW*BY`js-zCd1r(ceqek%;?B)w5=J@$iF6AWv|cgf%5pZfoq1jB?d zECGha!LTG4mJP$wVVLg&wTpydnA5*XouN-U&w5l9Ts)j!yvJ$Kde?_Sp4lal^7V72*aXam>&!afMF3ZEE9%>!7$I^bLlZK zEChxn!>|+>Mw=0EXm_&89Da0vqC>tF6NIl;|>Vbw4!^V->catY{%#b#N`hnDkJhNa4G4oxuF=qtp7-K@3$3iI9l zKFimAxj=QZj6lWU1O734v0>ON%6i){%<2DMhJ}jzVSgER?b-XJj{e=GoMvOvqcxOq zxi5Og{jHV^Tbk2P#r?1vtnRY9L_Uu)u3JM=xbh|Z7112(}urHb7)5-{OZnt;z9|)}D++~-* zFw9mkYGGJ_cRl)H1*$&S`EE^n^0@`>hqa_!RrSUFupk)5!u>EO+z$(aVVWiRYmLhj zL_NIQdVK+x%slpVD=*fP3;i$yaX%~>hM^yZTG9};B$?=ksW}g!r;i*K0>gy43$jd?gM~%;mjH|&vJK#OXi{gpzRgzYmj3Afu-ct01xutM#aQ+0lR&wD-yyx4&p*5Q}_OZr`5xa@nJ?+4_fJ*!qZM+3j4u!B+ny zj}=_swX4ItRb^N{9#V12n?Hy>N_mfa)Ls}lP0o$EMHa>1Aai0*kb{Z46>-?1ZR)i-{kr~2;`(bR{tq91ICaE~=A@zA0k<=sf#+T*yjK6YP zGVHH8eHcdUd?(?4SQ745P^t7ag}6oCh54|4+|w_EVU5_A9ED-om=DW?VTntI5jPMG z#D?+Qbl);e<8Ow=i4CJg@L^aQ?zr~p2KsTuHxU1BSRU@_2jQN+U07qdT6jT5AU|0v z8-~>phH+Drd_A*ZSRxF|4Dom1veR*UhlhLmEJlb)OXOLdI{x=-;)Qck<(wP-;VyG4 zaxJeOOYnFYUlsg3LKN4oSsdFB!@f?XGb>r zqn$%B7L>B%{wj^~2M@QWn<`H7wH1e>4CT^y8Go5;WVf<9QT3C8460NSllE>Z?zpC_ z9b2E0TZDW1g5wVaVHWc%N_?&ybuwy`^R(>IH8q`BcT~5sNXw{u9Zk6hyGBzwF{)!U zKiqM(wLK@x;wMpTlH<&@1$iRowhA>S-UKn<8DnnadzDL99Pwc3^lF%LCSh0=ITiQx zLvf4R(QhcQA>ban6t}1=aErQ*8ekBJThu|gMeT!I)U9dHKDVf-U*D2;ZMUy53AcBW zVVF?CsW}6NWggNjE?8?+mMH3ty{k76JZ;9@+k1@BiGEnI?Lt4SisZXjOp3 zFh71KVOR_M!wmGp_~?g;U|2NzVVp(7&=1S2p_$c`yOA54{a_eNsa9-QJPZqgVM%cT zRe|}ZJ-!##hy5lsNxRIt8umuHBjH!+tD%<+YMHZv1I%Ane9ik=W>k28*Oc2cj|QKY z;n%~Ss*VYsf7%@L>pPd37qIg^uW;9M9y{Oj*!liOc_R21nE|8URho?djBJ8ogV^~# zq5hrXD0aSwRIu|+B6hxCVCVbQf&b<{r~Hxel<_R(CGAD}Ps#HIze?ZBee=n!z!}vm z-1)sH7!Sklc+O(yd(OS4VES-o_58}5qBa=T0mB-0xmOKtckv{AG9p`sL zVrwM6fvD@G5h3|5xrZUiVZpi!cU%d>`i}=8hhgX2!+MjwmH74!IhkRO9Om>z0NypS z#+x82VTBnSz5qGQ8-|4``EgT~d_1xf^n;S~%ssL~d>ta#X?PQaXO)`h#|SlPi8`lK z$NOOoKlzbV1?Q%JsLR6@xfa)P1MzWub@h#C#b?(QU z{vabj={A$5bwApXbdm4Ln2|EsF&blvTh#uzfq39xXQuIyQ+&s+_P zV;=t6{Tjxcsf@_@8qBzMAcu9^+xra%HU-{il~O`sm=B{4_w+elP3{2|#j0M_l{;F} zUVLs^-mtzo?dEQ#AQ`uJ1R8!>sS5T@ncD+uvJR;g6|SX}CX0IF@9PbQT`}|BH*k#B zL63}rVJ^6*&x2uZ*!fO8L6uIPwERNUYNQd`py?XdtEonOm(-QaRtR#eV3;MXGK+~E zW~EU+=Cn6w(sc(FbNY1bOGe>t#ZV4gIG*Q8AFB+MIa%W)pIYqC&uHYli+4dj%)oa^ z9%d^<_%0bG{x13PPJMirw8D4E+-f(o>T)^^^OtKWXDQW)d|cC767~nTgl@?yNEWav zgYwUL{YTgk`g`PQ_i5IRi0_p<;(uR$J@T?%19L8Lg!xR8Il&sw5?f9ERe0%M-_P+`{R;gS0u5B=}^eXD#Dw|B;ke^==={xiA*hE15h zRzIuxTH&y9NK* zayN8N^;*=Uy{9}LdCd6EYF+l2^QFHtZdJqE!n!9-oolbj zT34N1R{+1N>INu{9g}Lc9n&hoEpzWQ)K2Lnw>^}JyVb1{^>f+&__yiEys z6NHX;jq>m&i0xRF9U1Q$xea%D7)}jvb>}a~ylFC>kGrk$Q@9`YH8RE^*&Flw z{+JbWnE6B1bIV@Ricten?InfrOJ?2U^Ry+y{+iRL21(Z~8s_c%sgnz1O%V+1fnh_$ z?HxBqgC>fT);M9!!VkzoU@HlW&m-=)lnmYxJ4b|_|YEm{V)q1 z?O+|Z2p$P{TycwfP&ddgObhqJ+^sj+T1pI~FBry&&(pCCZVp!pEy`f?1X|ga-e&bM z%r`tuiRms9=msR`nYw3(_}E9X(;4Yv!+hysCauxub?Rb%T*FIxELF+5V=wp*Kru9i% zODo(D;|VC{i3w(ENd=+++;I*1sQiHKr}5_I%i`-)>KABTrD}B3B#Pa z?QMNV0$Tzfu*zUqrKJy}-ZjvGCchPhYG{PzzZb8UxVMRvhX%~mlCOx5^&nF7Po8w1|0Z-!x#8CQ{H#?}AY$2)Z=v_7)Hd{}NZ-K@F{ zhBXm}v6X5?zOJdwiTeYa!(f;|;9n7(e+l=)8bkhwI`4)1VNw54>4^Vh`Ar_~hxyF0 zPx$;6dp_*`(g9AA2!GS zR{2!uZ{qu5gU0`j?zi}%{A;ss)vw}y*tGh0%!{}mb_Mst{wR8Vh?rBo!F#mtEbfOrV$W$^_nvdD&A)y)z3R!z+=6yW zTyvK$x4dZ=wPJW%NY|vPL(O$ri;AhWMRom{t$<+a47|+62RvMSHJX z$@NfuKfudFig$R+2hsABcS99e$q_fmInnnqA9jcAkGng8QD?}h{F~$qyc5EUzCaF! zVaYL9$TZ#vnH`7Sqr|hw7(-;w_;Ioy?uo7c^+(m!@9ia-KQJV{@3w!u#jA7tNB1Se zmge+RU4x|SX@Q?7ng=gS@N)jt!I{3MSTBUvi#h#aylYfOb2Mnychs7&KrM+ou6elQ z8jm}!eBzEPZc)={2HSP%>Kme{x^j-zhM56+`W|F^jR;ds80PTN9vber@`+p2+Q?z5 z)Ub4ttLLyzpkEl-iseGL+GJx6!_3XdNw`Iw>+SdjCoWINJg_N9F}Ns$6%E5Iyv-W$ zCWudHs**QDB+%w0=b6y6LVRo^*y(iSFpHE#AGc7GHW*eP{ln^*ghx_U?3;ceP7hb) znO{GaK!;%gFGKQp9h&7a1DZ|==TcogtHQjQCE6Ky)2Pq^IZW{`lS-b6vRA&$XV7L= zTYh#T$v}%RtbNZxIrIq*e$Cf7FcD?>Y0f7WUlbcL|J9s)d~I1km{fIg*t#98W1mD^1e8 zEl=8-TU?a&i55`I5)#Z*6AMHkpVq5}e^mLU<5ui^dtc{L4^DXast>AD{7+^?#MY2A zyxJMT4&C-P%;CT`v*9+faG_2qkpC5`Kwki)!^lIiSZ zfrd{;s)AKR)^>JP)*+?*q77)tdux1!mr|BBot*K^@Iel`UMokj8u zN|5W2(fWvS7$#y1CkewU0%cASh84lE2IR0N7=~S=7|Fh5BzBGbuxq4sLhBnRI0GKggdCQiEbuE2%D?LKy>e6V?@^bSm+kIEr)Pc+C5$A79b1t9VnD8Y3X!4)AdmLvoIF5Jn%PfBq zW?6n$uqpnRZhg7uJI++M}Rp|gv^urXk ze8@jUS;3XJPv&07?fiSVfp~}Phda~(5ipDg!=i4JV=8Fc_C;-3^x%!Ebm<<_gK;C0bH(oQPj0o1_=+sW8k8 zhIu$`cW{JZx*@zi%;}F{*QlK8V9=uHs5NQMkrx@QR>?O&EvW>)rc_BfMIqpj0(d{VVEZRVaH&Ys*C4{HVo6SVmZ56ZL&7C$;dW^ zVN@9A3BzJx7^f-dNFWT0f??*kMQs+UgtXh=2fhnjT^2d zb_0ySBX^lJ^_eJ#qtko_b!N5Aw#g)lMl}rU*dzaWZ@9r%XZafYC!=h)zsAP(1T!NWOe1VAjX`^cNM^#_Cew<`(>Uk}b z`qiYTFKJL+-xr4QYRFlhZHy3m80Iz1ZV$N6syH6vS!E8xoU!xGXmZCP998%7${o!q zFW)mLLJmv4x!W@Vh9wC!m}#jBmUWriSru7_j^-AnXcrJU?EbDX7#6sH^q^BK49m9- zwr{Y^i77L*cOJG~7dJ}Xn0Nw)H5q9H*TS$avYI{K1kvb)VSO+x%Zins2g5R$-kptN z!}f_zxbARj(GPMNFkH_a)7v)+!%pUU(NDmz)73Dn(4U`HCpPST@f}y(t;iwnxDxln za05|uOjCS|I;Rqbl_G~V`pdPJq92y!5VtU_W~!EeF`62s=A z=Jwu#VV7ap^T1inyFRnj`rI3bGs>TQSda(98aoZcOB%O2mkwXESTU<0%X~->VriN*Fdo z3A{2W=h_d$&fS(~iw!G)VR?HTV3-38v-l|`%i_C2v0<(cc(%DuQ?$*;s_d0vm=g@s zfnn-%-D_wt%(H8NWdXx%#!qw82VmIftpjP7r}uplQ!0B9hJC>)4aGm2?6#BRD!$Hc6)obH6=R1ynbD7{HP@ib9FFi)pgK1X$Hd#V3Vof*#(39AgBrnCqK0K0bMYM2!gonE z7)FI*#xTqTtsqwz=Hc)KhnJ^g#%c;W%zssfXx>V!$l3ut*83RSI^=LMD-o;i}HJtqh^dAzF15&S}|02OC66q(NENLnGR?c2kPH!!XPghM8QF^@&KPnD7%!RALK6(c79- z<36hSioQu;ZsL9|leX`qr|+>Lbv@?EjL4W8a*jI;v+c6C_84Y&aPHex=mvXMnR$~N z9XSRZIt(janF<}gbHNvoJ7}g2Hy56x}S`9ZqCX{7Wk9|<=?REB_IeTYfG{lO)%G^-?@|w7*f%ijRp7kh3mEnc zhMhw{?3(eoo7MP+d0+j7-5g<9ISi{N412Bj-^y3y=lRHC zZyEM5dT#G+7FsvAcl?-hQY@al>DZeUfQZl)= ztg4sNSOvpcU|7qv3afq=JKr#@QDWFngkcr*@RQAc?oWn4@I5Cn>?91E9+GqEyPVGb z`nELd(mCWX!m#{3_OqEB`#S|?=0BxoS-c?(6C8J$;foD38>_ZgI#-|LIN0T`JvqoF z5r*BG+~@(r%x{k^w;qFGeK2eUhFzTA_i;1~i^|s6#V!e59Th9PEiy{=BQ_s~dB8CG z?)L*39?O#Dx5y+NqP!mi!$Q#yDrY@yM!m8v^vtfzTK_R#)D z5q2(RT@Q@9)!R-f^5v&!-o_`b%?&TfGP%hV;}{smFA(v!HLE6mRQr|3MxnV0;~Lj( z_mrpaQ5fb0!=h@)xeR=lw1#2s!|X2hJ-bTnV9#n380G-OXfUj>Sd~$Np1$D4d-{1W zObEkblj*E@7$!_nFt5(q?q8a9=ty=^ie_%Is2_%%fMKEg#t%6((IO*rVOT8;D>1Zp z9I#mzJ1jPAtEd5nRl%?h7}hCer`8F>x?xxb49l^kRi`t(y6UYpN{5{GWsSLf=GX|s z`V7~H4D#e8&(g)>cTc>iIN4(;-LInFszmHTl5VWb{~dy@_t`_4~BJl z&altGuuCv(ByDc%Z5Y<;`66frhK=E#etY|aVK4q}Sji(8b_a%C^M2_04Gf!s zVU5`^tn|r;#UdD1*J&75)VS5D2!^%6ure4{G`Y5-5_1(5Fsyk}wXPY4)y}@tQ4YiE z=U4Hr_o{Gzsv->23KJVP@_`Qw3m)llNuM0T*>V`x3&YObk!D>y_g?&yLKs%C#}0B#AOwbmqo*GY z!?-Xk6oy5jryqWc%nLh54vK_f+{E8?6&BVky~L#cWg7G^uYq6mfwU7p4_z_5~t zcFp=F!>T-d7{%HJ*1fc9>wa3;q5DjCmANP<`Kx?)#|NvaAD>FnSFST;!!YH|gAvAZ z7x-E`PeoBbD%|3OER+`SBu|D~0S^2$9A|<6^S?X7#ZjCl46=M%g(U?Xs%;2&tGhAXAuRs*{X^Vki zQ{7kI8&k|p=-0S(80M!qykuBDy_FGWjarg1%_b%Dq5rn2#5c!wADNVVFaMevnh|TZZL&qn3nW)xL{{EvrKg%Q~@2g?C+I z*p*c~{Vs0asXhe5uDn|$s(@i7boB-zhn29!h6(Ev_p=raD+Y`5m*D`p(Z;T#)Xq>EAcK{O9f^t z2*a8d4C^YNlo-|r!>af5XDh{qF`mG%vwbkEcfqjBgkjSQhFw@NED46$&Sr6J?-Z7q z{*<0&_FeJXxL;C^JI%x*hoxzohz)DVaTw@!*PIwyGR(bWkY##n{9VGZ3>a1o!_pTF zTYE4fTVuz9Ve7UiqBEhPfQN%J+a_ZktafQIzWqImf#9scagIFp;~+*V%bG$_<9Oz_7RvI|Pm}EN@wZ zFlR*(tzuL0UMdW$f??U3bH}1!SRD+rRPWv9rafd#fnkUDG>Mdt4$IQM8gpxgVeyAf z(R^T-<)UHH$YC*sq68S0y1DKv9~frpc8$xBJLTyQ!}L8*W<()}6~M4?7-kE@dN}v& zs)!tBO5`xMLEw^MRXbXfUu@LRZCc;@wqb%)1v41tN93@~Vi+b64aDF7WD!g{F~r;h41h-+c&}As9XyDMdrTA&ng!T ze~Uf~!|t2E)PHpx?@MapeM$0jyH`4RU$W}8;-7WMVU2iSvId3~zGl2E`c3cvZ?oMl z{juZ;Z*K2B7v0)}K%oK*jiVcgi z%@G?`V}In_Uxum7_O5ZgF}3k;hV}f-uyuzdhOLf{UH2(!Nf^eF;vt7c(dFL@LJmuT zVFJ{WFiZ%;@+F4(!>~XYmX2?gS;%4h(DN{CiYyFAPalS{VOS{M32}j89x%)oIc!J& zb5&oj-J~Nwnvm|k+%X<)T0g#)yJXm3bNWOr>B9LuNnA@hZnuYFWvC^G2*WHFa#%b1 zVW-UgGAs#(#lbNDCBsMyIm{S$Tw$2HnRV{aVF@tI8HVM7O5N^k)^}17Mm%>1Q_OLG-YiC!+gR86yxYb6IB?N1jEu`nD53^b8{Hx z0mIlZj3PFymRv}0V{l=Z9etSHM;N9Pv|yMcTQ5j#Sc$58an+7C!HbQQ+~)PIL_aK6 zKxZR|F$u#evtd~Ff?*3@aoI%k=f?YO>KN9&r{M=GdS|7$z$=EH^+nmCtk=uL_pIi20Yo0vJ}uSytN| z@P77NhDA?H3>(n+$P|WUS2E11$`~5;O)R+qXFf{ByYzFsvJfJqpJgxp+tI zKOyr9-*e`*Ux(nGZx}Xf`m@Sq7HVi>)OLYuf5u zIJ_+ghS`=}gJCCOSTAx|KZP)?93?l^(FXpgeIoE#} zmI%XaV3^IFqB7&3@O0pJC2RS=r0P1(#Mz1#4LjS29M*#zHq2F->0LvGVID*dyNMh& z@-;UThSi93*p+>sM3tfx9j03~MV3;c(vlTGRk2gsU^?j*YXStiCeZz$G z+C^^MK(&5cI&#UdzvlG+VVDC9D<=#)E-?%Tbvg*c%-O1W$YDjuVaYHo9)_`C7!^58 z+Yz^SP)j<&uwWRb0mICcmz71qFgF+$55q!XSUmb+*~%`Sgkh2BhdDc0ZnAmHusnC{ z8b#;pSopLADf*XWu)~E!Kg_ztG+42WcSq?*ywkAh+4Ff7C6X+kRthM^xu80G@Q+^E$aelV;U{jfS177fFEU>F^S zF=3bo3^Rsd!7xl6hFQWeeHg}oVN@8Fh+5JGh80K*t3oa5h8$K4!}4GlABHueA7-oG zx6MO)$k2p*R`%%LW)TU7xx=tl^uv;27z>8k8cd4~Gl5~Gm?BX!3`<8X=?B9s-L7-J zVOW6Th`N#IR7P|Z3`0LG0){!zN7w@a_w1^57IIh<3=5`WKCEEDunxh?jRr8R9fo;{ z4HIhk2-6hIVVFM*Q_L($(G&?qLkagkITd-uELvh%G||&13@bJI%dm0euqI=TP;o7( zspbU3)L~c{VOW;6dtsh6tvU;aHQQ#5KY^ZpgI=%`Vb}m3XW2ph%hW^ z!LVEba#%?IEZ+IVL2QLjH};E8lOmo;$ob4#R3;SR;D+EikMeh84eNyej=o`9bxc%kPx`xcNEW z`F@c2Xy0AmdC&jgo$n`j=erd>{T%ee%1}$j)pZ$iVVEln3vNAWY7fKA77eTHr?jA_ z-vGk`YGGK#N%T4 zeCt5Qg)95EMwPBph!AP)@-Gq3R(uv2P1?wTVSG>IFn9SC!5$o`l*3y-gkdXU73|Ys zSP=}%!#o%}9JOM|8FE(SO>zzliw`?b4ufH7FpM5PLJojo;V_H}!@Q%$F;6y04ln#p z_4QY~Nu(?j(zosGT6B^C^0yXFXvGjZ(&hOuB+4h&0zVg4|zAF~ymFf0*N48uH7OVVLj()%3(>iac;1?cJLp{HNHv1l(HhBX+RIZ}w8egX_@cE73Q zq~5ocsWW6~0mD@HHUB@l?(?nbY;7MtmKk-%wrx0wUV_wgLZ^AF_ZCu@Dzd7YO8Zq&Oo z`gFfVJupmgeiVUs9P#uAhQ%fDZQW8hPEcx|gs)v|mjS-%$AP<~Pskhvb!;?(bg9?O zC1Nz41`NvshEY9ReFMXKF+I3>pEB?+Sq9!EYy2_RWJC=Tm!q(Y%quz4%zv%!lvTUC z31ll`fMIwB-y8)D^C*@a!YC!@t^mWVqlX)V_#Hh%YT3}c|IEM`e z9Sp3rAqKVC?F8?VM^rg@-e_)&g{lk~Ruy+jn2V+fD{*Vf>TnygfMG0Pm>d{J19wU6 z4UNNaV3<2FOj?2j^O8vOidqcl-oYAGN>Rc5DlT}Jq-aR8c~@c;@vBKMX~U-SZKVEW3u%l>2YK*pl>5^6PA1q^%6eyKN{_GV8fc$ZvBnl}HO zykznzVaebVVbS74!dv4z312rqcl~_kp5r&#ZTAla&plt;e6o9W{-f2K*bkO3{XW_N z!zzGbH6Kp@S@%xod(~^`8|C}3xB1^LFO+^?_o(ob#w*6+iKm=p{dv?<#7D{k>;>kp zJ>PSNGGJJNwBD9g-eR8w3=5I>YLkIs{>r;MJ>(-hO2E5h9WbmO7*<_7YfLIzTGLuI ze4bwcGOl+!{&kn6gL4=K7#0D}VR67Pa!-3;#!!zfai&Kn6c|PYhT(x>f88bjI*0iH z!+e2Z&cHC2_kW$k1Xlk4G0Y7Zc6p*&8VC%#I?ziod(yr=bZ%5V8W`pd4D;=sq)6MA zHdg?{GH=Z4A4qz%sCFX&~d85`KOIDFUk|yZ{U{v|Ud( z^vwj{^p)V7z8n}v0EQ(1!=%7488D0k?(vCEoe9}jFdbI_O(qy!$4*~78r(0 z9fmHv`eO2C&vA&pkrPCVYNk@_u2TK@-*edCIsME4+=f~N?r@qjA(@Z7b_fB!>6ct3 zruKoE??Ev0T^j6b*J9%bpYXt#)J=qm>DyMDYCY8tK{KN;1OZMFxamDbGGeknIyFCE-1i zF*1bktiVOU#swzibc2j*Yw|~tAaz--3FO1rzR!LrcLuwagI8It*jMpIDUGmNkPnMU zof1Zel!g0jO7ofvrh z2F+b}EICR;zCZjxp)+?=12^QSQoQUxhLwVM$*{FK_!@_C3nj=_@EupS)<@hk3W2t3 zp|5t^`@ko6LQmI7Y_9a~M4#=qX!ISiOg9`skex<65e~O@;u86`UQ~{gRcf9@s9j^1 z2@J#R6}Se5%~5bCMk5k0_n3J_j;1rI!grcBq>*E7po{a(k6JV?w(z{yA@sSr?lqe7VS5ALzc>{i9&cHTfE_jzzfOkpO?6#u>V3;*9%m)~jU50ciD@K}E)njxU zN^qcy8Wo&Y!###?2csUsx0I*Y8NU_QZ^pfhKi4erZ|MxgETHG& zzB2D~|JXc~xv0I2UJV|Oc|}~|zR(*@f3v3tWL#HMrp>>kE}48zS~U1fTD15*@s07l z#IKuQczizd(D@r}&htaT3-8x9UmRYY|6=nd_T$x;eqZcX%)eIw!|H%x4ZyIP*U+~G z@59~|e!IL_{(ar!;!hf{*-uX_@|N`%&`S}Yk``dEa8HAqq;rP3AX`zGRd36!Xt7Vt ztI-P2?bS}KA9fDOzq`{ncXUT-NxN-5$cHt8d{|xGtTCm0X-!-4u&Jo(*;dwEhjAh} zhcSU+DZ{m>XkZu)7?#xA9w-^^u_fQ?)roAoEuv36+CaK74YCz~eGkhy?*BxB^#_Kz zeFW>nfMMX9zEuz~?62=(UcKdhroga}&NieyFbw{rV|xTJEDjjv4GaqehRHgXHdldc zh2-X}{xNF7E|Vmw`58=p{4ZeENDs^!Y2ldI9~m*bwo@Zbe~OO+hF#jfiGRU%9pj=> z8b1duqRc~;sSlxK$|y92JOPz~Ue~`v`J_b9o#Fa z15gr}O(O1J1KD=)1mxfkju2V6i|S25tt$M#=dizX`q@GF4Gp2V!(vxLa(aaSp$L!< zs{p+f17Jt)h)=@ViV#1$4m&^ibuX+*KFEg^+o;)Of_zvS$cIrtJ`5FLyUz_|E4YD{ zdQmR+38^6C>I||KfgoGK0r{}F05wgKvxOxCh9IRI2a^>br$1(cLvhSKkkKF?7Ut-M zQ@Xf7GZD@@$|yhGWLl18a9kb13ZqO&OcKBq?opmC9wZ|&QDi_4k@DPP1=)c?QWDuS z8IuQc`sr>$c6@L`PG9PjWheEcD1-J~tqpq*CGdOpL$&Liac;;es{{Wkz7%9!>p@N* zMV}U-!%D*wB9tI&+7VU*a{5BU`DlviVlwW+Z5kzTQ4OMbHlcj0K>}oS?gqoQjl>)u9x8(Ku*61SGP7r%^5|( z+q8(b-S$D2lRK@?)kvHny*r8L`z)HTjao`Cjv$g`e(d;DeFXHpIww`mx%7B5$G~ z)?%oNymg`ueM+LlfF4);+Uh34#ypU%5CX#rhSdUiAX|}eQ{%8>m-+4h@GhBK9_~_A z8g5?Oh}CT_!yDD*#06*6@=lVg5;f#9@-L%~-|ybIr2w zmd-G00sR2;mHCkW$L3MVqV_6wHFym5iugkCLT@7T%^p?CpK32tr_I087frsVEE;@C zShV<<^2Yc<^4HC;y+5CM;`WX9(ECHdE5Fw^e>lH7|A+mX*w3~v{r+$ShSk2i_`Lxb z)(i}*dkuY8^e*gu$+yc(mEYGrDgC7JhWk|Snc$i35^gEtGj##>nz#_$l09drEL{1i zSk_=GtZcDoDr&T16@A*N4I@qw1#{bj@vo-CdBc_t- z<*nSgcHd`^9-xjeaA8nuj!?++@!TX+b zH28@aivWgs0mFRWDR!`cVWIO3uk2N!#Wi4<#dx(e5*X$R46^}-#oQZJ$2aw${efYj zeUp^D&ZRB2Ag3>znbkj&TDS|AEH%G~Er{2qb9d`gQz3^5EbLEA)UI8rQKnnTF<3Rx z<^7ukmu%NDFDc~-bI`J+d1w*HxF#o!LKz7YPz9LxE=YO^%}AVvGJ#t;$+O^lejn)9 zAA_>#lh8Ou56D;yKoc3m(0cnHA$hy>A!mQJhg_TuQyuAVQ2GA7=llHMIsH7)ThW5V z9hSKh*GeP(55<9;evKU|b;L1|IpLRZwkFKauG`@n^o9@CqzL5n%k0!_vOrE>408HZ zkkiKp+3oWUGTW0DY^jHKw@+Y!StBn`^TaUIb@@V&)5iy?X^LGfEV&j4k`&BK7J`}Y zNjp4B2=hQ=Ku$l#*&A2n<^s(QbPL~3@m#GFcMp}}zx+d;+g)R2 z*ea`s@G8C>%u6=VK*tATT0}&ahNna+ElNRWMcuWou#Ah3qp9YL$?-HxW;wb z@8qa#j*KaZyeVMVXf=836fi6&A4AKj#jmXgh7}BNGtRiLrdtd$u4y3Snlhtt*rOY| zJM{MY+=7a5mpWirVYp=c;`1&qXkc-afm2ctpqpVVdIO~04C z-;9Sif3A5hn$a0UFQ6aczA_&R{@6U8wW$39zZyJ=enosKe4%$;{ASNk>Yr<0(WlJ6 zGJ#>Kiw0j47cD-ezA=78{kr*$@8>g5J-*Q%`+g{Resy^1_stm? zRtF4g0^h@0fME@##{bVz2&rLy3Ytp5noalU~l6Wg4@Bo zWKq$|Pi0_UGNZc1o~NwQ!Ycc;S&bu3afNf+k&4kBmF4ZW&0yxcy>ZB-rE%7nRrPF5 zXW59UtY&$u@Lszy1LVU5ARopasYT&|VTr&nR$se+E|{03&GzWvJ8p{v*B@<2y*Z^W z1cs%3mmLiUhDAJ(=llOI$_#v$w}bbUXB9P1_sRu1{gB==KYMTvi|cAbdJpzeoWWfZ zdv8RY+}w>0xj(Qjs(+GF(6zLsL3RI3-mP2um*|DNY^YLm2)-a*hsoQ0E|ms3Mq-n< zvC+Hs(ql|_P*7O4bmRRSg_mvDvaTqVlsRZ6n3pUA^OAIM=HetyKnuaVWC^%iN|UC+ zy!R+nkunSJk$q4mZ4An1PC^N+9%v%y=}Bb{Lt`9&hU{wBhvdGoha??NP$iW$s}}!z z4*NT&Ul4-d(2m3(&IR2&Inn-y@L*oD-ky{?>XgX5el6i_1Jci~*YO&B1{hWb<|Qi~ z)NJHnUNRfZOEST{BpG41F9>0_Clkzk6FlrQ_%=4-{$SQ98oDk&1I$Y%Ak;Lo-7GAH zmWV`|DS})A4T_iohGoD#&?GP~iE;JDm3g>8b3uPtdF(Y^HdAI9gRLXD6O;)oDj#0z z73I?96>mf*i;U<8{?%h6yX+L0P~sLW`QuHIUO6wyUG^fnik&FGRBp71;+2s~!r} zFBlCzNT{iEq!fnf?@m;xBq+=Sm)4EB6W!K_g^*pZtF zW{ntNNA9&==vKyhkuFWZuvTDLR~gQz6&RLV&ppYkrDzo8@fozDc-hPN4@ScY z->A zQ|&cl%KQ%&FpLHaOIoz}OnYPeIQ8r1w|<|`EP8&U&0hnC1pvd`fniR-Fh^jRD=@4c z7}g97YXyci0>et*h5cIg?ecQX_jOMzK54uYJk@(HdZxQfT#EQg1BQ_of;)5W8kQD6 z-%=rO0MErO_Gtw*TJZ&a+We+rCw%eT_L%(99W|i0qP3#awySB#q`m2uF~9oRn(p!u z)4aOnt(o`QjJY7EpRrf~7mn1R5>|UR(WcrV{Qfro0$><>wp%Bmb5@iw^>71gW=dTQ za{A)$*+*laWMWaku+ZPrGLi3cccg=yK4zZgRj|sphy;eYO;kwkhvz84}7J@g(8tP+cCFrf-fIUXSqzPyV{T{Re_WjsN?b z{@*$M;!ymCu5kR}d{5$9MU4L;a$xB8MhB3X1%^!l!;zGO z?j1SUYs3ZJJINt-`;eigd$K_HPJ)+xMw*>XcnFyJM#I+TOa1pAPYG4i$@Q?X%(#k3 z%ry%pmjlD5?eQoH=-#0qJ$@m&dEqL7VfjcG>ndQFfF-lU;_C>$Bt<$el@G7*j&kYo zjyGZ_h>Y0bQeGI2pB)z_A#wbYFl7;GTXMaGY<3tqXM}m(QbqqLQh=H7KEhl`Ht61I z^0<4YIQ%(FMS2xq&1izPfH{U__LMLsvLu`xtF)*H>Q@(PqDwBnK@0~xQ?V->Z#RpNUm7(9L` zpU*dEWrBB+O35K^spOomOd$x%<4Y#e<~46KXI(`4-NxjGkfbby4>7*lU7Azk;79KB z-X$ACsOOG&XjL>inrBqPgXHZnQ*xV{52DSCklv||Dw263YZab|HelF5qqliIFsu|9 zmQZg?p!C@9%p9~nGNr)tZ{^2?PF0aM&(_ABDl9#3ez_8xt zA=55km)=ieWiZBlar%PsM^sU%MyWQzhGu!w=+BuE@ z?8{}C8zk_^dwKXh+AK8Wmt;_bkOAGlA( zHeIDt*`~t&J!^FS@0>p9Kitp*3@h{^t}OtDC4v4h@ZX*~0SvowjdHdX7&ZV5yA2Gh z0fyCs{;)#Ofv5yMu0ps*G%eI_Uv!x19(kyhUb44+MkX*U!p}UBV6iqoCt&Y!I@k%K z^sumy0K=4EM=q$KinsyJVcC`*Xll5}F9{xAxN1)qXb~{17IjTGoh`E@5^4#7@rra2 zjSsH|hV=o%1e7!*euR`4h39AEkrERBS`wxb7^Vb<@sZ@5F<{srFf1P!rXtRT$b+8! z&uigNaAAxVWvEI<>xgx*`f>;A<_dO*h9aE}`oq|uKP>kjnWn)zGO{|{ z#w@CUVREs4!ublpGn#c%_cbuh~5a4CC;5p&|j_oDU2mRf`X$m5R>= z$rXYq1z&O<74(nS^bY;UIW8sfMMhGzYLoOhAsWeus@RjI)}YAe)2EFzMNV5{~89)VPF1r4g>F! z4d9#pU+1vD3~PD~{k8P{--az!{>!ivtLe{lSN@M-z4F_JRi(>YYV#Uxm37Tl*+tbl zw4z>ZNz1TvGU(nR6^-m@sO+%qtn9Q^0mFKmZyAegm)7)Gj98Wc!}37)j^s$1(b-KE3mz9q`J@nC~!c2Zpdx_6YIdne&ZI+pT4mXH0N zpNV^)vm+OD?<7A?^{QIsSrGb4e1az{q}1+~@R;FlO6b#;?R3z+!v)tpcj6ln1x1bDKFW93y3eDzBLTS7n zC>QK$O9Q>sgSC4hG58Y@#F7J;`na zyQql0tTsTHi^~OuwF1LRBbHf1z_5B?SQ{{m2|5s2(Iw$&D1}88Fsv!CJ1qP1{TQyr zdGX)Im1b4|UU|4?$)=mNp%LIn;N{f$-0K-TH)w_p*VFF;7 z7#JoJrx_&Hh!16!iO+@Q<_Y4IJjpaL>@F}Y?Rdv!8t8G&1AD%yweHgVQU_l;*v(c5 z3@aXW*R5-GFwd@r1r-9rQb7k|Os5$k8}zuA%RJCcz_6~Yn8?uvPxCflSS>J&-e^N$ z^x5yu9k$k=kz@IH6j7nK$_bn2s$)-;=f}}1Yq9J58nGK|K#yxa=y7cT9f%6h zv&9a<_L4ydVtqxZOE)mAzadUeZlB-tx)mmCL%y&&BT zdJWED6W|;MHh<_$1H+zxbJzknhu!>-VKe_R>=rO=g7!`AEdvgMR?$uoZ9)TdMe^_*JlY;)Up${{I^Gp8Pbp9~f3s z`fN*mUZZ&tFiZ{%V}TAt8R$TymEGM*DIVF;RMlbI4GbG<9yC<}!?NoZ*QkJD~ zJ`rK553=*)f9GYA-^+Fsd|_XuKc;%st#U0Wz%b-wxs(C=!!V$?BI;@LcJ{+T^)z4@ zaGx)OX<(?(qkPc~A;zSNLgrpe&}jagva%Egj6{@49fJwq3ze`&pmOd6 zl*R9c3clX12P z{qPgGEAFo02kozm^1h^1%;T&7&~GxfFgaSYUU@g|;kySmlD$VTm~kz~y#W8ZCC zjQuq>SO;H$qtuUC5H^@u_-kG{iAgq94+%eZE}pYa&7Gog#nO76ne#rg<30gy+t6&! zwUJRiKL#U-zjz{Se@0@VSBZO}IteLGC%nDwtONFYc?M`@5M+j_cBKTYb7p}wOaKot zh!J8>1qTRxI53f+@B+apQ%*I=ipQL0Co)Y4FzSKCh&UKqSSXx1UY#!7sZoR5BN zlzn7@US>JJHQRcHS%Ci#nagW8Q3_R%#E7wUfoWk(=2eA7sckQ;%1H(5IR4nUY5TqC zPOV9P`u_W*Nh=kj*<2y3yVfkcsb3W`sG&lQYIpF*i8kSc>$d)+=(P$IPBq>hRbzX)zJ35di759z)AVF4vi{wH>~?) zmD}`*cJ~|lN`oP<@?8UHUO3Yx5yO*VqB3*(=`Fj4#0}d=(?zb-^E1Q&qanjqhd!<3 z%l-Jw)N)7>q7|lqv?AE1oya26Qy-LO7&`1ih*O*;!d~W39n39MoS+pI9?C8JpiU9z z@01rm))!&8p;D5-E}begX4DD~iHkGNVTGAHC}M`JQ2tc2ly}>y(|>SHi2^3Bk8!}) zaE$W1Vy_|_s;}&CZ*Vy@P-%N&D9Pz!f1GjnINj{>i$FD>7Lj)LQ-o$@OMol3E5tjl zHYz4@EG6XPV7cGv-X^ajEv)ke?Rkb8BMQjTW=tZzJC@9C?R zDL3xN56GjO?;@>}-@^`E_>gvZ({k4SjctVowBP2hy;{x-cBxN6KwGk7>{{q?m+E6< zBTCBXN3%)^`%CB?Mn)#ishjf7sGRbh+DN$J*O~v`uq^BQ`i9~gnk5lS*jD@(W^>Wk zpNndqX><~w2UkSBCAF74*D0%dyQhr%eQmRF(oB{0*iI#SY^q{Dwor*)7`6z${ybpw z@l3bbH){LU-!Od+FFnRgR!qhXU!X?MJ@*+kS~44awrV-}>g7?@yH(ABm1VQ88?VB8 zXFnOWJ^XWB)9mlL9r^QmEyatvt%Svhe$hkouEfU(NyEca^xBn8nf0x9bXBW8v$A?W zQQDas-!qgGn=zAy;`NJ#BfZv{lPc@XyAvkDJNM3E8yAzr6VvAtRL{3!?n@zli%B|R zgY?k2Ciw-#XZZolgE9ztvN@E#*lCM>)2tggGL?b({q|ne`=NcoeTfFX4^UQ)mAq)T zx(pJuk1DX4=I!+8jrOz^QHdc{C<}jOMYwZIZAwgAZLI%LYm)O)#ct%sj(xb6j)

    }2e9Ov(6AVbpkamGdlF7kjJedK(sov;DWN-NMqmoe8#CrJSE zJmoQuYy!+{n-OQYVvHJr%N%0{_~83`W#0uUBi^~>Y!|%%ytW7MI~Z5Z90amV1_4l7 z=STpr!UI^(o-zQ+EJsZyqMFGKsqLeH0O0pt~=W6?V^io++c#ZrFUMSnhp+|HPGUK`mOXQ z{Ahp%2egR+)`VdHl?G=x2F@sLOa*SAr`;JYj#RI~KzpVyw0#kf934=frmS0k*Ijj} bScg9WsNVZDMo|oq00000NkvXXu0mjfq5LxQ literal 0 HcmV?d00001 diff --git a/app/examples/Image/PhotoTouch/hflip.png b/app/examples/Image/PhotoTouch/hflip.png new file mode 100644 index 0000000000000000000000000000000000000000..72f46a74625595b9b4575f93bd99043804e858db GIT binary patch literal 953 zcmV;q14jIbP)7NO6vzK>gepNAgh(Z&iACwoqC_MlB`gThg$N5>kyz=14M`=eDpoHfzC(3mYf&sp z5G)$RM^TArd_;92ZK&$|*}T`ecji8wnfE3VdFO53%$$4vznQsn&$&mcSj8$j z4%5pJAIP$zs8=IdJ}^WthnQVX`FdXB+X&m7UfUTlyk4-hT=I1cVB09mLSD-l4R{Su zR}T5PJSS`yLw=VWUeB3Zs(cMkaoO9DXTQ_$2{on2S8>~ncF+Gi9`YS8T)J-~+@dPE ze770tI4#Ce$a}(CIAJ4nCqlrZ(~NSOOk{uzXKaK{y!Zeo%?Mq1C^CTX=&}(y;>sU0 zN8ey7iUlC1a>GVwk0ak^j=akZ6dORy;I56(7FE8LoIk3UIr)Hb0mK}7O@JJ&QRFxC z%OCTOMHAs{fa2C-j9A1w^U^OiO(ws_T+csJZv;yMAnN&KUL0Y~-{e=D@m)B zU2s4yP-BE?{7hdQXZPxCK}?cfXl>@3fA_O^WCHGU+(YTV{q}=;$gG0=bUWuANkv|W zqc%bzPjcBj+mV{Q5FIwcB}r^B&zvKZDnN$wHbS$w=^tHZN~-cgOyRl-&@Da}{`XLw zy1Wq8^!NauJWZ4eW6DMN$V#`I#{2_M+%ldA(^9|xK%I9pFbS{Xr79n&^PoBO8D>)j z$c8_|@Ius{ntZ!^Aqp?W2UC%6v*q(ku`?Ovv`bx%`CF@15oY-V4LHv3)D;=Ext)w8 ziTS+p@qV+zaSzGU@eY2QF0YvHU}Q1xeVxK+e0Cpg)oiny5*2&z4W#q>?16xr594LY}Xk zemzu|ATRy%Mx_+YlK>1;8}h2Px4;z3d5IAIZL?a+x9cC%Pv4~N`ab%3T;_It#VS^@ b|Jwcl^XW?!Ud0Rp00000NkvXXu0mjf@VU3= literal 0 HcmV?d00001 diff --git a/app/examples/Image/PhotoTouch/icon.png b/app/examples/Image/PhotoTouch/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3107012937f062a452029c64c7469d837a07f718 GIT binary patch literal 4904 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 literal 0 HcmV?d00001 diff --git a/app/examples/Image/PhotoTouch/magic.png b/app/examples/Image/PhotoTouch/magic.png new file mode 100644 index 0000000000000000000000000000000000000000..a97ee5fa15543f2d885e2c359697c9314f4cf9c0 GIT binary patch literal 1093 zcmV-L1iJf)P)`VYx+lh!jRHokw%f{THdSuG>IkPTWH|JHe7DJ=jSu!6DA@XFwiHSiuG&E-^|J+2wXi zyUZ5?{*}r(btJrnbR^5YGBrmb*i75AdT~ zyf4pP3kQ`Z5vpBfKA@jA1{~{_TVdsyniumukN6yQoJ#r)ylrZ{%6Ior#wsIk6fnbg z_W*_I3kVYd2pFYX9cEz*xWE$1DP##C^RW?x_h?b8!5 zz=%i9RhILG#;m7&bl*Y3%5nal=>DaH13Ji_fH{UOrF;st&v+!-Io&4>TGFF z+5C4&bb11IraZh}Mny#AuoP%~fxKrte_WGw*$X%+wn2Zrh%}0&aS{1yl0(p5nURfv zUu3q&zII|v^Q2QIM~Bv3ssPVfaGe{YKFoJiPBD`n=TnL@nTBI*;0MRD zIKoHdDYY&tXd^oHT&9L+G7+$yPZX=3I@Yky&~7bll&0Z+JPadDW1vbKVo%>0_aa*- z^!;-(DCr}X{unr~{I8X9*hy0Zo3wUuZloE#H;e+@b$=$un5`snKTj#`x~bESGrkFM z9Uh`wWAZu5V~X9%Mr}y?EZ}wOQn&~ovp})mXGc&1R?}$Y7xI~QZfxLNe+1|!w}pH_ zp2tH=IZD1`348nz@Vi16af}Bhd90QeWnTZ`kAM<|-aqByx{-RPym}e}lq?rJr6@0@ z@#qfnY2qd?v&EkbxLA^=_U$AX;b5AlY4dr}DBv4@okmP%#QEAI3?C3_T7A3`<<`BeaXCXxVOQHA!TG#~}%QXIrV8BX{YjYNM5@Qo$Kr2xMQ9(>Z zEK*27Nk9utVG%H(CLtj~{JYmeHoLbobGv)r+=!5Go1NL8_xZk=eP?%p)%bsdB_80q zehdJ*b zffJ!#AHiMxB1CAB;Y{KvzD7-j{=5i606BsfK#Jf1K!)H1z<_Wgt1mbL&=7#D*$@J~ ziwcLZ2OH69ykb*5gy+~0byT>h26E;>#p8UzZEtd= zOdklA!?Qn#<+CHijYzGaWSlkiV;o14?r1=8=7gru40=GHj!gwH7<7dvyaE`iFv#6r z0W^d)xJ4B;Jplamg@vfug)Ywkz&MV@jcvbo0N@>#qeg6@_XJSD6BMK7$7namf3y5i z!f1Th=P>HE0ttEGvijx`K$E|thU3j918DO1ai;c+rUDq`d(sq8mOdy9g*0!WY1wAN42yKK2O%5gGl0@_nd+MQu9@~b}<`QgA zt;K_l9wfOGdZ;u|XcMeC2t^W%F=9e4(IzR1uF-!Fb@q)rv(F~(yuJ9}%X{B{=6%1J z_h$C(eux5m-c-LPwWR;_P*?Sls{Y@(J5OGt%Zk#HK9(0hz&_npehsN4UVy#U^pbQj zUVsbQP8({rkC711tt9tJ`JHh_nMaiII^DcvjvD5qb(9@k|8aAn16wA$M$^VxRYhD= z@TH$)LCGAeD>x1B*hcZ5e+H=a8xt(&Sic23`)z~l1YnQfSPWTz2Rr3)0Te{L0HqFc zl<+Ps?56@)VUBBz@zf>2H|BMumg!;Km>muPMp@s|UuV>G z>Ky>g+ai??0A!66{kx#(0MGImR?pHBiobG*L$xkYS!b&9A@s0-ixyr%#Q$@=I`iqwyN_mYBOgGQ|Jyw8T^Rmgie~(cf z?S9j`e~%I1RljN7zsCshqTjUc-(v*G%D#Vh08kw50_+0p0(fSxl?s``NL9#9N3^1j zwvM~%nb%!w=)hp4EyqjJm~A(b%yHZDj1r2>p%K5Zv969w>WEt0v%;Xkbfi z%2Kkik2{!9CqMZ(8w~LWkAM`doXS}s5BZ)cG9;+u1kE{DmA7bRAGbXrkH4s=IJ!Zj z#|CE$w8ei`Ez`|r)$Ev7^Ohc0b;VMcoYJht9m^K9!&=heVA-xkQ+X1!2=!2NRl#|(TF;;_3sySRzK^(<^q1K>-s|bvgg{%_iY-~ kEv-nBR&+~)YBLYTzs=P?KoiDjVE_OC07*qoM6N<$f;|SVB>(^b literal 0 HcmV?d00001 diff --git a/app/examples/Image/PhotoTouch/oil.png b/app/examples/Image/PhotoTouch/oil.png new file mode 100644 index 0000000000000000000000000000000000000000..a19068ff368e5d0a59d7a4190a2f65d886f5f2bf GIT binary patch literal 1189 zcmV;W1X}xvP)2*I+eKJeTcMFE8u`(PjS-EgO_iXgrbLZ5^g<(QP3nb^YRINyVghQ2VvHiB zDiWFSgs6b9QHYc4u0@b2Ddm=6&98 z&N<)AIU){&DxRgAetu#N7r0aohhNKCRP=DqbiyNSBR5i1P7glDJLHeQSUDZp@5CHq zyg9}9125>jUY_Ah&_p+PP96RcophMX5f<}x?mTQKF%|e)hIIVJ2!aq{9fLs=UEJXs zALn7x*%MQ<|O3Fc=UbJf1rbE%pW)b-e~7K66yl;Wu!aDm#3PBTDU?N$`SD#(MpM zfd}jiH0fHmg)krpHT0=Lo9wQCms08oi5DsvR>Rh1v?3)rxK|dalh;EJYmk^a>9CoB z&s8G*#6!=(4{F#Sc%|bPF{+fdg~s2c-!{+LC<9?sJhi!DUHJ?`F6L++Ml{q!Yo$YusU)RU7Ge$j z)V~bdy)AL0uJ!Gtc#n7e`1h>vA|!RSt&)$wjj-Jv$!Bt>$5Py`p_W9T8ispS_lvjfI5pFT5mKEXP2K~gep{bHx za%=F%r@im2^B3W5J*m}sv%l7Vn`Gh*2XGOVa#UBnDhD26qrU0P#xAS1ZyfHC3~DEt z<-=b@8+qaj|I$+$KEjTC+C8kDcpL#vvypV}8UZj`@ynulgrFxJ#f%`sAGFa~c`nk&qTm( zw%sm$hF-&}+2$Q^YCvw5i5*PJ*r{AK2aCrSHgJEoF(MxsJIzK#+|Y!P85{km$qq5jRM)&JEq z&1G&3T(2}w@g&h4bbeU)xh-2(vC8d4l&WSwb zli5-)buw2fBq6gUE+Rvcmb9d$SN6+3@9-4l{r|;(7n5AF;0)RI00000NkvXXu0mjf Dh?qrE literal 0 HcmV?d00001 diff --git a/app/examples/Image/PhotoTouch/ok.png b/app/examples/Image/PhotoTouch/ok.png new file mode 100644 index 0000000000000000000000000000000000000000..0bf4198acefa8cab107b35aadbcaf7c38f806df2 GIT binary patch literal 655 zcmV;A0&x9_P)L%DwOnbX_9-B_kQKR_tYUL>zngDzjNM%OCk+xSchDtq5+I)PNQn-ot8`c z#_1^Ylx}@w)E0k)_k?SciNnNODn#I|6e#mL$ov*o*kIf={W3>+VmAdBUdT$Jcld3* zL!pR8#NnL^VWclD-Vk_L~PKxx4h_n1~Ou=OMiwAF>>{Boq{=GnhNq&aM zw~_-NG5j9<{hlW0!U`GiGlSqCI2ySXlJU(H_z~8EryfQ$JI}9tc=zrl9tBS=#WV~n zcu6lwtfs>YaiOE&DZM1oXrFqKfEVH_4U)fhF0-93y(ICaeXh>M6bje)kbu9E1+UQK z$qrK~6yjf%w7c&JoaDPdg-ZI}2NdRM1r?_4(svXVd?*Zz_oI*t?^2k_gsSJ zb$c{3C{zczdj1r=;av(9TYUdrNK&Zz*!|#BsIlueeKv){@Gga_Ene!s3)MKhpWP=- zp=Ouft+0EbaNP>;R=B}mJG|6;7aD1v^NXE=Y5G_NJG@iD7B5NM3_R>^GwZ8whCi)1 prdgeq^jU99K7QXD*0BDM`Um~?H5zz-WO4ui002ovPDHLkV1kE*I>!J2 literal 0 HcmV?d00001 diff --git a/app/examples/Image/PhotoTouch/photo.png b/app/examples/Image/PhotoTouch/photo.png new file mode 100644 index 0000000000000000000000000000000000000000..eb7c3c23ab9113faacaa337822aa7b678741ee21 GIT binary patch literal 1068 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 Eg7$gZqW}N^ literal 0 HcmV?d00001 diff --git a/app/examples/Image/PhotoTouch/redo.png b/app/examples/Image/PhotoTouch/redo.png new file mode 100644 index 0000000000000000000000000000000000000000..c8a64d046861d4a66ddc24edea617f9d822bb950 GIT binary patch literal 1042 zcmV+t1nv8YP)qi6Xdw3o42tf?L3Y;6YJAgD5DjC>}&ah;K-Xn(kKx{AaV$d6;ob z!$`z&7uT%T$l1Ay?`c~T7ep<;kE*qEO_cJJsk5!o0bHiuwnro1m(t|_P!Tpp0WeeO zm9v6PD#E7B11u71AUK*IRfH`O1Aygxts?A*7yul?1{Gmf!~o!6zETnPL<|7-;|mpG zulHC+-vVZ#0z*-RV)Q~M0HqkOAD}O;qQBg+-`bE~tZ~j`4d2n#;JEtmnd)$W!9RFh z!l(2wBwb}rgz7*DEMc9OxE=s3b8;W@jlgkiG?CW>fW>^Mx*c{yh->A?;}UY!zBar> zGn&zC6u?`|#uW?{9V?KVB2-iJFBPW|_$6@V5NaIhOjC zwy)lNtRfs`%o|{v@NeVVz~cX|5*Y z6`|I3EilG<+pB?HLjnMM^1h0&-VI=u@L3m{JP79Th79nN1$uxZw#P3PgbD!m;2jxZ zp{=RT#zebu9!*B?40HR08K@Vx6EpzqhH|@oHDviDu|K*Dj1_mcLl@6S9m>S*O^pjz zi8YcP@(RdTSHMs9v{mJgQK8*vK)74oVqC#6xnr~SK{o~6?8cYO%AZ2DxRC+!G69ez zUyEfH^#F+q;A?2|`MBVeuT+mR7P zjQVc>@+v^${gV@j%5U=jnLGvG?MANGQz1p~%)mDhi_WCHCoP9y(K`Ve?ZzPOf_v*a zh@by`3gaA6vh>zeHB+?P^Wn~Fhdi5d?~?*xfEZ)3wy-*;0eHjb;m8BD#97cWEkF)W z(!+ww1CT;&a@m;0xWRci9iBYEN-sQJ0OG6L`0QTZnG3se{P5}^Oi)OQ#KEi4_uzQ@#xXV9cm+Uw+s9w@5 zj}~e%U+(#g2l(yq>WEQd9|L?tcf%t%qa5U^=VS&}6PkDe;i3=ucPt7S0AP%}*=i(T z&td87=^;k&IDe%S|HA#uOHak4&|@y9q5>tFpPu6uu3Ie`iat8~3u81;%~hE31poj5 M07*qoM6N<$f^dBExBvhE literal 0 HcmV?d00001 diff --git a/app/examples/Image/PhotoTouch/resize.png b/app/examples/Image/PhotoTouch/resize.png new file mode 100644 index 0000000000000000000000000000000000000000..b822742094700595336daa8127a20b5d464e0e32 GIT binary patch literal 852 zcmV-a1FQUrP)dkwWQ{xR|oI^hkkMzC>n?i97Z|PB`-U8ITtdc`Jv&2BK7J8uM_g z;XYVW&H_1(Z-GJP5lxB~r)lDp>xdIU?zlM_kX%9YFINV=!*C0E>9pr0N4tCiVcrFJ zVY?X_WW&hN$9d`=L~M>a?XO1U0lv7+V>Xu4-t_5ONI~Fb3J(n6$+T^Ubu40<8H#;l z54fl#8zBHij8Q`kV?GF7bSRMz0Z7OLR5Q+z9kD3wisS_HfzhZh9F^QnWIFpeBd*%LLIMCyz1pc z-hx#w_#hYrFoh6W2~8l_;o(&-v6M*wxJjv2fb8&am%^fZ0D!2{qPuT^ZpB4+p8&ne zi>|-kk2r~X;1yA4QI*9(s+lq6?swXKDL% z`pPQ;NN*iP10qHM+UX9A831UbCnTyJpq0MRxYpNDXh|cl8DNQlw0*P!lriP5e`Epx z&ZPXaHVlwJC=Q7mmX-9Zu03nyh-dvAbQqDZNNg$rENS-F~bxzXkm0u?UNN+}V z4Mju}-)mAJ?=m7kEBV`*kP>-gT>gD>>vlT}{jy<9{EtMPySF?LiS7F`j%(b$|IQ*~ eJhYOlpML?dnOYZ)U)^p100006o!#P=62mOY;oOkPRWE(YKUKl&k>(|{{nh&6#eMO5U3L(?f=w86jZgg+pIByhZMkiUJ;E)*=h{;6QDZ@ccIob zlW4(jR&&U@aHUY5=A%}<_ZtDd<*-wj9q7Bey$85l=>EaF_hClhIoHUdGxF{Q3Sb;< zu6+PUBNq_73f7>?HTM{Wu0azLxF2y;qXKcrq;BM|?R9-KVM3S9v!M61OC_?@~hBfl^q2tjk; zA=em3ztZtlY%N}K86z0Q4U8a-G5myX9CxHt6eM82Yn(+^;Wh_vcyA2j0D5r<15QeF zuzeoEK6l){RSy5B@(?Gvk>#PVl7K!p>RSqY9d8Q!InFg91nq=%u5nS})P{S+#b)R9 z9TAXJIIR)pU-;StA0U8L$UnP%X?#ekoO?aS~kyi;@Zc z>YqUpwn^wsDn~g#0-S;#%=35jAAx{fw-Y6J&A(cx+oHm&1O%q`4nC|S;AwS~5CTfk zqN;RDemNh(U=c@u0ewCaR*BPG6M~EQ*mQ{xhB|&s{5s`{xLrrU9^rqAbs_N^nUe*q z)e$g@qoPF*%R}Iw@qS3zr-26mZjxJd(Xqs@m0wTDbDX0o00n!>4lDd}rsW`4xKJAp z(DA<9wHxD?@LxH=Fc%r%0f1%vQM4cDY9su7CT096n+@>*z*_z(VvKN+Hok#>%lMmI zZGi^>Hu8dq^AGE_@H03d<$srMhn(BzZ< SSoQ$`0000UB7qPD zA2b*nHA;<9QGBW<+6OA&M^cPnYeK5UTCvdDE%x*815D@6vO9ZccDkNE;B->2UgD zBhhkQPsk z0dTK6y{wURh$jmOfY4&?(Ub`=se1|vfY1h|OoX#qT3`UQT7xD+d%*$F?HcpCnbF-g zx`_zOC98eMQ(nViXTe7Rp$>Bz?keyI0BmQ*Ydrct0Q^XY*Vv?Fu6VB&q};v05&9S= z#lH+Q#_tSpl5-&tnt9J_G&-MKrs-Hvsq0ajnpA4F3Q9EWCGN83)^oWl?uhoQ#sc9} zFXgyBzyiA+!H8ON0&Fu&Q<*(NwT{{#NU!94AsM#DauEV3!CD%*mLv-)BgrDlsK}JI zg?#~?7L%gbZESYlvL1ts<5H?S)vEV(&iq+pIo3k27rG-ac>`p=T6EUy_dp=PVK4Bb zm;eA&>lM5US{wkd*8}JZ?laVz(CKBX>nC|QAacNSt6~HI4$|+s>jJ_CJ-0Ge0B4#{ zT))8%phSz}90BNbohq)*8uYi>D32H5gy*iz8Z>S;<`H1w0eX?^)?^KuFdOq@1#rf_ z@vXK42poaHPdxzDvXMF#X8J`}X3g?V!7jPmi3tYzjIW&;>`V#m3@S=Hvc8Cx2Bm$g zYFmKa!BufjR)C7#;}7O)0%6I+4-vv2q&f)i`mW&yzZTq`6p0BmrbAc-4YXNWH| z2K*2J@L`6#E2zJ$?*P+_-lT2M>tp5ORcBW7Q#Jtid+{@RJWu&0<|ajY+X4V|$lP6S z%tJn@PE&qV*VzFqGmnDCwJxH3LI?eiVT+YKfNs%{mzUC-NB}SStB@8&knws#lmrS30e0VwML`g?{oh%u=0JbVqdS9LNJ`iB6i&SW~8= zJFc~JBoCk(oi?@ZQ$p?jwg1>0%0qgo9@YWBe7K?;5ux6Ha%5Qeq8kyxSE^?%TG5S& z;49UV@+rCz5jL5Bl&D+F3MvnvReD{g^sA2PnGi>_0Q?77-u`9h26vuzlPFp2JGLg(AqDYnaim!$EXxbnqNQ597($uPnNQ7X+!b%8>CM-rQm<5rj zZwp1V8bLx-L}F4+szJ~M@!6^3SWIW$ee?D1n|b4P;eQwJp7Y+h=l|}x@7{av^9Tu) zvWOtdnMtnr&OO>_;~@juHWDkP5|(e`6nbT@pjTp-Vrh2Fc?_SWTAzSNPC4veMC6C8 z&?RuR0PaOZe(D6G2tV6$9(37J!dmNxyws@T0L|RwPmUgaG%!O|1leo-6@-jFi%Ny= z;LTW?)FAwkG1g-sVmyB)Z}&)r{8A}wvK|AIjoxT?An-kOsp53&F`$NH@LI-a+m4U2 zJE;`_JhliJR%Nycl-Rb2p(sZ?$MBzk>jb>{H<1-fXi_BMIc;?QO9Jzlm!f;i9S-w2 zCb$uT02^tg+C2gQqqxorHwi#Fmsp=+3<&RSxA(<9g%S>NE-it6{CT`uglL94MNBon z@dPFn;44^@{1oMe>?`>vWFL{VtJMxC}%BWOq%bU$eV(2k^_cVlZC)NW+iDN z2?DEFWZU&VegW`NRgTC=U^26S7A__<$CSHE*>0P_{y_p}WF$}yKnKSYnkL&Wb>RAH z_@BTKAfW7`i(Mh`*br8_K)_22bK^pgDMSYAeE`g+QF*i=kZLuR>sHd!j+BJ|dHNJo z6T=2=8%Gd6#6)w(JagZ+pd0Q2mvxm zP0>X}dStVdIgqNSFXj+<1fYsL$(x`Lyh-4j^J4Ug9ZctnelO&Y)cLiO)y!uOV;K&>!Zhh+K?wjnQ0AF~g(WZq z_5(wnK(A5t7ho!~CUC>3j;7890?&A32>Yo>)H?v^OO$n4f{FEtrTt2>8-~4xxu_xcjtMie@1OAqGREe_GAiGc^v0Q)uuuoK?8msGFDam z<{DSiCY#w%#4^^IkG1Rc2tXyRW(p1=pgR$DQOj$`-5=wfo$yu4D@T6k#c@hJqV*LR zWun}4%zd*I$9`JbEvu6E&^h3ngrzjrp6(!2;bklJj7!Q|^zf7xu5&k2lHdaV0-sT8 U4^P$zJOBUy07*qoM6N<$f`Zr282|tP literal 0 HcmV?d00001 diff --git a/app/examples/Image/PhotoTouch/save.png b/app/examples/Image/PhotoTouch/save.png new file mode 100644 index 0000000000000000000000000000000000000000..122f75e862ef0915c988c450c71df14ce6dc0574 GIT binary patch literal 674 zcmV;T0$u%yP)P1=ZJd;rl1mA9+*T$-wE98e%|egHzIvY13<3(xeyB=hp3kN zTVMe!fCb0^_$!>~Z?9f}b>Yn5cq#xNgp;Asvj_bEpv$)j$v^WI`%lW{d;;>Xgx>$tb(!l%<=@Z=2LK)3 z=Z<#aeR_P%i&CC&LjFYMFoAO#r^r9CieJ4!C++EZ>c5Eo0mQyS|JW=jdH?_b07*qo IM6N<$f*6%9ga7~l literal 0 HcmV?d00001 diff --git a/app/examples/Image/PhotoTouch/scissors.png b/app/examples/Image/PhotoTouch/scissors.png new file mode 100644 index 0000000000000000000000000000000000000000..de748cfbef2a7dc2d990364465bb49ea257747eb GIT binary patch literal 1549 zcmV+o2J-odP)rM5f-n?^CBlmGz?Mgk;CurUF_A{d{E`avO9q6mB#P-95Y2ofVA zrUVl|L=vzGzJ;g_5JdsQL&c&kv_NQ~t(3NR`O%rP_nA3o=FF{$dp>6FnYH#>_x7B9 z9wqvpBNYcgIW45o)Iq!H+f>>uDYEDus-(fxKp&-k?}t0&U?Vv8A>WBrfc=8C5jmO4 zXJZHSs7GNes}S`8)`!T>%)r|S$GfqtEe6)+OynPjDbkn~$(jXoJeE{`B-)sLQKmYI zfmYT)9J8=mQIgC+Epvatjrdt6TV-XfX3$}j;HYG6Ng`i?UZ2;3kswS&52xxxxsg?l ze|$(c?gU{J&NHhAQugg}q{%*gtj0h>J563MD{l^=q3pR?afM99Y(nQU>0 zCA3Z>Pw_-aXvbhT1B;n6S0y4WkOt0SsKyzJW`6mgU{y-iA~yr7{4^s+q#}GGlW7$} zj{cn*X8syh1g`_7&7=Y@fo9M`OP~5fL`~hC49C_?-x!hQ9wE3$lQ_2=Jzxfw|0B zZb>@|mo@oTlv+AIIhQUzb3h z2!n8vx$jsc3eki{6k6VD%i~iHB`9EFCeLudQj5p}ZSI%Xaw(t2%!KkpMA*a`dN9u- zWWE;483TAL19>9k%BimhPddv#rOO{cZbk-(Fa~EiPcK#?6)T>?OS*gu$}*HEBEkf@ zK>_wyyPV%G14a4@Cig?0hzPTJb_9S!xY;USh97nLj*L2Az(6V1%6bBHqT2Y=SL;rJ zYgmWU{)x}gcKRYd2pOn_CHCRI%*2ba3)Xlwy6OjGm%~ylAU_FB_Ixd>D=xzl@2Lna zQ5G68A&LBCo{UWKj3+u6m(i#;FV7+}+EC#tUm{080Gz~L>{XM)5oCLkeG6`X@t&i$ z<2qi&Uyk!3c1zZ7j8}i>3hV(eLw()~0C-P*o?*nxzThG+7G%As4%EIB9#+r(!s)!& zK~{zE%k{c=f4qT%jIOcF^L=-A>hB*4jQFL}Kz*G2M8?*s6j`_n(?avWR)q|1VuScP zX<<^df%QHvjaxkW2=9dGFh(c=LY5eI&0dQQKUOX+)<+vqr%_+2zI{M(4~oC`6s>ph zs?d!8f}uY}$q(Tk_RhtJy*;IG;ZT;xapX!p1V_%-l0Bm4!sfd+o` z|9W*Apf2z>Bm8Ny2O9m+vdtSn#p2Za5{8AUU}Ag&MFk&HwyVlsiE99WYp7If-zy;l z&iLrVN-Sg~FT3u*25i8%nB|uveqOYJTt4&d!ery@Rv{P3XA|O^Fo2>1D;a%GO-Ou= z)fbC3N%0gH$ir`pZ^I*ET20|meWP>=gOcKddWN%GOsB6&oaUUMkLeF0Dx>*ys|5Da z?9?~O@eYAyaEY2s@h%ot%Qb`{(s-dicoz#*XtkzmMOAhbQ_M2l8sVJ(62H00000NkvXXu0mjfq_)>v literal 0 HcmV?d00001 diff --git a/app/examples/Image/PhotoTouch/sharpen.png b/app/examples/Image/PhotoTouch/sharpen.png new file mode 100644 index 0000000000000000000000000000000000000000..7d6f67e7375afc3fe4c80c47865be5d91ef85c2b GIT binary patch literal 1301 zcmV+w1?u{VP)Xv59?(t!>?fl(4bGN(kyAONserL`( zvvKZwnF8cVa++=PH4x!of#Uhtt8zvH zlv@N}V}mJi9m7ZRX*f0nGZ5vN%y5~j0*u{t{6{a!1wjlPR^{sg zR&R@LVOK5{a+r*k;Q~T)mor#_GYTY(`>_%$QHvx_;v_CPBCIL z@QjEbky7tC$dg&N3T?vtS57yTSxPW2UJME6x1z&o1`FYUaFtODIBql0EM6p}M7fgz zpcc1#Z~$nw8Hjorc*Id&#VQ7(HUm9>@u9lCb4GF9WW!(#ybp{ioc^M%J*A zPw_zo+|1t%@+YM60)l%~NC!REgrBO&v|))U9t-&vzv3Sx$qdi2pD(dY!K_k${&enc z>TErF@1M4=+j7TkT*1Z0OdT()w0*ghgZ#6O^4`aCU4AsbWEOED9#C;N`Mf7>tCM(` zJN4b13|sO5QU0JV|AG(o2Ry12rGC^hVJeW$ImjILpl)-MFZpJYlkCz)d;X|rKW~`i z2gR+s{7Hu{|B9t|&&?u#W3n7Bgfgl)^F2XE?M_91O}UoeEf z9ae0-AX>h|(*OOYejc*kHJ=0W2HbtV=zS*nFSMCApn+kL?Fk=jR|(_^Wufw;C*Q{< zkte_hWX|nI+=nHS&pio$5?RxHOhfH1nS9Q`yE1c{+Xe1$Nrs+mpo-%v{|T<)yA9-;}_K}nPKyl^eRq^}Q7jhlN6;};_kE?G+gt%h) zdsGwyV3cq3tR_Cq9xf?`yw@9(2E2^bSc*v`kwg+_G2yr!5;*9j;6vzL!Mf$Wp>N7T?L9jW-n>u_xI~Z$cQ-xo~A5>Wnr=|kGnC&vP zNgfkwDBuZ zFXImx!D~l=g}94osfnN*H;mvlBfvGNmGS$G;k6>bBGh2C!0$n|*VF=51BjpvZTNyF zJhQqJR>)%h5^3JgQo_}$>1n;Z$3q;G2!1_(%lMr!cwYhktb?bS86SQldu4YvEAScu zNV1Vd!SP$1_>D@urT{X+N)^R33Ar6NG0GkdU@vMtW2AHIx##LQn@X8;d^Me=PMyz#m05%YSu)({>9ugWnf z@Dflj=5%toK|DBJUfHl39}>CW#nndfpu@X%Wg>Egm|-&bcH1d0!d#mwEBPb3+6Sco z_6QV%d{qQ8*e8~tFbOgEBqDH8;i}b(2X;RTcTs3O1}{Z-jyl#y5k0|Vp$=;e3-~O$ z6O{t2kEjrt5JHV%37w)l-g6QwoVC#8emEj-+~K2>`(+6x({ZcQ-ZlDluCtQ znAJ*-1eE}fBbgN@aM@1L5N=}=9(#yA8Qrk`=s`E$BaAi^Ijfrsv4_$&=4wa4r{-E= z9K@hK3R0RT;f%JMzD3_HLBBMuG9$n(A%xqSQJ8E>K)g}V|Ng1*+;vC6r$7(4yWn5xz#OIjCGsTwQW;c26{mPSw5p`@ z5CeRn4Itr_&&zC%{LXLUGb2mbDZ?9C#x$S9NR>Rf*nj|lS;DDWj`2MU9hC8}nb1#V zLcjS!x6i0Ade5;ZzTJ9z zvB+vQ7l927W=tpNBYE;ft@7~&mG{C!R{jt2l*Ea&@S;7_^DYwMZWk>GqR p#{&7tGi2R(i-%TYQhYaKe*q^8PQ?h+p4|Wd002ovPDHLkV1j`T>&5^8 literal 0 HcmV?d00001 diff --git a/app/examples/Image/PhotoTouch/usb.png b/app/examples/Image/PhotoTouch/usb.png new file mode 100644 index 0000000000000000000000000000000000000000..848aa05735c945e4a7e7555154b08584524772b1 GIT binary patch literal 739 zcmV<90v!E`P)^hwihNcRqHW-()AV?+y?vR;*a-T~<&d zJJ5?1wknPE70<1LAu3wj&+Giaa9ZXacA2oB;LDKKQg68%4@iJ(vcAm8kmi~IV7k=VXp~5PPqX0Wz9J)doZQg zFTvyfwf-0YlPrt!Gdh|8VXi9@;EMy`Bpk68&ZDBe0Ssf8La!`7j#Q##gr4jeda>au+os2Sc*(z~I0cFFK3iKmf0G3GWR8-1VaIKmZ$qBAf>e0;tM{ z_x^s}0(-zgrwG3p9eBozM(O}~@Be~PfQ({48;QmMsLGZ(Q7e`pV9SX|&BgTOpn&ae z*lBd&tQU=7XB~is`~u@%G!wWWZF~~pUZVi2vauk-A#7*?fP<$Z+=4v@cf+Gz6r3eE z{_G%)X=4Cc#eTMxM@|$@!!`z>DhI$VTyP707{e3op|1M&|2nglApx+5DB_DEk z;{i$>^{vd>&+`iBIK_S@8U^s3him>EJjkEAk20i|c!^2Zwfcx=6tf17Xwvu**rSLS z*2@3xZu%kBS`ZU_rEMSenC>5fdr-L;(p>AHGWe)=GkVdZm?qHRQEjYPv0|+&{RNwB V{H;l`n7{x4002ovPDHLkV1g&0TFn3e literal 0 HcmV?d00001 diff --git a/app/examples/Image/PhotoTouch/vflip.png b/app/examples/Image/PhotoTouch/vflip.png new file mode 100644 index 0000000000000000000000000000000000000000..63d2ad2c276b38b178b1a0031e518f5ddb72d66e GIT binary patch literal 1018 zcmV_wC#L zz2EOiiGu<|Ofkg}oyk>_!t)GZ#tHIsiC@fb_~QbL=L)}!F~Z^xmdyozH4{{e307r| zf1gQ{ILxqZVUpEZ;yai!X+N`ooNqNUMMqZntxTJwBX|hmam2PT&DJdN+bNoq9%NiS zwuL8bt2O>JW-9t64qA924pK5L%uuK$zS~rPL014TL>Dhi3njX1h3_?WpYcg3UWiY5 zW`7mE>ERyVn~IOwQWY=679QIczQap{&vC+3dqDfFcp=((U|Z-XmlWT?8B^&lYa{VO ztmUq4;S3E)@VEyPb$v@mWeTxGd4UWnyfwJpR;RJ8DyIeL^OvG78? z!>DaxoEBGntDSIuVNqjcR>J#II zsOPwC;frVkS1RxBE9bj3mq(vz;CDYS@IS@0n*M+Fr@j>-7Dsibiuo1#FyyJHLt6j( zX4-3xnt|&?L}%4c+Zi^kO#jpnUDB9()$W~6p%Hfxy6V=szA>wqH!yEt-ax1U)^U{EW-;deyMCi# z#tgSP$_K7PciClV&9Y&UoencVn+DXF$!s_3ByG`O!C@`T1TRSobtu}vN15S6)o0m~ zUDP+BTe5NeTSfg{tqXbT>1%CzedDktyIff{{p3<_N^|s^3-MCq9NF9QAsSNQef6!= zw%k{k{7Q3Td@~o~7bd~d>&|Em0Yv&?!~DT><-+dEf&6w zn>K!!rWklhBF~_yaE}en_zm2%@q>w)`7GckQ{^F>obVs>(8eEkT6&=te3fO9?UDE$ z{!G@Fu21G`)6Gzr6<@G(c-l5y*~9@}RTN*cw<>-gFHQI>_NRuIE$rcWMYqJ4q4*xV zTl}2eHNs2&W;OKsS{I((&#iT{T9VkzBa?89x;OYbez5V6*j!`0B(ahECS{?4AMloIr1i$6#iy-bVmq5g(sATtK-9nw1u7;g=nq*;K#dYL z1+A$|j7yYi)KH{oA?%bO1#F;F*4om(E}uW_%sqGB%)EK;wP*gEd+xdC`|iGsfk47^ z6yh$7$ITdO8?WLZ4qy*<8V$jsBqYq>JXSJ7KRL{m9M&7)gZL^hGnjO;g17Y~cp6Lj zZ$NNMx>&*CJp*6F<8gvp(##b!gCiL(;3;?$OQLgHP>mxvhRbL{2m_FVu_(k~x2V5j zj!~az-81;Lvr?D&E{m8-xP19s$=c|4IK%wJ;0N$GJyIQ)GSd}WeFh)k&rS*#cxU|Z z{a7tyTw^KIVt}i!geRS&VN!hXA$}{%?_y41@c+LwuGcA?0W zVivQ2*SnHWkBTK?tl-B@Q!78{sQ>E#~U;Ij_?wY?PUM*(Vl!n5}B)=4r#~ ziEyIg=-OfzKYy@A>B51%dJC%oh=xZfTV64&MUH=TV zGY8O7NjOl`xMj&jdCv4*wwS*)j>M-<| zG>6@MO=MZ>727x@DR^1_qBQq&Cy;5W&9*TU$%$Pj5z{NIX-`@)@7s`^sMRD*nq9-1 zXo}{2AxQ$Nyw>VXZoVciS*p6y98Z#fDz9CWTXV=GgFOZKC6^0dPmE-or`#`yUaZ< z`9-{{Q&>;Ki$b1r07tlu)5N9I`Q`F8t>MdJrAwtl1~tt&qx1YHf^Pp7o$GnsvJ43x4aut*lCvKo_6#pl~Di zO2-xs_M;Hud>)Mhw@s;?ob5SRw71~r;4d^eljUrQS>-A&W)A;WrdCe%ppYdy;(G)U z_Tvn$=N{)=VuZ(7#wVEF?UyglAWfX;K|#C;o;Ct8P*lPgf-Lj}a0yK~X|y}?3s9+U zBNuTm4!T5{j}I+1f}R!@$z`wJb*mCDsjbN)MpGz}i~k9RqX@hwvU`C5z7Oidoio5EW$m#*Hc zKLF6+R$ut7y$TNi?8EKe@J#L{EO0Bh{qH#M_XnZpNepEv_jmt)Z{{ytLiHMi{{T#$ VPtIeME!O}5002ovPDHLkV1k6y^sxW{ literal 0 HcmV?d00001 diff --git a/app/examples/Image/PhotoTouch/zoom-in.png b/app/examples/Image/PhotoTouch/zoom-in.png new file mode 100644 index 0000000000000000000000000000000000000000..1e8ed3aae01a38a66f880b6bbe4e113b221b69e6 GIT binary patch literal 1634 zcmV-o2A%ndP)OyqxoI-*?t~&KU!~gnf{U z@fd^KktURlsKS0!V5d>A>@Dlw=Crf$v^#o61A^-CU zZb}zRIrRF#=kZ9C;HF&R5(fMu84lnHcoz%omS*h1KRAp_XhsnIk%5uO#UQ7w+cDEP z6>Hm*`J=T_m-rF$m`FJMvbmJi_I{{kc5LwdxkJxX!-Y(7gqA;pkMa*Ih4UO2J$zs8 zQFB~nA(JA2%U=OcSZBk8=-`9=MUCIZ4Bz10za*~KDV*W3Xb7xQV}D>D2Z&^5GoSg) zXAW<2B=I6U)inE=>=%BL8d=PsC2-g zXNd(`l}bKtp)gP1oF4K+V7ZJq$W(2HFX7dQyU%yLL8Gu%HST3EcVq(q7{YNRb}O2Z zgM-4Hgc3X{YIWG91*c)WC|6+$YD6soJCG|K=Nd)c?SDtoeO+lsBDZSo++^wMshYK( zS&D76`T;%4pcj0y{NmLp>)zldOGkSXAgeh*v2IXJQ@jW~EB&5V5-hfjbR+^~83V$a z#ujPV;zi(h)2l&gf2JDln*cdSv41JmtsLNt9$*T@GATxjFf27^Wt6f^iTgyV6Oivh z029#Ltb8lfX_yfcJdlC8qP!hvr6JFafcR!LDT{0tyr!+U%n_w7lu5PAw=sxOX7O)y z2z3Df`?}v{39iFtt=_#aGv&01N#tSZxT+30`38_`7B36s;JDz`_zSAKuQP!Zvv@@)QxKnsHYqvX z(gx6K7UlYFMSLQ6lO$E`m^OeWJMZ&x5|Hs)uQxgQ25`|V$}7#0I0?vj?V9A+t{@I$ zWOp%B@vKHBfFYQwIeVQ40J+zc3ysW)4rQ6CB9Ee{mDAmN$8(RLkCAJhqt3k*K&4q6 zj4Yupj$;5ef}*T^04klm1K1}0<*A_@J7a`zgFFTgH%Au$wz?27&S9Tf2`h#bF%tL; zwW1tWZ@AlBL-?8;sL9F*Z;oLO)N`P)rm{gA%H7Zd0E*FRR+lKIFe;*KeKQ_IgQz`+ z8>Q(h&p>`JsXnFMhU%m0fv{q`nHQv?omph!vDX}~lehzo!aM|9aF3|%#(P@u zI4l#3RKDkbWH~6hY%FvEw$Q#dBzuReGuZmD%}s5 z5apQ=oW>0{U6}1^+Ac11ABGY7y4%AsQGoa7ha?*;Zwnw;V7=fMx>K0I%c^HP*D>7( zcpuK^nQJlkJJ|Ess8d)?!;Qjd>jZA&Mn0lkI<3DfzO8lKDo3xeJg28Ea=o(iHdfl_ zdp%1ypLq;1nP89uIhM1ymIrK}hg^t`vbOAN_g+ZkI(9K;dD(@+2-fJ1uX^nZcdY>H4{1di+>!6qczt)m+5;IFT#$zadXC zwzoi^6yA@xb@g2P0e}XJJmHJt$B0Cs7famX8Q)8o?_O~FzvCR|#Gl(gi8K~+-?gX5 gEBuoSC|`r{KS$aeF1a)NJOBUy07*qoM6N<$g6W0+ZU6uP literal 0 HcmV?d00001 diff --git a/app/examples/Image/PhotoTouch/zoom-original.png b/app/examples/Image/PhotoTouch/zoom-original.png new file mode 100644 index 0000000000000000000000000000000000000000..61f9dec6378c622b7e0af94f7378ea00b51410a5 GIT binary patch literal 1615 zcmV-V2C(^wP)p1>SXHEcOzj@{T%L{++>}PHq0c*#;Q-zTZ(~JhPZJK|Br0(gO^8E(q~Uht zV2D%JpRmBF?dsSQ`K5hOSNR@u8BaL0EUsl$=yN#FtggZL=g)ek8m?rLBeZG;ALI{q z3YU3L^zeOoNanb~0{SC>tCq)Vdo@gs4nB@w%lLy#^9=rf^RrN=aFHXUA+SNle!&C> zh(u;_CTDUcvpL9-#B*$yX)2iL6@G?{+{HLs;xxX>GPY?0tmZaOqha%0pnGld2A{-p zDyEpdw3MT{#|AB>oDbV5EY&|w)4dQ_ry@=;S*!3hyba-SlB0yGgfau>QyXJ%=uvqy$EfTzFS-lbrF^D}$9I#?5{Ur$tmWZjoicBA#`nQmvw}EinHM5l*@hQ2=Q>cL%r0xA z4`WUBH?&#iye`87*<$0YhJ*~~eUcAjO!cH?^yBUr2mopoKB0^Wf|o`hV5(;)`r zL_lqZ{*vZ^ldliSrh3gX4vh(3#y3cFUuObIrrKy3lMtI&V-h*t()!S1s_~Yw1+hu9 zrTL}VF|7~5P~MkgB%tE8ryg|j_2G)Csw2(m7zwC&?U>{^E*~mQHC=dC#YCXg(o{~g ziD~9cAV(aA_QwE!0mm(Uk}{t)TAc}$o9a+xSms?Z5ZDb`dag2;ySQ@@JIwWBwO9>* z5zEVQjjQNM@Qy~aEBnXs8Jd)H{zT1WM4Y^2;awo7_ zdCeB#pLT&j9S2&rWY(+1rEnJp)TV#GNSa_B6ulB?1v|!(;f& z>P$l!1_KD9EJEQ;fgiwP?6fR{aSFGZKiV+Ps0mmsb@|&0x9xBYL%AE;5_@uUz1jDVm~b+iR*bj)G^2h z!cllddA9R$Tao#>iboy5|KS#nbScbC7Vwzv-okl~MF;@&;Tz1heqkNfg^*0eRE)+j z^urC*p$3Ohj&_^R0DTjJ0=zDNwqdEU6VAc_FG#xYvQNb6XK!=4EyR|uZ}B_0()~4z zksEpP5XVOW-k)1Z*4yqDKrqjKz%Ov8Fqzk+=S^;5iU;rnF5|_{m?;kZxxB7ZD5T*= zA=6&Kt=!F7;?QYt8GK87a2p)GCi0S=c8BYcougPDTJLq-!)456fQba-IFJ*$kehit z#PgI3(XsZCeeC`e;<-hxq|wUrE)>RyRg)z7Qn>HJohJA($$+9-s6G z0e~xHt^O)*pHuXG#k|wiPmGCp=BcM9)B{B-r)_yK?hcZ7xC z(WCGHz+T+r4$s(b!aP3(r~f-HMf?Y$TS*LO0graxNH_9FuAsUN!hcM%A>ivStNj1~ N002ovPDHLkV1k#a2Y>(o literal 0 HcmV?d00001 diff --git a/app/examples/Image/PhotoTouch/zoom-out.png b/app/examples/Image/PhotoTouch/zoom-out.png new file mode 100644 index 0000000000000000000000000000000000000000..19f24bb0d7c265e6b9311545d5db9f279b825f9e GIT binary patch literal 1568 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, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FConsole.class:122 +msgid "Console" +msgstr "" diff --git a/app/examples/Misc/Console/.lang/ru.po b/app/examples/Misc/Console/.lang/ru.po new file mode 100644 index 00000000..7d03070b --- /dev/null +++ b/app/examples/Misc/Console/.lang/ru.po @@ -0,0 +1,46 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Misc/Console/.project:18 +msgid "Console example" +msgstr "Пример консоли" + +#: app/examples/Misc/Console/.src/FConsole.form:5 +msgid "Console" +msgstr "Консоль" + +#: app/examples/Misc/Console/.src/FConsole.form:18 +msgid "^C" +msgstr "^C" + +#: app/examples/Misc/Console/.src/FConsole.form:23 +msgid "^D" +msgstr "^D" + +#: app/examples/Misc/Console/.src/FConsole.form:28 +msgid "^Z" +msgstr "^Z" + diff --git a/app/examples/Misc/Console/.project b/app/examples/Misc/Console/.project new file mode 100644 index 00000000..f34360d0 --- /dev/null +++ b/app/examples/Misc/Console/.project @@ -0,0 +1,16 @@ +# Gambas Project File 3.0 +Title=Console example +Startup=FConsole +Icon=terminal.png +Version=3.13.90 +VersionFile=1 +Component=gb.image +Component=gb.gui +Environment="GB_GUI=gb.qt5" +TabSize=2 +Translate=1 +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence +Packager=1 diff --git a/app/examples/Misc/Console/.src/FConsole.class b/app/examples/Misc/Console/.src/FConsole.class new file mode 100644 index 00000000..d9a9947f --- /dev/null +++ b/app/examples/Misc/Console/.src/FConsole.class @@ -0,0 +1,162 @@ +' Gambas class file + + +Private $hProcess As Process +Private $sText As String + +Static Public Sub Main() + + Dim hForm As Form + + hForm = New FConsole + hForm.Show + +End + + +Public Sub _new() + + $hProcess = Exec ["bash", "--noediting"] For Input Output As "Process" + +End + + +Public Sub Form_Close() + + $hProcess.Kill + +End + + +Public Sub Process_Read() + + Dim sStr As String + + 'Debug Eof(Last);; Lof(Last);; + 'While Not sStr + Read #$hProcess, sStr, -256 + 'Wend + 'Error sStr + $sText = $sText & sStr + 'Debug Quote(sStr) + UpdateConsole + +End + + +Public Sub Process_Error(sStr As String) + + $sText = $sText & sStr + UpdateConsole + +End + +Private Sub UpdateConsole() + + Dim iPos As Integer + Dim sStr As String + + While Len($sText) + + iPos = InStr($sText, "\n") + If iPos = 0 Then iPos = Len($sText) + + sStr = Normalize(Left$($sText, iPos)) + 'Debug sStr + $sText = Mid$($sText, iPos + 1) + + txtConsole.Pos = txtConsole.Length + txtConsole.Insert(sStr) + + Wend + +End + + + +Public Sub Process_Kill() + + 'hProcess = NULL + Try Me.Close + +End + + + +Public Sub txtCommand_Activate() + + Dim sLig As String + + sLig = txtCommand.Text & gb.NewLine + + 'txtConsole.Pos = txtConsole.Length + 'txtConsole.Insert("# " & sLig) + txtCommand.Clear + + sLig = Conv$(sLig, Desktop.Charset, System.Charset) + + Print #$hProcess, sLig; + +End + + +Static Private Function Normalize(sStr As String) As String + + Dim sNorm As String + Dim iInd As Integer + Dim iCar As Integer + Dim bEsc As Boolean + + ' For iInd = 1 To Len(sStr) + ' + ' iCar = Asc(sStr, iInd) + ' + ' If iCar = 27 Then + ' bEsc = True + ' Continue + ' Endif + ' + ' If bEsc Then + ' If iCar < 32 Then bEsc = False + ' Continue + ' Endif + ' + ' If iCar < 32 And iCar <> 10 Then iCar = 32 + ' + ' sNorm = sNorm & Chr$(iCar) + ' + ' Next + + sNorm = sStr + + If System.Charset = Desktop.Charset Then + Return sNorm + Else + Return Conv$(sNorm, System.Charset, Desktop.Charset) + Endif + +End + +Public Sub Form_Open() + + txtCommand.SetFocus + +End + +Public Sub btnCtrlC_Click() + + Print #$hProcess, Chr$(3); + +End + +Public Sub btnCtrlD_Click() + + Print #$hProcess, Chr$(4); + +End + +Public Sub btnCtrlZ_Click() + + Print #$hProcess, Chr$(26); + +End diff --git a/app/examples/Misc/Console/.src/FConsole.form b/app/examples/Misc/Console/.src/FConsole.form new file mode 100644 index 00000000..6f20aa1a --- /dev/null +++ b/app/examples/Misc/Console/.src/FConsole.form @@ -0,0 +1,37 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(38.4286,16.1429,99,50) + Text = ("Console") + Icon = Picture["terminal.png"] + Arrangement = Arrange.Vertical + { HBox1 HBox + MoveScaled(1,1,85,4) + { txtCommand TextBox + MoveScaled(0,0,23,4) + Font = Font["Monospace,10"] + Expand = True + } + { btnCtrlC ToolButton + MoveScaled(31,0,4,4) + Font = Font["Bold"] + Text = ("^C") + } + { btnCtrlD ToolButton + MoveScaled(36,0,4,4) + Font = Font["Bold"] + Text = ("^D") + } + { btnCtrlZ ToolButton + MoveScaled(41,0,4,4) + Font = Font["Bold"] + Text = ("^Z") + } + } + { txtConsole TextArea + MoveScaled(1,7,47,37) + Font = Font["Monospace,10"] + Expand = True + ReadOnly = True + } +} diff --git a/app/examples/Misc/Console/terminal.png b/app/examples/Misc/Console/terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..3c032bff6147b835d505cd4cc3d3502e2b5b5124 GIT binary patch literal 2312 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⁢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%0D2oB{^m)z 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 m-%*hwe=_Ghx4%%6Ah=1i!qqJ_WuE~R#>wD literal 0 HcmV?d00001 diff --git a/app/examples/Misc/DBusExplorer/.icon.png b/app/examples/Misc/DBusExplorer/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b0ce52b8b8c9fd042385a5ccbc08ce1029f9fba8 GIT binary patch literal 17373 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 literal 0 HcmV?d00001 diff --git a/app/examples/Misc/DBusExplorer/.lang/ru.po b/app/examples/Misc/DBusExplorer/.lang/ru.po new file mode 100644 index 00000000..b379fb75 --- /dev/null +++ b/app/examples/Misc/DBusExplorer/.lang/ru.po @@ -0,0 +1,72 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Misc/DBusExplorer/.project:20 app/examples/Misc/DBusExplorer/.src/FVersiongbXML.form:5 +msgid "Gambas DBus Explorer" +msgstr "Проводник Gambas DBus" + +#: app/examples/Misc/DBusExplorer/.project:21 +msgid "" +"DBus explorer.\n" +"\n" +"This example allows to explore all applications connected to both DBus system and application buses. You can see all exported interfaces, methods, properties and events, with their signature. But you cannot use them." +msgstr "" +"Проводник DBus.\n" +"\n" +"Этот пример позволяет исследовать все приложения, подключенные как к системе DBus, так и к шинам приложений. Вы можете увидеть все экспортированные интерфейсы, методы, свойства и события с их подписью. Но вы не можете их использовать." + +#: app/examples/Misc/DBusExplorer/.src/FVersiongbXML.form:14 +msgid "Refresh" +msgstr "Освежить" + +#: app/examples/Misc/DBusExplorer/.src/FVersiongbXML.form:20 +msgid "Show bus ids" +msgstr "Показать идентификаторы шин" + +#: app/examples/Misc/DBusExplorer/.src/FVersiongbXML.form:37 +msgid "Legend:" +msgstr "Легенда:" + +#: app/examples/Misc/DBusExplorer/.src/FVersiongbXML.form:48 +msgid "Method" +msgstr "Метод" + +#: app/examples/Misc/DBusExplorer/.src/FVersiongbXML.form:59 +msgid "Property" +msgstr "Свойство" + +#: app/examples/Misc/DBusExplorer/.src/FVersiongbXML.form:70 +msgid "Signal" +msgstr "Сигнал" + +#: app/examples/Misc/DBusExplorer/.src/FVersiongbXML.form:85 +msgid "Session" +msgstr "Сеанс" + +#: app/examples/Misc/DBusExplorer/.src/FVersiongbXML.form:93 +msgid "System" +msgstr "Система" + diff --git a/app/examples/Misc/DBusExplorer/.project b/app/examples/Misc/DBusExplorer/.project new file mode 100644 index 00000000..1c9c59c5 --- /dev/null +++ b/app/examples/Misc/DBusExplorer/.project @@ -0,0 +1,20 @@ +# Gambas Project File 3.0 +Title=Gambas DBus Explorer +Startup=FVersiongbXML +Icon=dbus64.png +Version=1.0.2 +Component=gb.image +Component=gb.gui +Component=gb.dbus +Component=gb.settings +Component=gb.libxml +Description="DBus explorer.\n\nThis example allows to explore all applications connected to both DBus system and application buses. You can see all exported interfaces, methods, properties and events, with their signature. But you cannot use them.\n\nUpdated to Correctly report property Names, Looks for Name attribute now \n Was expecting to be first in List, but now randomly located\nUpdated to display Property direction read or read/write\nUpdated to correctly report full details of signal handling" +Authors="Fabien Bodard\nBenoît Minisini" +Environment="GB_GUI=gb.qt5" +TabSize=2 +Translate=1 +Language=en_US +Vendor=Example +Packager=1 +Tags=Example,Utility +CreateMenu=1 diff --git a/app/examples/Misc/DBusExplorer/.src/FVersiongbXML.class b/app/examples/Misc/DBusExplorer/.src/FVersiongbXML.class new file mode 100644 index 00000000..dc57ae1f --- /dev/null +++ b/app/examples/Misc/DBusExplorer/.src/FVersiongbXML.class @@ -0,0 +1,313 @@ +' Gambas class file + +Private $cArgs As New Collection +Private $cType As New Collection + +Public Sub _new() + + $cType["i"] = "Integer" + $cType["u"] = "Integer" + $cType["s"] = "String" + $cType["g"] = "String" + $cType["o"] = "DBusObject" + $cType["b"] = "Boolean" + $cType["y"] = "Byte" + $cType["v"] = "Variant" + $cType["d"] = "Float" + $cType["n"] = "Short" + $cType["q"] = "Short" + $cType["x"] = "Long" + $cType["t"] = "Long" + $cType["a{sv}"] = "Collection" + +End + +Public Sub Form_Open() + + btnRefresh_Click + 'HSplit1.Layout = [1, 1] + +End + +Public Sub ShowPathContent(sPath As String, sBus As String, sApplication As String) + + Dim xmlDoc As New XmlDocument + Dim sFullDbusPath, s, sAppPath As String + Dim hattr, hattr2, hNode, hNode2 As XmlNode + Dim i, j, k As Integer + Dim aArgs As New String[] + Dim sIntr As String + + 'Dim haArgs As New Object[] + + sIntr = DBus[sBus & sApplication]._Introspect(sPath) + Print sIntr + Try xmlDoc.FromString(sIntr) + + If Error Then Return + + For i = 0 To xmlDoc.Root.Children.Count - 1 + hNode = xmlDoc.Root.Children[i] + If hNode.Name = "interface" Then + For Each hattr In hNode.Attributes + sFullDbusPath = [sBus, sApplication, sPath, CStr(hattr.Value)].Join("|") + If Not tvDbus.Exist(sBus & "|" & sApplication & "|" & sPath) Then + tvDbus.Add(sFullDbusPath, hattr.Value) + Else + tvDbus.Add(sFullDbusPath, hattr.Value,, sBus & "|" & sApplication & "|" & sPath) + Endif + + For j = 0 To hNode.Children.Count - 1 + hNode2 = hNode.Children[j] + If hNode2.Name = "method" Or hNode2.Name = "property" Or hNode2.Name = "signal" Then + For Each hattr In hNode2.Attributes + If hattr.name = "name" Then Break + Next + + Try tvDbus.Add(sFullDbusPath & "|" & hattr.Value, hattr.Value, Picture[hNode2.Name & ".png"], sFullDbusPath) + If Error Then Continue + $cArgs[sFullDbusPath & "|" & hattr.Value] &= "ref=" & hNode2.Name + + If hNode2.name = "property" Then + + For Each hattr2 In hNode2.Attributes + If hattr2.name = "name" Then Continue + aArgs.Add(hattr2.Name & "=" & hattr2.Value) + Next + + $cArgs[sFullDbusPath & "|" & hattr.Value] &= "|" & aArgs.Join() + aArgs.Clear + + Else + + For k = 0 To hNode2.Children.Count - 1 + If hNode2.Children[k].Name = "arg" Then + + For Each hattr2 In hNode2.Children[k].Attributes + + aArgs.Add(hattr2.Name & "=" & hattr2.Value) + + Next + + $cArgs[sFullDbusPath & "|" & hattr.Value] &= "|" & aArgs.Join() + + 'If k < hNode2.Children.Count - 2 Then $cArgs[sFullDbusPath & "|" & hattr.Value] &= "|" + aArgs.Clear + Endif + Next + Endif + Endif + Next + Next + Endif + Next + + For Each s In DBus[sBus & sApplication][sPath].Children + sAppPath = [sBus, sApplication, sPath].join("|") + + If tvDbus.Exist(sAppPath) Then + tvDbus.Add(sAppPath &/ s, s,, sAppPath) + Else + tvDbus.Add(sAppPath &/ s, s) + Endif + tvDbus.Add(sAppPath &/ s & "|child", "child",, sAppPath &/ s) + tvDbus[sAppPath &/ s].Picture = Picture["icon:/small/directory"] + + Next + +Catch + Print Error.Where; ": "; Error.Text + +End + +Public Sub lstb_activate() + + tvDbus.Clear + $cArgs.Clear + ShowPathContent("/", Last.Tag & "://", Last.current.text) + +End + +Public Sub tvDbus_Expand() + + Dim ars As String[] + + If Not tvDbus.Exist(tvDbus.item.Key & "|" & "child") Then Return + tvDbus.Remove(tvDbus.item.Key & "|" & "child") + ars = Split(tvDbus.Item.Key, "|") + ShowPathContent(ars[2], ars[0], ars[1]) + +End + +Private Sub RemoveIds(aList As String[]) + + Dim iInd As Integer + + While iInd < aList.Count + If Left(aList[iInd]) = ":" Then + aList.Remove(iInd) + Else + Inc iInd + Endif + Wend + +End + +Public Sub btnRefresh_Click() + + Dim aList As String[] + + lstbSystem.Clear + lstbSession.Clear + $cArgs.Clear + tvDbus.Clear + + aList = DBus.Session.Applications.Sort(gb.Natural) + If Not btnShowId.Value Then RemoveIds(aList) + lstbSession.List = aList + aList = DBus.System.Applications.Sort(gb.Natural) + If Not btnShowId.Value Then RemoveIds(aList) + lstbSystem.List = aList + +End + +Public Sub lstb_DblClick() + + Try Print DBus[Last.current.text]._Introspect("/") + +End + +Private Sub GetType(sType As String) As String + + If $cType.Exist(sType) Then Return $cType[sType] + + If Left(sType) = "a" Then Return GetType(Mid$(sType, 2)) & "[]" + + Return "Variant" + +End + +Public Function MakeSignature(sKey As String) As String + + Dim ars As String[] + Dim aIn As New String[] + Dim s, t As String + Dim aArg As String[] + Dim sName, sType As String + Dim sDirection As String + Dim sRef As String + Dim iArg As Integer = 1 + Dim aOut As New String[] + Dim sAccess As String = "" + Dim bHasAccess As Boolean = False + + ars = Split(skey, "|") + If Not $cArgs.Exist(skey) Then + If ars.Max = 4 Then + Return ars[ars.Max] & "()" + Else + Return + Endif + Endif + + Dim sParameters As String[] = Split($cArgs[sKey], "|") + For Each s In sParameters + + sName = "Arg" ' + sDirection = "" + sType = "" + For Each t In Split(s) + aArg = Scan(t, "*=*") + + Select Case aArg[0] + Case "ref" + sRef = aArg[1] + Case "direction" + sDirection = aArg[1] + Case "type" + sType = GetType(aArg[1]) + Case "name" + sName = aArg[1] + Case "access" + sAccess = aArg[1] + bHasAccess = True + End Select + Next + + If sDirection == "in" Then + If sName = "Arg" Then + sName &= CStr(iArg) + Inc iArg + Endif + aIn.Add(sName & " As " & sType) + Else + If sName = "Arg" Then + If stype <> "" Then aOut.Add(sType) + Else + aOut.Add(sName & " As " & sType) + Endif + Endif + + Next + + If sRef = "property" Then + s = ars[ars.max] & " AS " & aOut.last & " For " & sAccess + Else + If sRef = "method" Then + s = ars[ars.Max] & "(" & aIn.Join(", ") & ")" + Else If sRef = "signal" Then + s = ars[ars.Max] + Endif + If aOut.Count Then + s &= IIf(sRef = "signal", " Sends ", " As ") + If aOut.Count = 1 Then + s &= aOut.last + Else + s &= "[" & aOut.Join(", ") & "] as variant[]" + Endif + Else + If sRef = "signal" Then s &= " Sends Nothing" + Endif + Endif + + Return s + +End + +Public Sub tvDbus_Select() + + MakeSignature(Last.item.key) + +End + +Public Sub tvDbus_MouseMove() + + Dim s As String + Dim ix, iy As Integer + Dim hcont As Object + + If Not tvDbus.FindAt(Mouse.x, Mouse.y) Then + + s = MakeSignature(tvDbus.item.key) + + hcont = tvDbus.Parent + ix = tvDbus.Item.X + tvDbus.Item.w / 2 + iy = tvDbus.Item.Y + + 'lblsignature.Text = s + 'lblsignature.Left = Min(iX, tvDbus.Width - lblsignature.Width) + 'lblsignature.Y = iY + 'lblsignature.Visible = True + 'lblsignature.Refresh + 'Else + 'lblsignature.Visible = False + Endif + lblsignature.Text = s + +End + +Public Sub btnShowId_Click() + + btnRefresh_Click + +End diff --git a/app/examples/Misc/DBusExplorer/.src/FVersiongbXML.form b/app/examples/Misc/DBusExplorer/.src/FVersiongbXML.form new file mode 100644 index 00000000..524034b5 --- /dev/null +++ b/app/examples/Misc/DBusExplorer/.src/FVersiongbXML.form @@ -0,0 +1,121 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,107,84) + Text = ("Gambas DBus Explorer") + Icon = Picture["dbus64.png"] + Arrangement = Arrange.Vertical + { Panel1 Panel + MoveScaled(3,0,102,4) + Arrangement = Arrange.Horizontal + { btnRefresh ToolButton + MoveScaled(0,0,11,4) + AutoResize = True + Text = ("Refresh") + Picture = Picture["icon:/small/refresh"] + } + { btnShowId ToolButton + MoveScaled(12,0,15,4) + AutoResize = True + Text = ("Show bus ids") + Picture = Picture["icon:/small/lamp"] + Toggle = True + } + { Panel2 Panel + MoveScaled(37,1,2,3) + Expand = True + } + { HBox1 HBox + MoveScaled(47,0,46,4) + Spacing = True + { Label4 Label + MoveScaled(0,0,9,4) + Font = Font["Bold"] + Text = ("Legend:") + } + { PictureBox1 PictureBox + MoveScaled(8,0,3,4) + Picture = Picture.Load("method.png") + Alignment = Align.Center + } + { Label1 Label + MoveScaled(11,0,8,4) + AutoResize = True + Text = ("Method") + } + { PictureBox2 PictureBox + MoveScaled(20,0,3,4) + Picture = Picture.Load("property.png") + Alignment = Align.Center + } + { Label2 Label + MoveScaled(25,0,8,4) + AutoResize = True + Text = ("Property") + } + { PictureBox3 PictureBox + MoveScaled(34,0,3,4) + Picture = Picture.Load("signal.png") + Alignment = Align.Center + } + { Label3 Label + MoveScaled(38,0,6,4) + AutoResize = True + Text = ("Signal") + } + } + } + { Separator2 Separator + MoveScaled(20,5,18,0) + } + { HSplit1 HSplit + MoveScaled(0,8,106,74) + Expand = True + { TabStrip3 TabStrip + MoveScaled(2,5,39,57) + Arrangement = Arrange.Fill + Count = 2 + Index = 0 + Text = ("Session") + { lstbSession ListBox lstb + Name = "lstbSession" + MoveScaled(2,1,30,51) + Tag = "session" + Expand = True + } + Index = 1 + Text = ("System") + { lstbSystem ListBox lstb + Name = "lstbSystem" + MoveScaled(3,1,30,50) + Tag = "system" + Expand = True + } + Index = 0 + } + { VBox1 HBox + MoveScaled(46,2,59,65) + { Separator3 Separator + MoveScaled(2,19,0,30) + } + { VBox2 VBox + MoveScaled(3,8,54,56) + Expand = True + { tvDbus TreeView + MoveScaled(7,4,33,32) + Expand = True + Border = False + } + { Separator4 Separator + MoveScaled(12,45,23,0) + } + { lblsignature TextLabel + MoveScaled(5,49,34,3) + Font = Font["Monospace,-2"] + Padding = 4 + AutoResize = True + } + } + } + } +} diff --git a/app/examples/Misc/DBusExplorer/dbus22.png b/app/examples/Misc/DBusExplorer/dbus22.png new file mode 100644 index 0000000000000000000000000000000000000000..eb4592e8a31fdfb42176a2a111be0ead97ce2618 GIT binary patch literal 894 zcmV-^1A+XBP)by}iAU3r;NZr_#=5$?#KgqR%*@{2-r3pNy1Kf_$;s~T@4~{u#>U3R#>Tq3y3EYX z-rnB2y1K{5$Hc_M?eOx--Ra2O=-KA)^7i@d@bS#v>YBaPXq~`6g0MS)u2PS<z%;YYoEeEgRqLT&-L~7$=vB~p~FIiu|9&YQIEG>m%L4kwn~b$@bmS4tIAJ~ zwqBRKe5=T^&EHm$xmJ?7yVK+F_WA$+|CPGa*yirl606@8moIFMz`B&l{!M>*pTZ{&2Ux0@&^|%8Z#OxbFY}0YgbdK~xyiV_-l4MkZz! zRyKAHBq2^NZXRAf4NWa=9ex3bkf4yT2%D&`p1y&hk&%(Hi5N&wTtZUH)Xdz%(g+Hy zq-B7jveq`Xb}%7(2S+DoIe7*K1s7L)H+K(DFOaCWkFTG=6mVwMJuK-(|p~j%9l3rO=ZDdqqVPsTW2XT+5GJ}$241`_ZP}W!pVKzxJ zFenB<*v)}{fni`)ORE9{gS?zGnA6tY(b;8WWM|vmBP-6pAS2xiQQp@-!NT0kR7z4p z926*G6DI)$4Gr}5bVb=jgoOkl0Vu#fdCF894L)8TZZ1xwu;yTAV`X7xVnh-G0F1&; UGQ-lT6aWAK07*qoM6N<$f}{cRmH+?% literal 0 HcmV?d00001 diff --git a/app/examples/Misc/DBusExplorer/dbus64.png b/app/examples/Misc/DBusExplorer/dbus64.png new file mode 100644 index 0000000000000000000000000000000000000000..49d37d24788424d12d195ed72d581cb38295d723 GIT binary patch literal 4222 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 Cs0%Pjt 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, 2007-2010. +# +# +msgid "" +msgstr "" +"Project-Id-Version: Evaluator\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2010-12-17 01:08+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: FEval.form:61 +msgid "45" +msgstr "-" + +#: FEval.form:67 +msgid "60" +msgstr "-" + +#: FEval.form:45 +msgid "a =" +msgstr "-" + +#: FEval.form:77 +msgid "a * Cos(Rad(x)) + b * Sin(Rad(y))" +msgstr "-" + +#: FEval.form:40 +msgid "b =" +msgstr "-" + +#: FEval.form:24 +msgid "Evaluator" +msgstr "Avaluador" + +#: FEval.form:72 +msgid "Expression" +msgstr "Expressió" + +#: .project:1 +msgid "Expression evaluation example" +msgstr "Exemple d'avaluació d'expressions" + +#: FEval.form:98 +msgid "&Quit" +msgstr "&Surt" + +#: FEval.form:82 +msgid "Result" +msgstr "Resultat" + +#: FEval.form:108 +msgid "This is an example of how to use the gb.eval expression evaluator component." +msgstr "Això és un exemple de com fer servir el component d'avaluació d'expressions gb.eval." + +#: FEval.form:92 +msgid "&Update result" +msgstr "&Actualitza el resultat" + +#: FEval.form:35 +msgid "x =" +msgstr "-" + +#: FEval.form:30 +msgid "y =" +msgstr "-" + diff --git a/app/examples/Misc/Evaluator/.lang/cs.po b/app/examples/Misc/Evaluator/.lang/cs.po new file mode 100644 index 00000000..cb920ab0 --- /dev/null +++ b/app/examples/Misc/Evaluator/.lang/cs.po @@ -0,0 +1,68 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Expression evaluation example" +msgstr "Příklad vykonávače výrazů" + +#: FEval.form:24 +msgid "Evaluator" +msgstr "-" + +#: FEval.form:30 +msgid "y =" +msgstr "-" + +#: FEval.form:35 +msgid "x =" +msgstr "-" + +#: FEval.form:40 +msgid "b =" +msgstr "-" + +#: FEval.form:45 +msgid "a =" +msgstr "-" + +#: FEval.form:61 +msgid "45" +msgstr "-" + +#: FEval.form:67 +msgid "60" +msgstr "-" + +#: FEval.form:72 +msgid "Expression" +msgstr "Výraz" + +#: FEval.form:77 +msgid "a * Cos(Rad(x)) + b * Sin(Rad(y))" +msgstr "-" + +#: FEval.form:82 +msgid "Result" +msgstr "Výsledek" + +#: FEval.form:92 +msgid "&Update result" +msgstr "&Vykonej" + +#: FEval.form:98 +msgid "&Quit" +msgstr "&Zavřít" + +#: FEval.form:108 +msgid "This is an example of how to use the gb.eval expression evaluator component." +msgstr "To je příklad, jak použít komponentu gb.eval pro vyhodnocení výrazu." diff --git a/app/examples/Misc/Evaluator/.lang/de.po b/app/examples/Misc/Evaluator/.lang/de.po new file mode 100644 index 00000000..eb17d871 --- /dev/null +++ b/app/examples/Misc/Evaluator/.lang/de.po @@ -0,0 +1,69 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Expression evaluation example" +msgstr "Beispiel für einen Ausdrucks-Auswerter" + +#: FEval.form:24 +msgid "Evaluator" +msgstr "Auswerter" + +#: FEval.form:30 +msgid "y =" +msgstr "-" + +#: FEval.form:35 +msgid "x =" +msgstr "-" + +#: FEval.form:40 +msgid "b =" +msgstr "-" + +#: FEval.form:45 +msgid "a =" +msgstr "-" + +#: FEval.form:61 +msgid "45" +msgstr "-" + +#: FEval.form:67 +msgid "60" +msgstr "-" + +#: FEval.form:72 +msgid "Expression" +msgstr "Ausdruck" + +#: FEval.form:77 +msgid "a * Cos(Rad(x)) + b * Sin(Rad(y))" +msgstr "-" + +#: FEval.form:82 +msgid "Result" +msgstr "Resultat" + +#: FEval.form:92 +msgid "&Update result" +msgstr "Be&rechnen" + +#: FEval.form:98 +msgid "&Quit" +msgstr "&Beenden" + +#: FEval.form:108 +msgid "This is an example of how to use the gb.eval expression evaluator component." +msgstr "Dies ist ein Beispiel, wie man die gb.eval -Komponente benutzt." + diff --git a/app/examples/Misc/Evaluator/.lang/es.po b/app/examples/Misc/Evaluator/.lang/es.po new file mode 100644 index 00000000..cea4870e --- /dev/null +++ b/app/examples/Misc/Evaluator/.lang/es.po @@ -0,0 +1,71 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FEval.class:72 +msgid "Evaluator" +msgstr "Evaluador" + +#: FEval.class:78 +msgid "y =" +msgstr "y =" + +#: FEval.class:83 +msgid "x =" +msgstr "x =" + +#: FEval.class:88 +msgid "b =" +msgstr "b =" + +#: FEval.class:93 +msgid "a =" +msgstr "a =" + +#: FEval.class:99 +msgid "0,5" +msgstr "0,5" + +#: FEval.class:105 +msgid "1" +msgstr "1" + +#: FEval.class:111 +msgid "45" +msgstr "45" + +#: FEval.class:117 +msgid "60" +msgstr "60" + +#: FEval.class:122 +msgid "Expression" +msgstr "Expresión" + +#: FEval.class:127 +msgid "a * Cos(Rad(x)) + b * Sin(Rad(y))" +msgstr "a * Cos(Rad(x)) + b * Sin(Rad(y))" + +#: FEval.class:132 +msgid "Result" +msgstr "Resultado" + +#: FEval.class:143 +msgid "&Update result" +msgstr "&Actualizar resultado" + +#: FEval.class:149 +msgid "&Quit" +msgstr "&Salir" + +#: FEval.class:155 +msgid "This is a sample of how to use the expression evaluator." +msgstr "Este es un ejemplo de como usar el evaluador de expresiones." diff --git a/app/examples/Misc/Evaluator/.lang/ru.po b/app/examples/Misc/Evaluator/.lang/ru.po new file mode 100644 index 00000000..dceaba59 --- /dev/null +++ b/app/examples/Misc/Evaluator/.lang/ru.po @@ -0,0 +1,82 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Misc/Evaluator/.project:19 +msgid "Expression evaluation example" +msgstr "Пример вычисления выражения" + +#: app/examples/Misc/Evaluator/.src/FEval.form:5 +msgid "Evaluator" +msgstr "Вычислитель" + +#: app/examples/Misc/Evaluator/.src/FEval.form:10 +msgid "y =" +msgstr "y =" + +#: app/examples/Misc/Evaluator/.src/FEval.form:14 +msgid "x =" +msgstr "x =" + +#: app/examples/Misc/Evaluator/.src/FEval.form:18 +msgid "b =" +msgstr "b =" + +#: app/examples/Misc/Evaluator/.src/FEval.form:22 +msgid "a =" +msgstr "a =" + +#: app/examples/Misc/Evaluator/.src/FEval.form:35 +msgid "45" +msgstr "45" + +#: app/examples/Misc/Evaluator/.src/FEval.form:40 +msgid "60" +msgstr "60" + +#: app/examples/Misc/Evaluator/.src/FEval.form:44 +msgid "Expression" +msgstr "Выражение" + +#: app/examples/Misc/Evaluator/.src/FEval.form:48 +msgid "a * Cos(Rad(x)) + b * Sin(Rad(y))" +msgstr "a * Cos(Rad(x)) + b * Sin(Rad(y))" + +#: app/examples/Misc/Evaluator/.src/FEval.form:52 +msgid "Result" +msgstr "Результат" + +#: app/examples/Misc/Evaluator/.src/FEval.form:60 +msgid "&Update result" +msgstr "Обновить результат" + +#: app/examples/Misc/Evaluator/.src/FEval.form:65 +msgid "&Quit" +msgstr "Выход" + +#: app/examples/Misc/Evaluator/.src/FEval.form:74 +msgid "This is an example of how to use the gb.eval expression evaluator component." +msgstr "Это пример того, как использовать компонент вычисления выражения gb.eval." + diff --git a/app/examples/Misc/Evaluator/.project b/app/examples/Misc/Evaluator/.project new file mode 100644 index 00000000..39a65dde --- /dev/null +++ b/app/examples/Misc/Evaluator/.project @@ -0,0 +1,18 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.0.0 +Title=Expression evaluation example +Startup=FEval +Icon=calculator.png +Version=3.6.2 +VersionFile=1 +Component=gb.image +Component=gb.gui +Component=gb.eval +TabSize=2 +Translate=1 +Language=fr +ExecPath=/home/benoit/gambas/gambas.link/share/gambas/examples/Miscellaneous/Evaluator/Evaluator +Maintainer=benoit +Vendor=Princeton +Address=benoit@localhost +License=General Public Licence diff --git a/app/examples/Misc/Evaluator/.src/FEval.class b/app/examples/Misc/Evaluator/.src/FEval.class new file mode 100644 index 00000000..589d4a5a --- /dev/null +++ b/app/examples/Misc/Evaluator/.src/FEval.class @@ -0,0 +1,53 @@ +' Gambas class file + +Private $hExpr As New Expression +Private $cEnv As New Collection + +Static Public Sub Main() + + Dim hForm As Form + + hForm = New FEval + hForm.Show + +End + + +Public Sub btnUpdate_Click() + + Dim cCol As New Collection + + If $hExpr.Text <> txtExpr.Text Then + $hExpr.Text = txtExpr.Text + Endif + + 'cEnv.Compare = gb.Case + + $cEnv["a"] = CFloat(Val(txtValueA.Text)) + $cEnv["b"] = CFloat(Val(txtValueB.Text)) + $cEnv["x"] = CFloat(Val(txtValueX.Text)) + $cEnv["y"] = CFloat(Val(txtValueY.Text)) + + $hExpr.Compile + $hExpr.Environment = $cEnv + + txtResult.Text = Str($hExpr.Value) + +Catch + + txtResult.Text = Error.Text + +End + +Public Sub btnClose_Click() + + Me.Close + +End + +Public Sub Form_Open() + + txtValueA.Text = Str(0.5) + txtValueB.Text = Str(1) + +End diff --git a/app/examples/Misc/Evaluator/.src/FEval.form b/app/examples/Misc/Evaluator/.src/FEval.form new file mode 100644 index 00000000..722a4b9b --- /dev/null +++ b/app/examples/Misc/Evaluator/.src/FEval.form @@ -0,0 +1,83 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(32,28,51,41) + Text = ("Evaluator") + Icon = Picture["calculator.png"] + Resizable = False + { Label4 Label + MoveScaled(27,17,7,4) + Text = ("y =") + } + { Label3 Label + MoveScaled(27,12,7,4) + Text = ("x =") + } + { Label2 Label + MoveScaled(2,17,7,4) + Text = ("b =") + } + { Label1 Label + MoveScaled(2,12,7,4) + Text = ("a =") + } + { txtValueA TextBox txtValue + Name = "txtValueA" + MoveScaled(6,12,17,4) + } + { txtValueB TextBox txtValue + Name = "txtValueB" + MoveScaled(6,17,17,4) + } + { txtValueX TextBox txtValue + Name = "txtValueX" + MoveScaled(31,12,17,4) + Text = ("45") + } + { txtValueY TextBox txtValue + Name = "txtValueY" + MoveScaled(31,17,17,4) + Text = ("60") + } + { Label6 Label + MoveScaled(2,23,13,4) + Text = ("Expression") + } + { txtExpr TextBox + MoveScaled(15,23,35,4) + Text = ("a * Cos(Rad(x)) + b * Sin(Rad(y))") + } + { Label7 Label + MoveScaled(2,28,13,4) + Text = ("Result") + } + { txtResult TextBox + MoveScaled(15,28,35,4) + ReadOnly = True + } + { btnUpdate Button + MoveScaled(13,36,26,4) + Text = ("&Update result") + Default = True + } + { btnClose Button + MoveScaled(40,36,10,4) + Text = ("&Quit") + Cancel = True + } + { TextLabel1 TextLabel + MoveScaled(1,1,49,7) + Font = Font["Bold,Italic"] + Background = Color.SelectedBackground + Foreground = Color.SelectedForeground + Padding = 6 + Text = ("This is an example of how to use the gb.eval expression evaluator component.") + Alignment = Align.Normal + } + { Separator1 Separator + MoveScaled(1,9,49,1) + } + { Separator2 Separator + MoveScaled(0,34,50,1) + } +} diff --git a/app/examples/Misc/Evaluator/calculator.png b/app/examples/Misc/Evaluator/calculator.png new file mode 100644 index 0000000000000000000000000000000000000000..ed5c2b73885e0daf93305bc16dfcd8fc1c664899 GIT binary patch literal 3612 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 E0T7;^U;qFB literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/Painting/.icon.png b/app/examples/Drawing/Painting/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f7040fd5c56fd06b126c8d685cfb8f3f3c6d0f54 GIT binary patch literal 3331 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 N002ovPDHLkV1oZ@ZEyep literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/Painting/.lang/ca.po b/app/examples/Drawing/Painting/.lang/ca.po new file mode 100644 index 00000000..58153e20 --- /dev/null +++ b/app/examples/Drawing/Painting/.lang/ca.po @@ -0,0 +1,126 @@ +msgid "" +msgstr "" +"Project-Id-Version: Painting\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: 2011-03-20 21:34+0100\n" +"Last-Translator: Jordi Sayol \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-Language: Catalan\n" + +#: .project:1 +msgid "Anti-Aliased Drawing" +msgstr "Dibuix suavitzat" + +#: .project:2 +msgid "Anti-aliased drawing with the Paint class" +msgstr "Dibuix suavitzat amb la classe Paint" + +#: FMain.form:62 +msgid "Arc" +msgstr "-" + +#: FMain.form:70 +msgid "Arc negative" +msgstr "Arc negatiu" + +#: FMain.form:77 +msgid "Clip" +msgstr "Punt" + +#: FMain.form:84 +msgid "Clip image" +msgstr "Imatge de mostra" + +#: FMain.form:91 +msgid "Curve rectangle" +msgstr "Rectangle arrodonit" + +#: FMain.form:98 +msgid "Curve to" +msgstr "Corba a" + +#: FMain.form:105 +msgid "Dash" +msgstr "Guions" + +#: FMain.form:51 +msgid "Example" +msgstr "Exemple" + +#: FMain.form:112 +msgid "Fill and stroke" +msgstr "Línia i farciment" + +#: FMain.form:119 +msgid "Fill style" +msgstr "estil de farciment" + +#: FMain.form:126 +msgid "Gradient" +msgstr "Degradat" + +#: FMain.form:133 +msgid "Image" +msgstr "Imatge" + +#: FMain.form:140 +msgid "Image pattern" +msgstr "Patró d'imatge" + +#: FMain.form:147 +msgid "Line widths" +msgstr "Amples de línia" + +#: FMain.form:154 +msgid "Multi segment caps" +msgstr "Caps en múltiples segments" + +#: FMain.form:230 +msgid "Preview" +msgstr "Visualització prèvia" + +#: FMain.form:203 +msgid "Rotate" +msgstr "Gira" + +#: FMain.form:214 +msgid "Scale" +msgstr "Escala" + +#: FMain.form:161 +msgid "Set line cap" +msgstr "Defineix el cap de línia" + +#: FMain.form:168 +msgid "Set line join" +msgstr "Defineix la unió de línies" + +#: FMain.form:239 +msgid "Source" +msgstr "Codi font" + +#: FMain.form:175 +msgid "SVG image" +msgstr "Imatge SVG" + +#: FMain.form:182 +msgid "Text" +msgstr "-" + +#: FMain.form:244 +msgid "TextArea1" +msgstr "-" + +#: FMain.form:189 +msgid "Text clipping" +msgstr "Retallat de text" + +#: FMain.form:196 +msgid "Text extents" +msgstr "Extensions de text" + diff --git a/app/examples/Drawing/Painting/.lang/cs.po b/app/examples/Drawing/Painting/.lang/cs.po new file mode 100644 index 00000000..e74a4157 --- /dev/null +++ b/app/examples/Drawing/Painting/.lang/cs.po @@ -0,0 +1,128 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Anti-Aliased Drawing" +msgstr "Vyhlazené kreslení" + +#: .project:2 +msgid "Anti-aliased drawing with the Paint class" +msgstr "Vyhlazené kreslení s třídou Paint" + +#: FMain.form:53 +msgid "Example" +msgstr "Příklad" + +#: FMain.form:64 +msgid "Arc" +msgstr "Oblouk" + +#: FMain.form:72 +msgid "Arc negative" +msgstr "Obrácený oblouk" + +#: FMain.form:79 +msgid "Clip" +msgstr "Výřez" + +#: FMain.form:86 +msgid "Clip image" +msgstr "Výřez obrázku" + +#: FMain.form:93 +msgid "Curve rectangle" +msgstr "Zaoblený obdelník" + +#: FMain.form:100 +msgid "Curve to" +msgstr "Křivka" + +#: FMain.form:107 +msgid "Dash" +msgstr "Čerchované" + +#: FMain.form:114 +msgid "Fill and stroke" +msgstr "Výplň tahu" + +#: FMain.form:121 +msgid "Fill style" +msgstr "Styl výplně" + +#: FMain.form:128 +msgid "Gradient" +msgstr "Přechod" + +#: FMain.form:135 +msgid "Image" +msgstr "Obrázek" + +#: FMain.form:142 +msgid "Image pattern" +msgstr "Obrázkový vzor" + +#: FMain.form:149 +msgid "Line widths" +msgstr "Šířka čary" + +#: FMain.form:156 +msgid "Multi segment caps" +msgstr "Několika segmentová stopa" + +#: FMain.form:163 +msgid "Rounded rectangle" +msgstr "Zaoblený obdelník" + +#: FMain.form:170 +msgid "Set line cap" +msgstr "Nastavit stopu čáry" + +#: FMain.form:177 +msgid "Set line join" +msgstr "Nastavit spojení čáry" + +#: FMain.form:184 +msgid "SVG image" +msgstr "SVG obrázek" + +#: FMain.form:191 +msgid "Text" +msgstr "Text" + +#: FMain.form:198 +msgid "Text clipping" +msgstr "Výstřižek textu" + +#: FMain.form:205 +msgid "Text extents" +msgstr "Rozsáhlý text" + +#: FMain.form:212 +msgid "Rotate" +msgstr "Rotace" + +#: FMain.form:223 +msgid "Scale" +msgstr "Měřítko" + +#: FMain.form:243 +msgid "Preview" +msgstr "Náhled" + +#: FMain.form:250 +msgid "Source" +msgstr "Zdroj" + +#: FMain.form:255 +msgid "TextArea1" +msgstr "-" diff --git a/app/examples/Drawing/Painting/.lang/de.po b/app/examples/Drawing/Painting/.lang/de.po new file mode 100644 index 00000000..abe77c45 --- /dev/null +++ b/app/examples/Drawing/Painting/.lang/de.po @@ -0,0 +1,129 @@ +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-11-01 04:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .project:1 +msgid "Anti-Aliased Drawing" +msgstr "Zeichnen mit Anti-Aliasing" + +#: .project:2 +msgid "Anti-aliased drawing with the Paint class" +msgstr "antialisiertes Zeichnen mit der Paint-Klasse" + +#: FMain.form:54 +msgid "Example" +msgstr "Beispiel" + +#: FMain.form:65 +msgid "Arc" +msgstr "Kreisbogen" + +#: FMain.form:73 +msgid "Arc negative" +msgstr "Negativer Kreisbogen" + +#: FMain.form:80 +msgid "Clip" +msgstr "-" + +#: FMain.form:87 +msgid "Clip image" +msgstr "Bildausschnitt" + +#: FMain.form:94 +msgid "Curve rectangle" +msgstr "Abgerundetes Rechteck" + +#: FMain.form:101 +msgid "Curve to" +msgstr "Bogen nach" + +#: FMain.form:108 +msgid "Dash" +msgstr "Gestrichelt" + +#: FMain.form:115 +msgid "Fill and stroke" +msgstr "Gefüllt und umrandet" + +#: FMain.form:122 +msgid "Fill style" +msgstr "Füllstil" + +#: FMain.form:129 +msgid "Gradient" +msgstr "Verlauf" + +#: FMain.form:136 +msgid "Image" +msgstr "Bild" + +#: FMain.form:143 +msgid "Image pattern" +msgstr "Bildmuster" + +#: FMain.form:150 +msgid "Line widths" +msgstr "Linienbreite" + +#: FMain.form:157 +msgid "Multi segment caps" +msgstr "Mehrere Linienumrandungen" + +#: FMain.form:164 +msgid "Rounded rectangle" +msgstr "Abgerundetes Rechteck" + +#: FMain.form:171 +msgid "Set line cap" +msgstr "Linienumrandung wählen" + +#: FMain.form:178 +msgid "Set line join" +msgstr "Linienverbindung wählen" + +#: FMain.form:185 +msgid "SVG image" +msgstr "SVG-Bild" + +#: FMain.form:192 +msgid "Text" +msgstr "-" + +#: FMain.form:199 +msgid "Text clipping" +msgstr "Text beschneiden" + +#: FMain.form:206 +msgid "Text extents" +msgstr "Textbereiche" + +#: FMain.form:213 +msgid "Rotate" +msgstr "Drehen" + +#: FMain.form:224 +msgid "Scale" +msgstr "Maßstab" + +#: FMain.form:248 +msgid "Preview" +msgstr "Vorschau" + +#: FMain.form:255 +msgid "Source" +msgstr "Quellcode" + +#: FMain.form:260 +msgid "TextArea1" +msgstr "-" + diff --git a/app/examples/Drawing/Painting/.lang/ru.po b/app/examples/Drawing/Painting/.lang/ru.po new file mode 100644 index 00000000..ba0eff67 --- /dev/null +++ b/app/examples/Drawing/Painting/.lang/ru.po @@ -0,0 +1,148 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Drawing/Painting/.project:18 +msgid "Anti-Aliased Drawing" +msgstr "Сглаженное рисование" + +#: app/examples/Drawing/Painting/.project:19 +msgid "" +"Anti-aliased drawing with the Paint class.\n" +"\n" +"This example shows the different methods of the Paint class." +msgstr "" +"Сглаженный рисунок с классом рисования.\n" +"\n" +"В этом примере показаны различные методы класса рисования." + +#: app/examples/Drawing/Painting/.src/FMain.form:15 +msgid "Example" +msgstr "Пример" + +#: app/examples/Drawing/Painting/.src/FMain.form:24 +msgid "Arc" +msgstr "Дуга" + +#: app/examples/Drawing/Painting/.src/FMain.form:31 +msgid "Arc negative" +msgstr "Дуга отрицательная" + +#: app/examples/Drawing/Painting/.src/FMain.form:37 +msgid "Clip" +msgstr "Кадрировать" + +#: app/examples/Drawing/Painting/.src/FMain.form:43 +msgid "Clip image" +msgstr "Кадрировать изображение" + +#: app/examples/Drawing/Painting/.src/FMain.form:49 +msgid "Curve rectangle" +msgstr "Кривой прямоугольник" + +#: app/examples/Drawing/Painting/.src/FMain.form:55 +msgid "Curve to" +msgstr "Кривая к" + +#: app/examples/Drawing/Painting/.src/FMain.form:61 +msgid "Dash" +msgstr "Штрих-пунктирная" + +#: app/examples/Drawing/Painting/.src/FMain.form:67 +msgid "Fill and stroke" +msgstr "Заливка и обводка" + +#: app/examples/Drawing/Painting/.src/FMain.form:73 +msgid "Fill style" +msgstr "Стиль заполнения" + +#: app/examples/Drawing/Painting/.src/FMain.form:79 +msgid "Gradient" +msgstr "Градиент" + +#: app/examples/Drawing/Painting/.src/FMain.form:85 +msgid "Image" +msgstr "Изображение" + +#: app/examples/Drawing/Painting/.src/FMain.form:91 +msgid "Image pattern" +msgstr "Шаблон изображения" + +#: app/examples/Drawing/Painting/.src/FMain.form:97 +msgid "Line widths" +msgstr "Толщина линий" + +#: app/examples/Drawing/Painting/.src/FMain.form:103 +msgid "Multi segment caps" +msgstr "Концы мультисегмента" + +#: app/examples/Drawing/Painting/.src/FMain.form:109 +msgid "Rounded rectangle" +msgstr "Скруглённый прямоугольник" + +#: app/examples/Drawing/Painting/.src/FMain.form:115 +msgid "Set line cap" +msgstr "Установить заглушку" + +#: app/examples/Drawing/Painting/.src/FMain.form:121 +msgid "Set line join" +msgstr "Установить соединение строк" + +#: app/examples/Drawing/Painting/.src/FMain.form:127 +msgid "SVG image" +msgstr "Изображение SVG" + +#: app/examples/Drawing/Painting/.src/FMain.form:133 +msgid "Text" +msgstr "Текст" + +#: app/examples/Drawing/Painting/.src/FMain.form:139 +msgid "Text clipping" +msgstr "Кадрирование текста" + +#: app/examples/Drawing/Painting/.src/FMain.form:145 +msgid "Text extents" +msgstr "Текстовые экстенты" + +#: app/examples/Drawing/Painting/.src/FMain.form:151 +msgid "Rotate" +msgstr "Вращение" + +#: app/examples/Drawing/Painting/.src/FMain.form:160 +msgid "Scale" +msgstr "Масштаб" + +#: app/examples/Drawing/Painting/.src/FMain.form:177 +msgid "Preview" +msgstr "Предпросмотр" + +#: app/examples/Drawing/Painting/.src/FMain.form:183 +msgid "Source" +msgstr "Исходник" + +#: app/examples/Drawing/Painting/.src/FMain.form:187 +msgid "TextArea1" +msgstr "Текстовая_область_1" + diff --git a/app/examples/Drawing/Painting/.project b/app/examples/Drawing/Painting/.project new file mode 100644 index 00000000..500d4a6e --- /dev/null +++ b/app/examples/Drawing/Painting/.project @@ -0,0 +1,16 @@ +# Gambas Project File 3.0 +Title=Anti-Aliased Drawing +Startup=FMain +Icon=icon.png +Version=1.0.0 +Component=gb.image +Component=gb.gui +Component=gb.form +Description="Anti-aliased drawing with the Paint class.\n\nThis example shows the different methods of the Paint class." +Authors="Fabien Bodard\nBenoît Minisini" +Environment="GB_GUI=gb.qt5" +TabSize=2 +Translate=1 +Language=en +Vendor=Example +Packager=1 diff --git a/app/examples/Drawing/Painting/.src/FMain.class b/app/examples/Drawing/Painting/.src/FMain.class new file mode 100644 index 00000000..1bb948ad --- /dev/null +++ b/app/examples/Drawing/Painting/.src/FMain.class @@ -0,0 +1,548 @@ +' Gambas class file + +Private Const IMAGE_NAME As String = "clovis.jpg" +Private Const SVG_EXPORT As String = "~/Gambas with red ballon.svg" + +Private $sFunctionName As String = "Example1" + +Public Sub _new() + + Editor1.Text = File.Load($sFunctionName) + +End + +Public Sub Form_Open() + + HSplit1.Layout = [1, 2] + +End + +Public Sub Example1() + + Dim XC As Float = 128 + Dim YC As Float = 128 + Dim Radius As Float = 100 + Dim Angle1 As Float = Rad(-45) + Dim Angle2 As Float = Rad(-180) + Dim X, Y As Float + + Paint.LineWidth = 10 + Paint.Arc(XC, YC, Radius, Angle1, Angle2 - Angle1) + Paint.Stroke + + 'Draw helping Lines + Paint.LineWidth = 6.0 + Paint.Brush = Paint.Color(Color.RGB(255, 0.2 * 255, 0.2 * 255, 0.6 * 255)) + + Paint.Arc(XC, YC, 10.0) + Paint.Fill + + Paint.Arc(XC, YC, Radius, Angle1, 0) + X = Paint.X + Y = Paint.Y + Paint.Arc(XC, YC, Radius, Angle2, 0) + Paint.LineTo(XC, YC) + Paint.LineTo(X, Y) + Paint.Stroke + +End + + +Public Sub Example2() + + Dim XC As Float = 128 + Dim YC As Float = 128 + Dim Radius As Float = 100 + Dim Angle1 As Float = Rad(-45) + Dim Angle2 As Float = Rad(180) + Dim X, Y As Float + + Paint.LineWidth = 10 + Paint.Arc(XC, YC, Radius, Angle1, Angle2 - Angle1) + Paint.Stroke + + 'Draw helping Lines + Paint.LineWidth = 6.0 + Paint.Brush = Paint.Color(Color.RGB(255, 0.2 * 255, 0.2 * 255, 0.6 * 255)) + + Paint.Arc(XC, YC, 10.0) + Paint.Fill + + Paint.Arc(XC, YC, Radius, Angle1, 0) + X = Paint.X + Y = Paint.Y + Paint.Arc(XC, YC, Radius, Angle2, 0) + Paint.LineTo(XC, YC) + Paint.LineTo(X, Y) + Paint.Stroke + +End + +Public Sub Example3() + + Paint.Arc(128.0, 128.0, 76.8) + Paint.Clip + Paint.Rectangle(0, 0, 256, 256) + Paint.Fill + Paint.Brush = Paint.Color(Color.RGB(0, 255, 0)) + Paint.MoveTo(0, 0) + Paint.LineTo(256, 256) + Paint.MoveTo(256, 0) + Paint.LineTo(0, 256) + Paint.LineWidth = 10.0 + Paint.Stroke + +End + +Public Sub Example4() + + Dim hImg As Image + + Paint.Arc(128.0, 128.0, 76.8) + Paint.Clip + hImg = Image.Load(IMAGE_NAME) + Paint.Scale(256 / hImg.Width, 256 / hImg.Height) + Paint.Brush = Paint.Image(hImg, 0, 0) + Paint.Rectangle(0, 0, 512, 512) + Paint.Fill() + +End + +Public Sub Example5() + + ' A custom shape that could be wrapped in a function + Dim X0 As Float = 25.6 + Dim Y0 As Float = 25.6 + Dim RectWidth As Float = 204.8 + Dim RectHeight As Float = 204.8 + + Dim Radius As Float = 102.4 + + Dim X1, Y1 As Float + + X1 = X0 + RectWidth + Y1 = Y0 + RectHeight + + If Not (RectWidth > 0.0) Or Not (RectHeight > 0.0) Then Return + + If RectWidth / 2 < Radius Then + If RectHeight / 2 < Radius Then + Paint.MoveTo(X0, (Y0 + Y1) / 2) + Paint.CurveTo(X0, Y0, X0, Y0, (X0 + X1) / 2, Y0) + Paint.CurveTo(X1, Y0, X1, Y0, X1, (Y0 + Y1) / 2) + Paint.CurveTo(X1, Y1, X1, Y1, (X1 + X0) / 2, Y1) + Paint.CurveTo(X0, Y1, X0, Y1, X0, (Y0 + Y1) / 2) + Else + Paint.MoveTo(X0, Y0 + Radius) + Paint.CurveTo(X0, Y0, X0, Y0, (X0 + X1) / 2, Y0) + Paint.CurveTo(X1, Y0, X1, Y0, X1, Y0 + Radius) + Paint.LineTo(X1, Y1 - Radius) + Paint.CurveTo(X1, Y1, X1, Y1, (X1 + X0) / 2, Y1) + Paint.CurveTo(X0, Y1, X0, Y1, X0, Y1 - Radius) + Endif + Else + If (RectHeight / 2 < Radius) Then + Paint.MoveTo(X0, (Y0 + Y1) / 2) + Paint.CurveTo(X0, Y0, X0, Y0, X0 + Radius, Y0) + Paint.LineTo(X1 - Radius, Y0) + Paint.CurveTo(X1, Y0, X1, Y0, X1, (Y0 + Y1) / 2) + Paint.CurveTo(X1, Y1, X1, Y1, X1 - Radius, Y1) + Paint.LineTo(X0 + Radius, Y1) + Paint.CurveTo(X0, Y1, X0, Y1, X0, (Y0 + Y1) / 2) + Else + Paint.MoveTo(X0, Y0 + Radius) + Paint.CurveTo(X0, Y0, X0, Y0, X0 + Radius, Y0) + Paint.LineTo(X1 - Radius, Y0) + Paint.CurveTo(X1, Y0, X1, Y0, X1, Y0 + Radius) + Paint.LineTo(X1, Y1 - Radius) + Paint.CurveTo(X1, Y1, X1, Y1, X1 - Radius, Y1) + Paint.LineTo(X0 + Radius, Y1) + Paint.CurveTo(X0, Y1, X0, Y1, X0, Y1 - Radius) + Endif + Endif + + Paint.ClosePath + Paint.Brush = Paint.Color(Color.RGB(128, 128, 255)) + Paint.Fill(True) + Paint.Brush = Paint.Color(Color.RGB(128, 0, 0, 128)) + Paint.LineWidth = 10.0 + Paint.Stroke + +End + +Public Sub Example6() + + Dim X As Float = 25.6 + Dim Y As Float = 128.0 + Dim X1 As Float = 102.4 + Dim Y1 As Float = 230.4 + Dim X2 As Float = 153.6 + Dim Y2 As Float = 25.6 + Dim X3 As Float = 230.4 + Dim Y3 As Float = 128.0 + + Paint.MoveTo(X, Y) + Paint.CurveTo(X1, Y1, X2, Y2, X3, Y3) + + Paint.LineWidth = 10 + Paint.Stroke + + Paint.Brush = Paint.Color(Color.RGB(255, 255 * 0.2, 255 * 0.2, 255 * 0.6)) + Paint.LineWidth = 6 + + Paint.MoveTo(X, Y) + Paint.LineTo(X1, Y1) + Paint.MoveTo(X2, Y2) + Paint.LineTo(X3, Y3) + Paint.Stroke + +End + +Public Sub Example7() + + Dim Dashes As Float[] = [5.0, 'ink + 1.0, 'skip + 1.0, 'ink + 1.0] 'skip + + Paint.Dash = Dashes + Paint.DashOffset = -5 + Paint.LineWidth = 10.0 + Paint.MoveTo(128.0, 25.6) + Paint.LineTo(230.4, 230.4) + Paint.RelLineTo(-102.4, 0) + Paint.CurveTo(51.2, 230.4, 51.2, 128.0, 128.0, 128.0) + Paint.Stroke + +End + +Public Sub Example8() + + Paint.MoveTo(128.0, 25.6) + Paint.LineTo(230.4, 230.4) + Paint.LineTo(Paint.X - 102.4, Paint.Y) + Paint.CurveTo(51.2, 230.4, 51.2, 128.0, 128.0, 128.0) + Paint.ClosePath + + Paint.MoveTo(64.0, 25.6) + Paint.RelLineTo(51.2, 51.2) + Paint.RelLineTo(-51.2, 51.2) + Paint.RelLineTo(-51.2, -51.2) + Paint.ClosePath + + Paint.LineWidth = 10 + Paint.Brush = Paint.Color(Color.Blue) + Paint.Fill(True) + + Paint.Brush = Paint.Color(Color.Black) + Paint.Stroke + +End + +Public Sub Example9() + + Paint.LineWidth = 6 + Paint.Rectangle(12, 12, 232, 70) + Paint.Arc(64, 64, 40, 0, Pi(2)) + Paint.Arc(192, 64, 40, 0, Pi(-2)) + + Paint.FillRule = Paint.FillRuleEvenOdd + Paint.Brush = Paint.Color(Color.RGB(0, 179, 0)) + Paint.Fill(True) + Paint.Brush = Paint.Color(0) + Paint.Stroke + Paint.Translate(0, 128) + Paint.Rectangle(12, 12, 232, 70) + Paint.Arc(64, 64, 40, 0, Pi(-2)) + Paint.Arc(192, 64, 40, 0, Pi(2)) + Paint.FillRule = Paint.FillRuleWinding + Paint.Brush = Paint.Color(Color.RGB(0, 0, 230)) + Paint.Fill(True) + Paint.Brush = Paint.Color(0) + Paint.Stroke + +End + +Public Sub Example10() + + Paint.Brush = Paint.LinearGradient(0, 0, 0, 256, [Color.Black, Color.White], [1.0, 0.0]) + Paint.Rectangle(0, 0, 256, 256) + Paint.Fill + + Paint.Brush = Paint.RadialGradient(102.4, 102.4, 128.0, 115.2, 102.4, [Color.Black, Color.White], [1.0, 0.1]) + Paint.Arc(128, 128, 76.8) + Paint.Fill + +End + +Public Sub Example11() + + Dim X, Y, W, H As Float + Dim hBrush As PaintBrush + Dim hImage As Image + + hImage = Image.Load(IMAGE_NAME) + + X = 16 + Y = 40 + W = 200 + H = 200 + + 'Paint.DrawImage(hImage, X, Y, W, H) + + hBrush = Paint.Image(hImage) + hBrush.Translate(X, Y) + hBrush.Scale(W / hImage.W, H / hImage.H) + Paint.Brush = hBrush + Paint.Rectangle(X, Y, W, H) + Paint.Fill + + Paint.Brush = Paint.Color(Color.RGB(255, 127, 127, 153)) + Paint.Arc(X, Y, 10) + Paint.Fill + +End + +Public Sub Example12() + + Dim hImg As Image + Dim hBrush As PaintBrush + + hImg = Image.Load(IMAGE_NAME) + + Paint.Translate(128, 128) + 'Paint.Rotate(Pi / 4) + Paint.Scale(1 / Sqr(2), 1 / Sqr(2)) + Paint.Translate(-128, -128) + hBrush = Paint.Image(himg, 0, 0) + hBrush.Matrix = hBrush.Matrix.Scale(1 / (himg.w / 256.0 * 5.0), 1 / (hImg.w / 256.0 * 5.0)) + Paint.Brush = hBrush + Paint.Rectangle(0, 0, 256, 256) + Paint.Fill + +End + +Public Sub Example13() + + Paint.MoveTo(50, 75) + Paint.LineTo(200, 75) + + Paint.MoveTo(50, 125) + Paint.LineTo(200, 125) + + Paint.MoveTo(50, 175) + Paint.LineTo(200, 175) + + Paint.LineWidth = 30 + Paint.LineCap = Paint.LineCapRound + Paint.Stroke + +End + +Public Sub Example14() + + Paint.LineWidth = 30 + Paint.LineCap = Paint.LineCapButt + Paint.MoveTo(64, 50) + Paint.LineTo(64, 200) + Paint.Stroke + Paint.LineCap = Paint.LineCapRound + Paint.MoveTo(128, 50) + Paint.LineTo(128, 200) + Paint.Stroke + Paint.LineCap = Paint.LineCapSquare + Paint.MoveTo(192, 50) + Paint.LineTo(192, 200) + Paint.Stroke + + 'Draw helping lines + Paint.Brush = Paint.Color(Color.RGB(255, 31, 31)) + Paint.LineWidth = 6 + Paint.MoveTo(64, 50) + Paint.LineTo(64, 200) + Paint.MoveTo(128, 50) + Paint.LineTo(128, 200) + Paint.MoveTo(192, 50) + Paint.LineTo(192, 200) + Paint.Stroke + +End + +Public Sub Example15() + + Paint.LineWidth = 40.96 + Paint.MoveTo(76.8, 84.48) + Paint.RelLineTo(51.2, -51.2) + Paint.RelLineTo(51.2, 51.2) + Paint.LineJoin = Paint.LineJoinMiter 'Default + Paint.Stroke + + Paint.MoveTo(76.8, 161.28) + Paint.RelLineTo(51.2, -51.2) + Paint.RelLineTo(51.2, 51.2) + Paint.LineJoin = Paint.LineJoinBevel + Paint.Stroke + + Paint.MoveTo(76.8, 238.08) + Paint.RelLineTo(51.2, -51.2) + Paint.RelLineTo(51.2, 51.2) + Paint.LineJoin = Paint.LineJoinRound + Paint.Stroke + +End + +Public Sub Example16() + + Paint.Font.Name = "Sans" + Paint.Font.Size = 90 + Paint.Font.Bold = True + Paint.MoveTo(10, 135) + Paint.Text("Hello") + Paint.Fill + + Paint.MoveTo(70, 165) + Paint.text("void") + Paint.Brush = Paint.Color(Color.RGB(128, 128, 255)) + Paint.Fill(True) + Paint.Brush = Paint.Color(0) + Paint.LineWidth = 0 '2.56 + Paint.Stroke + + 'Draw helping lines + Paint.Brush = Paint.Color(Color.RGB(255, 31, 31, 93)) + Paint.Arc(10, 135, 5.12) + Paint.ClosePath + Paint.Arc(70, 165, 5.12) + Paint.Fill + +End + +Public Sub Example17() + + Dim sText As String = "Gambas
already means
Basic!" + + Dim X, Y As Float + Dim hExt As PaintExtents + + Paint.Font = Font["Sans,40"] + X = 50 + Y = 100 + + Paint.MoveTo(X, Y) + + hExt = Paint.RichTextExtents(sText) + + Paint.Brush = Paint.RadialGradient(50, 100, 300, 50, 100, [Color.Yellow, Color.Cyan], [1.0, 0.0]) + Paint.RichText(sText) + Paint.Fill + + Paint.Brush = Paint.Color(Color.RGB(255, 31, 31, 93)) + Paint.LineWidth = 1 + Paint.Arc(X, Y, 10) + Paint.Fill + + Paint.Brush = Paint.Color(Color.RGB(255, 31, 31, 224)) + Paint.Rectangle(hExt.X, hExt.Y, hExt.Width, hExt.Height) + Paint.Fill + +End + +Public Sub Example18() + + Paint.Save + Paint.Rectangle(10, 10, 200, 100) + Paint.Stroke(True) + Paint.Clip + Paint.Font.Size = 18 + 'Paint.Brush = Paint.Color(Color.Blue) + Paint.Text("TO BE, OR NOT TO BE: THAT IS THE QUESTION:", 10, 10, 30, 30) + Paint.Fill + Paint.Restore + 'Paint.Brush = Paint.Color(Color.Blue) + Paint.Text("TO BE, OR NOT TO BE: THAT IS THE QUESTION:", 10, 40, 30, 30) + Paint.Fill + +End + + +Public Sub Example20() + + Dim eWidth As Float + Dim Y As Float + + Y = 20.5 + For eWidth = 0 To 5 Step 0.25 + Paint.LineWidth = eWidth + Paint.MoveTo(50, Y) + Paint.RelLineTo(200, 0) + Paint.Stroke + Paint.Text(eWidth, 0, Y - 10, 40, 20, Align.Right) + Paint.Fill + Y += 20 + Next + +End + +Private $hSvgImage As SvgImage + +Public Sub Example21() + + If Not $hSvgImage Then + $hSvgImage = SvgImage.Load("gambas.svg") + Paint.Begin($hSvgImage) + Paint.Brush = Paint.RadialGradient(200, 140, 40, 215, 115, [Color.RGB(255, 0, 0, 64), Color.White], [1.0, 0.1]) + Paint.Arc(200, 140, 40) + Paint.Fill + Paint.End + Endif + + $hSvgImage.Paint + +End + +Public Sub Example22() + + Paint.Background = Color.RGB(128, 128, 255) + Paint.Rectangle(32, 32, 192, 192, 32) + Paint.Fill(True) + Paint.Background = Color.RGB(128, 0, 0, 128) + Paint.LineWidth = 10 + Paint.Stroke + 'Paint.Background = Color.Black + 'Paint.Arc(128, 128, 96) + 'Paint.Stroke + +End + +Public Sub optExample_Click() + + $sFunctionName = "Example" & Last.tag + Try Editor1.text = File.Load($sFunctionName) + If Error Then Editor1.Text = Error.Text + DrawingArea1.Refresh + +End + +Public Sub DrawingArea1_Draw() + + Paint.Reset + Paint.Scale(sldScale.Value / 100, sldScale.Value / 100) + Paint.Translate(128, 128) + Paint.Rotate(Rad(sldRotate.Value)) + Paint.Translate(-128, -128) + Object.Call(Me, $sFunctionName) + +End + +Public Sub sldRotate_Change() + + DrawingArea1.Refresh + +End + +Public Sub sldScale_Change() + + DrawingArea1.Refresh + +End + diff --git a/app/examples/Drawing/Painting/.src/FMain.form b/app/examples/Drawing/Painting/.src/FMain.form new file mode 100644 index 00000000..2fbf98c6 --- /dev/null +++ b/app/examples/Drawing/Painting/.src/FMain.form @@ -0,0 +1,195 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,118,89) + Arrangement = Arrange.Fill + { HSplit1 HSplit + MoveScaled(1,1,104,87) + { VBox1 VBox + MoveScaled(1,2,41,85) + Spacing = True + Margin = True + { Label3 Label + MoveScaled(1,1,19,3) + Font = Font["Bold"] + Text = ("Example") + } + { VBox2 VBox + MoveScaled(2,4,38,64) + AutoResize = True + { Exemple1 RadioButton optExample + Name = "Exemple1" + MoveScaled(0,0,38,3) + Tag = "1" + Text = ("Arc") + Value = True + } + { Exemple2 RadioButton optExample + Name = "Exemple2" + MoveScaled(0,3,38,3) + Tag = "2" + Text = ("Arc negative") + } + { Exemple3 RadioButton optExample + Name = "Exemple3" + MoveScaled(0,6,38,3) + Tag = "3" + Text = ("Clip") + } + { Exemple4 RadioButton optExample + Name = "Exemple4" + MoveScaled(0,9,38,3) + Tag = "4" + Text = ("Clip image") + } + { Exemple5 RadioButton optExample + Name = "Exemple5" + MoveScaled(0,12,38,3) + Tag = "5" + Text = ("Curve rectangle") + } + { Exemple6 RadioButton optExample + Name = "Exemple6" + MoveScaled(0,15,38,3) + Tag = "6" + Text = ("Curve to") + } + { Exemple7 RadioButton optExample + Name = "Exemple7" + MoveScaled(0,18,38,3) + Tag = "7" + Text = ("Dash") + } + { Exemple8 RadioButton optExample + Name = "Exemple8" + MoveScaled(0,21,38,3) + Tag = "8" + Text = ("Fill and stroke") + } + { Exemple9 RadioButton optExample + Name = "Exemple9" + MoveScaled(0,24,38,3) + Tag = "9" + Text = ("Fill style") + } + { Exemple10 RadioButton optExample + Name = "Exemple10" + MoveScaled(0,27,38,3) + Tag = "10" + Text = ("Gradient") + } + { Exemple11 RadioButton optExample + Name = "Exemple11" + MoveScaled(0,30,38,3) + Tag = "11" + Text = ("Image") + } + { Exemple12 RadioButton optExample + Name = "Exemple12" + MoveScaled(0,33,38,3) + Tag = "12" + Text = ("Image pattern") + } + { Exemple20 RadioButton optExample + Name = "Exemple20" + MoveScaled(0,36,38,3) + Tag = "20" + Text = ("Line widths") + } + { Exemple13 RadioButton optExample + Name = "Exemple13" + MoveScaled(0,39,38,3) + Tag = "13" + Text = ("Multi segment caps") + } + { Exemple19 RadioButton optExample + Name = "Exemple19" + MoveScaled(0,42,38,3) + Tag = "22" + Text = ("Rounded rectangle") + } + { Exemple14 RadioButton optExample + Name = "Exemple14" + MoveScaled(0,45,38,3) + Tag = "14" + Text = ("Set line cap") + } + { Exemple15 RadioButton optExample + Name = "Exemple15" + MoveScaled(0,48,38,3) + Tag = "15" + Text = ("Set line join") + } + { Exemple21 RadioButton optExample + Name = "Exemple21" + MoveScaled(0,51,38,3) + Tag = "21" + Text = ("SVG image") + } + { Exemple16 RadioButton optExample + Name = "Exemple16" + MoveScaled(0,54,38,3) + Tag = "16" + Text = ("Text") + } + { Exemple18 RadioButton optExample + Name = "Exemple18" + MoveScaled(0,57,38,3) + Tag = "18" + Text = ("Text clipping") + } + { Exemple17 RadioButton optExample + Name = "Exemple17" + MoveScaled(0,60,38,3) + Tag = "17" + Text = ("Text extents") + } + } + { Label1 Label + MoveScaled(2,69,19,3) + Font = Font["Bold"] + Text = ("Rotate") + } + { sldRotate Slider + MoveScaled(2,73,31,4) + MaxValue = 360 + } + { Label2 Label + MoveScaled(2,77,19,3) + Font = Font["Bold"] + Text = ("Scale") + } + { sldScale Slider + MoveScaled(2,81,31,4) + MinValue = 100 + MaxValue = 400 + } + } + { Panel1 HBox + MoveScaled(44,2,56,73) + { TabStrip1 TabPanel + MoveScaled(6,0,49,72) + Expand = True + Arrangement = Arrange.Fill + Border = False + Count = 2 + Index = 0 + Text = ("Preview") + { DrawingArea1 DrawingArea + MoveScaled(3,1,38,45) + Background = &HFFFFFF& + } + Index = 1 + Text = ("Source") + { Editor1 TextArea + MoveScaled(8,2,32,37) + Font = Font["Monospace,-1"] + Text = ("TextArea1") + ReadOnly = True + Border = False + } + Index = 0 + } + } + } +} diff --git a/app/examples/Drawing/Painting/.src/MMakeSourceFile.module b/app/examples/Drawing/Painting/.src/MMakeSourceFile.module new file mode 100644 index 00000000..346b4717 --- /dev/null +++ b/app/examples/Drawing/Painting/.src/MMakeSourceFile.module @@ -0,0 +1,32 @@ +' Gambas module file + +Private Const ROOT As String = "~/gambas/3.0/trunk/examples/examples/Drawing/Painting/" + +Public Sub Main() + + Dim hFile As File + Dim sLine As String + Dim sName As String + Dim sSource As String + + hFile = Open ROOT &/ ".src/FMain.class" + While Not Eof(hFile) + Line Input #hFile, sLine + If Trim(sLine) Like "Public Sub Example*" Then + sName = Scan(sLine, "Public Sub *()")[0] + sSource = sLine & "\n" + Continue + Else If sName Then + If Trim(sLine) = "End" Then + sSource &= sLine & "\n" + File.Save(ROOT &/ sName, sSource) + Print sName + sName = "" + Else + sSource &= sLine & "\n" + Endif + Endif + Wend + Close hFile + +End diff --git a/app/examples/Drawing/Painting/Example1 b/app/examples/Drawing/Painting/Example1 new file mode 100644 index 00000000..46a36054 --- /dev/null +++ b/app/examples/Drawing/Painting/Example1 @@ -0,0 +1,29 @@ +Public Sub Example1() + + Dim XC As Float = 128 + Dim YC As Float = 128 + Dim Radius As Float = 100 + Dim Angle1 As Float = Rad(-45) + Dim Angle2 As Float = Rad(-180) + Dim X, Y As Float + + Paint.LineWidth = 10 + Paint.Arc(XC, YC, Radius, Angle1, Angle2 - Angle1) + Paint.Stroke + + 'Draw helping Lines + Paint.LineWidth = 6.0 + Paint.Brush = Paint.Color(Color.RGB(255, 0.2 * 255, 0.2 * 255, 0.6 * 255)) + + Paint.Arc(XC, YC, 10.0) + Paint.Fill + + Paint.Arc(XC, YC, Radius, Angle1, 0) + X = Paint.X + Y = Paint.Y + Paint.Arc(XC, YC, Radius, Angle2, 0) + Paint.LineTo(XC, YC) + Paint.LineTo(X, Y) + Paint.Stroke + +End diff --git a/app/examples/Drawing/Painting/Example10 b/app/examples/Drawing/Painting/Example10 new file mode 100644 index 00000000..f259831c --- /dev/null +++ b/app/examples/Drawing/Painting/Example10 @@ -0,0 +1,11 @@ +Public Sub Example10() + + Paint.Brush = Paint.LinearGradient(0, 0, 0, 256, [Color.Black, Color.White], [1.0, 0.0]) + Paint.Rectangle(0, 0, 256, 256) + Paint.Fill + + Paint.Brush = Paint.RadialGradient(102.4, 102.4, 128.0, 115.2, 102.4, [Color.Black, Color.White], [1.0, 0.1]) + Paint.Arc(128, 128, 76.8) + Paint.Fill + +End diff --git a/app/examples/Drawing/Painting/Example11 b/app/examples/Drawing/Painting/Example11 new file mode 100644 index 00000000..5f026c8e --- /dev/null +++ b/app/examples/Drawing/Painting/Example11 @@ -0,0 +1,26 @@ +Public Sub Example11() + + Dim X, Y, W, H As Float + Dim hBrush As PaintBrush + Dim hImage As Image + + hImage = Image.Load(IMAGE_NAME) + + X = 16 + Y = 40 + W = 200 + H = 200 + + hBrush = Paint.Image(hImage) + hBrush.Translate(X, Y) + hBrush.Scale(W / hImage.W, H / hImage.H) + Paint.Brush = hBrush + Paint.Rectangle(X, Y, W, H) + Paint.Fill + 'Paint.DrawImage(hImage, X, Y, W, H) + + Paint.Brush = Paint.Color(Color.RGB(255, 127, 127, 153)) + Paint.Arc(X, Y, 10) + Paint.Fill + +End diff --git a/app/examples/Drawing/Painting/Example12 b/app/examples/Drawing/Painting/Example12 new file mode 100644 index 00000000..5dde3f3e --- /dev/null +++ b/app/examples/Drawing/Painting/Example12 @@ -0,0 +1,18 @@ +Public Sub Example12() + + Dim hImg As Image + Dim hBrush As PaintBrush + + hImg = Image.Load(IMAGE_NAME) + + Paint.Translate(128, 128) + 'Paint.Rotate(Pi / 4) + Paint.Scale(1 / Sqr(2), 1 / Sqr(2)) + Paint.Translate(-128, -128) + hBrush = Paint.Image(himg, 0, 0) + hBrush.Matrix = hBrush.Matrix.Scale(1 / (himg.w / 256.0 * 5.0), 1 / (hImg.w / 256.0 * 5.0)) + Paint.Brush = hBrush + Paint.Rectangle(0, 0, 256, 256) + Paint.Fill + +End diff --git a/app/examples/Drawing/Painting/Example13 b/app/examples/Drawing/Painting/Example13 new file mode 100644 index 00000000..20801a6a --- /dev/null +++ b/app/examples/Drawing/Painting/Example13 @@ -0,0 +1,16 @@ +Public Sub Example13() + + Paint.MoveTo(50, 75) + Paint.LineTo(200, 75) + + Paint.MoveTo(50, 125) + Paint.LineTo(200, 125) + + Paint.MoveTo(50, 175) + Paint.LineTo(200, 175) + + Paint.LineWidth = 30 + Paint.LineCap = Paint.LineCapRound + Paint.Stroke + +End diff --git a/app/examples/Drawing/Painting/Example14 b/app/examples/Drawing/Painting/Example14 new file mode 100644 index 00000000..4dca4dd0 --- /dev/null +++ b/app/examples/Drawing/Painting/Example14 @@ -0,0 +1,28 @@ +Public Sub Example14() + + Paint.LineWidth = 30 + Paint.LineCap = Paint.LineCapButt + Paint.MoveTo(64, 50) + Paint.LineTo(64, 200) + Paint.Stroke + Paint.LineCap = Paint.LineCapRound + Paint.MoveTo(128, 50) + Paint.LineTo(128, 200) + Paint.Stroke + Paint.LineCap = Paint.LineCapSquare + Paint.MoveTo(192, 50) + Paint.LineTo(192, 200) + Paint.Stroke + + 'Draw helping lines + Paint.Brush = Paint.Color(Color.RGB(255, 31, 31)) + Paint.LineWidth = 6 + Paint.MoveTo(64, 50) + Paint.LineTo(64, 200) + Paint.MoveTo(128, 50) + Paint.LineTo(128, 200) + Paint.MoveTo(192, 50) + Paint.LineTo(192, 200) + Paint.Stroke + +End diff --git a/app/examples/Drawing/Painting/Example15 b/app/examples/Drawing/Painting/Example15 new file mode 100644 index 00000000..910f33f7 --- /dev/null +++ b/app/examples/Drawing/Painting/Example15 @@ -0,0 +1,22 @@ +Public Sub Example15() + + Paint.LineWidth = 40.96 + Paint.MoveTo(76.8, 84.48) + Paint.RelLineTo(51.2, -51.2) + Paint.RelLineTo(51.2, 51.2) + Paint.LineJoin = Paint.LineJoinMiter 'Default + Paint.Stroke + + Paint.MoveTo(76.8, 161.28) + Paint.RelLineTo(51.2, -51.2) + Paint.RelLineTo(51.2, 51.2) + Paint.LineJoin = Paint.LineJoinBevel + Paint.Stroke + + Paint.MoveTo(76.8, 238.08) + Paint.RelLineTo(51.2, -51.2) + Paint.RelLineTo(51.2, 51.2) + Paint.LineJoin = Paint.LineJoinRound + Paint.Stroke + +End diff --git a/app/examples/Drawing/Painting/Example16 b/app/examples/Drawing/Painting/Example16 new file mode 100644 index 00000000..f70640b7 --- /dev/null +++ b/app/examples/Drawing/Painting/Example16 @@ -0,0 +1,25 @@ +Public Sub Example16() + + Paint.Font.Name = "Sans" + Paint.Font.Size = 90 + Paint.Font.Bold = True + Paint.MoveTo(10, 135) + Paint.Text("Hello") + Paint.Fill + + Paint.MoveTo(70, 165) + Paint.text("void") + Paint.Brush = Paint.Color(Color.RGB(128, 128, 255)) + Paint.Fill(True) + Paint.Brush = Paint.Color(0) + Paint.LineWidth = 2.56 + Paint.Stroke + + 'Draw helping lines + Paint.Brush = Paint.Color(Color.RGB(255, 31, 31, 93)) + Paint.Arc(10, 135, 5.12) + Paint.ClosePath + Paint.Arc(70, 165, 5.12) + Paint.Fill + +End diff --git a/app/examples/Drawing/Painting/Example17 b/app/examples/Drawing/Painting/Example17 new file mode 100644 index 00000000..b4f0e315 --- /dev/null +++ b/app/examples/Drawing/Painting/Example17 @@ -0,0 +1,29 @@ +Public Sub Example17() + + Dim sText As String = "Gambas
already means
Basic!" + + Dim X, Y As Float + Dim hExt As PaintExtents + + Paint.Font = Font["Sans,40"] + X = 50 + Y = 100 + + Paint.MoveTo(X, Y) + + hExt = Paint.RichTextExtents(sText) + + Paint.Brush = Paint.RadialGradient(50, 100, 300, 50, 100, [Color.Yellow, Color.Cyan], [1.0, 0.0]) + Paint.RichText(sText) + Paint.Fill + + Paint.Brush = Paint.Color(Color.RGB(255, 31, 31, 93)) + Paint.LineWidth = 1 + Paint.Arc(X, Y, 10) + Paint.Fill + + Paint.Brush = Paint.Color(Color.RGB(255, 31, 31, 224)) + Paint.Rectangle(hExt.X, hExt.Y, hExt.Width, hExt.Height) + Paint.Fill + +End diff --git a/app/examples/Drawing/Painting/Example18 b/app/examples/Drawing/Painting/Example18 new file mode 100644 index 00000000..083f9032 --- /dev/null +++ b/app/examples/Drawing/Painting/Example18 @@ -0,0 +1,16 @@ +Public Sub Example18() + + Paint.Save + Paint.Rectangle(10, 10, 200, 100) + Paint.Stroke(True) + Paint.Clip + Paint.Font.Size = 18 + 'Paint.Brush = Paint.Color(Color.Blue) + Paint.Text("TO BE, OR NOT TO BE: THAT IS THE QUESTION:", 10, 10, 30, 30) + Paint.Fill + Paint.Restore + 'Paint.Brush = Paint.Color(Color.Blue) + Paint.Text("TO BE, OR NOT TO BE: THAT IS THE QUESTION:", 10, 40, 30, 30) + Paint.Fill + +End diff --git a/app/examples/Drawing/Painting/Example2 b/app/examples/Drawing/Painting/Example2 new file mode 100644 index 00000000..08f7a64d --- /dev/null +++ b/app/examples/Drawing/Painting/Example2 @@ -0,0 +1,29 @@ +Public Sub Example2() + + Dim XC As Float = 128 + Dim YC As Float = 128 + Dim Radius As Float = 100 + Dim Angle1 As Float = Rad(-45) + Dim Angle2 As Float = Rad(180) + Dim X, Y As Float + + Paint.LineWidth = 10 + Paint.Arc(XC, YC, Radius, Angle1, Angle2 - Angle1) + Paint.Stroke + + 'Draw helping Lines + Paint.LineWidth = 6.0 + Paint.Brush = Paint.Color(Color.RGB(255, 0.2 * 255, 0.2 * 255, 0.6 * 255)) + + Paint.Arc(XC, YC, 10.0) + Paint.Fill + + Paint.Arc(XC, YC, Radius, Angle1, 0) + X = Paint.X + Y = Paint.Y + Paint.Arc(XC, YC, Radius, Angle2, 0) + Paint.LineTo(XC, YC) + Paint.LineTo(X, Y) + Paint.Stroke + +End diff --git a/app/examples/Drawing/Painting/Example20 b/app/examples/Drawing/Painting/Example20 new file mode 100644 index 00000000..d7d61caa --- /dev/null +++ b/app/examples/Drawing/Painting/Example20 @@ -0,0 +1,17 @@ +Public Sub Example20() + + Dim eWidth As Float + Dim Y As Float + + Y = 20.5 + For eWidth = 0 To 5 Step 0.25 + Paint.LineWidth = eWidth + Paint.MoveTo(50, Y) + Paint.RelLineTo(200, 0) + Paint.Stroke + Paint.Text(eWidth, 0, Y - 10, 40, 20, Align.Right) + Paint.Fill + Y += 20 + Next + +End diff --git a/app/examples/Drawing/Painting/Example21 b/app/examples/Drawing/Painting/Example21 new file mode 100644 index 00000000..429f40b0 --- /dev/null +++ b/app/examples/Drawing/Painting/Example21 @@ -0,0 +1,14 @@ +Public Sub Example21() + + If Not $hSvgImage Then + $hSvgImage = SvgImage.Load("gambas.svg") + Paint.Begin($hSvgImage) + Paint.Brush = Paint.RadialGradient(200, 140, 40, 215, 115, [Color.RGB(255, 0, 0, 64), Color.White], [1.0, 0.1]) + Paint.Arc(200, 140, 40) + Paint.Fill + Paint.End + Endif + + $hSvgImage.Paint + +End diff --git a/app/examples/Drawing/Painting/Example22 b/app/examples/Drawing/Painting/Example22 new file mode 100644 index 00000000..80132b6b --- /dev/null +++ b/app/examples/Drawing/Painting/Example22 @@ -0,0 +1,10 @@ +Public Sub Example22() + + Paint.Background = Color.RGB(128, 128, 255) + Paint.Rectangle(32, 32, 192, 192, 32) + Paint.Fill(True) + Paint.Background = Color.RGB(128, 0, 0, 128) + Paint.LineWidth = 10 + Paint.Stroke + +End diff --git a/app/examples/Drawing/Painting/Example3 b/app/examples/Drawing/Painting/Example3 new file mode 100644 index 00000000..3e5829b2 --- /dev/null +++ b/app/examples/Drawing/Painting/Example3 @@ -0,0 +1,15 @@ +Public Sub Example3() + + Paint.Arc(128.0, 128.0, 76.8) + Paint.Clip + Paint.Rectangle(0, 0, 256, 256) + Paint.Fill + Paint.Brush = Paint.Color(Color.RGB(0, 255, 0)) + Paint.MoveTo(0, 0) + Paint.LineTo(256, 256) + Paint.MoveTo(256, 0) + Paint.LineTo(0, 256) + Paint.LineWidth = 10.0 + Paint.Stroke + +End diff --git a/app/examples/Drawing/Painting/Example4 b/app/examples/Drawing/Painting/Example4 new file mode 100644 index 00000000..26902e15 --- /dev/null +++ b/app/examples/Drawing/Painting/Example4 @@ -0,0 +1,13 @@ +Public Sub Example4() + + Dim hImg As Image + + Paint.Arc(128.0, 128.0, 76.8) + Paint.Clip + hImg = Image.Load(IMAGE_NAME) + Paint.Scale(256 / hImg.Width, 256 / hImg.Height) + Paint.Brush = Paint.Image(hImg, 0, 0) + Paint.Rectangle(0, 0, 512, 512) + Paint.Fill() + +End diff --git a/app/examples/Drawing/Painting/Example5 b/app/examples/Drawing/Painting/Example5 new file mode 100644 index 00000000..e2056d94 --- /dev/null +++ b/app/examples/Drawing/Painting/Example5 @@ -0,0 +1,61 @@ +Public Sub Example5() + + ' A custom shape that could be wrapped in a function + Dim X0 As Float = 25.6 + Dim Y0 As Float = 25.6 + Dim RectWidth As Float = 204.8 + Dim RectHeight As Float = 204.8 + + Dim Radius As Float = 102.4 + + Dim X1, Y1 As Float + + X1 = X0 + RectWidth + Y1 = Y0 + RectHeight + + If Not (RectWidth > 0.0) Or Not (RectHeight > 0.0) Then Return + + If RectWidth / 2 < Radius Then + If RectHeight / 2 < Radius Then + Paint.MoveTo(X0, (Y0 + Y1) / 2) + Paint.CurveTo(X0, Y0, X0, Y0, (X0 + X1) / 2, Y0) + Paint.CurveTo(X1, Y0, X1, Y0, X1, (Y0 + Y1) / 2) + Paint.CurveTo(X1, Y1, X1, Y1, (X1 + X0) / 2, Y1) + Paint.CurveTo(X0, Y1, X0, Y1, X0, (Y0 + Y1) / 2) + Else + Paint.MoveTo(X0, Y0 + Radius) + Paint.CurveTo(X0, Y0, X0, Y0, (X0 + X1) / 2, Y0) + Paint.CurveTo(X1, Y0, X1, Y0, X1, Y0 + Radius) + Paint.LineTo(X1, Y1 - Radius) + Paint.CurveTo(X1, Y1, X1, Y1, (X1 + X0) / 2, Y1) + Paint.CurveTo(X0, Y1, X0, Y1, X0, Y1 - Radius) + Endif + Else + If (RectHeight / 2 < Radius) Then + Paint.MoveTo(X0, (Y0 + Y1) / 2) + Paint.CurveTo(X0, Y0, X0, Y0, X0 + Radius, Y0) + Paint.LineTo(X1 - Radius, Y0) + Paint.CurveTo(X1, Y0, X1, Y0, X1, (Y0 + Y1) / 2) + Paint.CurveTo(X1, Y1, X1, Y1, X1 - Radius, Y1) + Paint.LineTo(X0 + Radius, Y1) + Paint.CurveTo(X0, Y1, X0, Y1, X0, (Y0 + Y1) / 2) + Else + Paint.MoveTo(X0, Y0 + Radius) + Paint.CurveTo(X0, Y0, X0, Y0, X0 + Radius, Y0) + Paint.LineTo(X1 - Radius, Y0) + Paint.CurveTo(X1, Y0, X1, Y0, X1, Y0 + Radius) + Paint.LineTo(X1, Y1 - Radius) + Paint.CurveTo(X1, Y1, X1, Y1, X1 - Radius, Y1) + Paint.LineTo(X0 + Radius, Y1) + Paint.CurveTo(X0, Y1, X0, Y1, X0, Y1 - Radius) + Endif + Endif + + Paint.ClosePath + Paint.Brush = Paint.Color(Color.RGB(128, 128, 255)) + Paint.Fill(True) + Paint.Brush = Paint.Color(Color.RGB(128, 0, 0, 128)) + Paint.LineWidth = 10.0 + Paint.Stroke + +End diff --git a/app/examples/Drawing/Painting/Example6 b/app/examples/Drawing/Painting/Example6 new file mode 100644 index 00000000..f9b00cfb --- /dev/null +++ b/app/examples/Drawing/Painting/Example6 @@ -0,0 +1,27 @@ +Public Sub Example6() + + Dim X As Float = 25.6 + Dim Y As Float = 128.0 + Dim X1 As Float = 102.4 + Dim Y1 As Float = 230.4 + Dim X2 As Float = 153.6 + Dim Y2 As Float = 25.6 + Dim X3 As Float = 230.4 + Dim Y3 As Float = 128.0 + + Paint.MoveTo(X, Y) + Paint.CurveTo(X1, Y1, X2, Y2, X3, Y3) + + Paint.LineWidth = 10 + Paint.Stroke + + Paint.Brush = Paint.Color(Color.RGB(255, 255 * 0.2, 255 * 0.2, 255 * 0.6)) + Paint.LineWidth = 6 + + Paint.MoveTo(X, Y) + Paint.LineTo(X1, Y1) + Paint.MoveTo(X2, Y2) + Paint.LineTo(X3, Y3) + Paint.Stroke + +End diff --git a/app/examples/Drawing/Painting/Example7 b/app/examples/Drawing/Painting/Example7 new file mode 100644 index 00000000..08ca4a26 --- /dev/null +++ b/app/examples/Drawing/Painting/Example7 @@ -0,0 +1,17 @@ +Public Sub Example7() + + Dim Dashes As Float[] = [5.0, 'ink + 1.0, 'skip + 1.0, 'ink + 1.0] 'skip + + Paint.Dash = Dashes + Paint.DashOffset = -5 + Paint.LineWidth = 10.0 + Paint.MoveTo(128.0, 25.6) + Paint.LineTo(230.4, 230.4) + Paint.RelLineTo(-102.4, 0) + Paint.CurveTo(51.2, 230.4, 51.2, 128.0, 128.0, 128.0) + Paint.Stroke + +End diff --git a/app/examples/Drawing/Painting/Example8 b/app/examples/Drawing/Painting/Example8 new file mode 100644 index 00000000..453c3041 --- /dev/null +++ b/app/examples/Drawing/Painting/Example8 @@ -0,0 +1,22 @@ +Public Sub Example8() + + Paint.MoveTo(128.0, 25.6) + Paint.LineTo(230.4, 230.4) + Paint.LineTo(Paint.X - 102.4, Paint.Y) + Paint.CurveTo(51.2, 230.4, 51.2, 128.0, 128.0, 128.0) + Paint.ClosePath + + Paint.MoveTo(64.0, 25.6) + Paint.RelLineTo(51.2, 51.2) + Paint.RelLineTo(-51.2, 51.2) + Paint.RelLineTo(-51.2, -51.2) + Paint.ClosePath + + Paint.LineWidth = 10 + Paint.Brush = Paint.Color(Color.Blue) + Paint.Fill(True) + + Paint.Brush = Paint.Color(Color.Black) + Paint.Stroke + +End diff --git a/app/examples/Drawing/Painting/Example9 b/app/examples/Drawing/Painting/Example9 new file mode 100644 index 00000000..43ecfc4c --- /dev/null +++ b/app/examples/Drawing/Painting/Example9 @@ -0,0 +1,23 @@ +Public Sub Example9() + + Paint.LineWidth = 6 + Paint.Rectangle(12, 12, 232, 70) + Paint.Arc(64, 64, 40, 0, Pi(2)) + Paint.Arc(192, 64, 40, 0, Pi(-2)) + + Paint.FillRule = Paint.FillRuleEvenOdd + Paint.Brush = Paint.Color(Color.RGB(0, 179, 0)) + Paint.Fill(True) + Paint.Brush = Paint.Color(0) + Paint.Stroke + Paint.Translate(0, 128) + Paint.Rectangle(12, 12, 232, 70) + Paint.Arc(64, 64, 40, 0, Pi(-2)) + Paint.Arc(192, 64, 40, 0, Pi(2)) + Paint.FillRule = Paint.FillRuleWinding + Paint.Brush = Paint.Color(Color.RGB(0, 0, 230)) + Paint.Fill(True) + Paint.Brush = Paint.Color(0) + Paint.Stroke + +End diff --git a/app/examples/Drawing/Painting/clovis.jpg b/app/examples/Drawing/Painting/clovis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2c4c89ffc7ae280aa7ae45cdf21e81fdbd10daaa GIT binary patch literal 15838 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 K&+;TcSN;#PjmS3u literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/Painting/gambas.svg b/app/examples/Drawing/Painting/gambas.svg new file mode 100644 index 00000000..5bfafe4d --- /dev/null +++ b/app/examples/Drawing/Painting/gambas.svg @@ -0,0 +1,540 @@ + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Gambas 3 + 15/09/2008 + + + Fabien Bodard + + + + + Common Creative + + + + + Fabien Bodard + + + gbFBodard150908 + http://gambas.sf.net + + + gambas3 logo basic shrimp + + + A pretty shrimp, a malicious new gambas logo... we got the power ! + + + Fabien Bodard + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/examples/Drawing/Painting/icon.png b/app/examples/Drawing/Painting/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..18f9f05d5d8bfbd0b241f564b753218c3c2c3e11 GIT binary patch literal 2078 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 literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/QuasiRegular/.directory b/app/examples/Drawing/QuasiRegular/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Drawing/QuasiRegular/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Drawing/QuasiRegular/.hidden/screenshots/2014-12-14.png b/app/examples/Drawing/QuasiRegular/.hidden/screenshots/2014-12-14.png new file mode 100644 index 0000000000000000000000000000000000000000..a5876b55d2b5a7db3a51fc54a06080e4365aa7b5 GIT binary patch literal 44667 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 literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/QuasiRegular/.icon.png b/app/examples/Drawing/QuasiRegular/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5b793fca03652dc51e469e9f2b6ca2fe14e2578e GIT binary patch literal 3730 zcmV;D4sG#?P)eXUUyuyX6z0;`N+w?YV)5^3Nn%Zdp! z-@ru#azp9#%V|VI&~LFb zPK5t%5i+p z64P3fJ6vx!}k0Imkx(N}D)tC^kYCiRBI=CU7%2p0{3f39iQcY5_z zH|lCQ)FyD;n@ukQ$JJKY=G~Wnk@nQ^XU3%n*zVN}05CE2+W!AK!*lSAeEeb$E-rur zj&rl$`T9aY)a466B(dE}a4tdTLIIw8PKLrRU4j220eqd{w}9ugWThBF>_P$dO&3i` zUHAjHRt&WJB<%a#0Ib3H#ltV`c_ks%$QKB6KouoN2yU$q00=v}v;Vh7hkN{XjadC& zbJvV<@yZ?K7#iYk_RIcnKtON*ZzpFb3^-c8TX=F{ipO&Uww4d6~%m@GUrU)S2p#p@Z4jRgk0VUN?0mQWn;JOZb zzIq!mZ93ua8tIZF@TDaZ9ivb}U32?ag9|*sZ~}%Ym0ub|A6$ z#_>#-$y0OD+jk(9!18xvM8_fJjT1u;V`kdQZzv^$7kGfaHV?3^AZN}sVP07`6dsDG@LXAp+N9 z-mhJ~l;Xcw%rDlw!RFuoJ1@TT8P@ozsOUJ-Oz;VtZC}2NadHpl9bV!_#9%0ix`{Q1 zAwzZ9o&b#FZ?B9e*1f_)k75e3s3#XLDy)7x6+eYx-1X z{p3k@bl52E;95a&T@Zp$`$;Awjv^*D{)P%L+}oto0clDVkWw(j#HCF;Hl1fra;o(x zNA`Y7cFIX6J^V0WZucThT|OV3L*sq+WVCf~TB?;r6&5fFJT-EEl4XcbZmIY@wu z?S*XHwS~-tZn``p>5Wchq>#**gwvKs;VL*BZK<-dQwwUS+ZmaMMXsbR99EC zapOjso0};rDx#sGf$HjN^78VAOtVS}A^L{bbrDiIZH5-2MMVU=(MyN$-ihB<9>tZ+9m?%O)i@5kpCY5RAR|F<$?Vl~_A#IVucNqZI#o|IcZ* zEWB-}dE}>md&Q&Z0OjT7V_* zqN0M-)KqF}YKDxuArSifUZ1pG(PG$fF)h*IkQg*Y46KEYeYcBocNlze_#}-4G2;@k zyU*hIy0Fb?wjMmros&&sJSM&VUOG;lplU=GukPK-904_nskCZ?(M{j+=+mWF<;DOH zKKLLdB_*s`vxcm!ELN>rMMXsg_4W0PA3vUoiV7+#E15NG7B9Z|BDQT)Qc@COIY$f`S5yi;MAky_`97hT7U%^7Hd)Z*OPax^;NH-iX@|5?nKTeWgt5C5o$Y0xYI+z)Vt|9yqAR3(R_NSmBioy zjD!(%?f)7xCYFS8IYf;Z&0pO$4>Ky}n#cp#w#~V7=cuf#q^72Z#>PfUN=m4ysln&- zQBY98rcIm3&CR8-u#mE{GV1H=sjI6)4yyl^7?_ZdLIj}iyMPipfD$ng4?sv41U6?* z9-++>O~7Z8Fm(=gcL&`Ezec+@qtY{p^L5f=dg$nZIFDjnjD?{fDRnF}?^$ro#QRZD zP(Wj2BNY`D6crUwT3X60ue`$c?b|ta>=;iz`6ND{kN4kypRBAb%FD~Cs;Z*2v~)-a z2sNk}bo3wr3>oZK#&r;`6e!a}!l-o2#6)}z+Xz{Hgb+lHnSeLYfiw(S!Y5!Cx_2I z`;4Vam$GcxGK!0fsjsgem>~vl?+Iy#!h#zyAPpU;8?3-EfqY}&MmqM{<|>gwp@Hek{~4DeJ83IQd8{ktXF(F2KM z=8U=2WAo$#)A`_}#di%`F{86N{>@f8I$JsFb`dyn8kOQjnkM~wNlFTKHMcWs+HBsf zeT#d-9W?D~;PHh8B#s<&#iO}l!v>ZvT}owTCAGD+Y}v8}+qPMk7u5FhRVuH za&vPjEiI+8vXcD#eCq1zhJ54bUjq<%)AJ!_byPK#$m z>Ug?)gS=N)!`S&hLr$8@-BViFb@UWEdLp3vIuv*e#qQ>I%zc^KtQl7%fMFOUCnuAWlS6)fJ~=r#)Ya9ImzRgv>m@5Ii-ijpQc+RC^Ups|d3iZy zWo3PXalRda7Dm4SZo~s*qyynsGLj&q5@PU*Y24&&7R~=-f+HrAK0QOHzOuW_L`S#-f}#c)~HHCnY1JV{pS3Nv%!%QH)~Af}b%bF@ezD zFVU`x=-c-f%EW5i%FHq8%=JLjnNx_cV*kDdtlsVm`ni|^)YsQjRaM2ZWy|pSe3X@y zQC?n7Lqh`_Hf*4*tc-$!0vZ|`Sg~RSt5&U|y}do+0fX8SGLi(Ph;Rl_06#B&{$UU^ zq!4Jd$JIm$5lL+Q79AVM`0(PC5^>kw< zr-Bfu_#}kuGQ#6w&crFqo$~>({R*J3E`)++3C~U(VL8TUot&HKRt2B4z5lfwnw`vIFqIXa!5 zt`2tW`hrh(eMRhq9HK^g5vGaK8jtTBQ>||1FM9g2#PF(u;MECyFN?d7RhZc>^>1UhM93qtAoaD)Io6pI9;Uh7eNp?SM;( zANuC45BBS4d%~0g1ViBz+tpE5)YA_Hh7_UbD6<0~!K8BWH1VyoCio2{#<-={Wpn^D-X-+6Dvw76DU%SinQy6nP850m4KM zN*w?;^$P%zW2EW8WMB+10*K)fr^$bSaDf2O37iHF0nI?DUjRX5#AEuz@brqT5<0007rNklc&25FAE^)tPxgm?xx65rALu6H=xKLK=R6pA-Tv{EWzzODk|AAPOf-N<8USt^x~p zIAEaN9qtV0fH!z7&z|wW0DK~^kpnvN5(W5H@Y$mev=x|{Crl33(?tPH<~(DxaE?9+ zAf;2r(8F7XL4clNBvOaaOEUp1{lFLv*kw)vIJ(3H7@C>$SbE#YN8py2m<0&z!583x z__|Vm2NHNDK2{(U;AIE+Qu4T#B7%|Ku!)mFnSc=1D zy1tk$q|KJL%=2+Gt}DiM*sSe~wXZ6$kPhYdVta$t{1=<~b2b0fX8w6Ge*v<{(CyV1 z!Fsdz$0Raf@1U{B5JU#diwr}N!3SpKMTS&laO8Jzks%ftuE@{eU6ld&OI(oe!C$~@ zz*z}&Q=`Xrnpm%?TYWgEkMH$@qFSNVOTN@HKnu0cAg43P>I~|226Z}vjLsk&GU!HU z(7n!}C!Imm8T8bE-37W^x8APUs_k|OSM|4Ry82_g$U1`tok63{ph;)YtTQO<49bTL ziaLXm&Y(eO(5N$LrG5(7um)_4V6+HsA$`+Ay2bc?i}AyfUy(rxb&&EP_Q4JZ!yGJi nFx|nHN8@U1zrla@8$AC2gvI{pd>?@M00000NkvXXu0mjfdK*TC literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/RandomColorSort/.directory b/app/examples/Drawing/RandomColorSort/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Drawing/RandomColorSort/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Drawing/RandomColorSort/.hidden/screenshots/2014-12-14.png b/app/examples/Drawing/RandomColorSort/.hidden/screenshots/2014-12-14.png new file mode 100644 index 0000000000000000000000000000000000000000..c5fc40610b9c2f4173acce0c7144b42507b920f1 GIT binary patch literal 247987 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 z zR^UK3PKOaTBXl@!>Y{;v=I3w#B=`kvZT&}w0ef>e`6*k=;BpM4ki#*PN(l)>gQRm5 zRgO2mU*4YeAg>ah&f_mTci-W-R|BCeZrvOq_$(6kxW5rMl>7BsA6TsofC9_B86gT` zy4O*gks1HfN!m(L=K8_kWXhV#>wT{#nnf#;mSElyd9orFwMj;daiH3ctJCcnb%OEV z>+M(21y0~Y$1Wqg>c@{b+Dp${@;?ILXw_cmGVCCfKYCJMKL%s zU0&QG7AKN=9-?`G-Z8c%^-Yk@MUzm2l$JKqF9;I_Z6@T_K)(>gRlZ<*6d`}P$XJbp zvJviw$S8JSJ*iEhF?F&1v{XSkeIfuf`vxbSHVe*JF4Cv&~7&{C((z~TuUb! zR$~PXj_QK}UBz6aokomHewOTGq>phjZNp6;LCB0i;|C z*_6Kkcyamg@O>+k(C;(AhRt^658$e{;dMd}#$mq^)!fWUkx*LK0gubEb#W29Y(qgw z89GSd9fd)!{pmP1l`9HBca;~^1{#tBWqt4x;#pc&`rHJJ{$V*~>(F&=iyb9AYrkBF z+ubH{8yWmUnGrX1&iM8K%gh*j?y*Sb<{T-%uf27gOdrqm3n~)GuKoYj2aJc5&<=PV zLme1!{`dF@9~EiPKhGQY6I!aJsmqHhl1L+`!~cuEyMX-BBI~rRenex-^PPUBIQJjl zYzSQQTAO=sK+%RODA;AS`C)(S#UF`5K3(v#d$03Ci{zm~_r00YxH08;V+ozxcGndCHb{^@LEryLyMWMd%lIb<7ddRafUCY1GbBQ;8ro7 zIlS@q1;tXFT#7GI@JQ>_(Dg-(ix(bcrKECG8}*_`X6KTGT(Qph+nj|fIw`*Vgh7AX zN4yT-xcY8Fcyf4E;>D$h-pnM%A3{!WqG>9#|8I=7!OpSPt%527fiUz}-<>Sba}oN# zGEef|zyT`kKYw(iK-L=|Zh*|4Fx&^kOnx@4tgHz@A~&n=vy0!yoBOB99iSgf=ddla zxu~BM*bS%55-L@_{+Az{H*F!Qpl}E%5C6IF==(kGKWAOL27eZV-gw}x8nNZQl-5;g zew7ja>w9Ybr;`=@Ch%xT0;Kuy`D0(`zqk|{ox+KPS4+LgXv!VQFefA=^ke#W6|3+= zagJ_owsAMpLfb9>wAuBK&ohtHCea_{OeM%Bp@Vg-)JR@14qxo1o|}|O{N9XOOgSkI zM!p9;N5{=MDWdYgKY!3FvgDM!zs8tD&n1%-Y zYHW$@;Qh_@_~P=1;r~(fRZ&%SZMe1|DBUF>-Q6JF-QC^YEg&u3os!bs-Q6XPbZ?q7 z`Tlb*jswSFpcm}5=6v&s*Dfr_VJWrmG3R>w718Ea&B(hlIiywB=|b!wddyqntxGWu z&4&19;l?$+o9hcWEOkx>xZVgkSLjf!{U{?*1OC4TJmBAJtQ)QUA@YG zKB0kyO_O+djtt554w=E`##_&y@|=|Ka;mno;#i0zCj3t#zn!@xu+TK*ONXvM*k$t& z#anO&d<`0|65*7L*m%{JL6$At&&4=Z`|-OmxzN#uQr~QGq>zns(MK94rZ`-!h+CYp z5cQV(Gv!+?H@T`xnYSqX=;j{3c=!8E^GptYRp3+}?kZ1>S)96^M9=vf=r->pi!|Q8 zlFz{Gsay~y?a00Of;KWK#Pk(yZ zd;_Tg!sCqQvtfXwZFe!k0!+k*_GgM4Kx!HP=TM^EmcHh7AHEFirma>6f%<|hDRr^| z60yWzpqyxQyxefbb#(AyKqam|tAA{a(?^X7k;?YKr zq%)WFG!7D5T19wFUtM&<)#sjo0$NP!q9HSl=CkR*4ZQiN2u-c8-!{H%&1hixx5D49 z3FS*1hlt^bWIk`ISZ>Gu`;s~L95V4MbVTh5!eljXvCTMnof!oobaAgOmdBYXju=Vw zFMD8I<&OGdiuc#yjJQ|2QDd5thbIHn0U(?73Zo2Y9%T@97cjKquGf>&?9eBqgpiVQ z4E%mr!REey>zyu^-5`vo=Drpx<}~r@QkEsBJuyIOHFl?H^}*$w$|}+&7XIWpD5SB7 z6Jz>JaP~NL!1CNUYN=uN_j@FF%Zw_I8Isu8SX#DYUAK43ef&|IIJISSFs7!aVYbdC zDvLa(yQqRimX6^k_I)u0+cAks%)tibj`dL2TsLHBL#}xih&1)1?fix8XgqSO>0_MC zNNpah{&pWLoQ~86bmHoD|4rt>Xf`^$rhekOIjkCUIjrcr0eUO{mg;Da4wZB+0U59Z1XfZZ|>GV{H>bO3s)=ssVe+I!pzjjAwmCg%UX zS2zkVC=pwh`S$Hw=E>~Gy8P0kxk5hQr7G*}`Nr2P4=nJD&is22TE3ip3}3xf)$Uj( zP=$^yFI1(;`2lS%TBl2som?;9>!-zCE9g%|$+Ik3rk+zM zp>l1bu5fQcN#*>Lln~hBuy6pRq><4K6fuiY`ccR`)vt(}71#EiWT`^V8Dxu|@X|{s zeq^y2tREnS2e}uJpA3xLBR0rHL?-A5xJvDMND|IT^}p+T_(#r=Cg8xvtD&K>ZJtdE zx(tbjtzFZdm5g<+*&IihvU4w%8aOL6JU$N&d-I`nzrWm zkCTpACi#s>d4I*QX1;STumzwUKfHvdZ$5R`>qAvVUs@f(4NJW|Bi_jA@fjW}!cDosB z8tW1`1O4MQn^nNb30JhgLYlP&g@PtFV%JDeT2J9^xm#)I-$4xsii8M8CrC_yGHmpEcHTc#-vXm+iwt*>tG?#_o9#!mkgWK;qTD&QAD(|r2I`{|a1O0D`;;RDV0 zCZ{74kQu?n_qh94z02G%Bj^tiXb<4m%Dru)DCx)LE*(Eoc_&z zYoyG$UF3^A&hzA$Y0)9<95MQYg3t+N`6_ zvuFz@p1ukP2M>BFL%d7Msc3L|U2-{WYP1zowP8!RCibGqzDmX0K#P)?g(WB-VI4Vi z2FMk&o(nuYs})NW~KNx+(1!7?|y9&_!+BrAO;Qc3N^^bfBgWZ7?_zUVC%$9OK-3XR`hJ%CC)6;W#euPli zckw*kY>L?u2Z#PwE%S?seQF$6>c`|D{s{Zs2GV^M9BiWe;5TfN+xCR5Sy$R|{}}ue z3HN&{fJDHh6Pn$t^)gTV;Xbph97|mfXIcFtj%zGAZdNlal`7h?2nR2Dt;~oj>Go-s zSVMlI-tSYF&O@j*(o;76hwGSrln!+&jF!m zz2|yOQc|(xxWWS~FpdDa;2yX~| z*&Shw{#GjfH&p<)YuR^n|5_^md+F@iBV4-T%SYo+$jyZhuULxXvwGgLS+J=b)P7OD zz7RO`{LxP!Vx#Tnw;y!b2vyd+S?eQ;L?TY!fyjcr<_W<8-4hsIAOW=~4^K}~35joP zY)L>$Ff9nz?I*zU1C9zzqtj8yf`!pwELrp2ezC=JJ%Udko_8u>piGr(w~4_~wO1Mr zfx4x@^VdZSrc{x0623``fLwv4N^^>jkJ;+l0chaxR~wOZB^cguqm?dXs++poht; zL@<*i^~>y@x@V@|@)p)YTxVUOi?CrK$6=cfgqWMNV1Typm&pp*Brr6W6QAk~c=)y~DPtdi`k)4ZjF!C|@e>J@qR*CbGEnNY&vOeI=ljS zQ>CY8pqZl2oI=x-4@7)Ct{052xOxsS2dc2zx zCu2|PwZ@G@qb6rbw&++uTshKInOjINN?=C>5<5ZA@b8!`HD8Twz7!H30U6T%Mb05= zbHfR=9NVi}adni$aCR?^Ygl`uvBqqODkwXQE=ir9>Bq`Em3zuEc)H8aR_06cH2PIV zj&BtcN6^OaF7v7_&^~m{bY{L!X2cEY`S6bf@n}Q0W)U_wLnKqfxJTagd98f#Oo=OC zb*s14{zTTO$dhW2eoFK@-914#W8XEnjt-psleQ;+Ve8v|>Oiyi^t>JVb;JB5sYKnS z98H%)^Lf%csb(Z&t55IYoL%k#4o&fNIL^Tz@?ySiY z|6@x6{bAf|Y&NwPMt{I!yVPQf{pmV`&bva2YENrQqk!>rObVD0top+aYTgB(F;ps| z3616&O0_CqQ_6S-3?7dD%JvN-cTJ7EBRZ@)%x{m6{7k`If;@k|V7$=t=}}K8jyE^FBN@U#Smuuy7KjYw_xixZZ zobjKN(;;*RD;J8OcA`}>w)DXuSsRY~QP1|X2Ss#Bw4#;Tj_AIM2NZ*S)QQaqr-$3! zjCb$eeT^CTHDC~i&K(_Oog6M_^|9yFJ4>#f{w9ARl}x&eoMCgNKSk8p;%k4gWa$#@ zwOLaJ;|g~OJNGin+Q*{eF@cSD^fYLg)Vm&RU4^zyoJ%GTytp`khCRaAaP zx{rtzOutVmaP}WK0yOk*L_`x+yX3^ZlG&6cFu2aJWlpMC;vK4Db)~&b?mQISC9T=E zUS8ZW8yN*NNTG)tvX3lwaWJL0t_l9)!s{ru_Gt=!;#F{2Gz~t0bH=AxM~`Tf6EWRG z7;N@Wlj@{OshEh4&Nn!QnAT*vj#TlQN?(`x-~7YOJ3szFf`q2^sXgXFv1bC3U3i-2 zL_wk6NNlbMO$7t7obiVa8iA^hWDGhDrutl}@Z!jzeIf(jCAfBy}FpfgG>YP%|I`K-Pv}X@iVYv=DtC_UZPbl+0iIANBRt z*pp9jKqTC#w@8(9(j`p(?!NTKUF+04q0W9I7~vxV{=9IoR&dC1CC46hlfP>`hJ%9h zI`oxE!SL^bN<1(bBke&!Y1!*5Z>3O3O>LKFulFl@_Zo3Yx4^Dr@+pvDVvvFA*uZ1-?Vn@(>al=xORK< zh9L2pyuIKiXmO`U+&5=)-06JBCwQeB>Dznla)JS?hpkhxHf$E_yyNJ^l&*mc0WR|Huh@> zv%o~)f*fD)G3i3XnjL_ZUgt{lE0=UC-*RHQ7MMq96PbU=zYfD-NJcS7{OL;hN^)<^ z0G<0UgaPUHaaceK9mxjzKHw*H&wOkHqiqB5uA|O3u1cylx%|pq7FCFxK5s!x45p|d(8(npJ29_FPS0)C|KZR5Kvh%yQ7RD7NrY(f2sL(zgVHx}5y_WKh1tUPne*1Q4+v?_?>!)_k zJ?Ruqu7I;o>H|*VaDz%I`*(rw!F;pm7{@<-G){%AA5qe_KfW^XgR$#C3xE$(oBb5m z%+%TTAW3WX8+UO3LW4ZzZaLTKr{nx)b=YQf68(N4NEa`1JK~=C4OYM zYy0oKMsgrM8HURcf)ct*OGG)5L~zf4zSD;a6f}zuy8R^V(8W<-V0MVlN~?Tb|Jh zErZ6t?AOM!gq>8b?RmSAL_i+~ixs7y$E(c%BKAKH>V*$-w(wYrc7hvRd$aygpIX@{Ty zqh?RtniO9iIL>QLvSg2C^9f%`Pi;lSs79~w^E{Baj~rq$3#n#ETo)Jt$A6BPqK|AlUy@@q!t15J{d*}<-;W!_wi zRLSanjM!@j3lE%)I17x8`6+qDzp z?w<$}i|5}M-k_d`IC3%!lF$j>Qe$fDPY3zhtujdiTAXyplIg)Nl?j$aNN9I>u-Naf zm8z_-K1N_~=b)IgrpbG1`ai$H567~V4-#3dGZQtavY9Sg%nQ(f`(J+x?(IL}>ui%F zY(bri^_J(`J6}h9ppgs)U1_r!(grjk^v{JA6-6A*==jDgwze5ctx9i~piy={fg6t2+X zrDrZC?r^KVp(dDusy4&x66zm69I_m@R$#rpCFu*xFVq}x8TjGh9^=^Bnns9iM`|2@ z@tIKz9Ejy_;P$VqY}vaqwuyqYD^7e&BYMxGh}>aSp81QZ$gbJ01E--Ar-tB-w4*j< zEetY7Yfk$m?s16wM1Rw(H)g6SL+5+svH8x=8s8&N=gJd})p>PqW%)dWrf(S<5siv{ z(@3}pTX&rutq(CTP3h8aVUCS~=zNXWF*O^u>N%#Tg8petz+6$O#uBs_E!9>99UQIk zXsX)o)Z$y zuN}pKOmaF)A4e(A*dM8_D~eJ@cr}LUWP*0rrt+D`tX=3)*r}Z_fMm(mQzg zNfeq48%AnxcbBUGz#ogmR-lkJa|7bFN(5# zqu8W5UDPS))5I__T)7-q3WIQyEq3IXMzn@TqC^XlQw8pya;QRTix~+TDPT1TKHy9V)yh4%6Z<{>2g`guVrzjkW%urV-_@Xopoel_9A4hMXfSU3W^OHF}?w zuQYmccLVLPCSa`?!&qR5C&QO8zTpY^$h1Jk*l(E5sw7k{U1N=zXyq1Xe@q#{B1MIn z_%!+(NBtWrbN@@Sg~{Xd1-6civ_9>WdK7arz#UJ=TBo7s#2wR^W*))!@1jB*A(yVsWd$J=}^;3udlL42G6Xu z4Ce`*wOOzZz2zOf&Xz2i{DPeKt7x>Ry6&Y3U7jB1=+xhwULN~3xr5~!Y3x?)`+q#UmkN|1r^FK`6hk?Dnl9VRav;5-kCvf7@z4XC;V|FI&3=(F)mF}GLf z_CDuYZgM-xTefW37(6YRggijUI1_xIeM6H)hq<0jvhp<^%z#MxoKh(da3vOD!mxNE zK((4mo$tW(gt7CmQH$TaU||a2K5i)yK!9dyi+YT_EA_b{5N3A_Ut%VV06&AZ3yCrB z{fa@|l-l0+OnAS(HQkmxJp|AbW1~VY3M@H<4L-^gp#VcTqeQLtzLk#_1O=r@CMctH zO44c!KTT$AWA^( zWffD9)YZioL)(o*l&g2sWr|fgP%9Q41FvGcOp5m^SzTH4@Myhs5o%Q?uU~16BWG{z zxn(HqZ)Ydp!_4#W01_FKx35N7cEvsGA-)g|l-a{d27cWk;UMMj#HT3X1fbMdXLEtl z6T9z!==ZpcdHHkd4hHhCGosr0a8_$(tcTdEb#h(g8SW7E=@<$;B~Cp4O0|0XKKLV5z$PzzvKbLmyNs00OjMv|D$3 zR#dkZP{_hK?0$)H`5+t9RXf3T0`j@jXMKwXkbGJZsKsLCYyJ+N)bq*B~i!Rqwt zztz62c>6MDO zz)lM(i`0&!D;gW~UDW@t;X?&;IeFQ2nYxOe6`HVADj7~3S~L0_KA^W*~*^sI~2l--*$yPhZl>< zS(Z`*SR6KYvQ*H7ZrI3iAA|7mZdK|nHtBr~-_Uz7Y)>)C8@Ka)H1t0Gck9Y&zr~%- z#^F=8nQVU};?|M}17e2FGGUrU%BFc=dZnS=~@7bU6TgQ0_=I^h^&* z$kci7*GYec8XPICiVFXO?!ni0OqzS4;lW32q$sK7C_<@8rO?DCI*XePo{0~aZ?8;eNJR+DfJqk1S& zPijLb@1A*T;g@#EUvJ@u-PvDUj)ZLss|1`)7&b%gK~FQrE*R^pBvR^#k^jUI@$e-r#!G z@8w0idj8%5Syx#r>Q2dRY@!*vnA}A*EKI#bdk+uJQZ&J6EAH>P%XBsRaBA0ox(+{((k%`MZd2J0ivd#f*`i?wmK2qt`> z{OZ?M%U;^%cWKGE&k;TzMfM{?0)H=9TGlP-?>bWN(I)eRqs#`%=b0j#i_e5+r`V00 z4e@7VV>;7?vfc^iQ9hv=8);}`7n zkkP=U+$DHvF(|>O8Cvtg=?SCTBIj=LP7c%%BMbh)bA1cpQ{$A9QqxJ#6 z6)E-5VZW7VvxCnsz-H$!O=&JGHYF;Dvt=kSz*qx`p{V?Sr_SNOQ%3^Y9Q`0Tq_t9_ zN;KRYgMFFHgLqxhHUCmlJPV~isud{P`nTpRcjesqTRr&w1-<8dkxtlL8s43lpE1IP zx)LXHSX&%}yYAT^^$~HSoC*8md_+3Ns?N?Xw`X-Jq9_hf-+alGX|P*5l@{f&GI+Q- zlTv9}%$fsFtGFDU!3Y-MG(b>dm-sIBvbR1ok*Lin+#bC+{*B^Dp*S`9tb3iY+P%=p z?}Vp*;lsh|@&u;jJ=$zM<89vF1y{z>skbFh%7r4fXA!o#d<*bRE-FKUIAgIr8_tmh z|9w(f8qgN}c=wDp%bMaDNMkIqN#;ma+L{>f&~Q(NIq#e8izCy`_5FZmmv&gNPx+)- z>^fm9$sq{^zBaRbJOz8Sx8#@_)QASGyYyi}{lLdG=^xsu)x6CF$z6Ba%02)CK+Y zsaLVYGNj+crl=HU%*;jxs+@}{;XFKRS^1jzFw`fU&T_ON*0e^|8q$Jgb+exz; zG!)XDY%roDCMNz6E+oG;q-YH2e^rRa^z2XX*}1AP8;Xv#M!ofz;_SCB&?Z*tF_Q*y zQnG$*@FYySKh!y$6+U4F492DC$GA`*>jG?q%n5nNe|Ui5T+uPYLhC%+i-1B##RPj< z(iR!g7Mm**@tn*cI*ieZ(@n*1L^VdUB}p}izlsvuBy8*#Q@6b#ibm|AYO+oAbh?YH zTX9FbRXCd%c1wB&ex6SXg9difV$!wPDSdwC@M$W)aH%c`^Lr4eBbX0 zf1zXdVM}fdbHTERI5cAGsOz7tv3o?^V|&tu|Cf~e-`So97+%EG)T6qd^D!aDS8)|5 z3=L!L&4DnJ2yItr6Cw)_Skg8?cjFxyF zGI$!Du8_|Z?>F9Gt33Th>f#KHTkVq%dF|j*!4?!LMn;YJ8BG=$xE+C+&ek=#?7Yvf zp>6Oz><4~-$R9Cq-vzkvLkNI9UxDC(2x2WxAFUDFzU+nU@)LUHxD!;F*4O^;zwql_ z31Q45H?I3+Bei~dUDB^UpV3mO{YSa`d>2|sFt%SCuk}##pjtxgnYL7&JjixAz#1lm zU>R9~Hn*fF;Ov4_dg3;^ZXa^U6%5oX^cXR5R+SaOgT-~*!=LqZPu)pF&9XJuI;hoH zRv&McM>KC`SD<)J1^`)#(`=TNsVhC)I_3HJt|)`tKL&-Fej+mofoc|nP|vC8Qb?Qw|A*hB+sI* z;Su@dY&mv0o3e1#BPx1$XiYAsF`CNNMWNmD{r1m=2l_2L9GO*)xae0+u{RjG&1tTd ztKFv#)a9iqga0gE?)|zxEjnfulXL%u*3h{^cEO@h(squsKhQc~(yaf*5{V%V}Fzld6^{e!(hf2!Y{ISijV`J_IVOB$sDS?a0X3XbJ zblWM!rT~m30ho+K>@I%(?1MvuAprFQ#-D;PF*an-gbK51Uv;6P_>dHeLdAx9E9Jzl z(+q+4T8XsVTmLyIu!`dM@bIYN`%95NQ?*3ZEl4R$JiT(C72kk}R^g|*6gYjO`baYc zZ{8;+G9CY^yeKsEamo`D^HYFdWhFf$rlh}QmN=;3;U}uujX40Q=Z@TwR)5a8CrtEg7vP4@e3tRsCtm_S;NtS7(Yt8 zjS-r!Wm-WP=6o#=7;@X~W4?LW7rGre@u|02q4C$e;r)fQc=uVUWKjat(KRimAR(id zVo0U5O+@p8bqwH-Fb3K4REei#Ev{ag*TmANg~7G81re#^ttSwMvN`Ia8TNYoufQKp z92VSoh>`)ea-6#Dj3bsUdRMhS{p2h#e~rs z6#+M}pue>pkxI90?0#7T+wpc(NhX}Hgk+R+R4{-dt&cE-05vp^S2%4UCa@J1>{s#E z1;{y}$&&I41Brbmzig0@qbW!eRi3GIIBGKIH8x+2a=5tFXH6x|Ga1v~qjB{lW$Qgkv$U9P~sC^!j*dKit+NV$8dOEI`(-3e|zHCik`b;osrl6SV^S>S*tit zPEMvaIspocMDitPR%t$d%!0OxF!3Dxq!}iOw3g072;T>u^H09MyvidP5rFf(Ts>xL zE@QPS{rvO@`i}yEdC{n+dd)?}0WK3X+A#M;4=JR&CbsC73~BF_?k22km!o3T=4(Y5 z)aTjAmPSZ$ed*5zytd(_V$wim0iL^I{HJ6I%ICtlY_QDrHxFdrxz;^vYcHoc(wIIHM zp4#JeOnS;gM*k7$?0?nEMs@lSeM=Rwv!j0r29Fl>^YUqu#KKqIO#l%Qo6e<-fQ6;L zCSS^g86Ie>-$(1bqUEQjtjk&z+C0oy>0H()XNQ|oak&vYgGdF=@P2#$@oB0dsWky`Wig{`7Nc8TVo;~lhbRdd z#64G-r{lDn^*vSqqES5fwd7q?+snlgwqw=uZ%U7|bq1E9HFHSsVghb}{$V(^$5Gz0 z^ykg|^UC{Uin8|-L++T-EnC;gg{ks+<|a6yWfW`*}cb8X0UvtUQsBxZ7v<^xUD zK8$H1jPwSg69ac07k~R(duZIo!2jD3x$I%S!AV7u?>Q3;~|EMw!If%pl`s#j6^`U7(3gNr_tJxoO)3=;YcRva{hv+ zT;W9soW+VM=U(=ne@X7n?+5<<%*Kh!7o^~*T-^#TIH?F#GXv35I3j<_UF6*bWO+=u z?aNNVrlX(a6?i~;K5R^Mjm&E8y)YCVMaj?2+C(RO6lo^C_`*%@sw$78!F zum}Z7wO0Ff<{W=5k@(LfYhqsSYf7dsI(fFV;0LG0+k};tO%3w51n#X|-m2X}TID3B z6MDy{4<#$yF%-7io4YEsZBN~!03rM2&Uv?&1LY^P-DchPcwGc31405)Y3zzmoWNK7 zE`8K75=?GQW<^ zW2~pBh)8C&;MmLB14dQGJcQ7y6jDj%CRQ?P^q0AjLl-ay;s@Fu7 zpR1-W5O%El%y;VQVKE~KDzW?u#(HSglVFn)XhN7*Y%wljwSw0=gn43I{&G^O3A2|T zhH8}?>&hX9aAY{RXoqkF(Y4_Y<%+c)ka&Ic1{osSQPVCzDb$K7%Nwa4pkl1<|kJMz5W7Jdl{AGi?|3zo-=WwRF9 zff+PFQNo>{pZ`&zRG~x#2Clb{khNRDKLLPhcXFp*c|rYS65ea3ku%;N=OLG$iM^r7l=CX zt1a$1a|i!sOR0c_NMmx_y=|m&v$EILz=rVn@O@dDQ4^BU%CD+pIhiEI-D}LJ$9$~#1d!f3TQG?4|`M7|&-nI7q#Lwa((&lDvfnrU6rKS%w<#4vn834!1 zLg#X79`{D##RG0Y_ig_S6<@beo$b$g@SRR~p|3J*KxzNyv^Ike?l4;Vb4daY`Svr% zIm3w~qf^k>q+T(((yP|vhS^V&KyLbpXypun+FQv|_ zwKSGTMz~1*H!h{_uPCkO-DQUba||F%*w>L3j8rtZ$MScNV)ESu0|xko=~69~b@SN= zAjv6!Ecn7q+l=Iqa=3hk`v+j?B2rSlU0weEAK@k&?04^QuN^~Q0tqR(z;|vAuh-@8 zmt+{twGV2Msn|DKPK~4C(z5`&1o$$~=%$2&i?bC~$6=Ya73KUu!U>I{RY7v+xb@Iz zOs84cQd!)&lJQWICWUn$P{I=&Vz(N|$-sbALp*Q#_*=sdUhwTFL6~xG~rRGuhx$-~1eS~WjIP3Fjez1AN z>w6XB^)jDFkEc}i6Uu4W(spri*}ey4oA!~BaA926A8$W?IbC%>nSuPmq6F33giay+ zYf&oXv(zUHzsBR9bRfN!&Y)z^oXO;F=(V@H6zDc1I$bQ4?e0u*f8riTwEY^^&5+oa zw`R=(3@Gqnid%Fwk*-qiHKp%Noqu|H>gM3A$oNX;T9Dz?QT|K~3S7<8ztf&`RR;Ek)(? zA6WncPw8ATy>Lh{KhpcAl$%j)g)o2zZJcQKki0uX@vj(N=tl|Cu^;Mdj5qYl@2N%% z(t?#ZN06_`wHQk_>mUp-7nF~0 znhD38uW@BjCbTa}#>^d43#Qh0*z5gP6ve3vS5h{ev(8cz%B|(w*YKPk;Oke--WxhX z(lM?c_k-PvLdS1a#>5&**_&ntMn(k7XdBfvh?oKMGch(?@Sw!-dHweE?5xAa?Bk~s z8OAJ@94qYLP6qgfUZhvWS?|PcnR}NVE=iu-)jX1kWu@V1b=cj}dNPN2f>W%ox_Zs| z7Xpxe_6Y9*HiRe5lB2)IDl%LoM5TftDlzeEyvM_r7?K`&In>}f;tv7CE+*+WeFF}k1-nQOQ$XZgSn$%D7N+HNSG(P8Vx0IMh{^nByY|uvDO9#Y=i->51 zOqdv)Zw)k`4^lK=&8l-=j`K5GX*@R0AU*^7IT7YN&>nPi@w|sP&n@-j+*!X1$HJwd z%DcJ!_{*^srsL>*B=#>}h+VgPtPzgE-ZV7Rq6IQ4YPRi}&7vE0+3NFv4Feb>e1&pI zxuFmw@ya9JG!}FA@~hZGM)ib#1>}Sn7iECHP=V-}@mWOu=cI>h8;MQo$mmw0sKSnG zdE3&EHs&#d<@yRIg!bP9iz>r;q_GLyP0T4#lYTs;6n8P_lZ1(|yMNTEXN%$}IAu)V z*j||gG}U6IFQy@|C`p zXU%eA9aNY3{Jx&!EmZvJ1*8)LGHP5`xEX96jw6$>p-L?r@@sB~;~RtwtS{ z#^ow6XF7ZRVp5!DqSe!V)#E~P*oZ-z=aCVM#j1G=Gfpg^L+5+>+~$Vf^U2clrT z2z&QA?a*}lSqONN{UiWP9?&|&qo4?aJsuq$-DhrOP$=p#{W~*Vz{-ekF?X;Yry`u^ z;z>5D`yz~`aF5+wENf%N(ip=7kCt#e?HK&?XJ)@m{-jDxvUvZ{Q<&cc0K2Yy$?$1{ zvOGh^tfP(f*4Af6%b7EjRr?e4aDl~UfB4qp?Qs{)jqFxPF zk&`vf7hfMFTta!}O0gBqWe1zX*o7rYF({2;nb9~YMR`T1>HWpH;xm|DnJVdxgWeY$ zUSUoC-#BI~))6!|fAB;_MFBBot8xxN>H5Lt8Y;-}dSOz&b^-pyFN`_B+wYs2sybf; z0?QNml32-%rk&^8Lk-VQ_XqB3b3`vV=oR~l!y!G59cyP7ZR$wre3M}u(hpMawiP)g z%#;;k63&l?*Jl_zy%JS(u7as- zQMHR12h#MRDeQIuo2Lc7uoD+=O#bG?9b`M(W^y|=0h^E7TB*1KTp5-+Xo*zTV1O|L z;6&@2UmC_>DFU7zKq|%g`Mqh?c_%dZN@g=ckoMR7bj3$11T9(YIW}p8n?&mH!q%Dt z3IKzrqVU>98JTmUQ=s^jrBiapzp8Qfs@ScJfSGxg%=`tX?9BcAU=RLY6l>WZFF)5X z0e7RIFE~XHw}3zWs(ofAZl%e24&nf+cVD95gLFVxc97(legU6EePk9ym_S|fwVbI} z@ip6c6Q66*l>66H5uEj}TCA2Cydea$)z);Lr?kh}-)|^*5IKP~y{Ax4@LtIB%ExyY zQ1n~JttJH7_?%Ae&e{X9#8HF>H!B?$% z$V@$9v|cA2c;3zLxi3h^47P#Me%h>_mpGqBy+!+QDNI*&?_O4a~l1UVbE7tb4XDZI>Z3CZi)s5Juh$ z*G*@=_ceOE+O1P@J~Y`^kvMq3NgOKMcij_dW1lNrBUZ@j2a10EX&gRcl|7F>_T^?X z;#U{a%PotO4ZG~{j;Rvf+w}f3xnudw-;nYut+KK)N51cjY5Pp5KW(lY}QdF*TFpI_LJJnnZrXO?cvUTFi|S~_qEyh3{hXA zX!@N>Y4<21BBF`*VkErkk#|CwU}6c5WyneN7t5C?Q|9x(CzF?#WwF$9{8S@Da8`AiP6!oz|-D>A4l_srtiBmF32ER&kUG~X?#tu}zpcFV$VU#4u|4X}IZ zfC$h=x>t<4T8R8k=<%rA15oXb@$N;=fQB^Fj$JbZW4z z;l-VXrGqGhAImO3!(O0ixK<$`A^9t>LwEZfE`An6rYrS?L94;?-HazJ+_wtrpDugH zUFAom>INq9)(}SrWH5=N(-(?*Jm_SvA?!zHY;*tcnk90hAONn?e&pTYc~z08Hz=td zZWmmxJ@3#(?N>|Y=#d8o21+y`98t3N2!|?W0`OY`PWSNs$FzbCDX&RsxFl>>txXsq z^LcQ2l@u=%=J`bhH&pf7^(N^Hm&_??*uy8Lw9Y>Gzc>Lx+W_ba{|DLP(?r8R z72IZ1E{O9@)D^|pWRc-Y=gvV_ih7pL{bteT@@6d*p6Z49s=N`0uurjltN96ZhJc#r zC)I7IpR5gUNCqJ`Do=#KqJpWFg@`D?XL6Piu?SB{Tm9jO%tJ^D$M(1o--gh4_;(8A zC;-CpA7D+YMYlqQl#)^)PmamNUlCCyy8ie@h+}SL$@Foc*#q9OhpAEc6fUpO76zP& zV&q`p8n8T@^O20l)9*Yh!JL!$pe&qpG$V6B{I^pn9R+xb7%j2e40n_Eid_h|FSHs{ zTXToq=T53j0Qf&Q_vTqdZDGB?my<&}5x|-cY_EMh`+N}5r2WopE|iESZ2NuewxJFF zf%GWu9d5-9)Mjru5jAy-mU!XI{@C>VqWbteSd+8pS%}&>&v7p4@cBq|xtZPeu3x>r z9+v;6sair)mQ*b&{yLn0Hb0wrr?=c`vTakD@w`Np(XYT9y=7^HxO~f$I08p;b1@Or zoZxo;F`3ZQkSv9|+7tY9fV_AUlx1Zni!fQ;~H3 zcuApOlbQj($d%d>S=?5hRoG=j@;6cK%>6JAbKt*HmYnzn<-=i}DLNi=%BqAJsY6PT z#iY)Ye}~TnL{v7-SDVIsqbJ7K{rHaed(K4W+yR^Y4y;;fZHF>nAsLW{1q~KxxB)^O z9C_ehQAzDtR=)tKipKZW9Dnwy`mJ$)P!=lIETIgAR#>Ep_ixc0ZOFD*ESo7O!)mwN z+eRvqS81JqdccTi)Zj9gl^s?)NJF(Qyo_&C(4<`S-P#kZAjT4#^QG{$b!tRPXvq0_ zC|fBvH#f*-HtGQ9FWhRg5-S6ye&07SGz+k2%-4@+zO)fP_RsUY=CueCvp*m@3C)HM zHH0&|(4vfowW!q)kp1ZMwH`l)Nhr%CP;LPsARET-)LUPg8t!j*Fp?9VeSq;+pYTmXDAalXSSurNUipu$v!y> z5fzg(zA@uP42@BXVKpZPn^LA#gO?u6tHknMC?cR|DozFqq2U!FHi%eK^p0h zmXdC10V(P3knS$&?hufc?(PR^Bt^O&y1N_h;P-d`>t0{6mT#WV%$zf4_BnfRZ$eN8 zCne$dk^lh7xiesq+3^0F+15l87;`T=|q4r47%ru+ufw z!peSHdNlW6g2Yd4K7nJTO7%HIT9}3Ot>OgTGs~HjaFcP*e+d0f1q!C9SR5FhKidYA z6H$C25fMhisF-mtz z1*jr`=6rWPrN=#g(7-f{Afz6?JYQJ;#|^d6LmE?x8F$j)gJt_%F}d`Mo27N;=Qv46 z{ch#h_GoUN*xeM(jnQq%D=Ps7M- zol^3+b>CAOP*QTS=O}>+mS=WfnW;||5ThzF)x$z0Aj^!D;orZ|Ss$!5Y&I^e^R12V zF^ST<$Qd*I5}qg+-c=%W*mwb)>_z(M83t$B{Y_FCN&%?@L<86fk+X}ExM?+GW6B5L zRje(#Bb*LGJ5zF?SpsZI!JK^i!~|AYx7W@i@^dg0AeJM@P_M(P-8z&Dfd#@Q^iQgk~(b=StS>v^!n2y(MCQUhDHzVvP0U$nzz*>_=-?qwQwsT zHc-3Gm-6`~2KEUbp7f`LOPU0J>I8llHz(3}E--GLG&1Qaz1KfBZEWBAN;;Y&i`!X( z#@)=-gbWCb94&hnBVXU|!vj}$)y-RKqLzaQ)(77#*XI`;E9jGz{~FqV8Igo@l#wOZgbNj`05RzGx!LeT?n@dT=YmPggtUbb2*u^8 zsl%L`(zzDIgNt6hj#6)#ABq1k3&j;9;6mFlB@xaJ_2V-bm`18>3Rv(O{K3wj(c`Sg zekhio8uSZQ#PPvbnH~yx8rxt4Hcxj8ly}%24(0lAXPfBvKDMD?L5{?M> zt>}`Cbobm0WCx8>|4uuq1zo;%Uy$PmMLM}Y%`N;7QLO?Aic&Dr{|QFzD@IKf3FxTN zMPfZ#U9vT!i-$RZM{dBE!gn+@A(x3Q9X}AGD%TVV8hdtwVgS0 z!}FJ1K{F=HyXl|*DMz3XLf z`PGPQaDA2Y_PlPil$zz_Y-@`8@<(9RF)mE*qtapJ+sM_z{k!+@gv$mg_N}$DwuY9;v zwj{#iZohtplHNVLmZ4f}Hlb85Eg{jK%eqpu{3j(Vtvbuyezi;Q_2@ z@Sn;89p7(fZMq`y7gD~U@i(0eIE?GT_l-*zJ7$;;3$AXov~c6pGr@eWv2MmqCgcsW zYosHbWe}y@)lWK+0GGaK81`80j7U(qsA4rI_MKMQPBzD-tJ|wq>wkj3;6!5G@!O6_ zH<=Zf0*YRHC{gVJ)hAn)x1#QSVQ91y|tae@RgUW^1 z-GY-rJ-}Hi0Hy~*0)68Faeg6Z)D)M;4KpNTxXbe-2xVWY?d0W}XOM5zM*r89#v%^< z!Z zg+u=ThjzIC@(Gw}{9P`0-bzjz`hbx?(OhILdS%)_si`QaQ26_8w&_HcA~$2XOxB55 zm+_{08N#e6!_t`2rD8IyItDO5K8mjI9qT^UJJl{*ZupY|ARn*WeU7_s9vZeZ%GM>8 z6C_yhSGy_w^N;kGT?$x2XgTaHR-HQ@Svu|{srN5w^} zPJ6JPigC!2z5gPpY;lSTY6QSSmAeIn;)!|p!`5@n>6AE-hm6spp z`5q4rsVOy>xfJmu`8Rb>UP*xeEn9TxRHE2#{fHr)2O`d9Z(e#(PdKNvZoI0WMmItS zrD|}=-V=Ckl)b~a9pkju1(y0PuMq6wa>07~#6h`2PR#r7kJDJ9e?T?z zm8Lj#TA61e$HUVJ&QnMX<6!1D>29L@j~=~KN=T%X^QYSj5`a`B;ZVIPb(y8P->J%aSg}y0r&|6fovE^w?kuYYW?yK5QIkOglZ= zNIWP-$QMM{H)2fqm1iec;3aW*`8}$}wshr!_W%Y54UthC=Nq$wA)GZU&>R~muKpe> zN8LjBw=T%tU9lgUwDxT>{%H?e($>?^nNz~9945@bhYkNJ*yo*JHgAH7$O0k-z!dRgJIZ*ZZMi)h$rOvNMmV>f-8IBu*)8QT~_hECfNL@P=$SbwCuMZEuyS z{sK?rpcG*M{g#DWdhuAsraJK5dr880B-v=HLdzWk14FoMQ~soDXR~c8QSwUIJVyQP0yV=j=R7x7MKbeR06wsdS&odXht1@6wbvBPLlx0|j=~S%9rO zU~VD@$B?e-IDG1$?idi;7liTDlOLZfodv@-VsfuDr;NBPTimp;8BmZakr6!uU!CGi zHo3TiN(%}s|8A>iKmR-+?hUbDM4S7H=&3%~C8cohc>LENZNZM+kK3#Jp(AR>>q5yw z{~R(V#CPD(0H@Akq%$9mHn?z!J82eKtiDUB{=NDVjR@CGrFA_>1qaMKZ&l`84ew3c znED`ZxB`|>onSl?=*vdiu!ENi=uj0D&n)VQ{vL>$?(U@B8K6$)hAXBPzg|nNwdy?? z3JPx%dI0zt%u0YlZECeO+=gavSel}4|LH-_4tsbMGBOzfm>a z1xqM*pypF44(M9${oM{FGX)Hf996R*HH7(+k`{t!e#?Pg3XjUIlFzx7(S)o7qx*dK?e*U}?e1@U*f?z9Akvr4RWN`NMp zoIXOMv1>{(sr~NfhiiHne0#6qsH>|pJ5yo^#ItPmM1o8MMMlIJ%O!JP@>!(T^skK^ z+mh*puqZD}$qsgU__-R7Gjj#y14!IZFQx5XN4=^=AgzXCzm{v}KJ6MUMO%9F#kb^q z+B5L|pgfG99iBGI`+zyW{ee&`=Ev8zMImE}eN@p8p<^ztz0zkcoY_z_+^N^4%2F$P z$?uX^n7&wDUPQ#l8HO5M%SY$;KYK04WxRG*!jz>oWX$FUQjJ&iPwXQuH`m&U-=!-?byF=w=cMOatD zf&QNv*FRc1Jdw;EDcTHMyCL=i$M(A)6)XkRulXYDrC@g2?A?$-W<*Z@!MO0dj78!n zQS!&2UwRIRuGm9uCtjdjcPCG(w7b+IV1$0OFQ-HF`?>~I!4wPwK5m!a+K%GtYX?k7 zg#}TEPJb|28}|_3H*g&Z9)x}OZIe3BW(0Tk>3N7Vmj$$IkD|Kl_RnHb@PBW^_drVx zV;t!8e4R7w?BHGHd>wf(MKUD{R=q>*-^rr@>EnN#>^t~YYLrM3$AM>r4Y7aj-4=k}%Y4V^Teg=DBXIZVF!t^QE|s<3HGJvriruVVLA< z{BxlK^v3B-rzP~dLn1zcKtp!yM{0=q1M|OQ3i`(Og{zcGa-^rB8)uaPHCvpWS*v`W z4n*zJfn;$Lns7yw4GsSGS6iYZ%WV;(gM)*T!qTP629?uCmrW6JkI!LT`2^RrhUD%o z;qZn6;^R%CRnB0WWf_)({4h+3KZKW|jZD%iPV3U@-Y%_4Z9;FykekNU-|| zULlOi8$!Y%j-++n1{MRO`PwEoS~ERyqj_eauxI@Rf+y2&fe>UuR6xPRY zcK+G8xIoaSBNqSIMLWl=8dgT_iw$tuQTumBdG-whI}aB37zs;)Cg*V61sQ8453)`_ zrU%WADOy@usA*|mJm_?C7Rh2BUV1~I=D2fVp=WVVkJydBu(-LB?>;LxYp#Eu^NRg! zi$t&x1>Uf%-=j^R>eCycezk-vSvh$XduWU6-ElAR+WI;`H^F$)+Q!BSQ2w$3bV;$Z zgUI7^*h(X!0!N*?a8FzvqF-A?F%!dWp@7*!XFylCmokN=c;=S!cVSVFSLv2n2T^#E zsQDy_aOwEASQ&{ugK6YJXwxHrvcVTmJh(b4OK}A`OJ|E# zPsvg5ya|z`7a86x={Cl=a)H7N&8z$^Iwr$&?^!7_8`}022@Th=xg4T7GiAAa(q(c1 zkz+pRD&nj)Lj1OR#!i=vz0z%@aa6NEz2udPdCKXhUV1im#mA5g4OpV>Bl6t9QxAL7 zEhB>l8rH}&-;v7DJlaD>=Cqb2o&x%+eIHB@i3!GMCugJeqg?=}Vs0MKj&#p%=duU)X(^s1`_qsa zhKc^onJd$_IjdEBH%52sh`rTsTnn*Vd~)`j$Wy7F6}}_FyHzjU^>V7WtftY173?Hy z>3qz;J0upb-)EcFYBXn?Qh080ADHQ44E-cd7g632nq|F?XIe~>qkHj4 z6qLN`8fWW>)%duvf92v(;3xn|PiuHg)S+fytF*oRV}@Hows_$6!{(5Ge!=ZkDECHd zM|bq1JDG}Jt=jdn>K((`FsQ&TCYnQ|p)ssiM)h|CmVQkZTJGT-)9(|TPg7*tUe z_F8uX6)QZ!5p%sCnwl=0|HUfo4Q1i)p*+=(oO6;V+c0<{Yf$L(_gZ|l_`tZK)tNKM z#2=o-?Q^gq+;Y}20IZ$R{v)YI3XI+|!TGJThb`&sVel^ILq^>rKKztzMdFXHFwTZ->Ds z{&B|TeYeTt`XAz);Jph{JJ*GiosvYmzs`~3tcO%gdj>&e0n)7YM}I!OcSE#HDG{N( z8zZNRO?aeCKS)2@Zov~QcsLwNkn3C68e2#7n!aZeAPmoUzNHH~$ed~^sl$gy8DpFt$mXXPZp80w$ox^RmS(p#|gT+r_RS-T)9n@ zIXXhtLC?7WbC_ElK2(4C?+h|KYHc0hm54>)bx+DVpC(>1!noEOmoq2u^&F}hcx4a_ z!1r6=jLFU$@xxG)ndXJAke&}XC|-(QU)raAg?37H23A1QnG_>*Bkf`_p<`mAWq(L+UR;lX$fTy<3{v6ZZ_rRY9;RC{ZA6-_Of2; zApr;t{>c=y;8hNH>w7QPsQ74H{L0`&gw>8qT8vRNuPl{WpJj)$e(9@)@9X{OZn%?2 z>+d28T#eN^*M=K(fPKn+@Ur3C)3_q69W1&1SEDvDQM!#E0RR`~(c{>E@NMpTR&~N_orrc5iquQlSp_$jA;l)o;(6`QZ$Ledlm^Sq+X1tXijT>K_|KY;bYT;tbVeE;!HRnSC8Cgd9 z5IH>y2*E$|?Z?XK-DF|5I>8z+uM?3|iPvRY_j zcG^<~n;q1yTi_ma{t+mnuy>-}veWj-zYgzR@nUrMe%oK!%Bc58Nnl*7oagr_pF*Du zac6Is36uAO$Ia#8NWk3?ibjwDf>Y?pE@aSWoTa31Sx^#bO&G~8$VO3xg_ATR;hnk5n)<^P&ex zr^Su=&%=zVzmgj(8!nT5FNF_vj0=<_SsGpj8jrrC&2%J@IVrZ6tM5fM$kMrKrs z^z@dWNNX1P4lapUT<_kYx*X#A9-R^=iL?HgCI^e|p)3VV-R&n{X zkFL7Xe%EvF@!WQpKu1WT-DLq zyUzg7gR3InLZ0AoD-N5{>^lyx4>o08)yZnZ;nMl>xjHjw=ZR0?!N-HK;*HwOvZ-~_ z)NQu3w7u?toUS^MSS&lWv^kx0&#at^_6#QgRZQbI#njq1s@%_;(plGRELa2P&e>zj zYwD9yadSQh;$)|X27m0Wm{Vb0!Mt|}@Rh0aYDxv?cyA;3b##ty)rCDf{cVC$F#%QR zljhxMbc~%c#k-vlDLWG!UYSZ~m@4+x=paWSQ_Rq%9b_L>ZGV^LcatTps$=ylTJa&O zWt|3t+(_cyYik;#roI}hla<6N#_|Ps#f%4KkcJ?K zeA_4!W^Ch1&hwYC*y11Pn7@IcahR+d3W=RCzy@gR5LFx7JXE}kzSAY-sdKHaptU3DbAI5?FP-txC}jY{_lDPqawJw=@b%6DbCz1FY* zDHEOA^fT`SfZwlBNiS0z9)f=7E2a=PCwzrz^ZCz#G!Y)VZ_`~?-~*A~`YIQfeijJ% zALX_O;@S)PbLhzMplFFM5HBjhxZT{N+Z>Mc!b+3rjVovPh-HgW6r6gr#qxGFCWBhw zguJ`WJAy(0F%^RQEV-BiA;Tt~G|i^fl6N+-^$q4kc}~$0a!y|}7J$~CfIk#9KZMa( zwp1syd6R({UXQ%}BN2wv+trblK^MVx8b-?4{M5iyHJLHr<#bZq0pGd$*z&D_v8yekMZX-Q-;w(d|tX zPXGN8sek2-5GEgZl6EU#`>QuhC&|Ch>v9Uz+$9}W_3B(n8*2D%0KAGFJ40xc0EqK3 z{+P6*m3y+W^os`nV*HSy{k47yLfTeQL#lRv7ED3vGJ__s?t2z2n}c$sNWv>W6&&wA zxRIFfxBqiFwe(~R0(0g5V?eZ7q5`KLj#Q=Q_%d~{R=O>6>9ilTuRlGxOG?Ry!YDdq4 zN+gv0uTYl^p{NNxW-`Y_WSvCL>W|XA&DDITbWgZS)@g=b<+cRB2Zq>gw_pB5F>0m# z=CHc^d=W3M)UCfjF(+;_4Q=Sujck2bfu^un`BYqu4YPIg6uqX7h@rXbhu;*8HgO&# zhmCiU8Sh*A&H4PrT>9`wzj$Fd7gI)?_vaG(x>c=91fsL z#rhf92n|+zCW43Ot1+eDWe&U5Z4go+aL(#ydAM|%=rvW^Ta&~X5 zae4_z6a(t>Xt;9SuUQO8+f$lNw>e&*isI7Fh?eL7R{s2Z`@Iw4V&_zbhtKa^C!+ck zg7AecfNs4hISg+zcPX8#2&TlwjH2wU2>Z%F<3C`A&9%aaXi{VRJUMXmv!|V@UkJfd zTc-l&iB~W3k{mpG1FXlm>kY=R5Dzh>CDuG8T+YBcLU3}Xc|*?7Ye$z>s-O$#3y@P4^x59CIZh! z&DsJ*>GG-%nT@YJoqn^G$bAP;KF0+yUgU(jcK(HA|HWz<&J@ zoVCVkW!0&4vZAEdsCjZR4bI-Gsf1F4X*u-V#^%XO4H1k(9F**F#a}#DZ4=XS_f*nG zX)aTau+0Ko1DS$;OsPZXt-MdUOhyp&58vV8f-#=H2W*`ptn5$M!y~^vAK77ABQxRW z;BgzDkIeOCq3j0^PW(4{Xay+{ZeDf0b$KCX+2uLT&OdLLo>)qz)@VnuzP?^d%Nz&X zntxu=h#=iG$Yiyt2<6$4uVh8JmZeJ`j{75!A00ryeXm*szI&3#(@5a2704D-bK=`V zx$mAw?Qnmc7KOjgd{eK_oifQ*4%9sM3@e36V2KdTMfD|7Oe`)UE+U3*m%%L??;}|$ zzh6(zUo-^jB(cv8OhCKMw6LX7`7$*4Jv9+B_P0$f$VbtIw#{*0d<9L&+MqLb;e3R@ ze;2YJn4tsGDZ$DZ0mW3Ab4}4cF}ufvocIBCH!s*hmd4{_#W`QqId-^1s^RD7#pVc8 z>V3gAdV_2jbsxU?Q{hUQJ7BNU(y+!YB0>Cx%UNS`l8X@rI=Y+)ubcsMZpsqg^jp$B ztNcW0A$`KRGx1^gvLP?Kuoy7IeH*FA$rU0mY;E@`IR+tMMpU9a*7bx2g*ffWcnAzw zY>QJGRK{mVyK-Ad?}jQDck4Pq1%ukZ_^3Ns1{`>==9mpEL`+qFRSI0Qt!4pDGFExk z@`+ZBfwgG#6PTdQ+U}knyE9X6S=6Ydt;*Z!>O(!5G&K=h2|UWvfPVEd z%F|b&Va|3tXF^Vg_+6FZ-@*wdc2dZg5t6CIOz^@sUVuJ4tvB$y%$$ziu6YPMqq0#M zFZ&!RWV1djCb0+Aq;;L&d%{)@s#55V5@$~&7+k-ZXeIt*1b_oEVwTAAb>*D+|F=W{ z%>K6C5t6d-E)>&~`R!XtJk)#4c9g7o-+tsrDgp7bSoxbysi_w21FTT-Gj}H4S7MGN zn{|*NQ^yjVPo~$~0E{&NoS|c4b{t8ZO7KnM+3%u$J)YKc`}|?lAU0$p zD%Swa3m-<+7*5+0&$4-6W`Im$x3{II?NP^5Cd#PCd;cNPx4d#2m0UgSIliuN4Yt8p zz5$JD(DB(oL&E3P^^khIvn{>+iB6DbhWOnB*MBR793(|)Ub6>9T`X_vkY8O-!9^16 zh6&v>-0LH#RjwEf8)j?(n*kufqhFb*d0nmWTK`}Kh;V&R}=2|`7shQ@u$Jm9p9&* zVr2rO+)QcnN;&TRW6B0xp3feqWq%Fpi#=2hRIcrHL_f4$9PqXja$6E#c~-H0{W6<} zrH&v3ALc_1CrH3Cudbd+8;SrU3WJz?7>-FB-rw>N?d*_P#jTk5HbGiYzUP$&S=eCa zi`O=c8aSEsH5AhItnR~ysPC=1^DJZY_U{`R9-}vY9CDcultEq7Pd%aMJGg4~q<=my zgqWSG{eW`M9DZXvNvZ4`8nQey$)?ut3`EAY8PaV@*9d@MpsvmaAqC?q|y&(f!N=#vcMM2dG zUQQWV|J5@Qhr;wIy#;5Ib3Hcb+y%O%WN4+!@d|r#&`d?=9`Hu8-TFhSsHpgB-L8Gz zE~^EI)VOB?l5iU@0^m4wY&6;3R&cMWD=HEqO!LL75coY`S1FU5RW=vvZn?E@yAO7pAKdO1bt_{(&nZiPSGdwE_4z3-x%fjURN zL8}!)j0$T)2VH1!~C+1F5p3Yk88wi?b*ye52Do`|iE z#Y?BTU-_BBzO91_bauyHGyv&akCRHO;{0q?1e6#cfD8>X9J}9hE(p%h0<~--ix|5< z-H_DX%u@1*2M5ox1S(}aQF3v;rL`xTPk>sQDO^ghk54U36*()WqW?9(RTS>Yfi_Iu z`n~%g^0VYy{^V{;P)8IcEa`NX`W~HKDZHXy29u4n$LAhabJrXZTVLT!eP-z&j zIK`2!5%^rs?Nh*;j33sYuJ(MC=kaE@+#Y1LsR zIBSVsUgZsJHKV8mOt=|_D*DDUm^2b#aWf$BWnu#6-5sF0W^0>R$!MRWpCELlg4g?a4RU(()>O`szn!HbjMS z;uT0)ab}F`<7K!QQ53wEib3oN-(beEzT9w#w2X{c;f{HHW9uST)1X$cs>Gs?mO;td zR2sR62qAnYtvt`qQPT>2HEi1YpMnmW*GZ-flwyGXDW4jDL=t1vZ;WAnI$+oTLG`Ij`J3LOd_UKlp*=K#q^-Tr30!jCZOv{afOyEw)feB_ zY31)(VJ81<`p}S?xI-p#dWc81^9NTsWR|8?JE~W~N_f2|*(d*4C!25+;-5X$=c5&u zeHmes;5o6k`V*~{G~^&^XRO)NOWJ8Hid>?qs_Kp1`O8u_@md-^=1$W6^o|&GZ7}Mr z3h|&ppiK`DuVKGQ-m0jKM)a$=94O>R4Reo@ZjbLhco>ow@FgMP;lZC;%05iAI|tNxua^&bKjsjNS!IThD26Z2c3rEmbt6# zB%vG1%$xYb#mZtH_pk3lCd|5LYj;QO*T%fOQTW8^MK0(FXqJHl80vjZbF>cRS@xFI z8paDZalSD1Fs$Y%{JEO5fuYq+ti$w?_Jchf$+>~=xOWCzf zA1ie+PiU#m0(>qDcD;BTQV7ZEfW6Wu^7}8ga}BoSPOYvmaR%&yFBWS@rC{Dt_FD9~ z-@|`g3r|9y2{&__ zhhO(HXPYOToT6p?D0e_u0e0o~3*Qc*YuimYU}zBEw*@13ViFVLMZH`c60~f+#9tgA z-&}25{JEn0AX0L@sc&dv;!ddO{SiB(@x^8U4krOVAzPxU~}H%dC;ErbBJY zq&vFzZb|#%ZKhz$gqF+7Eo>=N(2Ks!DX)+1(kwix{Cs4J?J{M}mb&~E5f2x&`YB|? z^y;tCy*Xp%;4xBtXO8=<)H`{7V2GlQ=?6@Kkssys7J_h3lq6#xA#f~`Nx5nbB#K_WF0YSLk$&%jvlxwfH z3m&ozl&v4C)~p^`AMQpu-URfu>U|jY9Ti_$u1A$hA`e}aVhc3XTQGa`~U3n2@jW2Y68TI zv$jH=Uy~|g7hplK|LmUQ0vTPP>=C%P*SlN-qzHGM{AmJ(NSpCKe0}#bmdRoF!`tP4 z`3BX?=aFgZ2>G{UKEx)D{e~YzL`C%gnOya1MH5(g9jMqVYDi_tkpO`d8X9R8N#}$4 z5c2EZKWuA(KD@mMz4G&GouL{sGAP-5|6POGYo2fP2$B5SmnN!_;{zEL>%yVFuCfuG ze~R3XKPCkP$2?r+{<0DMpp9mdHLu`r73f zVd)#JuE442ugTgBE*Le70jJq>)uHIX8{;*BZ}>E%i0hw1 z63wpu=GN5UYCvyvetxdX8UWT_7M{4h!x3FEEaXQ@$9#R|-(k^kY^60Rdywe6TDj>C zCe&hhOJF!I7sISVUtO*EV95@D?nY#6`IGnP{*IDz<%gy0uSvSPgY&Q5L%K}5K;Gw9 znRlj{#h<#TxF!%t2$Db5ujq5dc$jj)ftG88u11c?F-|TKO?=+7aS=Gk%Y{0&_;YQ4 z<$pvE45t1L3MofjP+u2}+*0fAPHe7|yn7hNCfsGm5z5*g+cAH`#{ixWuf~X*nkV+t z$Lm1qQfqZ%Lm}b~24N;5CPMyDq&UyA#@Pdv`=$YVAiDUyQLevP*azmtJGdCFR}pTQ zH$8Vm^_ta)EbP)Uxa#adj6W`()t(hO<) zf`8*DBp8gva;6RYK>fZHcJ0+DdT2EF9GZJ7RL_DG1Oh>1;3davI(2Bh7O02L5EF!h zP_nYKUoa#gmRq|a7nek}A9OdQZd8Rhy3DX6(<$Hot8D+}A>IE~wzVUVJm$)W*E~W& z{I3OpO!eyitLCh5t81RzM09e9`?~Sx#{A=$cVHZ^uIT9|MK0M;0Qcxil%SWW{8uDS zttK7&ekdeD6DMh=fIfj-45v45SY!=@;MZS^W`~{Y}-3XLc z@)a17vE_Glf%o%hswYl@xl)#+#|K4Z)I|_5rMoD11|^stf=0coRN2U}5vOH1_#Ql^ z4LSLQo+cAC`xj);0(uZJljx#o07_sYdS-j~mHpKBN?A+^2LjJz! z=~~MH_xH{cD;{zpz1&-{oxroJ98z zOj12jHUk((b3Furi?P@ItGb`K8p_6GqVCvQ5OtpwZ>Wy}qyOqO;xhI1l#Rdlz4-iG zIj(g}%QK4Z%?j|Ar=*hr*l_fu=Sz*+OQpHQDy6i*!5cnt$r|6^h8=gVh)gXb=KO^P z53!2bJ;D6tdI$5@&n-DD3mTARw|qTu6u{m%hMZ4pFk^5~ieHzm}*JFv+zKX5>}{~WXCrmI($TFTKX+sXGy7CK&88#NcZ%hcT@yrXWGY3#=a@) z0Xc|XtSoH_QP3-+az2<;1%%)GQY3_N$Qs9b(_>x@;CemeXhu6fzI1VBNxbn)q7=V z;9UB4#46S4RV3|y6?U44v@~+)Fm~t88@ZDcQ%*^U#c|`_W@M(rdTGUg0jadxtLVOG zjR>*+2?e)nuY&7#@?=+Rvu^IyK6$=l)@}0#LE7Q?;HlcL0garBZ$i|0w%!O1C;})E z%%{r4+orF*bc((A##|`ek@uY3KORGrZrc7~!^lwK4^y8~D+fa6Y3(Knh`MKk zJ+so@7w+Bk02y#iOndIm?|M$`*uZ|15!vkewb#Rch`IxSFvsHSa-R!T3?y6eM*LAa zgQn;|UJX`X?Y3oz*@ig(d+H^Wlrs7RzaXchL!4NMBWYa~b&=WoxP1c;*KEa0cK8EU zE#CQ5IxX*oBFKYgr%r-yyQk4-ZI>njI8EBH%>2*Kdurtto0dX1(bBLL+XN6-14Umu zjEXh!wSnYSx%$AM~uUiG#d;oQF^^VR7Vs2~qo6c=dDV&`ZZWxT@L-Eam!Y6e_4Ut~1i=CwLtuyof*k(#X?p@;mZOc#B_m=TL4!HNf=#WI4Y7 zm)p2t1*FpfylyA*(1h29hHJIw`{-!$Z*;+x0E6`UrT9aY!j z%iBVNPw_D}iA3L8bvZgp^DA{_p7y!MHO!*(HOKb$_H@-XkJ1bAIM#L4cf?3kO4|vLoIm3Iry8b7cZJMmmdt%iOM%Qg=7tQ_c%+NFLwV z?)h|^w*b_`fR-r26Cb^uqfN|31g9=uy1gse`ScO&rNdhQzEH`js=_S?Uip+#iS&?v z_<#Saf zhcWzA$Zy}emb|!bcRh74D46l19Y7oB30<<$LWm>%fUFqGAFLShvHr;Y4F>aT^pL7j z#`-Z+)0_-deza640sr63sTx{(jxIYDxfTdzggM6ed}wI*NKZdbmpzqKNd(49FgH(2 zsR)m~L9NCV4QwMg&3dem2wz{{flI&@cm)KF<{Y`-85zIU%H^C^D^*@wTl=NU^b1s% z6%|J()f1+ypyiGG!4S^O%#7q?Xk4y2TA_>(>JTRNx_Y12G}hEQd*{ack7@Tzkx6Ae zmD#Lk+w2(k`Ya?#btQPaHY#Mav_+-F^3BI%>^BqmR^8+a+M+*J0(l4_H<>i zc}5I4O0;!UNQ#{KWmwsasWxzXTrr^#^M`XRdSHOkjXMnm6ySh_6!_)$&OcEo0P<8g z4Y@U>38SI0qv&NRjP4de{`6=fBr(*(=Zem7I_(iRNZvD*9iC%hR%u71%Th*&eP_kf z>yHVJ_!P9@`Z`xhs&aEKtD$aF$Hwu@@R?9`*{D9xtJ2Bl3+tw}e9N=9_J`sgL!9$y z*R0uV(1`XAT&I;IcPf~4$f~t5mS-X&y$MLbD%Y#O9_PE zt>%MWPq9DJ%6uFt<_{8rHph%`*_7?QRV@`~=48Mrir!7BjTD07dp4E%cJsex<*KYF?cm0JsbnxJ<%*HL?wJ*ts^z;BB=fIxk*?LJ4m_KVQZR~I4!e`UopCOn`c_+V zL;j9}Z(%a3biu48;$cB-Zp)FI@NX=3MMQdVa0@sk=!tSC_6$qj!3*Ub*&l%mWVq-$H_H%_fajGOwkI9$JUlOGkap7+0Q=va z|4nR=Kg?o;)lP}8r_6gav|54KI>G&lmv!l?HTXbR$kKC8`zxG^hI0b> z%>`dH8%x1MJnxE|NE9?on)pXIkSths;P!M%ql|+e;XOrKSt;x3jAH0CKXmGJULR@4 zyJi-;O%pP0Q>YO03b!6eZ!bR73<%150FGvS$6%=Xl|?n(e;_^h0tnyY&5&eap&Lud zWX=}OX_Kt4*-OFbEbl?FcopwZ{jpSOuZOkkHhmd4ykZYPx)cls2ss7_DKW!)_+Ylp zJ4m9cmOr(-S95_Pn}2asgq5k)JdEJ%4ed`7B|#Q5L?^;3Qa-)~s;LIO&evzeOmJ%D zKm7RYU@`gF1+lpZ(bt*az92K)D=~Z{nfRF9^1P~#Ds!vyRb8<2as5QVmVhn^yEPO^ z9`pW&mjj&h`Z}U-b-f#lNSPpDH~TZdtN6Us3{a-QszVkgSLap&Y?{gm#*5#JO}}f7 zj)_^G+7tr6o4)hu001oh=a5W*i(&2J6nX?Bxu?u+fuiMn!||8h@&l!hM_P`kzDP0T zI-TYkkACzTbv0M4;K4VRFWZYzt?kRU=jiXC@j?(fb~_NQ6A^9Y9VmLv_&N3X1&|=| zR^G2wFLk+GaApRs@ZhA0h>Hu8#e5`-0fa-mC*ew9hUT<4{XBK(BGo+kGv#1v{WH%M zZSxO4+D!D~H9Jsa>%4ISvu-94f6CRffSygKCSFI*FPwyQDh!*i1)kPE6s&z5aOU#Q z^Wf+TwZ5+lRDHn8mVW$-lRz8y+dupo@eP+p=|6z}lTt8lCAREP+F~~QeBi~}(416e ziyQ2_P(gYKcF2l4bvg9g6m+l`94Fi5j(`FB?zsH24*bJ2q2&M^Qe=T(tJx0@V~K)z z4_pYtkHmErhanO->(X_YCPqerv@#7V#*)aq*;qKm+M>=8kB|5vVLzg>0Ub2>BICZ1 zy6H&t!H}2x-U|4^kdYziKV7{300#~=QakdvgZ-s;c>C%HwhO-(Lh-CbE-k1~FOH7? zA@3)_SrtWb72pYHOgQx?{YUl4YteZ+pCvygdU?T7PeP}ILQ#(vY`W?JlCUe>lm_R_ z(C@Dr?O@*hrDmX zp=_{64Ia+=QHTdWX1?>$RB9;}l_=9qmS~|mw&jChXnNE%Y^!?h)V#23@RXOOHBf~{ zJ+YQLhk{5xWd(b_m8ql>5)v1j4gW=*a4F_8W#nT=mp5|NmQjnj3GUE+g4r#C37w+K zJ+YtMHmTO4MX_?)2G4A^2`BCsA5laLCIjh}uS;lJPZ1_q$Kpg{?NBbtRGD_Z6|l#VIU*8u50; zOPWZmT(XfflF7EZX={Uk;NalCdeDC1e%q)Sxj$ELVC;*1P~R(Da+TM;i9XQgds}Mz zozF_Hxk&LX(rapiUKk5L(Lr25f^j>a0dK+aCJc@9NHc~1r@bqUhqCSBW8arSk$oiD zqq3WXp-_x1vX`DjD!Z{h456&08ikQTCS=Ik2+<=-naEfpqHJZz3?aPNt>?r0etJK> zzu)`exxUUl*K)4^xz0KNbKU2bzlq2q(#&J1Dr)*3Swz8oOR2C2G%Dt>@U;s&o=xQr;OjVDTI9GVqC%nj!KIVzf*O}6&NUa2(+|$Z zwkkZks9ixNnTklM8N|z)qTaSHjU??rbz{(pbjG{}Zj|@_(LUPR;Bkd?tSlUg;=`8J zwZO%Xt=)qXc!j#5asm|V_j2cFVghIwF}(MJEMA9sAT@5bg`UZf`)dW%#qn4BXdrEJ zp@+qp{{DELf9c&aKy#g>#+NTzP-D<&^!w=_8Gd zi{3c{QL^e^i5@qG{ms)14|^?Gm=L^voR3a#^NMqbahj;KiV>9@K%$AR<3egqZkg}Z zvjYo*4n&5yf1IBA!|t5`l{y>uv8dbq29ZdNt1tsQ&;ocu6buIHq<}JY;Er7_qa?(| zya+DzC78+8MqFRAXGGLBMmlub?G8>}cCpL{!P&ZXAjxE$L)(X`omu3}m7eHJb@Al{ zu%27AD!!Z)eW`SFmdu(t%Tf|Xa@=tZ1ONz(=5~h@Ys9ricORD+>BrA?iV+FuE5l>c zK8}U^(LP3!RZ$f+Qdn!z##nq|)Vjm+vR zZ@8#jkY`mWp74PDsBhu0hcekpyYYX$aqNcg z+c&qe0wK|BS6FvIU9|UPN!{|+)lu=DvLeo!@5^K|E+>bx;SZY^`1sMMqKL94Fw@M@ zG@UZS9ag1(p$=m^eO}z49!7UCa=pLC+k={t{{yWpX%98*+?u$jBB| zSTAm$Uv&=n(f+bA_>|b0O1HT+pOaumwjsdh-}4}KPGx>fDm(OuB#>Q7$J0oAq*fyjwA-)^|*pfClwCi(W_O3CVUt%L5n%fDi2 zJ#VO-dtx_eNbI)3QFbw|PJ*->wmX#{fl%Iizc-#qIvF{xXe zEov=%*`)zVtg;3wRi#j1zrs3gXu_KmTD~M)5=n=Y^SK2HB^hL55qfEv~ z$t>T1Ig%@vY%2DlG?PWc*(^pBM_pjk5-zj@xL|_71xs6Bnb~jB!XdpG9@}&+^ZR9t z>Q20VP(7u`m(*H2RqdwUx%z!{d1)Hor9x(7oPM65!Wl$g#HSCHZ>I>0DiEqZuT|-I zXDj8_z}UX{DmK`(UzYGZ9u}sZpbW6W(FRG-#k4W<+xWP~_g0>s`Fk|t%#?48#m;$*aCu%*%&Pa|f7s0E0V za?wGS4K;%94yEcejOuS|P_Z)@tVn7W@adt%kDdLQJCl-;lZF@}$@0x*T)TPggvXq7 z9?9jp%P2y3Y>(h%5~ohyB6t4?|L16`<@8;JqM;yxzQeV;frm3`L~tC0YCMHpctZVv zV5K>LOX=5RSn*Jy{;e64vW&HP4A9EZgSfWHZSRv&s__m-3Wo<}6FoSFwVIYl4R};U zgr0Okq=dHrCQ@Wv{J?QA2bMIPTsZ{6SrsmQ-X_$(^1?UwaRo8mn z;o*jMUx~CX^{I#aQfwv9Ws08?ttb>nuG|%o`FVlD%58fT%JNpu5Q|?ZQ_K2Sq=<;f z3x91E*zZ$6u+%!axcEAFTXI6uQBID)51h)BSq>u}CzAX_7cov?krPp4oR7%@@(5h} z-A-FBTnVh_&C4p>cWlvyu6*wYgbZCt_KI1Z9RYi)iAg5Fn>D0HJUI`3`0Y6bc4Vn-cqIIe>9cWO~mFdUikwm%xeb`<7jm9_$em))yxv_84aw z5BMNG#tyTSNHKdgH93|@e8Pf4O(H@aS$p&Qyf?)G7SM_(Jh{s}Y7a)4(w))v_mWOa zuGBqN|rjEzE2p3Zl7`q%q566C^z?{f?mTC^sIi__XnN9cARjOL%P(Qm_gXgBSEMoz z7Clmc&v!k`dJ`2D`h4^(XKI9A`<IPbZOFcUs(xw-`T;rd+bMqmitNV8<5#a% zQhLH4m*@(t?7Wx2lQlJPF^Cj&iErdHLRF>vcqM8DIMq-S)GlzY_}{URCb zAiNSVZET!?K1IFrIx3DJM(Y&SDq$n#(_VEPL;6e^NbeW{)tLBf6K1$bqMDR`Kq$@a z%g6=+3n9+i`GA~X5^%yeksH8GHSXnLV`Gce)9HK-$`IRXcuQ!2?F1?5<9p$aY$Xq@ zE`!O#Ll1*EXSa!jKzMp!T+|DzEPJ6gs|{+)mOZ(a3rv>c#P6TVsV23e?Ec7J57?74 zqXP}6!5>8epbp*vK2p{t4R}hmV!%fm*{BB+PGQafdP>{}?ygNf)&x_ssbl(07C-|s zb%N8gpBH!pDR*X!L-H7#E`(-5+ne@4%`YvCDgaP$1J((E0P`l93- zPp2PM6uDX7as@o{_p%?oeS7Ls6%T_#=Go@}EfVBjQPaY^iurYNxOSYg zHH&xfG1t-^AJf`srbcyU!e*aQWvZZB@}v?aX`z2BMNuNtY;G&?2TJ;r?ExUl4X(4U zo-nxWiN9}}{JR$}TJ-QC4A93gP@@eHsXXpjehUiy453DN z2sn{{I!yUThP!b1zktn&fj*Y-Z$rHUgVw*1DdmvbJ`diR9@!v6nhC-v7U=N(UqOEO zZY=aElR8G-?;>QZG3-(^@vc_`AcW5QYEC_!nS0kP!xrF!5uD$)(9!6Yk0r1q02( L%o>n&L literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/RandomColorSort/.icon.png b/app/examples/Drawing/RandomColorSort/.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..de4974fd0932fbb97a3bdb2538ad6f29e2270ca6 GIT binary patch literal 3663 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 literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/RandomColorSort/.lang/ru.po b/app/examples/Drawing/RandomColorSort/.lang/ru.po new file mode 100644 index 00000000..2aab37bb --- /dev/null +++ b/app/examples/Drawing/RandomColorSort/.lang/ru.po @@ -0,0 +1,96 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Дмитрий Ошкало , 2019 +# Kашицин Роман , 2019 +# Олег o1hk , 2019 +# AlexL , 2019 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-05-23 07:08+0300\n" +"PO-Revision-Date: 2019-05-09 00:48+0000\n" +"Last-Translator: AlexL , 2019\n" +"Language-Team: Russian (https://www.transifex.com/rus-open-source/teams/44267/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: app/examples/Drawing/RandomColorSort/.project:17 +msgid "Random Colors, Sorted by Hue" +msgstr "Случайные цвета, отсортированные по оттенкам" + +#: app/examples/Drawing/RandomColorSort/.project:18 +msgid "" +"Random colors, sorted by hue.\n" +"\n" +"Random colors are sorted by hue on a two-dimentional circular chart. Colors are either displayed all at once, or slowed down to see each separate color plotted on the chart. The image can be saved as a PNG file." +msgstr "" +"Случайные цвета, отсортированные по оттенку.\n" +"\n" +"Случайные цвета сортируются по оттенку на двумерной круговой диаграмме. Цвета отображаются сразу или замедляются, чтобы увидеть каждый отдельный цвет, нанесённый на график. Изображение может быть сохранено в виде файла PNG." + +#: app/examples/Drawing/RandomColorSort/.src/FMain.class:219 +msgid "Could not save image" +msgstr "Не удалось сохранить изображение" + +#: app/examples/Drawing/RandomColorSort/.src/FMain.class:219 +msgid "Be sure to end the filename with the .png extension!" +msgstr "Обязательно заканчивайте имя файла расширением .png!" + +#: app/examples/Drawing/RandomColorSort/.src/FMain.form:5 +msgid "Random Colors, Sorted By Hue" +msgstr "Случайные цвета, отсортированные по оттенкам" + +#: app/examples/Drawing/RandomColorSort/.src/FMain.form:19 +msgid "Create PNG File of Current Image" +msgstr "Создать PNG-файл из текущего изображения" + +#: app/examples/Drawing/RandomColorSort/.src/FMain.form:20 +msgid "Save" +msgstr "Сохранить" + +#: app/examples/Drawing/RandomColorSort/.src/FMain.form:24 +msgid "Hues" +msgstr "Оттенки" + +#: app/examples/Drawing/RandomColorSort/.src/FMain.form:28 +msgid "Esc Key Exits Too" +msgstr "Клавиша Esc - тоже выход" + +#: app/examples/Drawing/RandomColorSort/.src/FMain.form:29 +msgid "Exit" +msgstr "Выход" + +#: app/examples/Drawing/RandomColorSort/.src/FMain.form:34 +msgid "Redraw the Colors" +msgstr "Перерисовать цвета" + +#: app/examples/Drawing/RandomColorSort/.src/FMain.form:35 +msgid "Repeat" +msgstr "Повторить" + +#: app/examples/Drawing/RandomColorSort/.src/FMain.form:39 +msgid "Count" +msgstr "Количество" + +#: app/examples/Drawing/RandomColorSort/.src/FMain.form:44 +msgid "2" +msgstr "2" + +#: app/examples/Drawing/RandomColorSort/.src/FMain.form:49 +msgid "Slow" +msgstr "Медленно" + +#: app/examples/Drawing/RandomColorSort/.src/FMain.form:53 +msgid "Change the Number of Colors" +msgstr "Изменить количество цветов" + diff --git a/app/examples/Drawing/RandomColorSort/.project b/app/examples/Drawing/RandomColorSort/.project new file mode 100644 index 00000000..8ae8a6e8 --- /dev/null +++ b/app/examples/Drawing/RandomColorSort/.project @@ -0,0 +1,16 @@ +# Gambas Project File 3.0 +# Compiled with Gambas 3.6.90 +Title=Random Colors, Sorted by Hue +Startup=FMain +Icon=RandomColorSort.png +Version=1.0.0 +Component=gb.image +Component=gb.gui +Description="Random colors, sorted by hue.\n\nRandom colors are sorted by hue on a two-dimentional circular chart. Colors are either displayed all at once, or slowed down to see each separate color plotted on the chart. The image can be saved as a PNG file." +Authors="Louis W. Adams, Jr." +Environment="GB_JIT_DEBUG=1" +TabSize=2 +KeepDebugInfo=0 +Vendor=Example +Packager=1 +Translate=1 diff --git a/app/examples/Drawing/RandomColorSort/.src/FMain.class b/app/examples/Drawing/RandomColorSort/.src/FMain.class new file mode 100644 index 00000000..50054fbd --- /dev/null +++ b/app/examples/Drawing/RandomColorSort/.src/FMain.class @@ -0,0 +1,265 @@ +' Gambas class file + +' RandomColorSort - Louis W. Adams, Jr. - February 2014 +' Drawing routine fixed by Benoît Minisini + +Const cFormWidth As Integer = 927 'Form size. +Const cFormHeight As Integer = 800 + +Const cChartWidthHeight As Integer = 315 'Color chart size, width and height. +Const cInset As Integer = 50 'Width of border around chart. +Const cCircleRadius As Integer = 15 'Radius, in pixels, of color circles. + +'Create picture and initialize size. +Private picChart As New Picture(cChartWidthHeight, cChartWidthHeight) + +Private a As Single 'Color attributes. +Private b As Single +Private cc As Single +Private hh As Single + +Private RR As Integer 'Color RGB values. +Private GG As Integer +Private BB As Integer + +Private iColorCount As Integer 'The number of colors to be plotted. + +Public Sub _new() + + With Me 'Set up form size and display characteristics. + .Width = cFormWidth + .Height = cFormHeight + .Resizable = False + .Center + End With + + With daColorChart 'Set up display area control size and other characteristics. + .Width = cChartWidthHeight + .Height = cChartWidthHeight + End With + + 'pnlControls.X = cChartWidthHeight + 20 'Position panel 20 pixels to the right of the display area control. + 'pnlControls.Y = (cChartWidthHeight - pnlControls.Height) \ 2 'Vertically center the panel on the form. + + scrColorCount.Value = 9 'The initial number of colors to display is 2^9 = 512 colors. + +End + +Private Sub RedrawPicture() + + Dim I As Integer + + iColorCount = 2 ^ scrColorCount.Value 'Number of colors. + lblColorCount.Text = Trim(Format(iColorCount, "##,###")) 'Convert the number of colors into a text label. + + picChart.Fill(Color.White) 'Initialize picture by filling it with white. + 'This also serves to "erase" a pre-existing picture. + + If chkDelay.Value Then 'Check to see if user wants a slow color display. + + For I = 1 To iColorCount + ComputeColor() + Paint.Begin(picChart) + DrawColorCircle() 'Paint/draw the color circle on the picture. + Paint.End + daColorChart.Refresh + Wait 0.25 'Delay next color displayed. + If Not chkDelay.Value Then Break 'Abort slow display if user unchecks checkbox. + Next + + Else 'Display all colors at once. + + Paint.Begin(picChart) + For I = 1 To iColorCount + ComputeColor() + DrawColorCircle() 'Paint/draw the color circle on the picture. + Next + Paint.End + + daColorChart.Refresh + + End If + +End + +Public Sub Form_Open() + + RedrawPicture + +End + +Private Sub ComputeColor() + + RR = Rnd(0, 255) 'Pick random RGB values for a color. + GG = Rnd(0, 255) + BB = Rnd(0, 255) + + cc = (Max(Max(RR, GG), BB) - Min(Min(RR, GG), BB)) / 255.0 'Chromaticness, the distance of the color from center. + hh = ATan2(((RR + GG) - 2 * BB), Sqr(3) * (RR - GG)) 'Hue angle. + + a = cc * Cos(hh) 'Color space coordinates, where a is the horizontal coordinate + b = cc * Sin(hh) 'and b is the vertical coordinate. Both coordinates range from -1 to 1. + +End + +Private Function XX(at As Single) As Integer 'Convert a color coordinate into horizontal screen coordinate. + + Return ((cChartWidthHeight - 2 * cInset) * at + cChartWidthHeight) * 0.5 + +End + +Private Function YY(bt As Single) As Integer 'Convert b color coordinate into vertical screen coordinate. + + Return (-(cChartWidthHeight - 2 * cInset) * bt + cChartWidthHeight) * 0.5 + +End + +Private Function DrawColorCircle() + + With Paint + .Brush = Paint.Color(Color.Black) 'Draw solid black disk. + .Ellipse(XX(a) - cCircleRadius, YY(b) - cCircleRadius, 2 * cCircleRadius, 2 * cCircleRadius) + .Fill() + + .Brush = Paint.Color(Color.RGB(RR, GG, BB)) 'Draw slightly smaller color disk so a black outline remains around the disk. + .Ellipse(XX(a) - cCircleRadius + 1, YY(b) - cCircleRadius + 1, 2 * (cCircleRadius - 1), 2 * (cCircleRadius - 1)) + .Fill() + End With + +End + +Private Function DrawChartAxes() + + Dim I As Integer + Dim T As Single + + If chkAxes.Value Then + + With Paint 'Paint mode is good for drawing lines. + + .AntiAlias = False 'Do not antialias vertical and horizontal lines. Using antialias blurs them a little. + + .Brush = Paint.Color(Color.Black) 'Draw 3 pixel wide a and b axes. + .LineWidth = 3 + + .MoveTo(XX(-1), YY(0)) + .LineTo(XX(1), YY(0)) + .Stroke + + .MoveTo(XX(0), YY(1)) + .LineTo(XX(0), YY(-1)) + .Stroke + + .AntiAlias = True 'Turn on antialiasing to smoothen angled dashed lines. + .Dash = [5, 5] 'The dashes are 5 pixels long separated by 5 pixel gaps. + + For I = 30 To 330 Step 30 'Major color hues are located at 30 degree increments. + If (I = 90) Or (I = 180) Or (I = 270) Then 'Omit dashed lines at 90, 180, and 270 degrees. + Continue + Else + .MoveTo(XX(0), YY(0)) 'Draw 1-unit long lines from the coordinate center at + .LineTo(XX(Cos(Rad(I))), YY(Sin(Rad(I)))) 'specified angles I. Convert degrees to radians for + .Stroke 'trig functions. + Endif + Next + + End With + + With Draw 'Draw mode is good for displaying text. + + .Font.Name = "DejaVu Sans Mono" + .Foreground = Color.Black + .Font.Size = 20 + .Font.Bold = False + + T = 1.09 'Radial distance for color letters. + + .Text("R", XX(T * Cos(Rad(30.0))), YY(T * Sin(Rad(30.0))), 1, 1, 3) 'Red. Center the letter on a 1x1 pixel area; i.e., text base is along radial line. + .Text("Y", XX(0), YY(T), 1, 1, 3) 'Yellow + .Text("O", XX(T * Cos(Rad(60.0))), YY(T * Sin(Rad(60.0))), 1, 1, 3) 'Orange + '.Text("L", XX(T * Cos(Rad(120.0))), YY(T * Sin(Rad(120.0))), 1, 1, 3) 'Lime. Yellowish green. Not a standard hue. + .Text("G", XX(T * Cos(Rad(150.0))), YY(T * Sin(Rad(150.0))), 1, 1, 3) 'Green + .Text("C", XX(T * Cos(Rad(210.0))), YY(T * Sin(Rad(210.0))), 1, 1, 3) 'Cyan + .Text("B", XX(0), YY(-T), 1, 1, 3) 'Blue. This is computer display blue, which is slightly violet. + '.Text("BB", XX(T * Cos(Rad(240.0))), YY(T * Sin(Rad(240.0))), 1, 1, 3) 'Baby Blue, sky blue. This is what many people think of as blue. + .Text("V", XX(T * Cos(Rad(300.0))), YY(T * Sin(Rad(300.0))), 1, 1, 3) 'Violet + .Text("M", XX(T * Cos(Rad(330.0))), YY(T * Sin(Rad(330.0))), 1, 1, 3) 'Magenta + + End With + + End If + +End + +Public Sub scrColorCount_Change() + + If chkDelay.Value Then 'In order to gracefully exit the slow color display loop when the number of colors is changed, + chkDelay.Value = False 'it is necessary to reset the control to stop slow display mode. + Endif + + 'Wait 'Execute all pending events before continuing. Otherwise duplicate scroll events are triggered + RedrawPicture 'for high color counts. Don't know why! + +End + +Public Sub btnSave_Click() + + Dim strFilter As New String[] + + strFilter.Add("*.png") 'GAMBAS can convert the picture into other file formats. + strFilter.Add("PNG") 'PNG uses lossless compression, and is used on the Internet. + + Dialog.Filter = strFilter 'Prompt user for file name. + + If (Dialog.SaveFile()) Then Return 'Cancel request (exit subroutine) if user hit cancel button. + + picChart.Save(Dialog.Path) 'Save picture to file. + +Catch + Message.Warning(("Could not save image") & "\n\n\t" & Dialog.Path & "\n \n" & Error.Text & ". " & ("Be sure to end the filename with the .png extension!")) + +End + +Public Sub chkAxes_Click() + + daColorChart.Refresh + +End + +Public Sub btnReDo_Click() + + RedrawPicture + +End + +Public Sub chkDelay_Click() + + RedrawPicture + +End + +Public Sub btnQuit_Click() + + If chkDelay.Value Then 'Properly terminate delayed graphics calls prior to exiting program. + chkDelay.Value = False 'Force quit on delayed colors. + Wait 0.5 'Make sure delay loop times out. + Endif + + Me.Close + +End + +Public Sub Form_Close() 'If user manually closes window, capture event and redirect to Quit routine. + + btnQuit_Click() + +End + +Public Sub daColorChart_Draw() + + Draw.Picture(picChart, 0, 0) + If chkAxes.Value Then + DrawChartAxes() 'Show how the color space is divided up into hues. + Endif + +End diff --git a/app/examples/Drawing/RandomColorSort/.src/FMain.form b/app/examples/Drawing/RandomColorSort/.src/FMain.form new file mode 100644 index 00000000..61917d79 --- /dev/null +++ b/app/examples/Drawing/RandomColorSort/.src/FMain.form @@ -0,0 +1,59 @@ +# Gambas Form File 3.0 + +{ Form Form + MoveScaled(0,0,74,85) + Text = ("Random Colors, Sorted By Hue") + Icon = Picture["icon:/32/fill"] + Resizable = False + { daColorChart DrawingArea + MoveScaled(1,1,26,26) + Background = &HFFFFFF& + Border = Border.Plain + } + { pnlControls Panel + MoveScaled(47,1,26,83) + Background = &HFFFFFF& + Border = Border.Plain + { btnSave Button + MoveScaled(2,55,22,4) + ToolTip = ("Create PNG File of Current Image") + Text = ("Save") + } + { chkAxes CheckBox + MoveScaled(3,2,22,3) + Text = ("Hues") + } + { btnQuit Button + MoveScaled(2,60,22,4) + ToolTip = ("Esc Key Exits Too") + Text = ("Exit") + Cancel = True + } + { btnReDo Button + MoveScaled(2,50,22,4) + ToolTip = ("Redraw the Colors") + Text = ("Repeat") + } + { Label1 Label + MoveScaled(1,10,24,3) + Text = ("Count") + Alignment = Align.Center + } + { lblColorCount Label + MoveScaled(10,46,6,3) + Text = ("2") + Alignment = Align.Center + } + { chkDelay CheckBox + MoveScaled(3,5,22,3) + Text = ("Slow") + } + { scrColorCount Slider + MoveScaled(11,13,4,33) + ToolTip = ("Change the Number of Colors") + MinValue = 1 + MaxValue = 15 + PageStep = 1 + } + } +} diff --git a/app/examples/Drawing/RandomColorSort/RandomColorSort.png b/app/examples/Drawing/RandomColorSort/RandomColorSort.png new file mode 100644 index 0000000000000000000000000000000000000000..7adc8473d35e3a197319533f2e667510e144f8ae GIT binary patch literal 10533 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 literal 0 HcmV?d00001 diff --git a/app/examples/Drawing/Tablet/.directory b/app/examples/Drawing/Tablet/.directory new file mode 100644 index 00000000..06dab1c8 --- /dev/null +++ b/app/examples/Drawing/Tablet/.directory @@ -0,0 +1,2 @@ +[Desktop Entry] +Icon=./.icon.png diff --git a/app/examples/Drawing/Tablet/.hidden/screenshots/2014-12-14.png b/app/examples/Drawing/Tablet/.hidden/screenshots/2014-12-14.png new file mode 100644 index 0000000000000000000000000000000000000000..93493ce0715b9c3969fff22e7c2686fd2e157e6c GIT binary patch literal 59466 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